很久之前就看到过 Java 对象指针压缩这个技术,只是一直没具体想为什么要偏移 3 位,好吧,最近才知道原因是因为大多数 JVM 实现都是采用 8 位对齐,所以二进制位中的后三位都是 0。
Java 对象内存布局
发表于
|
阅读次数
我把示例代码放了一份在 Github 上,jol-samples,想看的同学可以 clone 下来把每个 example 跑一跑就能看到 JVM 对象在内存中布局的一些信息,包括对象头占多大、字节怎么对齐、字段在内存中的顺序不一定与声明的顺序一致、涉及到继承时字段是如何存放的、带 transient 修饰符的字段被特殊处理、Java8 新增的 @Contended 注解的作用、JVM 的平台相关性、对象头中的 mark word 及 class word、轻量锁、偏向锁、重量锁、Hashcode、GC 需要用到的对象引用图、哈希碰撞时转换为链表以及 Java8 中极端情况下转换为红黑树、观察 mark word 中的 age 字段的值在 GC 后的变化 等等,我没有一个一个写出来,因为 25 个例子太多了,设计到的知识点也比较多,需要一些前置知识才能理解。
Awesome article
发表于
|
阅读次数
《网络是怎样连接的》笔记
发表于
|
阅读次数
浏览器生成消息
- URL: Uniform Resource Locator,统一资源定位符。
- URL: http://www.lab.glasscom.com/dir/,我们可以这样理解,以 “/” 结尾代表 /dir/ 后面本来应该有的文件名被省略了。根据 URL 的规则,文件名可以像前面这样省略。我们会在服务器上事先设置好文件名省略时要访问的默认文件名。这个设置根据服务器不同而不同,大多数情况下是 index.html 或者 default.htm 之类的文件名。
从一道面试题开始说起
发表于
|
阅读次数
其实这道题笔者在第二家的实习面试中被问到过,但是笔者当时并没有回答正确,所幸其他问题回答得还算不赖,没有因为这一个问题表现不佳而被挂掉。最近看《Wireshark 网络分析就这么简单》第一篇文章就是这道题。
让我们开始吧。
问题:两台服务器 A 和 B 的网络配置如下,B 的子网掩码本应该是 255.255.255.0,被不小心配成了 255.255.255.224。它们还能正常通信吗?
服务器A:
服务器B: