重构谷粒商城01:为何重构谷粒商城

news/2025/2/11 17:00:23/文章来源:https://www.cnblogs.com/banjiu518/p/18710107

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。

本项目将基于谷粒商城项目,并且对谷粒商城项目进行二次重构,使其满足最新的主流技术栈要求。

一、为什么重构谷粒商城

谷粒商城是一个典型的 B2C(Business to Customer)电商项目,专注于实现线上商品交易平台的功能。它模拟真实的电商业务流程,从用户注册到商品浏览、下单、支付、物流等全流程,采用微服务架构,结合多种主流技术栈,适合用于学习微服务开发、分布式架构、和高并发处理的技术。

主要会使用的技术栈:java、spring boot、spring cloud、Spring Data JPA、MyBatis-Plus、Spring Security、OAuth2、Vue.js、Element-UI / Ant Design、Vue Router、Vuex、Axios、MySQL、redis、Nginx、RabbitMQ / RocketMQ、ElasticSearch (ES)、Logstash + Kibana、Docker、Kubernetes (K8s)、Jenkins、Maven 、Swagger、JWT、OSS 、FastDFS、Zookeeper。

可以说,学会了它,就意味着你掌握了主流的技术栈。能够拿下大部分的offer,甚至可以成为独立开发者。

但是,谷粒商城也有不足。

1、年代久远,部分技术栈过时 2、官方文档不够细致,很多内容在视频中有,文档中没有,手动做笔记又太浪费时间 3、有些内容存在缺漏、错误。 4、对很多技术栈,默认你已经具有基础,并非真正的0基础。 5、cursor为代表的AI编程工具突飞猛进,我们完全没有任何必要再向过去那样学习一大堆技术栈,再进行项目实战,这样会浪费你大量宝贵时间。

基于此,我决定出一个重构版的系列博客,解决以上问题。

二、需要你具有哪些基础

Java 基础(掌握面向对象和基本多线程)。 Spring Boot(能启动服务、开发 REST API)。 MySQL(掌握基础数据库操作)。

其它的技术栈,在使用之前,我尽量会用最精简语言,出一篇单独的番外篇文章,帮你快速入门。 在这里插入图片描述

三、会做哪些更新

Spring Cloud Netflix 组件:Netflix 系列中的部分组件已进入维护模式,将迁移至 Spring Cloud 官方推荐的替代方案。

Eureka:考虑迁移至 Nacos 或 Consul,以获得更丰富的服务注册与发现功能。 Ribbon:使用 Spring Cloud LoadBalancer,提供更现代的负载均衡机制。 Hystrix:替换为 Resilience4j,以利用更轻量级的熔断与限流功能。 MyBatis-Plus:虽然 MyBatis-Plus 仍被广泛使用,但随着 JPA 和 Spring Data 的发展,许多项目更倾向于使用这些更高层次的持久化框架,以简化开发流程。本项目将尝试进行这一升级。

RabbitMQ:在某些高并发场景下,Kafka 等消息队列因其高吞吐量和分布式特性,正逐渐成为更受欢迎的选择。

另外,对于其它技术栈,我们也会基于较新且稳定的版本进行迭代。

本系列博客,是可以持续升级迭代的,后期如果时间、精力允许,还考虑扩展其它模块、功能。增加新的技术栈,等等。当然,也许我还会重构其它类型的项目,比如线上教育、直播、办公系统......

四、课程大纲

为了同时兼容做过谷粒商城和没有做过谷粒商城的同学。本项目将分成两个大部分。第一个部分,完全照搬原来谷粒商城的技术栈,做到复制。第二个部分,对谷粒商城进行技术重构。所有使用到的技术栈,都会单独出一篇番外篇进行介绍。

因为本专栏完全是个人兴趣驱动,如果觉得写的不错,请三连支持,不要白嫖哦。。这样,我也可以更有动力持续更新。 在这里插入图片描述

五、什么是cursor

Cursor 是一款基于 AI 的编程工具,旨在提高开发者的编程效率。它结合了现代代码编辑器的功能和强大的 AI 辅助编程技术。以下是关于 Cursor 的主要特点和功能的介绍:

  1. 智能代码补全 Cursor 通过 AI 模型(如 OpenAI 的 GPT 系列)提供智能代码补全功能。 它能够理解代码上下文并提供精确的代码建议,减少开发者的输入量。 不仅适用于简单的语法补全,还可以帮助完成复杂的函数、算法或逻辑。
  2. 代码生成 开发者可以用自然语言描述需求,Cursor 能自动生成对应的代码段。 适用于创建模板代码、处理繁琐的重复性任务,以及快速实现原型。
  3. 错误检测与调试 内置 AI 功能能够实时检测代码中的错误,并提供详细的分析和修复建议。 调试过程中,Cursor 可以帮助定位问题的根本原因,优化调试效率。
  4. 文档生成 Cursor 可以自动生成代码文档,包括函数注释、接口描述和类说明等。 这种功能特别适用于提高代码可读性和团队协作效率。
  5. 多语言支持 支持多种编程语言(如 Python、JavaScript、Java、C++ 等),能够适应不同开发场景。 它可以根据语言特性提供定制化的建议和功能。
  6. 版本控制集成 支持与常见版本控制系统(如 Git)集成,方便开发者在项目管理中应用 AI 辅助功能。

