- 博客(45)
- 收藏
- 关注
原创 SpringCloud —— 黑马商城的项目拆分和服务治理
本文介绍了将黑马商城单体架构改造为微服务架构的过程。首先通过功能模块拆分原则,将商品、购物车等独立模块分离。针对跨模块调用问题,先使用RestTemplate实现远程调用,后引入OpenFeign简化调用流程。接着部署Nacos注册中心实现服务发现和负载均衡,通过配置将各模块注册到Nacos。最终采用OpenFeign替代RestTemplate,显著减少代码量并提高开发效率。文章还强调了使用Git版本控制和虚拟机快照的重要性,以应对开发过程中可能出现的问题。
2025-12-11 15:36:10
745
原创 MyBatis-Plus —— 扩展功能详解
本文介绍了MyBatis-Plus(MP)的几个高效开发功能:1)代码生成工具MyBatisX可自动生成基础代码;2)Db静态工具简化多表查询操作;3)枚举处理器和JSON处理器优化数据存储与转换;4)分页插件的配置与使用,包括Page、PageQuery和PageDTO的封装应用。这些功能显著提升了开发效率,通过注解和工具类简化了常量管理、JSON处理以及分页查询等常见开发场景的实现过程。文章还展示了如何通过封装复用代码,使分页查询等操作更加简洁高效。
2025-12-10 15:07:14
912
原创 MyBatis-Plus精讲 —— 从快速入门到项目实战
MyBatis-Plus是MyBatis的增强工具,简化了单表操作流程。它通过继承BaseMapper提供常用CRUD方法,无需编写SQL语句。条件构造器(Wrapper)支持复杂查询条件,包括普通构造器和更安全的Lambda构造器。对于特殊需求,支持自定义SQL语句拼接。此外,IService接口使业务层可直接调用简化方法,同时保留自定义业务逻辑能力。项目实战演示了从Controller到Service再到持久层的完整流程,展示了MyBatis-Plus在简化开发、提高效率方面的优势,同时保持对复杂业务场
2025-12-05 15:22:59
574
原创 Docker入门 —— 原理分析到本地挂载
本文介绍了Docker容器化技术的应用和部署方法。Docker通过容器管理解决了传统开发中服务启动繁琐的问题,允许一次性启动多个服务容器(如Redis、MySQL等)。文章详细阐述了Docker的核心概念:镜像仓库(如阿里云)、宿主机与容器通信(通过2375端口)、数据卷挂载(解决容器数据持久化问题)以及容器网络配置。重点讲解了MySQL容器部署、数据卷挂载操作,并介绍了Dockerfile构建自定义镜像和Docker Compose的yml配置文件管理方法。最后展示了如何通过Docker Compose一
2025-11-26 19:39:45
785
原创 Vue入门 —— 从创建到发送请求
本文介绍了Vue2前端框架的基础应用,包括项目创建、Axios请求和路由配置。通过npm和Node.js环境搭建Vue项目,使用Axios实现前后端交互,演示了GET/POST请求的发送方式。重点讲解了Vue路由的单页面应用实现,通过配置路由表实现组件切换。最后介绍了Vuex状态管理,包括state数据共享、mutations同步修改和actions异步操作。这些技术点构成了现代前后端分离开发的基础框架。
2025-11-21 15:14:02
677
原创 苍穹外卖番外篇 —— 怎么在公网访问我们的项目?
这篇文章介绍了如何通过内网穿透实现其他电脑访问苍穹外卖项目。作者指出仅穿透Springboot服务器(8080端口)是不够的,因为项目使用了nginx(80端口)作为反向代理服务器。正确做法是同时穿透两个端口,然后通过nginx的公网地址访问项目。文章还说明了小程序管理端功能可以在开发者工具中查看订单等数据,但因需要企业认证,个人用户无法实现小程序端的公网访问。最后提醒访问时不要加/login后缀,并保持项目处于运行状态。
2025-11-16 18:07:11
275
原创 苍穹外卖 —— 数据统计和使用Apache_POI库导出Excel报表
本文介绍了苍穹外卖后端数据统计与报表导出功能的实现。数据统计部分以订单统计为例,详细讲解了从Controller接收日期参数、Service层处理业务逻辑(包括日期计算、订单数据查询、完成率计算等)到持久层动态SQL查询的实现过程。报表导出部分使用Apache POI库,通过读取Excel模板文件并填充查询数据,最终通过Servlet输出流将生成的报表文件返回给客户端。文章重点阐述了如何将日期范围内的统计数据转换为字符串格式,以及如何使用POI库进行Excel文件的读写操作,为后端数据处理和报表生成提供了完
2025-11-16 17:26:06
894
原创 苍穹外卖 —— Spring Task和WebSocket的运用以及订单统一处理、订单的提醒和催单功能的实现
本文介绍了使用Spring Task和WebSocket实现订单提醒与催单功能的方案。通过@Scheduled定时任务处理超时订单和派送中的订单状态变更,采用WebSocket协议实现服务端与客户端(用户端和管理端)的实时双向通信。重点展示了来单提醒在支付成功后自动触发,以及用户催单通过按钮事件启动的实现过程,包括前端页面构建、后端服务设计和WebSocket配置。系统通过JSON格式传输消息,确保订单状态变更和催单信息能实时推送到管理端,解决了传统HTTP协议无法主动推送的局限性。
2025-11-13 15:57:39
1088
原创 苍穹外卖 —— 用户端订单的CRUD
上一节我们讲了Spring cache框架和购物车的增删查,这次我们讲完成订单的CRUD,同时导入了地址簿相关业务代码,由于地址簿是一个单表操作,所以这里我们就不细讲了,主要关注订单的处理,订单有两个表,一个是订单表,一个是订单明细表,
2025-11-11 13:10:01
626
原创 苍穹外卖 —— Spring Cache和购物车功能开发
本文介绍了Spring Cache框架的基本使用及其在购物车功能中的应用。首先讲解了Spring Cache的四大核心注解:@EnableCaching(启用缓存)、@CachePut(添加缓存)、@Cacheable(查询缓存)和@CacheEvict(清除缓存)的使用方法。然后详细阐述了购物车功能的实现,包括添加商品(需判断是否已存在、区分菜品/套餐)、查看购物车、清空购物车和删除单个商品等核心业务逻辑。其中重点分析了添加购物车的复杂处理流程,包括动态SQL查询、数量增减控制等关键技术点。文章通过具体代
2025-11-07 13:50:25
554
原创 苍穹外卖 —— 用户端微信登录和菜品的缓存功能
由于微信小程序属于前端部分的内容,这里我们着重讲后端,前面学习的httpclient主要就会用在这里,我们将在服务端向微信服务器发起请求,请求获取用户的openid,这个具体实现我们将在Service层中实现,而这里我们将会继续使用redis,优化客户端查询功能。
2025-11-05 20:01:30
626
原创 苍穹外卖 —— 店铺营业状态和httpclient快速入门
本文介绍了如何使用Redis实现店铺营业状态管理。通过配置Redis模板对象,设计了管理端和用户端的Controller接口:管理端可以设置和获取店铺状态(1营业/0打烊),用户端只能查看状态。状态数据存储在Redis中,通过键值对(SHOP_STATUS)进行读写操作。文章还展示了使用HttpClient测试接口的方法,包括发送GET/POST请求并解析响应结果。这种方案利用Redis高性能特性,避免了频繁操作数据库,同时满足业务需求。
2025-11-03 16:55:51
245
原创 Redis入门 —— 基本数据类型和Spring Data Redis
本文介绍了Redis的基本使用方法和在Spring项目中的集成应用。首先说明Redis作为键值对存储数据库的特点,详细讲解了字符串、哈希、列表、集合和有序集合五种数据类型的常用操作命令。随后介绍了在SpringBoot项目中通过Spring Data Redis框架集成Redis的步骤,包括依赖配置、模板对象创建以及各种数据类型的Java操作示例。文章通过代码演示了如何在Java中实现Redis的增删查改等基本功能,为开发者在项目中应用Redis提供了实用参考。
2025-11-02 12:43:58
903
原创 苍穹外卖 —— 文件上传和菜品的CRUD
摘要:本文详细介绍了菜品管理系统的CRUD实现过程。主要包括:1. 使用阿里云OSS实现文件上传功能,通过UUID生成唯一文件名;2. 菜品新增接口处理多口味选项,采用菜品表与口味表关联存储;3. 分页查询使用PageHelper插件,结合动态SQL实现条件筛选;4. 批量删除菜品时校验起售状态和套餐关联;5. 菜品修改支持数据回显;6. 菜品启停售操作联动处理关联套餐状态。系统采用三层架构设计,通过DTO/VO进行数据传输和展示,使用事务保证数据一致性。
2025-10-29 18:01:00
908
原创 苍穹外卖 —— 登录流程和员工的crud流程以及公共字段的自动填充
本文介绍了苍穹外卖项目中员工管理模块的实现,主要包括登录和CRUD操作。登录流程涉及JWT令牌生成、MD5加密和密码校验;CRUD操作采用自上而下的开发方式,以新增员工为例展示了Controller、Service、Mapper层的代码实现。重点讲解了DTO与实体类的转换、ThreadLocal保存用户ID、AOP实现公共字段自动填充等技术细节,通过自定义注解和反射技术统一处理创建/修改时间和操作人ID的赋值,提高了代码复用性。
2025-10-26 16:40:55
907
原创 苍穹外卖 —— 补充的技术债(一些工具的使用)
本文介绍了SpringBoot开发中常用的Lombok工具、日志配置和JWT令牌的实现。首先详细讲解了Lombok的各种注解用法,包括@Getter/@Setter简化getter/setter方法,@ToString生成toString方法,@EqualsAndHashCode实现equals和hashCode方法,以及@Data复合注解和@Builder构建器模式。其次介绍了日志配置,通过logback.xml文件控制日志输出格式和级别,并使用@Slf4j注解简化日志记录。最后阐述了JWT令牌的组成结构
2025-10-24 12:33:50
750
原创 SpringBoot高级 —— 注解原理和自动配置原理
本文主要分析了SpringBoot中的条件注解(@Conditional家族)和Enable注解家族的底层实现原理。通过模拟@Conditional注解,演示了如何根据依赖存在与否动态注册Bean,并实现解耦的ConditionOnClass注解。重点讲解了@Enable注解的三种实现方式(@ComponentScan、@Import及自定义注解),深入剖析了@Import的四种用法:导入Bean、配置类、ImportSelector实现类和ImportBeanDefinitionRegistrar实现类。
2025-10-16 17:31:01
727
原创 SpringBoot —— 整合MyBatis、Junit5
本文介绍了SpringBoot集成JUnit5和MyBatis的开发实践。首先通过Maven坐标引入相关依赖,包括MyBatis、MySQL驱动和SpringBoot测试模块。在JUnit5测试部分,展示了如何测试Service层方法,并对比了JUnit4与JUnit5的注解差异。MyBatis部分分别演示了注解开发和XML配置两种方式:注解方式使用@Mapper和@Select实现简单查询;XML方式则配置了mapper映射文件和核心配置,通过yml文件统一管理数据源和MyBatis配置。测试结果显示两种
2025-10-15 11:01:05
388
原创 SpringBoot —— 快速入门和配置
本文介绍了从SSM框架转向SpringBoot的学习过程。SpringBoot通过yml配置、全注解开发和内置Tomcat等特性大幅简化了开发流程。文章详细讲解了三种创建SpringBoot项目的方式,演示了基础配置和HelloWorld示例,重点分析了yml格式配置数据的读取方法,包括对象、数组等复杂结构的处理。此外,还介绍了使用profile实现多环境配置切换的技巧,以及配置文件的加载优先级顺序。这些内容为开发者快速上手SpringBoot提供了实用指导。
2025-10-14 11:52:00
1056
原创 SSM整合 —— 在Spring中配置MyBatis
本文详细介绍了SSM框架(Spring+SpringMVC+MyBatis)的整合过程。首先列出了项目所需的Maven依赖,包括核心框架、数据库连接、日志等组件。然后通过账户管理案例演示了SSM整合的具体步骤:1) 创建项目骨架,包括实体类、Mapper接口和映射文件;2) 实现Service层和Controller层;3) 配置Spring整合MyBatis,包括数据源、SqlSessionFactory和事务管理;4) 优化后通过Spring自动管理Mapper实现。最终实现了完整的Web应用开发流程,
2025-10-01 22:28:23
481
原创 MyBatis —— 多表操作和注解开发
本文介绍了MyBatis框架中多表操作和注解开发的具体实现方法。首先通过XML配置方式演示了一对一、一对多和多对多关系的映射配置,重点讲解了association和collection标签的使用。随后介绍了注解开发模式,使用@Select、@Results、@Result等注解替代XML配置,简化了开发流程。文章包含完整的示例代码,包括实体类定义、Mapper接口编写、SQL语句配置以及测试方法实现,展示了两种开发方式下多表关联查询的具体应用。通过对比可以看出,注解开发在单表操作时更为简洁高效,而XML配置
2025-09-30 10:44:19
950
原创 MYSQL —— 约束和多表查询
本文介绍了MySQL数据库的约束和多表查询操作。主要内容包括:1. 约束类型:主键(唯一自增)、唯一键(非空)、检查(age范围)、默认值设置和外键约束,演示了外键的级联更新和删除行为;2. 多表关系模型:多对多(通过中间表实现)、一对一关系;3. 多表查询方法:内连接(返回匹配记录)、外连接(左/右连接保留未匹配记录)和自连接(表与自身连接)。文章通过具体SQL示例演示了各种约束和多表查询操作的实际应用。
2025-09-28 21:26:00
1021
原创 MyBatis —— 详解动态sql、类型转换、分页插件
本文介绍了MyBatis框架中的动态SQL、类型转换和分页插件的应用。在动态SQL部分,通过if标签实现条件查询的灵活性,使用foreach标签实现批量查询;通过sql语句抽取提升代码复用性。在类型转换部分,演示了自定义TypeHandler实现Java Date类型与数据库毫秒值的转换。最后介绍了PageHelper分页插件的配置与使用,包括分页参数设置和分页信息获取。这些技术能有效提升MyBatis开发效率,简化复杂SQL操作。
2025-09-26 12:22:08
586
原创 MyBatis —— 快速入门和接口代理
本文介绍了MyBatis框架的快速入门与核心使用。首先配置了必要的依赖坐标,包括JUnit、MySQL驱动、MyBatis和Log4j。然后通过User类示例演示了MyBatis的基本CRUD操作:配置核心文件(sqlMapConfig.xml)加载数据源,编写映射文件(UserMapper.xml)定义SQL语句,并通过SqlSession执行查询、插入、修改和删除操作。特别说明了#{}占位符的使用和事务提交的必要性。文章还介绍了MyBatis的核心配置属性,包括环境配置和映射加载方式,以及通过接口代理开
2025-09-24 13:39:26
1019
原创 Spring —— 事务控制
本文介绍了Spring框架下的事务管理实现。首先回顾了MySQL事务隔离级别解决的脏读、不可重复读和幻读问题,然后通过账户转账案例演示了XML和注解两种方式配置事务控制。在XML配置中,使用PlatformTransactionManager和tx:advice实现事务管理;在注解方式中,通过@Transactional注解简化配置。两种方式都能确保转账操作在异常发生时正确回滚,保障数据一致性。文章还提供了完整的Spring MVC、JDBC和事务管理相关依赖坐标,以及详细的代码实现和配置示例。
2025-09-22 16:50:14
534
原创 Spring —— AOP
本文介绍了Spring框架中AOP的实现方式,包括动态代理和基于XML/注解的配置。首先讲解了JDK和CGLIB两种动态代理的实现原理及代码示例。然后详细阐述了Spring AOP的五种通知类型(前置、后置、环绕、异常、最终)及其XML配置方法,包括切点表达式的抽取技巧。最后展示了基于注解的AOP实现方式,通过@Aspect、@Before等注解简化配置,实现与XML相同的功能。全文通过代码示例演示了AOP的核心概念和具体应用,为Spring AOP开发提供了实用指导。
2025-09-20 15:52:48
1072
原创 Spring —— 拦截器和异常处理
本文介绍了SpringMVC框架中拦截器与异常处理的实现方法。首先列出了所需的Maven依赖配置,包括Spring核心、WebMVC、Servlet和JSP相关组件。详细说明了SpringMVC的配置步骤,包括组件扫描、视图解析器、注解驱动等。重点讲解了拦截器的实现,通过HandlerInterceptor接口的三个方法实现预处理、后处理和完成处理,并演示了拦截器链的执行顺序。在异常处理方面,介绍了两种方式:使用SimpleMappingExceptionResolver的简单映射异常处理器和自定义的Han
2025-09-17 21:22:00
654
原创 SpringMVC —— 响应和请求处理
本文详细介绍了SpringMVC框架的响应处理和请求处理方法。主要内容包括:1. 页面跳转的多种实现方式(字符串转发、ModelAndView、混合使用等);2. 数据回写的不同形式(Servlet API、@ResponseBody注解、JSON数据转换);3. 请求参数获取的各种场景(基本类型、POJO、数组、集合等);4. 特殊参数处理(@RequestParam参数绑定、Restful风格、自定义类型转换器);5. Servlet API获取、请求头/Cookie处理;6. 文件上传下载功能实现。文
2025-09-04 23:19:17
697
原创 SpringMVC —— Spring集成web环境和SpringMVC快速入门
本文介绍了Spring框架与Web环境的集成方法。首先通过Maven依赖配置了Spring Web、Spring MVC以及Servlet/JSP相关组件。接着详细说明了如何通过监听器实现Spring容器的初始化和配置文件的解耦,并演示了从Servlet到Controller的演进过程。重点讲解了Spring MVC的基本使用,包括前端控制器配置、@Controller和@RequestMapping注解的用法,以及请求映射规则。最后展示了如何通过组件扫描分离Spring和Spring MVC的配置。文章通
2025-09-02 23:32:15
1131
原创 Spring —— 数据源配置和注解开发
本文介绍了使用Spring框架配置数据源的完整流程。首先通过Maven导入数据库连接池(C3P0、Druid)和Spring相关依赖,然后演示了三种数据源配置方式:手动创建(无配置文件)、读取properties文件解耦、以及Spring容器管理。重点讲解了Spring注解开发,通过@Component、@Service等注解替代XML配置,使用@Value注入属性,@Autowired实现依赖注入。最后展示了如何集成Junit进行单元测试,通过@ContextConfiguration加载Spring配置
2025-08-31 22:12:30
798
原创 Servlet入门 —— Cookie/Session和Listener/Filter
本文介绍了Servlet中的会话跟踪技术、过滤器和监听器。会话跟踪技术包括Cookie和Session:Cookie存储在客户端浏览器,适合记住登录等功能;Session存储在服务器端,适合验证码等安全需求。过滤器(Filter)用于拦截请求并进行处理,支持多过滤器链式处理。监听器(Listener)则用于资源加载和释放。文章详细说明了这些技术的具体实现方法,包括创建、发送、获取Cookie/Session,过滤器拦截处理流程,以及监听器的使用场景。这些技术共同构成了Servlet应用程序的重要功能模块。
2025-08-30 17:15:15
412
原创 Spring —— 快速入门/xml配置文件/依赖注入
本文介绍了Spring框架IOC容器的基本使用,主要包括:1. 通过Maven引入Spring和JUnit依赖;2. 使用XML配置bean,包括单例/多例模式、初始化/销毁方法;3. 静态工厂和动态工厂创建bean;4. 依赖注入的两种方式:setter注入和构造器注入;5. 基本数据类型和集合类型的注入;6. 多配置文件的导入。通过示例代码演示了如何通过IOC容器管理对象,实现解耦,使代码更简洁易维护。
2025-08-27 21:51:08
698
原创 Java反射入门 —— 详解反射
本文介绍了Java反射和动态代理的应用。在Servlet项目中,反射主要用于封装Servlet类,通过获取执行方法简化代码。动态代理部分以明星演唱会为例,展示了如何通过代理类处理前置工作,并详细说明了Proxy.newProxyInstance的使用方法。反射部分详细讲解了三种获取类对象的方式,以及如何获取构造方法、成员变量和成员方法,包括访问私有成员和方法的暴力反射技术。文章通过具体代码示例,演示了反射API的各类操作,如获取修饰符、形参、返回值等,并展示了如何通过反射调用方法。这些技术为Java开发提供
2025-08-21 13:31:27
305
原创 JSP入门 —— 详解JSP和JSTL
本文介绍了JSP技术的基本概念和使用方法,指出JSP作为过时技术的主要缺点是与前端耦合度高。文章详细讲解了JSP的三种语法格式、EL表达式和JSTL标签库的使用,并通过品牌列表案例展示了JSP的数据展示功能。文中提供了完整的Maven依赖配置和Tomcat插件坐标,以及Servlet与JSP结合的示例代码。最后强调现代开发更推荐使用AJAX+HTML的前后端分离方案。
2025-08-12 16:07:23
469
原创 Servlet入门——详解Servlet和Servlet的请求与响应
本文需要先在IDEA中集成Maven,本文需要使用Maven构建web项目,并且需要Maven导入依赖坐标来便捷地导包。同时需要自行配置Tomcat9(目前官网下载的最低版本已经是9了)或者在Maven中构建Tomcat7的插件,推荐直接使用插件,亲测Tomcat9可能会导致编码异常问题(即使用UTF-8编码后解码也会出现中文乱码)。如果对于Maven的配置出现加载缓慢或者无法创建的情况,创建web项目时Tomcat出现配置时没有工件可供选择,请查看文章:关于用Maven创建web项目极其缓慢,IDEA新版
2025-08-09 15:18:18
817
原创 关于用Maven创建web项目极其缓慢,IDEA新版使用骨架下载缓慢,或者Tomcat部署时没有war包的工件选项的情况的几个问题排查点
摘要:本文分享了Maven配置Web项目的常见问题及解决方案。重点包括:1)在Maven的setting.xml中添加阿里云仓库镜像;2)强调必须在IDEA全局设置中配置Maven路径(而非单项目设置);3)创建时选择webapp骨架;4)项目成功创建后应出现war和warexploded两个工件。作者通过实践总结出这些关键步骤,解决了配置过程中遇到的创建失败、加载缓慢等问题。
2025-08-07 22:27:35
474
原创 前端三剑客入门(HTML+CSS+JS)—— JavaScript篇
本文为后端开发者提供了JavaScript基础知识的简明指南,重点介绍了JS的核心概念和常用API。内容包括:JS的两种引入方式(内部/外部脚本)、三种输出方法(alert/write/log)、var/let变量声明差异、隐式数据类型检测、运算符与类型转换对比Java的差异。还讲解了函数定义、数组操作(类似Java ArrayList)、字符串处理、自定义对象创建等基础语法。特别介绍了BOM/DOM操作(定时器、历史记录、页面跳转、元素获取与修改)以及事件监听机制。最后简要说明正则表达式定义与验证方法。全
2025-08-06 18:41:01
1180
原创 前端三剑客入门(HTML+CSS+JS)—— HTML+CSS篇
本文是为后端开发人员准备的HTML基础入门指南,主要介绍JavaWeb开发前需要了解的HTML基础知识。文章首先讲解了HTML文档的基本结构,包括<head>和<body>标签的作用。随后详细介绍了常用HTML标签:基础文本标签(h1-h6、p、font等)、多媒体标签(img、audio、video)、超链接标签(a)、列表标签(ol、ul)、表格标签(table)以及布局标签(div、span)。最后重点讲解了表单相关标签(form、input等),包括各种表单项的用法和表单提交
2025-08-01 09:00:00
754
原创 Java多线程入门 —— 多线程详解
本文系统介绍了Java多线程编程的核心知识,包括三种线程实现方式(继承Thread类、实现Runnable/Callable接口)、Thread类常用方法(命名、休眠、优先级、守护线程等),以及线程同步机制(同步代码块、同步方法、Lock锁)。重点讲解了生产者-消费者模式的等待唤醒机制,并演示了使用阻塞队列的实现方式。最后介绍了线程池的创建与使用,包括内置线程池和自定义线程池的配置方法。全文通过电影院售票、厨师做面等生动案例,帮助理解多线程编程中的资源共享、线程同步等核心概念,为Java并发编程提供了实践指
2025-07-23 12:59:24
1120
原创 JDBC编程入门 —— 详解API
【JDBC操作数据库核心流程】摘要: JDBC操作数据库包含7个核心步骤:1.注册驱动(MySQL5+可省略);2.通过DriverManager获取连接;3.定义SQL语句;4.创建Statement/PreparedStatement对象;5.执行SQL(查询用executeQuery,更新用executeUpdate);6.处理结果集(ResultSet);7.释放资源。关键点包括: Connection提供事务管理(setAutoCommit/commit/rollback) PreparedSta
2025-07-19 13:16:51
929
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