自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【GC日志查看】

gc日志:看法简述:堆空间示图: 事件类型: :这表示这是一个垃圾回收事件,具体原因是分配失败(即没有足够的内存来分配新对象)。 垃圾回收范围: :这是年轻代(PSYoungGen)的垃圾回收详情。 是垃圾回收前年轻代使用的总内存。 是垃圾回收后年轻代使用的总内存。 是年轻代的总大小。 整体堆信息: :整个Java堆的信息。

2025-04-29 15:02:14 448

原创 GC的查看

看法简述:内存的状况(只是展示堆用,不对应任何日志信息)

2025-04-29 14:57:38 1225

原创 PageHelper编写注意及内存泄漏处理

原因:确保分页参数被消费掉,并正确执行分页参数清理操作。2:分页参数被消费后,抛出异常(无内存泄漏)1:分页参数被消费前,抛出异常(内存泄漏)2:执行sql时抛出异常 (无内存泄漏)

2025-04-27 15:49:28 318

原创 线程池参数配置

备注:更高级的还有动态配置,基于CPU跟核心线程的使用率动态调整。

2025-04-25 15:12:07 200

原创 ConcurrentHashMap原理

ConcurrentHashMap 是专门为并发场景设计的,支持高效的并发读写操作。

2025-04-25 11:21:55 271

原创 @TrandLocal原理简述 与 可能存在的长事务问题

ThrandLocal 自动从数据库连接池获取链接,并开启事务,自动绑定到TrandLocal上,耗时操作会导致占用这个链接时间长,数据库连接被占用不释放,相似操作过多,会导致数据库连接池耗尽【典型的长事务】被这个注解包裹的方法都使用同一个链接,

2025-04-25 11:03:38 108

原创 【FastJSON】的parse与parseObject

功能:parseObject 方法专门用于将 JSON 字符串解析为一个 Java Bean(即指定类型的对象)。功能:parse 方法是 FastJSON 提供的一个通用解析方法,它可以将 JSON 字符串解析成一个 Object 类型的结果。适用场景:当你不确定或者不关心 JSON 字符串的具体结构(比如它可能是一个数组、对象或者其他类型)时,可以使用 parse 方法。返回类型:parse 返回的是 Object 类型,而 parseObject 可以指定返回类型。自定义类型会报类型转换异常!

2025-04-25 11:02:26 243

原创 【延迟双删】简单解析

首次删除:当需要更新某个数据项时,首先删除缓存中的该项。更新数据库:接着,更新数据库中的该项。短暂延迟:然后等待一段很短的时间(例如50毫秒),这段时间允许任何正在进行的读操作完成。二次删除:最后,再次删除缓存中的该项。这样做的目的是防止在这段延迟期间有任何读操作将旧数据重新写入了缓存。2:为什么要进行再次删除(二次删除):1:为什么延迟:短暂的等待时间(延迟)是为了确保所有可能的读取请求都已完成,避免旧的数据被再次写入缓存。

2025-04-22 21:55:58 185

原创 加锁注意事项

• 说明二:如果lock方法在try代码块之内,可能由于其它方法抛出异 常,导致在finally代码块中,unlock对未加锁的对象解锁,它会调用 AQS 的 tryRelease 方法(取决于具体实现类),抛出 IllegalMonitorStateException异常。2:并且在加锁方法 与try代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在 finally中无法解锁。• 说明一:如果在lock方法与try代码块之间的方法调用抛出异常,那么无 法解锁,造成其它线程无法成功获取锁。

2025-04-18 17:21:07 178

原创 字符串循环拼接,不能用 + 连接, 需要用 StringBuilder 代替

然后,在循环中,我们调用 append() 方法来追加 "hello" 字符串。这不会创建新的字符串实例,而是直接在现有的 StringBuilder 实例上进行修改。这行代码时,实际上是在创建一个新的 String 对象。这是因为 String 在 Java 中是不可变的,这意味着每次你“改变”一个 String 的值时,实际上是创建了一个新的 String 实例。随着循环次数的增加,这种操作会显著增加内存消耗和垃圾回收的负担,因为每次迭代都会生成一个新的临时对象。用 StringBuilder 代替+

2025-04-18 16:14:53 125

原创 Map初始容积、限制最大容积、最大容积底层

哈希表的初始容量:位运算优化:

2025-04-18 11:45:25 163

原创 Map扩容因子底层

2025-04-18 11:33:45 81

原创 下载maven低版本(官网)

如何下载历史版本的Maven?_maven历史版本下载-CSDN博客

2025-04-16 10:39:52 251

原创 git ssh

Github配置ssh key的步骤(大白话+包含原理解释)_github生成ssh key-CSDN博客

