自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis-Plus13:自定义 TypeHandler

/ 存数据库时:明文 → 加密 → 存密文@Override// 取数据库时:密文 → 解密 → 返回明文(按列名)@Override// 取数据库时:密文 → 解密 → 返回明文(按列下标)@Override// 存储过程@Override因为这个需求是在 Java 和数据库之间做了额外的业务处理(加解密),不是简单的类型转换,任何内置的 TypeHandler 都做不到,只能自己写。

2026-02-20 18:14:57 509

原创 MyBatis-Plus12:JSON处理器

Data// 自定义类型处理器@Override@Override// ... 其他方法// 实体类// 数据库中加密存储↓让 MyBatis-Plus 自动生成 ResultMap↓使 @TableField(typeHandler = ...) 生效↓实现 数据库特殊类型 ↔ Java 对象 的转换处理 JSON 字段或自定义类型转换时,必须开启这个选项!

2026-02-20 17:09:40 460

原创 MyBatis-Plus11:枚举处理器

MyBatis-Plus 提供了枚举处理器,让我们可以优雅地在数据库字段和Java 枚举之间进行转换,而不需要手动处理映射关系。

2026-02-20 15:17:46 664

原创 MyBatis-Plus10:逻辑删除

逻辑删除的自动行为:删除 → UPDATE SET deleted=1(不执行 DELETE)查询 → 自动加 WHERE deleted=0(过滤已删除)更新 → 自动加 WHERE deleted=0(不影响已删除记录)需要手动处理的场景:查已删除数据 → 自定义 SQL物理删除 → 自定义 SQL恢复数据 → 自定义 SQL(UPDATE SET deleted=0)唯一索引冲突 → 联合唯一索引 + deleted 存 id最佳实践。

2026-02-18 23:50:35 902

原创 MyBatis-Plus09:静态工具Db

对比项传统 Service 注入Db 静态工具使用方式需要@Autowired注入直接静态调用循环依赖容易出现完全避免适用场景主业务逻辑层辅助查询、工具类、监听器版本要求无限制MP 3.5.4+最佳实践:主业务逻辑仍写在Service中,跨 Service 的辅助查询、关联数据获取用Db静态工具,两者配合使用效果最佳。

2026-02-18 22:48:31 285

原创 MyBatis-Plus08:代码生成

MyBatis-Plus 常用的代码生成器主要有以下。

2026-02-18 21:58:16 351

原创 MyBatis-Plus07:rewriteBatchedStatements 参数详解与批处理

rewriteBatchedStatements 生效的前提条件:1. JDBC 必须调用 addBatch() + executeBatch()2. MyBatis-Plus 的 saveBatch() 满足这个条件3. 逐条 save() 不满足,参数无效减少事务提交次数(场景二 vs 场景一)将多条 INSERT 合并为一条,极大减少网络传输和服务器解析开销,batchSize 推荐 500~1000。

2026-02-18 16:46:34 232

原创 MyBatis-Plus06:IService接口Lambda基本用法

大家都能自由读取,性能高。

2026-02-15 17:28:13 678

原创 MyBatis-Plus05:IService接口基本用法

高层模块(Controller)不应该依赖低层模块(ServiceImpl),两者都应该依赖抽象(Service接口)。这样可以让代码更加灵活,易于修改。Spring的很多功能(如事务管理、缓存)是通过动态代理实现的。: 即使注入的是接口,Spring在运行时注入的仍然是实现类的实例(或其代理对象),只是通过接口类型来引用它。依赖接口而非具体实现,可以降低代码耦合度,提高系统的可维护性和可扩展性。新增功能时只需增加新的实现类,而不修改现有代码。时,实际上执行的是 MyBatis 内部生成的一个。

2026-02-12 20:11:36 752

原创 MyBatis-Plus04:自定义SQL

解决方式:

2026-02-12 16:47:41 176

原创 MyBatis-Plus03:条件构造器

以上的queryWrapper 和 updateWrapper 字段名都是写死的,硬编码。

2026-02-12 15:51:51 223

原创 MyBatis-Plus02: 常用注解

