自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 关于分布式锁的一些考虑

使用RedisMutexRedisSETNXEXPIRENXDeadlockRedisPX锁续期/看门狗DELDELUUIDDELLuaReentrancyRedisRedisHINCRBYRedisLuaEXPIREPEXPIRERedisRedlockRedisRedisN/2 + 1RedisLuaRedisRedisLuaRedlock。

2025-06-30 11:34:27 831

原创 项目集成Spring Security授权部分

Component@Autowired@Autowired@Override// 获取 HttpServletRequest,提取请求头中的 token// 使用 JWT 工具类解析 token,获取 Claims// 从 token 中解析出当前用户信息,并转为 UserVo 对象// 从 Redis 缓存中获取该用户的访问权限 URL 列表// 构造当前请求的标识,例如 "GET/nursing_project/**"

2025-02-02 16:59:40 2381

原创 项目集成Spring Security认证部分

在Spring Security认证与授权集成中,主要分为用户登录认证、JWT Token生成与校验以及权限管理等部分。

2025-02-01 16:29:22 1269 5

原创 资源管理模块集成Spring Cache

SpringCache是Spring提供的缓存抽象框架,它通过注解的方式简化了缓存的使用,支持多种缓存实现(如Redis、Ehcache等)。@Cacheable在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中:用于清除缓存,保证缓存数据的实时性。@Caching:支持组合多种缓存操作。@CachePut:更新缓存但不影响方法的实际调用。通过与Redis集成,SpringCache可以实现高效、灵活的分布式缓存管理。

2025-01-19 17:34:26 591

原创 Spring Bean 管理学习

Spring 的 Bean 管理提供了极大的灵活性,通过 IOC容器,我们可以轻松实现 Bean 的声明与生命周期控制。获取 Bean:推荐优先使用自动注入方式简化代码。作用域管理:大部分场景下使用单例即可,特殊需求可根据情况选择其他作用域。第三方 Bean:通过@Bean和配置类管理,方便统一配置与维护。

2024-12-29 19:47:10 668

原创 登录时的校验Token接口开发(Interceptor)

校验 Token后端通过拦截请求,从请求头中提取 Token。使用工具类JwtUtil解析 Token,验证其合法性、有效性。将解析后的用户身份信息存入,供业务层使用。ThreadLocal 的应用使用工具类隔离多线程环境下的用户数据,避免数据冲突。在请求完成后,清理中的用户信息,防止内存泄漏。拦截器的灵活性配置了拦截路径与排除路径,确保仅对需要校验的接口进行拦截(例如,登录接口不需要校验 Token)。

2024-12-28 14:37:10 1147

原创 微信登录接口开发

类职责主要实现了与微信服务端的交互功能,包括获取用户的openid、手机号和接口调用凭证。设计特点抽取公共参数封装方法,提高代码复用性。使用cn.hutool工具包简化 HTTP 请求和 JSON 数据解析,提高开发效率。关键点每个微信接口调用均需检查响应中的errcode,确保异常能够及时处理。返回值格式和 JSON 数据解析严格依据微信接口文档。以下是类及相关配置文件的详细解读。该类的主要职责是处理用户的微信登录业务逻辑,包括从微信获取用户信息、数据库的增删改查,以及生成 JWT 令牌。

2024-12-28 14:01:52 1632

原创 Exp 智能协同管理系统-部门管理前端页面开发

使用响应式数据结合组件,构建了直观、友好的用户界面。数据接口的封装简化了与后端的交互,减少冗余代码。表单校验与弹框功能有效提升了用户操作体验。

2024-12-10 22:24:25 1355

原创 Exp 智能协同管理系统前端首页框架开发

通过本案例的学习,我们完成了智能学习辅助系统的前端开发,实现了包括布局设计、导航菜单配置以及路由管理在内的核心功能。这种基于组件化的开发方式具有高复用性和可维护性。

2024-12-09 22:26:58 1037

