自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

兴趣是最好的老师

http://www.cnblogs.com/ZHOUVIP/

  • 博客(1792)
  • 收藏
  • 关注

原创 MAC-out.write报错xss,改成hutool工具类IoUtil.copy

根据图片中的代码,可以将out.write替换为 Hutool 的方法。以下是修改后的代。

2026-07-18 00:45:23 14

原创 MAC-UriComponentsBuilder扩展2

路径变量顺序:确保传递的变量值与路径模板中的占位符顺序一致编码处理:始终调用.encode()来确保特殊字符被正确编码变量验证:在展开路径变量前验证其有效性可重用builder:对于同一主机的URL,可重用UriComponentsBuilder实例结合Spring MVC:在控制器中使用构建响应URI错误处理:捕获,当路径变量不匹配时会抛出此异常。

2026-06-09 20:28:57 57

原创 MAC-UriComponentsBuilder扩展1

/ 查询参数封装类@Data。

2026-06-09 20:11:25 79

原创 MAC-UriComponentsBuilder(Spring框架中用于安全构建URI的工具类)

自动编码:它会自动对参数值中的特殊字符(如空格、中文、等)进行 URL 编码,防止 URL 断裂或产生歧义。类型安全:避免了手动使用字符串拼接 () 或时容易出现的空格多一个少一个、漏写号等低级错误。链式调用:支持流畅的链式编程风格,代码可读性更高。

2026-05-26 17:06:54 42

原创 MAC-泛形+函数式接口

【代码】MAC-泛形+函数式接口。

2026-04-14 10:48:20 75

原创 MAC-分页查询全局去重,使用GROUP BY+子查询 、 ROW_NUMBER()或DISTINCT ON

特性GROUP BY标准SQL​是是(但窗口函数)PostgreSQL特有​语法简洁性​复杂(需要子查询)中等最简洁​灵活性​低(只能获取聚合值)高(可灵活排序)中等性能​中等(需要多次扫描)好(一次扫描)好(一次扫描)获取完整记录​需要JOIN直接获取直接获取多字段去重​支持支持支持排序控制​有限完全控制​有限(ORDER BY必须包含去重字段)适用场景​简单聚合统计复杂去重逻辑PostgreSQL环境下的简单去重。

2026-03-09 17:26:13 91

原创 MAC-分页查询全局去重的原理详解

让我用一个生活中的比喻来解释这个技术原理,这样你会更容易理解。

2026-03-09 16:36:12 202

原创 SQL-窗口函数ROW_NUMBER()

例如:筛选 “分数前 3 名的学生”,若有两个第 3 名,row_number()会只保留 1 个,而rank()或dense_rank()能保留两个并列第 3 名,符合 “前 3 名” 的实际需求。当需要按某字段分组,保留每组内 “最新 / 最优 / 指定条件” 的唯一记录时,row_number()是首选 —— 其 “唯一序号” 特性可精准定位目标记录。适用场景:学校成绩单、赛事排名榜、绩效考核等级分配(如 “前 10% 为 A 级,10%-30% 为 B 级”,需按实际排名比例划分)。

2026-03-03 15:12:37 118

原创 MAC-Java开发中那些“坑你没商量”的细节(实战案例详解)

字符串字面量会进入常量池。

2026-02-06 10:35:09 65

原创 Java-前端传参到不了后端问题,@Data生成sTimeS是req.getSTimeS(),但是如果手动生成就是req.getsTimeS()

(即首字母大写,但注意属性名第一个字母是's',第二个字母'T',所以Lombok会将整个属性名首字母大写,变成“STimeS”)第二个字母'T',但注意属性名是“sTimeS”,所以第二个字母是'T',是大写)。但是,对于“sTimeS”这个属性,第一个字母's'小写,第二个字母'T'大写,属于“前两个字母不都大。根据规范,如果属性名的前两个字母都是大写,则getter/setter中属性名保持不变。实际上,规范中规定,如果属性名的第一个字母小写,第二个字母大写,那么getter/setter方。

2026-01-15 20:23:23 122

原创 Windows-休眠按钮看不见,怎么启用休眠

在开始菜单搜索“cmd”或“PowerShell”,右键点击它,选择 ​。执行此命令后,系统会创建休眠文件,并在关机选项中显示“休眠”选项。这个方法也非常快捷,尤其适合喜欢键盘操作的用户。会弹出一个高级用户菜单。

2025-12-02 10:59:29 511

原创 Java应用中,CPU 使用率过高​问题排查(手动用top+jstack或阿里Arthas)

1. 发现 CPU 过高↓2. 找到是哪个 Java 进程(top / 任务管理器)↓3. 找出进程中哪个线程 CPU 高(top -Hp <pid>)↓4. 将线程 TID 转为十六进制(printf "%x" <tid>)↓5. 导出线程堆栈(jstack <pid> > thread_dump.txt)↓6. 在堆栈中查找对应 nid 的线程,分析其调用栈↓7. 定位到问题代码(某个方法/循环/计算)↓8. 优化代码 / 算法 / 线程模型 / 配置等。

2025-11-12 15:05:29 118

原创 Java面试题-两个对象相等equals相等吗,equals相等对象相等吗

这是一个非常经典的Java面试题,它核心考察的是你对对象相等性判断的深入理解。简单来说,这两个说法并不总是成立,关键在于如何定义“相等”。下面这个表格清晰地展示了它们的关系:情形两个对象相等 (内存地址相同)equals方法返回true说明​equals​✅ 意味着equals为true❌ ​​ 对象相等此时equals等价于==,比较内存地址。​equals​❌ ​​equals为true✅ 意味着 被​​认为是相等的此时equals比较的是对象内容(如字段值)。

2025-10-22 20:33:27 426

原创 MAC-Java集合求差集,如果B集合中的id在A集合中存在就移除,如果不在就返回A集合

​——正是集合运算中的​​操作。简单来说,就是求 ​​ 的结果,即找出所有属于集合A但不属于集合B的元素。

2025-10-22 20:22:54 924

原创 MAC-Spring框架TaskScheduler接口延时和定时任务

在Spring框架中,接口提供了一种非常方便的方式来安排延时和定时任务。如何使用它来创建延时任务。

2025-10-11 10:12:03 98

原创 MAC-基于反射的枚举工具类优化

​​。

2025-09-20 13:55:31 240

原创 MAC-枚举反射工具类

/ 简单枚举类ACTIVE("A", "活跃用户", true),INACTIVE("I", "未激活用户", false),SUSPENDED("S", "已停用", false);// 另一个枚举类RED(1, "红色"),GREEN(2, "绿色"),BLUE(3, "蓝色");return id;

2025-09-17 13:58:31 211

原创 MAC-简化版枚举工具类

设计一个更简单的枚举工具类,不需要定义接口,而是通过函数式接口来获取枚举的code值这样枚举类不需要实现特定接口,更加灵活同时保留缓存机制提高性能。

2025-09-17 10:44:40 222 1

原创 MAC-Java枚举工具类实现

上述代码有空指针问题​​:​​: 每次调用此方法都会遍历所有枚举值。对于枚举成员数量不多的情况,这没问题。但如果成员很多且频繁调用,可以考虑使用静态Map进行缓存以提高查找效率。​​: 建议对输入的codeStr进行空值判断,避免潜在的。​​: 返回“未知”是合理的业务逻辑,但最好将其定义为一个常量,例如,以提高可维护性。可以考虑使用静态Map进行缓存以提高查找效率​​Map​使用确保线程安全在静态初始化块中一次性构建映射关系​​查找操作从 O(n) 降为 O(1)

2025-09-17 10:21:37 191

原创 MAC-画图

画图工具的官网地址是:https://app.diagrams.net/,它的前身是:https://draw.io/。这两个url都能访问。

2025-08-20 11:22:31 237

原创 MAC-Spring Cloud + Spring Boot + RocketMQ集成

项目结构:src/├── main/

2025-08-04 09:47:52 341

原创 RocketMQ-Client对NameServer的选择策略、Broker功能介绍

2025-07-02 22:19:36 213

原创 RocketMQ-NameServer路由注册、路由剔除、路由发现

2025-06-28 22:11:30 327

原创 RocketMQ-基本概念之消息标识、生产者与生产者组、消费者与消费者组

2025-06-28 16:30:56 244

原创 MAC-苹果电脑专业卸载工具AppCleaner

解压后打开:

2025-06-12 23:51:12 331

原创 RocketMQ-发展历程、基本概念

2025-06-12 23:03:00 198

原创 MAC-安装Homebrew、安装Git