若是不符合上述配置,需要用注解。MybatisPlus 中比较常用的几个注解如下:根配置项,所有 MyBatisPlus 的配置都包含在此下。说明:示例: 的作用范围是 整个 MyBatis/MyBatisPlus 映射体系中所有需要引用 Java 类型的地方,而不仅限于 。它的核心价值是简化 XML 配置,避免写冗长的全限定类名,提升可读性和维护性。⚠️注意:别名默认是类的简单名(首字母大小写均可) 即 和 通常都能识别(MyBatis 内部做了兼容),但建议统一使用首字母大写。若多个包中

2026-02-12 00:12:50 950

原创 SSM框架说明

SSM框架介绍、对比spring boot框架

2026-02-10 00:35:32 628

原创 MyBatis-Plus01: MyBatis和MyBatis-Plus之间的关系

MyBatis-Plus = MyBatis + 自动化增强关系:- 包含关系:MP包含了MyBatis所有功能- 增强关系:MP在MyBatis基础上提供了大量便捷功能- 兼容关系:MP完全兼容MyBatis的写法。

2026-02-10 00:14:09 469

原创 普通流(Stream<T>)和原始类型特化流(IntStream, LongStream, DoubleStream)的区别

Stream流、原始类型特化流(IntStream, LongStream, DoubleStream)

2026-02-05 11:19:23 920

原创 慢SQL命令分析

运行时间较长的SQL即为慢SQL。但是这是一个相对概念,多久算慢,如何定义?还是看具体的业务需求。MySQL中参数定义了SQL运行阈值,默认为10s,可通过设置该阈值来调整基准。生产环境慢SQL一般设置为0.1~0.2s,但实际上会关注的慢sql一般>1s。

2026-01-09 14:01:48 645

原创 InnoDB的内存结构

特性Log Buffer主要作用缓存数据页和索引页缓存 Redo Log 记录提升什么性能读写性能(特别是读)写入性能(保证事务一致性)数据类型表数据、索引事务修改记录刷盘时机脏页刷新(checkpoint)、LRU算法淘汰每秒、满时、事务提交大小设置Change Buffer 是 InnoDB 的“懒人智慧”:当索引页不在内存时,先记下要改什么,等它自然进内存时再一起改,避免不必要的磁盘读取。Buffer Pool 是“数据缓存”,提高读写速度;

2026-01-08 16:29:29 784

原创 MySQL的段、区、页、行 详解

段是最大的逻辑单位一个表空间由多个段组成。不同的段存放不同类型的数据。区是连续页的集合,一个区通常包含64个连续的页。计算:1个页 = 16 KB1个区 = 64个页 = 64 × 16KB = 1024KB = 1MB页是InnoDB最小的IO单位标准大小为16 KB。一次磁盘IO的最小单位就是1个页不管你只查询1行还是1000行,如果在同一个页内,都是一次IO如果数据跨多个页,就需要多次IO行是MySQL存储的最小逻辑单位,对应一条记录。

2026-01-08 15:14:57 713

原创 UPDATE语句的完整执行过程

UPDATE test SET a=1 WHERE id=2 执行过程:时间点1:事务开始→ 记录undo log(id=2, a原来的值)时间点2:执行阶段→ 写redo log(prepare状态)→ 获取行锁→ 在buffer pool中修改数据为a=1→ 标记为脏页时间点3:提交阶段开始→ 写binlog(用于主从复制)时间点4:提交阶段完成→ 修改redo log状态为commit→ 释放行锁→ 事务完成!时间点5:后台线程(不一定立即)→ 将脏页刷入磁盘。

2026-01-07 16:32:18 750

原创 MySQL中的binlog日志

binlog(二进制日志)是MySQL用来记录数据变更的文件。就像一个"监控录像",MySQL把每一个INSERT、UPDATE、DELETE操作都记录下来。

2026-01-07 15:47:03 353

原创 MySQL 工具使用指南

Crontab是 Linux/Unix 中的定时任务工具,可以在指定的时间自动执行脚本或命令。选项说明-h指定主机地址-P指定端口号(默认3306)-u用户名-p密码(建议互动输入)-D指定数据库--verbose显示详细信息--force/-f强制执行(不提示确认)操作所有数据库指定多个数据库--no-data只导出结构,不导出数据只导出数据,不导出结构。

2026-01-06 19:28:44 548

原创 java中调用uri请求的几种常见的方法

