- 博客(8)
- 资源 (5)
- 收藏
- 关注
原创 堆外内存泄漏排查
线程级溯源:执行 pstack 获取线程堆栈,搜索持有 java.nio.DirectByteBuffer 或 io.netty.buffer.PooledUnsafeDirectByteBuf 的线程栈,结合 NMT 的 detail 信息定位到具体分配内存的线程4。框架专项排查(如 Netty):如果是 Netty 导致的泄漏,可在启动参数中加入 -Dio.netty.leakDetection.level=PARANOID,Netty 会在日志中记录未正确释放的 ByteBuf 的创建堆栈1。
2026-06-10 18:23:59
245
原创 java线程和kotlin协程的比较
设置线程池的线程数量为4个,本地jmeter线程组设置100个,Ramp-Up设置为5,循环100次,在mysql中插入10万行数据,并返回结果。由于在本地环境测试,没有专门的压测机,测试结果会有偏差。在并行处理时,kotlin的协程还是有很大的性能优势。比较用java多线程方式和kotlin协程方式的性能。
2026-04-28 11:26:23
32
原创 webflux中用到的kotlin协程
建议: 在新项目中,尽量全面拥抱 suspend 和 Flow,这会让你的 WebFlux 代码量大幅减少,可读性大幅提升。当需要返回数据流(原本对应 Flux,例如无限滚动的列表或 SSE 推送)时,使用 Kotlin 的 Flow。场景:当你需要在非挂起函数的上下文中(或者为了兼容旧的 API)返回一个 Mono,但内部逻辑想用协程写时。由于 WebFlux 是非阻塞的,而协程运行在线程之上,你需要正确管理线程切换,特别是涉及阻塞 IO 时。// Kotlin 协程写法 (推荐)
2026-04-24 09:17:14
363
原创 Kotlin 协程的模型
当协程遇到耗时操作(如 delay 或网络请求)时,它会挂起(暂停执行并保存状态),同时释放底层的操作系统线程去处理其他任务。这不仅仅是一个编程技巧,而是一套完整的设计哲学,它规定了协程如何启动、如何调度、如何管理生命周期以及如何传递异常。异常向上传播:如果一个子协程抛出未捕获的异常,这个异常会沿着树向 上传递给父协程,导致父协程及其所有兄弟协程都被取消。轻量级:一个线程的栈内存通常需要 1MB,而一个协程仅需约 1KB。父管子:当你启动一个协程(子)时,它会自动成为当前作用域(父)的孩子。
2026-04-16 14:44:31
232
原创 二叉树的右透视图
当前队列是最后一个节点的时候,最后这个节点就是右透视图需要展示的节点。在遍历当前队列的时候,把下一层加入下一层队列。借助二叉树的层次遍历,用两个队列,一个队列存当前遍历的层,另一个队列存下一层。处理完当前层队列后,把下一层设置成当前层,然后重复上面的步骤。
2026-04-14 18:03:33
52
原创 CXF Webservice的参数传递
最近在做的项目中用到cxf webservice,记得还是前几年的时候用过,这两年都没有再用过,有些东西都记不起来了。遇到个问题,记录下来。觉得记录些东西还是有必要的,虽然以前没有记录的习惯。遇到个问题,就是客户端要在soap header中传过来一个参数,这个参数也要在cxf的server端再返回去,而且也要放在soap header中。官网有几种方法,感觉还是用注释的方法比较方便。...
2017-04-03 00:27:29
948
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