原创 SpringBoot 自动配置原理学习

SpringBoot 的自动配置机制可以在 Spring 容器启动后,将配置类和 Bean 对象自动加载到 IoC 容器中,无需开发者手动声明。这样:简化了开发流程。避免了重复性配置代码。自动配置的核心自动配置通过和实现。避免了大量重复的手动配置,简化了开发。实现方式通过或@Import将第三方 Bean 加载到 IoC 容器。推荐方案对于复杂项目,优先使用@Import及其衍生方式,如@EnableXxx。对于自动配置类,合理使用注解动态加载配置。

2024-12-06 20:00:42 894

原创 SpringBoot 配置优先级学习

Java 系统属性使用-Dxxx=xxx格式设置。命令行参数使用--xxx=xxx格式设置。SpringBoot 提供了灵活多样的配置方式,同时通过优先级规则避免配置冲突。在实际开发中,建议:在项目开发阶段,优先使用文件管理配置。在部署或测试阶段,根据需要通过 Java 系统属性或命令行参数临时覆盖配置。熟悉并遵循优先级规则,确保项目在不同环境中的配置一致性与灵活性。

2024-12-04 14:14:34 747

原创 部门管理系统Spring AOP实现日志记录接口案例开发

高内聚低耦合:通过 AOP 实现日志功能,与业务代码解耦,提高代码复用性和可维护性。灵活扩展:使用自定义注解@Log标注需要记录日志的方法,方便灵活扩展。操作全面:日志记录内容详尽,包括操作人、操作时间、类名、方法名、参数、返回值及耗时。

2024-12-04 14:07:02 797

原创 JWT、Cookie 与 Session 对比学习

用户打开浏览器,访问 Web 服务器的资源时,建立的会话从建立到断开连接的整个过程。:一种维持浏览器状态的方法,服务端需要识别多次请求是否来自同一用户,以便在同一次会话的多次请求中共享数据。

2024-12-03 21:37:39 454

原创 部门管理系统Spring 登录校验模块开发学习

本登录校验模块基于 Spring 和 MyBatis 实现了一个完整的用户登录流程。通过使用 JWT 令牌技术,不仅提升了系统的安全性,还提供了较高的扩展性。

2024-12-03 21:15:03 973

原创 深入理解Spring AOP 编程之切入点表达式详解

所有业务方法名在命名时尽量规范,方便切入点表达式快速匹配。描述切入点方法通常基于接口描述,而不是直接描述实现类,增强拓展性。在满足业务需要的前提下,尽量缩小切入点的匹配范围。如:包名尽量不使用..,使用匹配单个包。切入点表达式的核心作用用于定义 AOP 的目标范围。支持多种匹配方式(精确匹配、通配符匹配、基于注解等)。结合逻辑运算符,可实现复杂的业务逻辑需求。常见场景与注意事项精确匹配适用于特定方法的切入逻辑。包与类的通配符匹配适用于模块级别的切面应用。

2024-12-01 21:01:41 2516

原创 Spring AOP 学习博客

自动记录系统操作日志。统计方法执行时间。检查用户是否有权限访问目标方法。管理方法执行的事务。

2024-12-01 16:27:33 576

原创 Spring事务管理学习记录

使用。

2024-11-30 20:38:12 1203

原创 部门员工管理-员工职位人数统计

在部门员工管理模块中,需要统计各职位的员工人数,并提供一个接口供前端调用,返回的数据包括:职位名称列表。对应职位人数列表。目标是实现从数据库查询职位人数统计数据,并以结构化数据形式返回,便于前端直接展示。功能解读:类注解::由 Lombok 提供,自动生成 getter/setter 方法、 方法、 和 方法。:生成无参构造方法。:生成包含所有字段的有参构造方法。字段::存储职位名称的列表。:存储职位对应人数的列表。用途: 用于封装职位统计数据,包括职位名称和对应人数,作为控制层接口返回的数据对象

