- 博客(11)
- 收藏
- 关注

原创 书本大纲:从芯片、分布式到云计算AI时代
本文系统探讨了现代计算领域的核心技术体系。在并发编程部分,分析了Java与Golang的并发模型差异;Java虚拟机章节解析了JIT编译与GC优化;RPC框架重点讨论网络模型与协议设计;高并发系统设计提出分层抗压和过载保护策略;分布式系统剖析了CAP理论与一致性算法;云原生部分探讨容器编排与Serverless未来。文章从底层原理到架构设计,全面覆盖了高性能系统的关键技术挑战与解决方案,为构建可靠高效的分布式系统提供了系统性思考框架。
2025-07-24 10:43:47
498

原创 书本介绍:技术札纪——有限硬件与无限计算的权衡艺术
在当前技术飞速发展的时代,开发者面临着一个看似无法调和的难题:一边是有限的硬件与资源,另一边是无限增长的计算与业务需求。如何在秩序、效率和弹性之间做出明智的权衡,不仅是技术的考验,更是一门决策的艺术。本书,便是对这门艺术的思考与记录。
2025-07-23 21:29:52
591
原创 Java编译器优化秘籍:字节码背后的IR魔法与常见技巧
本文介绍了编译器中的中间表达形式(IR)和常见的机器无关优化技术。编译器分为前端和后端,前端生成高级IR(HIR),后端转换为低级IR(LIR)并最终生成目标代码。Java程序从源代码到机器码需经历多级IR转换。文章详细讲解了值编号、常数折叠、常数传播、死代码消除、公共子表达式消除、null判断消除、边界检查消除、循环展开等优化技术,通过代码示例展示了优化前后的变化。这些优化技术可显著提高程序运行效率,减少不必要的计算和检查。
2025-08-06 09:40:45
556
原创 “代码跑着跑着,就变快了?”——揭秘Java性能幕后引擎:即时编译器
摘要:HotSpot虚拟机包含C1和C2两个即时编译器,C1侧重快速启动和局部优化,C2专注全局优化能提升30%以上性能。Java 7引入分层编译策略,通过5个编译层次结合二者优势。性能监控数据(如方法调用计数器和循环回边计数器)是JIT优化决策的关键依据,触发条件包括编译阈值和栈上替换技术(OSR)。这些机制共同实现了Java程序从解释执行到高效编译的平滑过渡,特别适合长时间运行的后台服务。(149字)
2025-08-05 08:31:21
844
原创 “同声传译”还是“全文翻译”?为何HotSpot虚拟机仍要保留解释器?
本文分析了Java虚拟机的执行机制和编译优化策略。Java采用基于栈的指令集架构,通过解释器和即时编译器(JIT)混合执行模式提升性能。前端编译将Java源码转为字节码并进行语法优化,后端JIT编译器将热点代码转为本地机器码。解释执行保证了快速启动和逆优化能力,而JIT通过运行时分析实现更高质量的编译。文章还对比了解释执行、即时编译和提前编译(AOT)的优缺点,指出AOT虽能减少运行时开销,但受限于Java的动态特性。现代JVM如HotSpot采用混合模式平衡启动速度和峰值性能。
2025-08-04 09:40:24
605
原创 a+b=c,处理器一步搞定,Java虚拟机为啥要四步?
摘要:本文解析了Java虚拟机(JVM)基于栈的运行机制。JVM通过字节码指令模拟操作系统,采用栈式架构(包括操作数栈、局部变量表等)实现跨平台性,但执行效率低于寄存器架构。文章详细对比了两种架构的差异,并通过代码示例展示了栈帧在方法调用中的核心作用:操作数栈负责存储计算中间值,局部变量表保存参数,动态链接支持多态,返回地址控制程序流。最后以加法运算的字节码演示了操作数栈的具体运作过程。(149字)
2025-08-01 10:42:27
940
原创 Hello World背后藏着什么秘密?一行代码看懂Java的“跨平台”魔法
摘要:Java虚拟机(JVM)通过字节码机制实现"一次编写,随处运行"的跨平台特性。JVM将.java文件编译为.class字节码文件,再通过解释器转换为机器码执行。字节码作为中间代码,既保留了语言特性又便于优化。以HelloWorld程序为例,其字节码包含构造方法和main方法的执行逻辑,通过aload_0、invokespecial等指令实现对象初始化和方法调用。这种设计平衡了跨平台性和性能需求。(150字)
2025-07-31 10:44:36
603
原创 没有Happens-Before?你的多线程代码就是‘一锅粥’!
现代编程语言通过内存模型(如Java的JMM)抽象底层硬件细节,简化并发编程。核心概念happens-before定义了多线程操作的偏序关系,确保原子性、可见性和有序性。JMM通过6种规则(如程序顺序、锁同步、volatile变量、传递性等)规范线程间数据同步
2025-07-30 14:43:30
1222
原创 为什么i++不是原子操作?一个让无数并发程序崩溃的“常识”
本文介绍了原子操作的概念及其实现机制。原子操作指不可中断的一个或一系列操作,通过处理器总线锁定、缓存锁定和原子指令(如CMPXCHG)保证操作的原子性。文章通过Java多线程示例说明非原子操作导致的数据不一致问题,并详细解析了三种实现方案:总线锁定(效率低)、缓存锁定(基于MESI协议)和原子指令(如CAS)。同时指出CAS存在的ABA问题、自旋开销和单变量限制等缺陷,最后展示Java如何使用Atomic类实现线程安全计数。
2025-07-29 15:58:12
1039
原创 我的代码出现幻觉?说好的a = 1; x = b,怎么成了x = b; a = 1?
本文探讨了多线程环境下指令重排序对程序执行结果的影响。示例代码展示了代码重排序可能导致x=0、y=0的意外结果。文章分析了重排序的优化原理,包括编译阶段静态重排序和运行阶段动态重排序,指出其必须遵守数据依赖性和as-if-serial语义两个原则。为解决多线程重排序问题,介绍了内存屏障机制,并说明Java通过volatile关键字实现内存屏障,禁止被修饰变量发生指令重排序,从而保证共享变量的可见性和程序正确性。最后通过修改后的代码示例,展示了volatile如何确保多线程程序的预期执行结果。
2025-07-28 15:10:07
1019
原创 我的代码背叛了我?为什么 a=1, b=2,最后x和y都等于0?
本文探讨了并发编程中的核心挑战——内存模型问题。通过Java示例分析了共享变量在多线程环境下的传播机制、可见性和有序性问题。文章指出,处理器缓存与内存速度差异导致的写延迟,以及指令重排序优化是并发异常的根源。重点解析了volatile关键字通过汇编LOCK指令强制缓存一致性,以及synchronized通过锁机制保证内存可见性的原理。本文为理解并发编程底层逻辑提供了系统视角,后续将继续深入相关主题。
2025-07-25 11:37:01
1003
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人