2025-04-16 10:24:11 90

原创 BigDecimal(double)会丢失精度

或使用BigDecimal的 valueOf方法,此方法内部其实执行了Double的toString,而 Double 的toString按double的实际能表达的精度对尾数进行了截断。优先推荐入参为String的构造方法:BigDecimal recommend1 = new BigDecimal("0.1");• 说明: BigDecimal(double)存在精度损失风险,在精确计算或值比 较的场景中可能会导致业务逻辑异常。• 最坏影响: 数据精度丢失。• 级别: 【MAJOR】

2025-04-16 10:23:09 206

原创 所有的包装类对象之间值的比较,全部使用equals方法比较

• 说明:对于Integer在-128至127之间的值会在缓存里对象复用,区间 外数据会产生新对象。正例:Integer.valueOf(a).equals(Integer.valueOf(b));反例:Integer.valueOf(a) == Integer.valueOf(b);所有的包装类对象之间值的比较,全部使用equals方法比较。• 级别: 【BLOCKER】• 最坏影响:导致业务逻辑错误。• 规约类型:BUG。

2025-04-15 17:51:29 96

原创 ArrayList的subList的数据仍是集合

说明:subList 返回的是ArrayList的内部类SubList,并不是 ArrayList而是ArrayList的一个视图,一个片段,对于SubList子列表 的所有操作最终会反映到原列表上。ArrayList的subList结果不可强转成ArrayList,否则会抛出 ClassCastException异常 •。反例:List test = (ArrayList) list.subList(0, 1);级别: 【CRITICAL】 •。最坏影响: 程序错误,抛出异常。规约类型:BUG •。

2025-04-15 17:44:34 391

原创 Arrays.asList()的对象不能调用add/remove/clear方法

使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相 关的方法,它的add/remove/clear方法会抛出 UnsupportedOperationException异常 •。Arrays.asL ist体现的是适配器模式,只是转换接口,后台的数据 仍是数组。第二种情况:str[0] = "changed";sList的返回对象是一个Arrays内部类,并没有实现集合的修改 方法。第一种情况:list.add("yangguanbao");最坏影响:程序错误,抛出异常 •。

2025-04-15 17:31:39 145

原创 集合转数组的方法:toArray的正确用法

时,传入数组的大小会对性能、内存使用和安全性产生不同的影响。方法用于将集合转换为数组。

2025-04-15 17:12:31 432

原创 mybaties plus 更新null值进入数据库

(数据库一定要支持字段为null值)

2025-04-11 18:46:33 446

原创 随着程序的启动而加载

启动类启动,加载策略模式的子类,最终将数据收集到map。由程序启动带动注入。

2025-03-14 15:59:38 239

原创 plus 批量插入的底层原理 及 处理方式(优化)

service层提供了另一种方案,掉service层的实现进行批量插入。【就是需要填写俩参数那个,其中一个是waper】

2025-03-10 15:06:42 142

原创 instr,locate是否使用索引实验

函数(在MySQL中)用于查找一个子字符串在另一个字符串中的起始位置。查找一个字符串在另一个字符串中首次出现的位置。(只用模糊查询不考虑哪一位开始,写死>0)它返回的是子字符串首次出现的位置索引,如果未找到该子字符串,则返回0。

2025-03-07 10:00:20 197

原创 飞书多维表格自动化接入方式

4:向指定接口发送数据。

2025-03-05 19:18:36 138

原创 JDK 14,15,17的一些新特性(部分常用)

