- 博客(20)
- 收藏
- 关注
原创 2025-02-06T03:54:53.083241+08:00 222512 [Note] InnoDB: *** (1) TRANSACTION:TRANSACTION 945697160,
1520: len 8;;1: len 8;;2: len 20;;3: len 4;asc;;0: len 8;;1: len 8;;2: len 20;;3: len 4;asc;;0: len 4;asc;;1: len 6;asc 8^1;;2: len 7;asc ,;;3: len 8;;4: len 8;;5: len 20;;6: len 5;asc =;;
2025-02-14 09:45:46
674
原创 线上问题定位
不过其实上面那些操作也很难定位到具体的问题点,关键还是要看错误日志栈,找到可疑的对象,搞清楚它的回收机制,然后去分析对应的对象。涉及到网络层面的问题一般都比较复杂,场景多,定位难,成为了大多数开发的噩梦,应该是最复杂的了。日常开发中,代码产生内存泄漏是比较常见的事,并且比较隐蔽,需要开发者更加关注细节。我们在设置各种超时时间中,需要确认的是尽量保持客户端的超时小于服务端的超时,以保证连接正常结束。如何设置合理的接口超时是一个问题。包表示连接重置,用于关闭一些无用的连接,通常表示异常关闭,区别于四次挥手。
2025-01-23 17:01:52
756
原创 全量查数据库导致的OOM内存溢出
3、原先使用select * 查出所有的字段,而后发现后续其实只需要用到用户“id”和“在线状态”字段,所以其实可以只读取出需要的字段,避免不必要的读取的IO消耗。这在用户量少的时候没有问题,但是当用户量大且JVM堆内存不足够匹配时,就会导致问题。在平台导入60w的人员,子系统A同时会生成对应数量用户。添加60W的用户,对比改造前和改造后的情况。发现改造前确实会OOM,而改造后的内存占用影响很小。2、将判断用户过期的逻辑直接放在sql语句中,可以保证只读取需要的过期用户,忽略正常的用户。
2024-10-10 20:40:32
462
1
原创 导出excel的字段可能存在DDE注入问题
在项目中进行导出excel文件的时候,如果不对用户输入的内容进行判断,则可能会有非法使用者通过DDE注入进行入侵:即用户写入特定内容会被excel解析成函数,当excel被打开时会触发公式解释执行。例如:当用户某个字段输入的内容为:A0时,当该内容被导出至excel中后,会调用系统的计算器。1、Excel的解释机制在Excel任何以'='字符开头的单元格都将被电子表格软件解释为公式,如果我们在其中输入“=2+5”,则表格会显示为7。
2024-10-09 20:18:47
643
原创 ruoyi框架字典的使用
2. 前端限定多选框只能是字典中的选项。这样选择好后,发送给后端的值就是我们字典中定义的值了。3. 最关键的来了,我们如何根据后端传过来的字典的值得到字典中的label显示在前端呢。写给自己看的,就比较简略了。然后在多选框中使用字典。1. 字典定义: 略。
2023-08-01 14:48:46
1169
原创 ### Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: column does not exis
踩坑:### Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: column "system_name" of relation "tbl_data_asset" does not exis。
2023-07-28 10:34:50
2143
1
原创 使用mokito单元测试的隔离问题
2. 最终,通过控制变量法,发现这个测试类是最后一个运行的,而在他前一个运行的测试类,会mock这个session变量,导致这最后一个测试类获取不到session中的值。1. 使用mokito进行单元测试时,发现一个测试类单独测时可以执行,而跟好几个测试类测时却报错,说找不到 Session中存的登录用户。3. 对于倒数第二个类,需要将他的影响范围控制在测试类中。隔离起来,不然就会影响其他共享变量的方法!
2023-07-08 22:54:39
101
原创 使用mockito代理静态mock出现的问题
2. 报错:Static mocking is already registered in the current thread"。当进行多个测试类测试时,更容易报这样的错。解决:@BeforeEach 进行mock,然后在@AfterEach 里要进行关闭。问题所在:mock静态类只能一个线程mock一次,所以需要用完后关闭。-- 为了使用mockito的模拟静态类 -->2. @BeforeEach 中mock静态类。3. @AfterEach 中关闭。
2023-07-08 22:26:10
6680
1
原创 数据库逻辑删除设计
因为约束体现了业务规则,只要违反了约束,肯定会违反业务规则,这样能够把开发过程中可能产生的 bug 尽早地暴露出来,尽早地修复。现在很多系统都不允许真正删除数据库中的数据,而是通过引入删除标记字段的方式进行假删除,即我们通常说的逻辑删除。据我的一些同行说,他们公司甚至不允许在程序中出现删除语句,甚至在实施时,分配给你的数据库用户就不具有删除数据的权限!当用户添加了一个编码为 '001' 的商品,并且删除之后,goods 表中便有一条goods_no 字段为 '001' 的记录。
2023-07-07 13:38:43
94
原创 SQL 乐观锁问题
这样是悲观锁,并没有达到乐观锁的效果。同时自己想着拿updateTime字段顺便用作乐观锁,但这样会有问题,在进行更新的时候,updateTime已经被设置新的值了,没法在sql where语句中进行旧值的判断。解决:1. 若只是一句update语句的场景,并不需要先进行select逻辑再update的场景的话,直接使用乐观锁就行,也就是对数据库只有一句update xxxx Set xxx, version = bersion+1 where version = #{version}。
2023-07-07 10:01:33
212
原创 JAVA依赖冲突解决
1. mvn dependency:tree 打印项目的依赖树。导入的包中存在依赖冲突,应该是打印日志的。2. 安装MAVEN HELPER。
2023-07-05 16:23:42
892
原创 leetcode-743. 网络延迟时间
最短路径。2. dijkstra堆优化版本。3.bellman-ford算法。dijkstra 朴素。最短路径的几种算法。
2022-10-02 12:57:41
529
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人