1.首先尝试用中科大和清华的源发现不行中国科学技术大学(USTC)提供了 Homebrew 的镜像仓库,同步官方更新,适合国内用户。curlPATH清华大学 TUNA 协会的镜像源同样稳定,适合备用。2.​若镜像站路径变更,可通过 ​​ 间接访问(利用国内 CDN 加速)。​(此命令直接指向 GitHub 官方仓库的install.sh,若网络允许,会自动跳转到可用的镜像节点。有点慢,换了热点,再次安装​问题解决:遇到的错误是由于 ​PATH​ 导致的。

2025-06-09 00:01:15 1374

原创 MAC-线程不安全的代码分析解决

🔥 关键缺陷:所有异步任务共享同一个 req 对象,在任务中直接调用 req.setCurrent() 修改请求参。通过修复请求对象共享问题并合理配置线程池,可有效提升代码的线程安全性。📍 问题代码: req.setCurrent(String.valueOf(finalI))🧨 危险场景:当多个异步线程同时修改 req 对象的页码时,会导致请求参数错乱(如线程A设置。页码2后,被线程B覆盖为页码3,但实际请求可能发送了错误的页码)​:为每个异步任务创建独立的请求对象副本,实现线程间数据隔离。

2025-06-05 20:23:49 142

原创 Java-多线程导出线程安全性问题

代码的主要逻辑是分页查询数据,通过异步任务并行获取后续页的数据,最后汇总并导出Excel。这段代码存在​​,主要集中在​param​和​​上。

2025-05-14 22:24:14 183

原创 JSON-将json保存到数据库表中,字段应该用什么类型

先确定使用的具体数据库是什么,因为不同的数据库对JSON的支持可能不一样。比如,MySQL从5.7开始支持JSON类型,PostgreSQL也有JSON和JSONB类型,而像MongoDB这样的NoSQL数据库则是以JSON格式存储文档的。在数据库中存储JSON数据时,字段类型的选择取决于具体数据库的支持和业务需求。

2025-04-23 11:01:19 565

原创 MAC-从es中抽取数据存入表中怎么实现

【代码】MAC-从es中抽取数据存入表中怎么实现。

2025-04-20 19:22:00 366

原创 Java8-遍历list取出两个字段重新组成list集合

在Java 8中,可以使用Stream API遍历List并提取两个字段重新组合成新的List。以下是几种常见方法: 使用Stream转换:方法2:使用Map.Entry直接利用存储键值对:方法3:使用数组将字段存入数组:方法4:使用Pair/Tuple(需自定义或第三方库)自定义二元组类:示例说明假设有一个类:提取和到新List:​​输出:​​选择合适的方法取决于是否需要保留字段类型信息或是否有现成的类可用。推荐使用自定义类或以确保类

2025-04-20 17:23:37 766

原创 MAC-QueryWrapper中用的exists,是不是用join效果更好

在使用MyBatis-Plus的QueryWrapper中的exists方法时,是否改为使用join效果会更好,以及如何修改。这涉及到SQL优化和MyBatis-Plus的用法。首先,需要理解exists和join在SQL中的区别。exists用于检查子查询是否返回结果,而join则是将两个表连接起来,根据某些条件合并行。通常来说,exists在子查询关联外部表时,可能会逐行检查,而join则可能更高效,尤其是在有合适索引的情况下。

2025-04-20 15:56:06 508

原创 MAC-exists,表字段要不要建索引

在使用EXISTS子查询时,合理建立索引可以显著提升性能,尤其是当两个表的关联字段需要频繁匹配时。以下是针对 ​。

2025-04-20 15:04:58 115

原创 MAC-如果是分页查询,怎么分批次in;基于多线程的分页查询工具类

如果是分页查询,in怎么分批在处理分页查询时,如果 子句中的参数数量过大(例如超过数据库限制,如 MySQL 的 或性能瓶颈),可以通过 ​​分批查询​​ 和 ​​结果合并​​ 的方式解决。以下是具体实现步骤:将原始 拆分为多个子列表(每批最多 个):​​步骤 2:分批查询数据库​​对每个子列表执行查询,合并所有结果:​​步骤 3:排序和去重(可选)​​如果要求结果唯一或有序,可以额外处理:​​步骤 4:计算分页数据​​根据 和 截取当前页数据:​​步骤 5:

2025-04-18 16:34:10 576

原创 SQL-exists和in核心区别​、 性能对比​、适用场景​

EXISTS和IN的基本区别。IN用于检查某个值是否在子查询返回的结果集中,而EXISTS用于检查子查询是否至少返回了一行数据。通常来说,EXISTS在子查询结果集较大时表现更好,因为一旦找到匹配项就会停止搜索,而IN则需要遍历整个结果集。在 SQL 中,EXISTS和IN都可以用于子查询,但它们的性能、适用场景和底层逻辑有显著差异。

2025-04-18 11:01:46 684

原创 MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句

在 MyBatis-Plus 中,的exists方法用于拼接 SQL 中的EXISTS子句,通常用于构建子查询条件。

2025-04-17 10:29:11 1554

原创 MAC-​​基于 Spring 框架的高并发批量任务处理方案​

通过以上方案,可在 Spring 框架下高效处理高并发批量任务,兼顾性能与稳定性。、线程池管理、事务控制)实现高并发批量任务处理,涵盖 ​。​ 上均有显著提升,可支撑每秒万级订单处理。以下结合 Spring 的特性(如。防止集群环境下重复处理相同数据。​,避免不同业务间资源争抢。代码,结合高并发场景的 ​。

2025-04-16 14:47:53 383

原创 MAC-批量任务并行处理​​实现

通过这个示例,可以快速实现高并发批量任务处理,后续可根据具体业务需求调整线程池参数、分。​ 等核心功能,适用于数据清洗、文件处理、批量通知等场景。​ 的批量任务并行处理示例,包含 ​。

2025-04-16 10:59:38 297

原创 MAC-​​需求​​:10万订单异步执行库存扣减、短信通知。

批量任务并行处理​​ 实现,通过拆分任务、异步执行和线程池管理提升处理。

2025-04-15 20:46:11 264

空空如也

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

TA关注的人

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