- 博客(298)
- 收藏
- 关注
原创 第一章:认识AI
AI,全名叫Artificial Intelegence,翻译过来就是人工智能,它的本意是让机器能够像人类一样思考、学习和解决问题。
2025-06-20 13:16:28
1065
原创 微服务拆分作业参考
其中,查询商品、扣减库存都是与商品有关的业务,在item-service中有相关功能;清理购物车商品是购物车业务,在cart-service中有相关功能。因此交易服务要调用他们,必须通过OpenFeign远程调用。我们需要将上述功能抽取为FeignClient.因此交易服务要调用他们,必须通过OpenFeign远程调用。我们需要将上述功能抽取为FeignClient.请求参数:1654779387523936258,交易服务测试通过。注意,创建订单接口无法测试,因为无法获取登录用户信息。
2025-06-20 00:40:57
1109
原创 微服务——day03
什么时候需要拆分微服务?如果是创业型公司,最好先用单体架构快速迭代开发,验证市场运作模型,快速试错。当业务跑通以后,随着业务规模扩大、人员规模增加,再考虑拆分微服务。如果是大型企业,有充足的资源,可以在项目开始之初就搭建微服务架构。如何拆分?首先要做到高内聚、低耦合从拆分方式来说,有横向拆分和纵向拆分两种。纵向就是按照业务功能模块,横向则是拆分通用性业务,提高复用性服务拆分之后,不可避免的会出现跨微服务的业务,此时微服务之间就需要进行远程调用。微服务之间的远程调用被称为RPC,即远程过程调用。
2025-06-20 00:20:44
1416
原创 Docker——day2
同学们,在前两天我们学习了Linux操作系统的常见命令以及如何在Linux上部署一个单体项目。大家想一想自己最大的感受是什么?我相信,除了个别天赋异禀的同学以外,大多数同学都会有相同的感受,那就是麻烦。核心体现在三点:命令太多了,记不住软件安装包名字复杂,不知道去哪里找安装和部署步骤复杂,容易出错其实上述问题不仅仅是新手,即便是运维在安装、部署的时候一样会觉得麻烦、容易出错。特别是我们即将进入微服务阶段学习,微服务项目动辄就是几十台、上百台服务需要部署,有些大型项目甚至达到数万台服务。而由于每台服务器的运行
2025-06-19 14:04:30
967
5
原创 数据卷能管理两边,使其数据一致?——补充
数据卷就像个“智能桥梁”,一边连着容器,一边连着宿主机(或自身存储区),自动帮你保持两边数据一致,让你不用操心 “容器和外部怎么同步文件”,只管改一边,另一边自动跟上~
2025-06-18 19:40:26
429
原创 镜像 和容器是什么东西?——补充
镜像是 “静态模板”,存着程序运行的所有 “原料和配方”;容器是 “动态运行体”,用镜像当模板,真正跑起来干活,多个容器互不干扰~就像:镜像 = 手机里的 “微信安装包”,容器 = 你点开后正在聊天的 “微信 App” ,是不是一下就懂啦!
2025-06-18 19:26:25
192
原创 day2-安装Docker
镜像地址可能会变更,如果失效可以百度找最新的docker镜像。最后,执行命令,安装Docker。在首页的产品中,找到阿里云的。这里以阿里云镜像加速为例。首先要安装一个yum工具。更新yum,建立缓存。
2025-06-18 15:11:22
298
原创 mybatis-plus-2
其中缺少的仅仅是分页条件,而分页条件不仅仅用户分页查询需要,以后其它业务也都有分页查询的需求。综上, 开启了逻辑删除功能以后,我们就可以像普通删除一样做CRUD,基本不用考虑代码逻辑问题。在查询地址时,我们采用了Db的静态方法,因此避免了注入AddressService,减少了循环依赖的风险。,只有MybatisPlus生成的SQL语句才支持自动的逻辑删除,自定义SQL需要自己手动处理逻辑删除。但是我们数据库采用的是。因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。
2025-06-18 14:47:18
1215
原创 MyBatis-Plus 中 Db 工具类解决 Service 循环依赖问题实战——补充
MyBatis-Plus 的Db工具类是一个静态工具类,它提供了与IService接口相似的 CRUD 方法。避免通过 Spring 依赖注入获取 Service 实例提供静态方法直接操作数据库打破 Service 层之间的直接依赖关系解决方案优点缺点构造器注入保证依赖的不可变性无法解决循环依赖Setter 注入支持依赖的延迟注入可能导致空指针异常接口注入松耦合设计实现复杂Db 工具类彻底打破依赖关系可能降低代码可读性。
2025-06-18 12:50:51
1083
原创 详解 MyBatis - Plus 服务层设计:让 CRUD 更高效、业务拓展更灵活——补充
ServiceUser@Data@TableName("t_user") // 对应数据库表名,假设表是 t_user// 其他字段及 getter/setter 可根据实际需求补充自定义Service接口继承IService后,实现类继承,编译器会强制检查方法实现情况,避免遗漏关键方法,减少运行时报错风险。同时,接口方便做单元测试,用 Mock 对象模拟Service接口,就能轻松验证业务逻辑,提升代码质量。
2025-06-17 22:56:56
639
原创 SpringBoot项目编译后,classes文件下没有static、mapper、templates文件
因为编译后项目缺失static文件夹,导致图片无法正常显示编译后项目缺失static构建过程中静态资源未被正确复制到target目录解决方法:修改pom.,在pom文件中找到<build>节点,添加代码图片正常显示。
2025-06-16 15:30:44
580
原创 Java 项目编译后 target 目录
在使用 IDEA 结合 Maven 进行 Java 项目开发时,编译项目后会生成target目录 ,它就像一个 “项目编译成果收纳箱”,里面藏着诸多关键内容,今天咱们就来好好剖析它。
2025-06-16 15:30:32
1024
原创 JSONP 跨域请求原理解析与实践
JSONP(JSON with Padding)是一种跨域数据交互技术,虽然它不是真正的 AJAX 请求,但可以实现类似的局部刷新效果。本文将深入解析 JSONP 的原理,并通过完整的 Java 后端和 JavaScript 前端示例演示其工作流程。
2025-06-15 16:06:23
643
原创 Java 中的 JSON 转换
Fastjson 是阿里巴巴开发的高性能 JSON 处理库,以其快速的序列化和反序列化速度而闻名。它提供了简洁的 API,能够方便地将 Java 对象与 JSON 格式进行相互转换,在处理大量数据时表现出色。Jackson 是另一个广泛使用的 Java JSON 处理库,它功能丰富,支持多种数据格式,并且具有良好的扩展性。Jackson 提供了数据绑定(Data Binding)功能,可以将 JSON 数据直接映射到 Java 对象,反之亦然。。
2025-06-15 11:52:24
1044
原创 Ajax-概述、XMLHttpRequest对象、AJAX GET请求、AJAX POST请求
本文深度解析传统请求痛点(页面刷新/体验割裂),详解AJAX核心XMLHttpRequest对象四步使用法(创建→回调→开启→发送),手写GET/POST请求解决缓存与数据提交难题,并附表单模拟实战代码。助你彻底掌握异步交互,实现页面无刷新更新!
2025-06-14 20:41:11
991
原创 模拟 AJAX 提交 form 表单及请求头设置详解
场景不使用 encodeURIComponent ()使用 encodeURIComponent ()参数包含空格空格被转换为(部分浏览器)或保留为空格(可能导致错误)空格被编码为%20,所有服务器都能正确解析参数包含 & 符号服务器将其解析为参数分隔符,导致参数拆分错误& 被编码为%26,作为参数值的一部分被正确传递参数包含 = 符号服务器将其解析为键值对分隔符,导致参数结构混乱= 被编码为%3D,作为参数值的一部分被正确传递参数包含非 ASCII 字符。
2025-06-14 20:28:45
1503
1
原创 当遇到“提交失败:404”的问题时,通常表明前端请求的URL无法正确匹配到后端的Servlet或资源。
form.html运行结果:当遇到“提交失败:404”的问题时,通常表明前端请求的URL无法正确匹配到后端的Servlet或资源。
2025-06-14 20:23:08
649
原创 @RequestHeader(“Authorization“) 解析:HTTP 请求头中的 Authorization 字段
是标准的 HTTP 请求头字段,用于传递认证凭证。它由客户端在请求时添加,服务端通过注解获取。常见用途:JWT 认证、OAuth 2.0 令牌传递、Basic Auth 等。通俗理解就像你去银行办业务时出示的身份证,告诉服务器 "我是谁",而则是服务器读取你身份证信息的工具。
2025-06-13 20:50:41
1036
原创 “在同一事务中“ 的含义
"在同一事务中" 的核心是共享事务上下文声明式事务:使用注解标记方法,默认传播行为REQUIRED确保操作在同一事务中。编程式事务:通过或手动控制事务边界。跨方法调用:确保方法间通过代理对象调用,且子方法不使用等隔离传播行为。合理控制事务边界是保证数据一致性的关键,需根据业务场景选择合适的事务管理方式。通俗易懂地理解 "同一事务" 与代码示例"同一事务" 的本质一组操作共享原子性(要么都成功,要么都失败)。共享数据库连接和事务状态。实现方式用标记方法,确保多个操作在同一方法内或跨方法调用。
2025-06-13 20:00:43
783
原创 Spring 事务传播行为详解
REQUIRED如果存在事务则加入,不存在则创建新事务。这使得我们可以构建复杂的事务边界,确保相关操作在同一个事务上下文中执行,从而保证数据一致性。在设计事务边界时,应该考虑业务操作的原子性需求,将必须一起成功或失败的操作放在同一个事务中,使用REQUIRED传播行为可以有效地实现这一点。
2025-06-13 19:03:59
252
原创 Java 中使用 Redis 注解版缓存——补充
通过 @EnableCaching 注解和 Spring 的缓存抽象,我们可以非常方便地在 Java 应用中集成 Redis 缓存。这种声明式的缓存方式大大简化了代码,使我们能够专注于业务逻辑而不是缓存实现细节。在实际应用中,我们需要根据业务特点合理配置缓存策略,注意缓存一致性问题,并采取措施防止缓存穿透、击穿和雪崩等常见问题。
2025-06-12 11:48:04
961
原创 Spring MVC 常用请求处理注解总结
从请求体到 Java 对象的转换:从 Java 对象到响应体的转换:相当于的组合注解这两个注解通过 HttpMessageConverter 实现了 HTTP 数据与 Java 对象之间的自动转换,大大简化了 RESTful API 的开发。注意需配合或依赖 Jackson 等序列化框架解析请求体二、@RestController的作用是 Spring Boot 中一个组合注解,等价于。它表明该类中的所有方法的返回值都直接作为 HTTP 响应体返回,而不是视图名称。1.为何不需要因为已隐含了。
2025-06-12 10:32:06
1126
原创 JSON 序列化工具——补充
在当今的软件开发领域,数据的交换和存储无处不在,而 JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁的语法和易于阅读、编写的特点,在前后端数据交互、配置文件等场景中被广泛应用。在 Java 开发中,JSON 序列化工具则扮演着将 Java 对象转换为 JSON 格式数据,以及将 JSON 数据反序列化为 Java 对象的关键角色。本文将深入探讨 Java 中常用的 JSON 序列化工具,从基础使用到实战技巧,帮助你更好地掌握数据处理的核心技术。
2025-06-10 12:56:57
1062
原创 Spring Security 认证流程——补充
掌握这一流程后,开发者可以灵活配置认证逻辑(如数据库认证、JWT 认证)并扩展安全功能(如动态权限控制)Spring Security 的认证流程基于。Spring Security 的认证流程通过。
2025-06-09 15:13:32
1242
原创 第一章 Spring Security快速入门
身份认证(authentication)授权(authorization)防御常见攻击(protection against common attacks)身份认证是验证谁正在访问系统资源,判断用户是否为合法用户。认证用户的常见方式是要求用户输入用户名和密码。用户进行身份认证后,系统会控制谁能访问哪些资源,这个过程叫做授权。用户无法访问没有权限的资源。CSRF。
2025-06-07 19:25:45
804
原创 第4章——springboot自动配置
Spring Boot 框架的两大核心特性可以概括为“启动器”(Starter)和“自动配置”(Autoconfiguration)。运行环境准备阶段引入web启动器最终传递引入了自动配置的jar包自动配置的jar包中有152个自动配置类,到此运行环境准备完毕。运行阶段@EnableAutoConfiguration 启用自动配置,将152个自动配置类全部加载到IoC容器中,然后根据开发场景筛选出必须的自动配置类。自动配置类加载了一堆组件。每个组件需要的数据来自属性类。
2025-06-07 11:35:47
900
原创 Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
深度解析HTTP 406与500错误的本质区别:406是内容协商失败(如客户端请求JSON但服务器返回HTML),常因MIME类型不匹配或Lombok的@Data注解失效导致序列化异常;500是服务器内部崩溃(如空指针或SQL错误)。通过真实案例揭秘Lombok失效的解决之道,提供请求头调试、日志分析、资源优化等实战技巧,快速定位并修复两大高频错误。
2025-06-06 21:09:27
1254
原创 第3章——SSM整合
本文详解Spring Boot整合MyBatis的全流程:从数据库配置、实体类设计、Mapper接口与XML映射,到驼峰命名自动转换。介绍Lombok库通过注解(如@Data、@Builder)简化POJO代码,并实战MyBatis逆向工程插件自动生成Mapper和XML。最后整合SpringMVC实现SSM高效开发,附完整代码与避坑指南。
2025-06-06 20:54:15
911
原创 Java建造者模式(Builder Pattern)详解与实践
本文通过电脑配置与房屋建造案例,详解建造者模式的核心角色(产品/建造者/指挥者)与实现步骤,展示如何优雅解决构造参数过多问题,并分析其在StringBuilder、HTTP请求等Java生态中的实际应用,帮助开发者掌握分步骤构建复杂对象的最佳实践。
2025-06-06 16:15:20
1184
原创 SpringMVC 高阶实战:文件上传下载、异常处理、拦截器与执行流程深度解析
本文详解 SpringMVC 文件上传(Spring6 配置变化/避免覆盖的 UUID 策略)、下载(ResponseEntity 流式响应)、异常处理(自定义跳转与友好提示),深入剖析拦截器执行顺序(源码级流程)及 SpringMVC 核心执行流程(HandlerMapping/适配器/视图渲染),助你掌握企业级请求处理与组件协作机制。
2025-06-06 11:44:27
774
原创 拦截器执行流程——补充
index.htmlok.html当在浏览器中分别访问和浏览器请求到达 Spring MVC 的前端控制器,URL 路径为。/ok。DispatcherServlet 找到中的toOk()okok.html浏览器请求到达 DispatcherServlet,URL 路径为。/indexpreHandleInterceptor1 的preHandleDispatcherServlet 执行中的toIndex()postHandle在控制器方法返回后,但视图渲染前,Interceptor1 的。
2025-06-06 11:02:52
354
原创 Java设计模式之观察者模式详解
观察者模式是一种非常实用的设计模式,它提供了一种对象之间的一对多依赖关系,使得当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。Java 提供了内置的支持,使得实现观察者模式变得更加简单。在实际开发中,观察者模式被广泛应用于各种场景,如 GUI 事件处理、消息队列、状态管理等。通过合理使用观察者模式,可以使代码更加灵活、可维护和可扩展。
2025-06-05 15:24:22
1588
原创 Servlet 过滤器
Servlet 过滤器是 Java Web 应用程序中非常重要的组件,它可以对请求和响应进行拦截和处理。本文将详细介绍 Servlet 过滤器的概念、工作原理、使用场景及实现方式。
2025-06-05 10:33:14
566
原创 Java设计模式:责任链模式
/ 抽象处理者类:定义了处理请求的接口和设置下一个处理者的方法// 持有下一个处理者的引用,形成链式结构// 设置下一个处理者// 抽象方法:具体处理者需要实现该方法来处理请求// 具体处理者:小组长,处理1-3天的请假请求@Override// 判断是否在自己的处理范围内System.out.println("小组长批准了 " + request.getName() + " 的 " + request.getDays() + " 天请假");= null) {
2025-06-04 20:47:53
1400
JDK 21.0.1 文档简介(jdk-21.0.1-doc)
2025-01-27
软件项目管理-复习材料.docx
2025-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人