代码改变世界

2018年文章收藏梳理

2018-12-31 17:29 by 乱月灵猫, 1145 阅读, 0 推荐, 收藏, 编辑
摘要:不知不觉微信中收藏了很多技术文章,这些文章都是在平时看到后,因为没时间就暂时收藏了,久而久之,积攒了很多,也没有分门别类。 忽然发现,专业是一种习惯,在努力逼迫自己学习的时候,就会慢慢觉得自己专业起来。近期这方面做得较少,就渐渐觉得自己不够专业了。所以希望在 2019年继续努力学习,继续专业起来,继 阅读全文

CMS 阶段性了结

2018-09-16 16:33 by 乱月灵猫, 1443 阅读, 0 推荐, 收藏, 编辑
摘要:CMS 阶段性了结 接触 CMS 已经很长时间了,但是对 CMS 的了解似乎一直没有开始,直到最近模型平台项目用到时遇到了很多问题。网上查阅了很多资料,主要参考了 R大、寒泉子、占小狼的各种文章以及回帖。不过自己还是有些愚钝,对一些问题至今不是很清楚,主要原因在于一方面 JVM GC 知识点很多,划 阅读全文

Java 代码监控 JVM 运行状态 —— 记一次 JVM 调优的毛招

2018-09-15 13:52 by 乱月灵猫, 1281 阅读, 0 推荐, 收藏, 编辑
摘要:在做模型项目的时候遇到一个问题,由于模型服务装载一些大模型,大模型对象的大小在 300M 左右,而一台服务器可能装载多个大模型。在服务启动和模型更新的时候会遇到 young gc 耗时过长的问题,young gc 所采用的垃圾回收器是 ParNew。通过观察 GC 日志可以发现,模型对象一开始是存在 阅读全文

ClassLoader PPT 总结

2018-08-25 14:18 by 乱月灵猫, 202 阅读, 0 推荐, 收藏, 编辑
摘要:如果理解了上述所讲的内容,最后的这个问题其实不难解答,在这里就先不做解答了(这个问题是自己想的,网上没有搜到,所以我的答案也未必完全标准,不过有兴趣的朋友可以留下自己的看法) 阅读全文

记一次 CMS 回收异常问题 —— 跨代引用和循环依赖

2018-08-25 14:07 by 乱月灵猫, 1236 阅读, 0 推荐, 收藏, 编辑
摘要:模型系统加载深度学习模型后,会触发报警,原因是触发了 Full GC,而 GC 后回收效率却不高,回收前 83%,回收后 65%,老年代加载完成单率模型后,竟然从 150M 飙到了 1.5G 以上,而实际上用 jol 计算出来的模型大小才 300M,这明显是不符合预期的。最后排查发现实际是 导致的问 阅读全文

读懂 GC 日志

2018-08-22 16:17 by 乱月灵猫, 3628 阅读, 0 推荐, 收藏, 编辑
摘要:读懂 GC 日志 这个课题拖了很久了,可以说读懂 GC 日志对于一个 java 后端开发来说是必须的事情。然而读懂 GC 日志并非是一件容易的事情,首先要对 JVM 内存模型有基本的理解,熟悉常用的 JVM 垃圾回收器,其次要知晓每个参数能够产生的效果,再次要清楚不同的垃圾回收器的日志该如何去读。这 阅读全文

ClassLoader 学习笔记

2018-07-01 20:36 by 乱月灵猫, 868 阅读, 0 推荐, 收藏, 编辑
摘要:ClassLoader 参考 blog: "JVM类生命周期概述:加载时机与加载过程" "深入理解Java类加载器(一):Java类加载原理解析" "深入理解Java类加载器(2):线程上下文类加载器" Java 类加载机制是技术体系中比较重要的部分,对其背后机理有一定理解有助于排查 问题,以及自定 阅读全文

java 可见性简单总结

2018-05-21 10:43 by 乱月灵猫, 3137 阅读, 1 推荐, 收藏, 编辑
摘要:Java 可见性 内存模型 主存 所有线程都可以访问 本地内存 每个线程私有的内存 可见性的方法 volatile 这种方式可以保证每次取数直接从主存取 它只能保证内存的可见性,无法保证原子性 它不需要加锁,比 synchronized 更轻量级,不会阻塞线程 不会被编译器优化 然而要求对这个变量做 阅读全文

Kafka 基本原理整理

2018-05-21 10:39 by 乱月灵猫, 723 阅读, 0 推荐, 收藏, 编辑
摘要:Kafka 体系架构 Producers push message Brokers contain messages Consumers pull message Zookeeper Cluster manage kafka cluster config select leader rebalanc 阅读全文

秒杀系统个人总结

2018-05-21 10:38 by 乱月灵猫, 784 阅读, 0 推荐, 收藏, 编辑
摘要:秒杀系统架构 秒杀系统是一个并发量要求高、负载均衡要求高的、业务场景简单但是逻辑稍微复杂的系统,所以经常会作为面试高级后端开发的面试题。主要考察的就是对问题的拆解、分析、解决,以及架构设计的能力。 基础架构 客户端 web 浏览器 / app 负载均衡层 Nginx web 层 接收 Http 请求 阅读全文