方法适合场景难度备注学习原理、简单小工具、环境受限(不能加库)中等初学者建议从这里开始理解概念传统企业项目,需要丰富功能和稳定支持中等功能全,但API稍旧OkHttp现代Java/Android应用,追求简洁和性能容易对于新项目,这是非常推荐的选择传统的Spring Boot项目,简单同步调用非常容易Spring生态,已进入维护模式WebClient响应式、高并发的Spring项目中等Spring未来的方向,支持异步。

2025-12-24 19:18:26 978

原创 java-BlockingQueue、CountDownLatch讲解

恢复线程的中断状态它用在里,防止中断信息丢失这是处理线程中断的最佳实践CountDownLatch = 倒计时器创建时指定初始值(等待的线程个数)每个工作线程完成后调用主线程调用await()阻塞等待当倒计时变成 0 时,主线程被唤醒这样可以保证主线程一定要等所有工作线程完成后才继续。

2025-12-14 13:57:41 899

原创 mysql-使用 performance_schema 进行性能监控

旧方式 (新方式 (手动开启默认开启,无需配置仅当前会话有效全局监控,支持多会话已废弃(MySQL 8.0 移除)官方推荐,功能更强大。

2025-12-09 18:56:37 999

原创 MySql索引优化:根据 SELECT 查询语句建立索引小技巧

通过这些技巧,你可以根据具体的 SELECT 语句设计出高效的索引策略。: 如果出现 "Using index" 表示覆盖索引。

2025-11-28 23:31:46 294

原创 Nacos + 微服务名调用 - 负载均衡详解

问题答案加了 Nacos 能不能直接用微服务名?需要激活负载均衡器才能用RestTemplate 需要什么?@LoadBalanced 注解OpenFeign 需要什么?WebClient 需要什么?推荐用哪个?OpenFeign(最方便)微服务名 → 负载均衡器拦截 → Nacos 查询实例 → 选择一个实例 → 替换为 IP:PORT → 发送请求。

2025-11-26 08:48:19 478

原创 Spring Cloud: Sentinel入门讲解

场景位置用途保护HTTP接口Controller限制请求频率保护业务方法Service限制业务操作远程调用降级Feign客户端调用失败降级异步任务保护@Async方法限制异步线程定时任务保护@Scheduled方法限制定时任务加在Service和Controller的public业务方法上,不要加在Mapper、私有方法、static方法。

2025-11-24 22:13:05 772

原创 Spring Cloud: SEATA中全局锁的申请和释放过程

阶段操作全局锁状态一阶段开始申请锁🔒 已锁一阶段执行持有锁执行SQL🔒 已锁一阶段结束等待二阶段🔒 已锁二阶段Commit删除undo_log🔒 已锁二阶段Commit提交本地事务🔒 已锁二阶段Commit释放全局锁🔓 已释放全局锁在一阶段申请,在二阶段提交/回滚并删除undo_log后才释放这样可以防止其他事务在一阶段期间修改这些记录锁的粒度是单条记录(通过主键标识)如果两个事务操作同一条记录,后来的事务会等待前面事务释放锁。

2025-11-24 21:10:15 307

原创 Spring Cloud Gateway 断言完全讲解

内置的断言可能无法满足业务需求。检查用户是否是VIP会员根据请求中的特定参数进行复杂逻辑判断整合数据库查询或缓存检查@Component // ⚠️ 关键!必须注册为Spring Bean// 传入配置类为什么要继承这个类?

2025-11-24 11:29:33 712

原创 SpringBoot22-ApplicationRunner 详细讲解

特性说明用途应用启动完成后执行初始化逻辑优势保证所有 Bean 初始化完成,支持依赖注入,可访问命令行参数注意事项如果抛出异常,应用启动会失败;可用 @Order 控制多个 Runner 的执行顺序替代方案。

2025-11-21 23:22:48 828

原创 SpringBoot21-WebSocket 完整技术笔记

Override= null) {模块关键点连接建立使用共享 HttpSession用户识别从 HttpSession 获取登录用户,不要依赖消息体伪造身份消息路由通过 JSON 消息头区分广播/私聊,维护映射连接管理上线加入集合,下线移除,并广播状态变更异常处理捕获发送异常,清理无效连接,避免内存泄漏安全校验验证用户身份、消息内容合法性调试支持利用浏览器 DevTools 和服务端日志。

2025-11-20 10:21:11 846

原创 SpringBoot20- Spring Task 入门教程

加开启功能写一个类,加@Component方法上加方法必须是,无参数用fixedRatefixedDelay或cron控制时间如果你用的是传统 Spring(非 Boot)的配置类,就是在传统 Spring 项目中手动开启定时任务功能的一种方式,相当于告诉 Spring:‘请支持 @Scheduled 注解!’”如果你现在用的是创建这个类;确保它被 Spring 扫描到(通过那么你的@Scheduled方法就能正常运行啦!问题默认行为如何解决多个@Scheduled任务是否并行?

2025-11-18 20:03:30 818

原创 SpringBoot19-HttpClient 详解及 SpringBoot 使用指南

当前企业用得最多的是 RestTemplate,因为它是 Spring 生态的默认选择,学习成本低,存量项目多。微服务场景下 OpenFeign 是第一选择,已经成为事实标准。未来趋势是 WebClient,但普及还需要时间。维护老项目:继续用 RestTemplate新建微服务:用 OpenFeign追求性能和新技术:用 WebClient需要底层控制:用 HttpClient。

2025-11-16 10:36:56 1200

原创 SpringBoot18-redis的配置

数据类型RedisTemplate 方法说明String字符串操作Hash哈希表操作List列表操作Set集合操作Sorted Set有序集合操作// K: Key 的类型// V: Value 的类型可以不配置,但会用 JDK 序列化,导致数据不可读配置的目的:改用 JSON 序列化,让数据可读、节省空间、跨语言兼容:Key 用字符串,Value 用 Object 更灵活推荐做法:写配置类,统一使用 JSON 序列化:让 Jackson 能访问 private 字段。

2025-11-15 21:18:52 1218 3

原创 SpringBoot17-addresourcehandler()方法

配置项说明示例访问路径/upload/**实际存储位置缓存时间(秒)3600启用资源链true核心要点ResourceHandler 用/**匹配子路径ResourceLocations 末尾加file 路径用于磁盘文件classpath 路径用于项目资源。

2025-11-14 16:24:10 468

原创 SpringBoot16-@Configuration 类

会自动执行不会自动执行构造方法普通方法@Bean 方法没有注解的方法@PostConstruct 方法WebMvcConfigurer 的重写方法关键点类在启动时会被实例化只有特定方法会自动执行(@Bean、配置接口的方法等)普通方法不会执行,除非手动调用可以用构造方法或 @PostConstruct 验证类是否加载项目结构:├── 主启动类├── 同包或子包│ └── @Configuration 类 → ✅ 自动扫描,无需注册│├── 外部包(其他项目)

2025-11-14 14:10:48 969

原创 Vue91-Vue的原型

概念说明Vue 原型所有实例共享的对象Vue 实例每个组件都是一个 Vue 实例原型属性/方法添加到上的属性/方法前缀Vue 约定,避免与组件属性冲突使用场景全局方法、全局属性、挂载第三方库简单理解Vue 原型就像一个"公共工具箱",所有 Vue 实例(组件)都可以访问里面的工具。Vue 内置的$emit$watch等都是放在这个"工具箱"里的。

2025-11-14 10:26:54 212

原创 nginx-负载均衡的配置

weightip_hashleast_connhash是的。url_hashfair这种通常是第三方模块(比如 nginx_upstream_fair),在普通 Nginx 里是没有的,要自己编译模块才有。

2025-11-14 00:48:26 779

原创 SpringCloud03-Eureka02-搭建Eureka服务

配置项单机模式集群模式falsetruefalsetrue指向自己(实际不用)指向其他Server作用简单、独立高可用、容错你看到的配置这其实是在为将来的集群部署预留配置空间。在单机模式下,因为,这行配置实际上不起作用。

2025-11-12 21:25:05 948

原创 SpringCloud03-Eureka01-概述与工作流程

Eureka是Netflix开源的服务注册与发现框架,也是Spring Cloud中的一个重要组件。它解决了微服务架构中的一个核心问题:在微服务众多且动态变化的环境中,如何让服务之间能够相互发现和调用。Eureka Server(服务注册中心)和Eureka Client(服务提供者和消费者)。

2025-11-12 14:17:38 792

python 正则表达式

python 正则表达式 的详细介绍,主要用于data wrangling

2025-08-16

空空如也

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

TA关注的人

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