称拓茄肪手搓的daily-paper-reader迭代了三个月迭代了七百余次commits终于比较满意了。这是一个大家都用得上的一个论文阅读工具。

克服的问题是,每天arxiv上都有很多的论文,如果手动一篇一篇拖进去给Gemini,这个过程会很繁琐,如果感觉不错,想要集成到zotero,还得点开pdf再来保存。

而这个项目解决的痛点就是这个,现在在这个站点里面可以订阅自己关注的主题,有问题可以在同一个界面问大模型,默认内置的是Gemini3-flash,若觉得某个文章很不错的话,可以一键加入到zotero当中。 订阅一个专题(若干keywords+若干query),每天的成本花费是0.1~0.2¥,欢迎star & fork & 提issue

1. 编译执行(Compiled Execution)

核心逻辑:先把「源代码」一次性编译成「机器码」(CPU 能直接执行的二进制指令),再运行机器码。

过程:源代码 → 编译器 → 机器码文件(如 .exe)→ 直接运行;

类比:把英文书(源代码)一次性翻译成中文书(机器码),之后直接读中文书,不用再翻译。

2. 解释执行(Interpreted Execution)

核心逻辑:不提前编译,而是逐行读取「源代码」,边解释(翻译成机器码)边执行。

过程:源代码 → 解释器 → 逐行翻译为机器码 → 逐行执行;

类比:读英文书时,逐句找翻译官(解释器)翻译,翻译一句读一句,不提前翻完。

二、编译执行 vs 解释执行(核心区别)

特性 编译执行 解释执行

执行前准备 需先编译生成机器码文件(耗时) 无编译步骤,直接启动

执行速度 极快(机器码直接运行,无翻译开销) 较慢(逐行翻译,每次执行都要翻译)

跨平台性 差(机器码和 CPU/操作系统强绑定) 好(解释器做适配,源代码通用)

调试友好性 差(编译后难对应源代码) 好(逐行执行,易打断、查错)

典型语言 C/C++、Go(默认) Python、JavaScript(浏览器)

三、JVM 的执行方式:混合执行(解释执行 + 编译执行)

Java 既不是纯编译执行,也不是纯解释执行,而是 JVM 采用「解释执行 + 即时编译(JIT)」的混合模式,兼顾「跨平台」和「高性能」。

1. JVM 执行流程(核心)

Java 源代码 → javac 编译 → 字节码文件(.class)→ JVM 执行

JVM 执行分两步:

1. 解释执行:字节码 → 解释器(Interpreter)→ 逐行翻译为机器码执行;

2. 即时编译:热点代码(频繁执行的代码)→ JIT 编译器 → 编译为机器码缓存 → 后续直接执行机器码。

2. 分阶段拆解 JVM 执行逻辑

阶段 1:初始执行(解释执行)

JVM 启动后,先通过「解释器」逐行执行字节码;

优点:启动快(无需提前编译),符合 Java 「一次编写、到处运行」的跨平台特性(字节码与平台无关,解释器做平台适配);

缺点:逐行翻译,执行速度慢。

阶段 2:热点代码优化(JIT 编译执行)

JVM 内置「热点检测器」,会统计代码的执行次数:

当某段代码执行次数达到阈值(比如 10000 次),就被标记为「热点代码」;

JIT 编译器(Just-In-Time Compiler)会把这段热点字节码一次性编译为机器码,并缓存起来;

后续执行这段代码时,直接运行缓存的机器码,无需解释,速度大幅提升。

3. JVM 混合执行的核心优势

兼顾跨平台:字节码是平台无关的,解释器保证了 Java 能在不同 OS/CPU 上运行;

兼顾高性能:热点代码被 JIT 编译为机器码,执行速度接近纯编译型语言(如 C++);

灵活优化:JIT 还会做编译优化(比如方法内联、循环展开),进一步提升性能。

四、补充:JVM 的两个关键组件

1. 解释器(Interpreter)

核心实现:HotSpot 虚拟机的解释器有「模板解释器」(主流),直接生成机器码模板,比传统解释器更快;

作用:保证 JVM 启动速度,处理低频代码。

2. JIT 编译器

HotSpot 虚拟机有两个 JIT 编译器(可配置):

C1 编译器:轻量级编译器,编译速度快,优化程度低,适合客户端程序(如桌面应用);

C2 编译器:重量级编译器,编译速度慢,但优化程度高(比如循环优化、逃逸分析),适合服务端程序(如后端接口);

JDK 10 后引入「Graal 编译器」,支持更极致的优化。

五、关键对比:Java 与纯编译/解释型语言

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