2024-11-30 20:05:19 1188

原创 跨子网通信的具体流程

那我的理解就是tcp,ip都是在第一个发送的设备处就可以包好,然后如果接受方和自己不在一个子网中,就包上默认网关的mac发送过去,默认网关接收到之后去掉mac头部尾部,然后在路由表里查找有没有接收方的ip,如果有的话就arp广播找到mac地址包上之后发过去。

2024-11-26 21:48:29 1031

原创 部门员工管理-修改员工功能实现

根据员工 ID 查询详细信息,包括基本信息和工作经历。更新员工的基本信息。更新员工的工作经历信息,逻辑为:先删除旧的工作经历,再插入新的工作经历。接口文档:根据接口文档可知,后端只需要向前端传递修改成功的信息即可,无data返回。

2024-11-26 18:46:16 1004

原创 部门员工管理-删除员工功能实现

技术点控制层使用和接收删除请求。服务层使用确保操作的事务一致性。数据层使用 MyBatis 动态 SQL (标签) 实现批量删除。事务管理的优势确保删除操作的所有相关数据要么全部删除,要么完全保留。如果在删除操作中出现异常,事务机制将回滚所有已完成的操作,避免数据不一致。

2024-11-26 18:13:56 560

原创 部门员工管理-新增员工功能实现

分层实现控制层接收数据,服务层实现业务逻辑,Mapper 层操作数据库。事务管理确保新增员工基本信息与工作经历的操作一致性。批量插入利用 MyBatis 的动态生成批量插入 SQL,提升性能。

2024-11-24 15:11:12 706

原创 (条件分页查询)部门员工管理-员工列表查询功能扩展

在原有分页查询的基础上,改进为条件分页查询功能。通过在 SQL 查询中添加条件筛选逻辑,用户可以按姓名、性别和入职日期等条件进行筛选,进一步提升查询的灵活性。条件筛选需求:技术实现需求:PageBean对象:Controller层: :自动生成日志对象,方便使用 打印日志。 :定义基础路径 。 :组合注解,返回 JSON 数据。 :自动注入服务层对象 。 :将 方法映射为 GET 请求。 :接收分页参数, 设置默认值。 核心逻辑: 接收分页参数并打印

2024-11-24 14:40:14 784

原创 部门员工管理-员工列表查询功能实现

分页显示员工信息:数据动态加载:支持总记录数统计:按照 MVC 分层架构 的设计原则,分页查询功能需要从前端到后端各层协作完成:前端需求:Controller层需求:Service层需求:Mapper层需求:数据表结构:查询需求:PageBean对象:Controller层: :自动生成日志对象,方便使用 打印日志。 :定义基础路径 。 :组合注解,返回 JSON 数据。 :自动注入服务层对象 。 :将 方法映射为 GET 请求。 :接收分页参数, 设置默认值。

2024-11-22 12:23:21 1292

原创 部门管理系统功能完善(删除部门、添加部门、根据 ID 查询部门 和 修改部门)

通过以上功能实现,完善了删除部门添加部门查询部门和修改部门的完整流程。通过 Spring Boot 的分层架构(Controller、Service、Mapper)和 MyBatis 的注解,标准且简洁实现了这几个功能。

2024-11-20 22:27:19 2255

原创 部门信息管理系统Dao层优化(数据库)

上述改造的三层分别定义了数据访问层(Mapper)、业务逻辑层(Service)和控制层(Controller),实现了一个完整的查询所有部门信息功能的流程。

2024-11-20 21:54:58 837

原创 MyBatis 入门学习总结

MyBatis 是一款优秀的持久层框架,用于简化 Java 应用程序与数据库之间的交互。灵活性:开发者直接控制 SQL,适合复杂查询。高效性:轻量级框架,性能开销小。简单易用:配置简单,入门成本低。

2024-11-19 15:37:04 812

原创 JBDC入门学习

