Java面试题 GC机制 垃圾回收需要完成两件事:找到垃圾,回收垃圾。 找到垃圾一般的话有两种方法: 引用计数法: 当一个对象被引用时,它的引用计数器会加一,垃圾回收时会清理掉引用计数为0的对象。但这种方法有一个问题,比方说有两个对象 A 和 B,A 引用了 B,B 又引用了 A,除此之外没有别的对象引用 A 和 B,那么 A 和 B 在我们看来已经是垃圾对象,需要被回收,但它们的引用计数不为 0,没有达到回收的条件。正因为这个循环引用的问题,Java 并没有采用引用计数法。

2019年10月18日 1条评论 1195点热度 2人点赞 阅读全文

本文介绍了 Redis 核心原理和架构:基于事件驱动的模型。事件模型是构成 Redis 内核的引擎,Redis 的丰富功能和组件都是构建在这个模型上的。如果你使用过 Redis,那么本文可以为你打开一道进入 Redis 内部世界的门,窥探 Redis 如何构建它的帝国。 本文先对 Redis 使用的事件模型和原理进行介绍,然后按以下主题顺序展开:

2019年04月11日 1条评论 504点热度 1人点赞 阅读全文

编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目的。学习复杂的通讯框架、底层细节,在习惯于使用OO语言的程序员眼里是绝对事倍功半的。以上做法无可厚非,但有一定的局限性,本文讲述的网络编程头前冠以“高性能”,它是指程序员设计编写的服务器需要处理很大的吞吐量,这与简单网…

2019年04月11日 0条评论 308点热度 0人点赞 阅读全文

本文会按照以下思路进行: (1)Java的四种对象引用的基本概念 (2)四种对象引用的差异对比 (3)对象可及性的判断以及与垃圾回收机制的关系 (4)引用队列ReferenceQueue的介绍 Java的四种对象引用的基本概念

2019年04月11日 0条评论 633点热度 0人点赞 阅读全文

String 类和常量池 1 String 对象的两种创建方式:

2019年04月11日 0条评论 388点热度 0人点赞 阅读全文

提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。 但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的; 甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM, 而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机, Su…

2019年04月11日 0条评论 297点热度 0人点赞 阅读全文

【转载】一文让你读懂Java类加载机制! 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

2019年04月10日 0条评论 337点热度 0人点赞 阅读全文

01 算法与数据结构 算法与数据结构是面试考察的重中之重,也是同学们日后刷题时需要着重训练的部分。简单的总结一下,大约有这些内容: 算法 - Algorithms 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、剪枝技巧 图论:最短路、最小生成树、网络流建模 动态规划:背包问题、最长子序列、计数问题 基础技巧:分治、倍增、二分、贪心

2019年04月09日 0条评论 675点热度 0人点赞 阅读全文

我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子。

2019年04月08日 0条评论 283点热度 1人点赞 阅读全文