Read source code of Javac-1

最近发生太多不愉快的事, 还是看看源码压压惊(.这篇大概有很多错误.

1. 说在前面

Javac 大家(只是习惯用大家)应该用的很熟悉了.想我第一次接触 java 就是从 Javac 编译第一个程序的.到了今天,我时不时也会想这到底是怎么实现的?这个想法一直挥之不去.咦,跑题了(.

“代码编译的结果是从本地机器码转变成字节码,是存储格式发展的一小步,却是编程语言发展的一大步.”

这句话反复出现在《深入理解Java虚拟机》里.我倒是没有体会到什么发展,也可以理解为这是为了跨平台而做出的牺牲,虚拟机也为此出现.当然也有直接把 Java 源代码编译成机器码的编译器( AOT 编译器).先不管这个,从 Java 源代码到字节码到底经历了什么呢?肯定要分析处理源码的语句啊,这便是词法分析和语法分析,从而把源码变成了抽象语法树(AST).接着只要遍历语法树就得到了字节码指令流.emmm,以目前的垃圾我不可能实现的.那,先从简单的开始,这篇重点就是从源码验证一下Javac的编译结果.

阅读全文

EFB:Receive Wechat messages on Telegram

If you don’t want to waste time (, please close this page and read the offical document.This Tutorial is based on EFB1.6.0,and on Ubuntu 16.04.

负担

发现自己刚好有一个闲置的云服务器,又不想再用微信了,国庆在家就随便玩了玩.我一直觉得过多的社交是负担,何况还要安装:QQ,Wechat之类的毒瘤社交软件.但是又不得不用(爸妈有微信,学校的通知在QQ),只要有这种想法一天,就觉得所有的社交都是无意的负担.

为什么没有统一的一款软件?没有的话也可以去创造.

阅读全文

Java垃圾收集器与内存分配策略

最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践》这本书,觉得有必要记录一下. 如无说明,则图片是我用Google Drawings制作的, under CC BY-NC-SA 3.0 CN License.

Java运行时内存

先上图

java_runtime_memory

虽然Java中没有直接(明显)的指针操作,但是在内部的实现里用的还是指针的.在访问对象的过程中,有两种方式可以实现:句柄访问,直接指针.对象实际上是一个reference类型的数据,其中存储的是他自己的地址,通过句柄访问则是句柄的地址.

阅读全文

一个无聊的theme

休息了那么久.今天无聊试了试自己的theme.目前当然是垃圾.后期完善.(立flag) 拜拜。;)对了,主题名字叫shell.顾名思义,只是个

阅读全文

乡土中国-分崩离析的乡土社会

今天读完了费孝通教授的<乡土中国>,读完警觉,书中所描绘的乡土社会,何曾不是我从小生活之地?书中一字一句也充满了学者的严谨和乡土社会的淳朴.但书中的乡土社会于今天的,已经不同了,在我看来书中所写的淳朴已经不再了.毕竟这本书成于 1947 年,距今已经 70 年了.

阅读全文