cursor官网:https://www.cursor.com/ 在这里插入图片描述

六、下载cursor

cursors是基于VSCODE进行扩展的,需要先下载VSCODE。这里我就跳过下载过程了

接下来,官网下载好cursor

在这里插入图片描述 点击右下角,Install cursor,安装命令行命令。 在这里插入图片描述 在这里插入图片描述 登录 在这里插入图片描述 像打开vscode一样打开。我这里打开了一个之前的项目给大家展示用。 在这里插入图片描述 更改下菜单栏位置。ctrl+shift+P,输入settings。找到VScode Settings。

在这里插入图片描述 在这里插入图片描述

七、解决cursor快捷键冲突

cursor的快捷键可能与电脑其它快捷键冲突,这一节我们来重点解决下这个问题。点左下角齿轮就好。 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882154.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div设置四个角边框

示例实现 .top-header {background-image:url(../../assets/slider/topHeaderTopLeft.svg), /* 左上角图像 */url(../../assets/slider/topHeaderTopRight.svg), /* 右上角图像 */url(../../assets/slider/topHeaderBottomLeft.svg), /* 左下角图像 */url(../../assets/slider/…

JavaScript根据访问链接不同的后缀参数,展示不同的页面

要求:根据访问者访问不同的后缀链接,展示不同的页面;$(document).ready(function () {// 获取 URL 参数const urlParams = new URLSearchParams(window.location.search);const page = urlParams.get(page) || model; // 默认显示第一个导航项(比分)的内容和图标$(.tab-co…

内外网文件传输方案

文件传输问题:企业内网和外网分开了,如何进行文件快速有效稳定的传输呢?如何 进行文件交换、在线审批、在线审计呢?如何保证安全可控的文件传输、性能及扩展性强、审批审计便捷呢?常见痛点有哪些?纸质申请、线下审批、传递效率很慢,传递成本高, 纸质单据与电子文件脱节…

H3C--堆叠(IRF)

拓扑图 配置流程 配置SW1与SW2堆叠 一、SW1:shutdown 物理端口 配置堆叠优先级,优先级高的成为主设备 创建堆叠逻辑接口,将物理接口加入到堆叠逻辑接口中二、SW1: sysname SW1#irf member 1 priority 6#irf-port 1/1 port group interface FortyGigE1/0/53 port group int…

JavaScript判断iPhone型号机型及iPhone版本Identifier对照

要求:根据用户安装App后,返回的设备型号,判断iPhone版本 实现代码:function getModelValue(last_model) {// 如果last_model不包含"iPhone",则直接返回原值if (!last_model.includes(iPhone)) {return last_model;}// 定义子字符串和对应值的全面映射const mode…

linux部署nacos集群

本次部署 3个nacos节点,然后一个负载均衡器(nginx)代理3个Nacos。集群部署按照前述,做好数据库脚本的初始化、防火墙策略的设置。安装jdk 解压jdk文件 cd /data/soft tar -zxvf jdk-23_linux-x64_bin.tar.gz修改环境变量 vi /etc/profile#install JAVA JDK export JAVA_HOM…

本地部署 Browser-Use WebUI + 本地部署 DeepSeek 实现浏览器AI自动化

前一版采用的是 Deepseek 官方API,由于最近比较火,可能遇到服务器繁忙导致运行不成功,这一版选择通过 Ollama 本地部署的模型 一、安装部署(已安装 python3.11 或以上版本、playwright) 1.下载最新源码包(v1.4及以上版本),解压 https://github.com/browser-use/web-ui/…

QComboBox样式设置

参考 https://blog.csdn.net/xiaopei_yan/article/details/107404698相关qss代码QComboBox{border:1px solid rgb(174,174,174);border-radius: 0;padding-left: 15px;font-size:10pt; } QComboBox::drop-down {subcontrol-origin: padding;subcontrol-position: top right;w…

零售行业数据分析工作模式革新

在零售行业,干数据分析和汇报的小伙伴肯定懂,每个月、每季度、每年都要做各种报告往上交。随着公司业务的拓展,销售的类目从几种到几十种,甚至到上百种,数据量也不断往上涨。以前做个Excel表、画几张图就能搞定的事情,现在光是整理这些数据就够让人头疼了,更别说还要从中…

Shiro中UnavailableSecurityManagerException解决方案

前言 大家好,我是小徐啊。spring boot默认使用spring security,spring security自然不用说是一个强大的安全框架,但是用惯了shiro,一时半会用不来spring security,所以要在spring boot中自己整合shiro。 但是,我遇到了一个报错:UnavailableSecurityManagerException,搜…

网络流 笔记

本文原在 2024-07-22 10:17 发布于本人洛谷博客。 一、定义与性质 1. 基本定义 从水厂出发,有很多节点和水管,节点不能存水,但容量无限,水管有容量上限,全部水管最终经过某些节点都会流向某个工厂里,问最多同时能给工厂发多少水? 流网络:这张图。 源点:水厂。 汇点:工…

CentOS7 - firewalld只允许国内ip访问

firewalld只允许国内ip访问 #查看public区域大致情况 firewall-cmd --zone=public --list-all #获取china ip源 wget --no-check-certificate -O- http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest | awk -F\| /CN\|ipv4/ { printf("%s/%d\n", $4, 32…