实现, 只允许指定的子类去继承,结合sealec使用)属性位置就是 小括号里的userid,username。备注:父类子类必须位于同一个包下。4.1:permits(限制。作用相当于只读的class类。

2025-02-13 23:30:33 250

原创 2025新年祝自己工作顺利,新年快乐!!!

2025新年祝自己工作顺利,新年快乐!

2025-02-10 20:08:50 103

原创 SQL深度分页优化

2024-12-06 20:03:01 101

原创 MDC实现日志链路追踪

MDC是基于@Slf4j的。

2024-09-07 18:06:33 555 1

原创 CPU飙高排查步骤

备注:这里1328线程号是十进制,转为16进制,找到对应nid。根据返回信息,排查到1313进程里,1328线程cpu占用超高。(这张图仅做展示,红框tid,nid随意圈展示用)查看进程里每个线程的详细占用。计算器里HEX是十六进制。

2024-09-05 19:51:41 651 1

原创 oracle索引字段存储数据过长,导致索引失效

此问题发现于6月中旬,线上问题优化。但是基于优化查询,是的查询保持毫秒级。2:长位索引,索引不生效。并未解决索引不生效问题,1:短位数据,索引生效。

2024-07-09 21:18:18 339

原创 排查问题心得

答案:实施手滑,俩没勾选上!1:排查一上午,发现其他同事写的需求存在bug,且仓储系统因为新需求导致取消幂等性校验。===========推送数据出现了重复(我们推送给仓储)========================修复后又出现了问题,数据显示不正确============1:推送数据出现了重复(我们推送给仓储)排查一整夜没结果,还原代码发现就是该两个。2:修复后又出现了问题,数据显示不正确。问:为什么第一次发送4个第二次发送两个。实施第一次手动勾选推送4个。第二次手动勾选推送两个。

2024-05-05 21:42:49 217

原创 不一样的SQL优化

思想要灵活,懂变通。

2024-04-30 17:58:21 122

原创 (包治百病)江湖老中医治疗oracal序列重复

今日测试来报此问题,觉方案一太麻烦,所以写了个懒人版,江湖老中医,包治百病。报错: ORA-00001: 违反唯一约束条件 (mes.SYS_C0020470)

2024-04-25 10:49:05 202

原创 mq与硬盘

后来发现,是个古老的机械盘,起了个名叫ssd。mq写数据,总会占用硬盘百分之90以上的内存。到处排查无果,一切正常。

2024-04-23 18:17:48 150

原创 ORACAL执行计划

解释:| Id | - 表示执行计划的步骤编号,从0开始,按执行顺序递增。| Operation | - 描述数据库执行的具体操作类型,如:SELECT STATEMENT、SORT AGGREGATE、INDEX FULL SCAN等。| Name | - 操作所涉及的对象名称,如索引名、表名等。| Rows | - 预估的执行此操作将读取或产生的行数,是Oracle优化器根据统计信息做出的估算。| Bytes | - 预估处理的字节数,反映了操作所需处理的数据量。

2024-04-09 19:09:06 808

原创 记一次SQL优化

我们的主库查询的快,但是查询走的是只读库,只读库运行需两分钟。去掉排序功能(运维,及生产人员可接受,且此排序并用不到),原本执行此查询,需要占用546G内存数据,但经过与实施人员沟通,以及对于业务的排查。(精简SQL,站在业务的角度优化SQL)最终在确保业务完整性的前提下,将2分钟的查询,优化到3S钟,并节约500余G内存空间。

2024-04-09 19:07:46 141

原创 Oracal执行计划解析

解释:| Id | - 表示执行计划的步骤编号,从0开始,按执行顺序递增。| Operation | - 描述数据库执行的具体操作类型,如:SELECT STATEMENT、SORT AGGREGATE、INDEX FULL SCAN等。| Name | - 操作所涉及的对象名称,如索引名、表名等。| Rows | - 预估的执行此操作将读取或产生的行数,是Oracle优化器根据统计信息做出的估算。| Bytes | - 预估处理的字节数,反映了操作所需处理的数据量。

2024-03-29 17:48:28 1081

原创 Oracal执行计划解析

解释:| Id | - 表示执行计划的步骤编号,从0开始,按执行顺序递增。| Operation | - 描述数据库执行的具体操作类型,如:SELECT STATEMENT、SORT AGGREGATE、INDEX FULL SCAN等。| Name | - 操作所涉及的对象名称,如索引名、表名等。| Rows | - 预估的执行此操作将读取或产生的行数,是Oracle优化器根据统计信息做出的估算。| Bytes | - 预估处理的字节数,反映了操作所需处理的数据量。

2024-03-29 17:46:38 1525

原创 生产约束问题

解决:后经领导知道,物理外键,可以开启关闭。生产开,无法删除,测试开发关,所以删除不报错可以删除。今日生产无法删数据,报xxxx,核心:存在物理外键,直接删主表数据报此异常(子表有主表的关联)解决经过:开发测试环境,对比生产,都存在外键。开发测试可以删除,生产不可以。问题:开发测试存在外键可以正常删除?

2024-03-26 19:32:05 160

原创 Oracal序列冲突问题解决

5:修改缓存为默认的20(改之前是多少,这里改多少,写20是因为oracal默认20)原因:假设,序列化当前为61,但是表里已经被人为或者直接导入了61这个ID的数据,1:修改序列步长,此时步长为:当前库里最大ID值 - 序列ID值。2:记录当前缓存值,设置缓存为1(怕下一步获取很多导致ID异常)这一次插入序列值ID会在最大ID值基础上+1。3:执行如下SQL: 记得修改序列名,表名。目的:使序列自增,达到当前数据库ID最大值。那么,当基于序列化再次插入,则会报此问题。

2024-03-15 19:37:34 428

空空如也

空空如也

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

TA关注的人

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