jdbc是 Java 提供的一套用于操作数据库的 API。通过 JDBC,开发者可以使用 Java 代码与各种关系型数据库进行交互,包括执行 SQL 查询、更新数据以及管理事务。

2024-11-19 15:05:48 990

原创 SQL语句基础--深入理解 DQL(数据查询语言)

是 SQL 语言的一个子集,用于从数据库中查询数据。DQL 的核心是SELECT语句,通过指定查询条件、排序、分组等操作,用户可以高效地从数据库中提取所需数据。

2024-11-18 17:04:38 1204

原创 SQL 语句基础与实用技巧(DDL DML)

在关系型数据库中,SQL 语言根据功能可以分为多个子集,其中DDL(Data Definition Language,数据定义语言)和DML(Data Manipulation Language,数据操作语言)是最常用的两部分

2024-11-18 16:33:54 1276

原创 (IOC&DI)部门信息管理功能分层解耦优化

分层解耦DAO、Service、Controller 三层通过接口实现解耦,层与层之间仅依赖接口而非具体实现。使用注解简化开发@Autowired:实现依赖注入,提升代码的可读性和扩展性。@Service和:明确组件职责,方便 Spring 容器管理。可扩展性提升面向接口编程使得后续更换实现(如切换到数据库存储)变得简单。

2024-11-16 12:17:49 1256

原创 部门信息管理功能实现

实现了一个简易的部门信息管理系统简单功能实现,通过三层架构(DAO、Service、Controller),读取资源文件中的部门信息并以 REST API 的形式提供给前端。

2024-11-16 10:21:21 595

原创 力扣(LeetCode)236. 二叉树的最近公共祖先(Java)

本题设计回溯,值得深思。

2024-11-14 22:51:00 296

原创 力扣(LeetCode)450.删除二叉搜索树中的节点(Java)

因为最后一种情况涉及要大幅度变更二叉树的结构,所以思路稍微有些复杂。

2024-11-13 22:58:13 869

原创 Vua学习入门案例

这是是一个Vue 3的入门学习案例,实现了一个用户信息查询系统,展示了如何在前端应用中实现动态数据绑定(v-model)、条件渲染和事件监听。

2024-11-12 23:52:51 697

原创 力扣(LeetCode)617. 合并二叉树(Java)

本题为同时对两棵树递归遍历的经典题目,值得深思。

2024-11-10 17:23:26 357

原创 (Java)动态代理学习案例

性能监控:动态代理在方法执行前后添加了时间记录功能,便于监控方法的执行性能,相当于添加了新功能解耦代码:将业务逻辑与附加功能分离,动态代理通过拦截业务方法的调用,实现了附加功能的 无侵入式扩展(AOP)。增强扩展性:新增功能无需修改业务逻辑代码,只需在代理类中修改拦截逻辑即可。

2024-11-10 17:04:20 498

原创 (JAVA)基于TCP通信多人聊天系统

该项目是一个基于 TCP 协议的多人聊天系统。服务器通过监听客户端的连接,每个客户端连接后,服务器为其创建一个独立的线程来处理通信。服务器维护一个在线客户端的列表,当某个客户端发送消息时,服务器会将该消息转发给所有其他在线客户端。客户端通过Socket连接服务器,并在一个独立的线程中不断读取来自服务器的转发消息。项目实现了基本的多人聊天功能,展示了 TCP 通信和多线程的应用,记录一个入门学习案例。

2024-11-09 18:50:27 1042

原创 力扣(LeetCode)106. 从中序与后序遍历序列构造二叉树

虽然是中等难度,但我觉得这道题不好写,可以作为按照特定规则递归法构造二叉树的经典题目来好好学习。

2024-11-09 14:31:31 295

原创 TCP入门通信程序(JAVA)

该模型展示了TCP通信的基本原理,客户端负责发送数据,服务器负责接收并处理数据。是一个非常好的TCP入门学习案例。

2024-11-08 23:07:24 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除