深入理解JVM 上

什么是JVM​ JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。​ 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。(引用百度百科)SunJDK和OpenJDK内置的是 HotSpot JVM,是目前使用范围最广的Java虚拟机。当然还有很多虚拟机也非常优秀比如 KVM、Squawk VM、IBM J9 VM等。JVM内存布局与分配程序计数器​ 程序诈数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。虚拟机栈​ 与程序计数器一样,Java ...

图-最小生成树

Prim 算法示例算法思想:代码import java.util.Scanner; public class main { static int Vnum=9; static int Map[][]=new int[Vnum][Vnum]; static int MAX=Integer.MAX_VALUE; public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //初始化 for(int i=0;i<Vnum;i++) { for(int j=0;j<Vnum;j++) { if(i==j) { Map[i][j]=0; //(i,j)=0 } else { M...

红黑树学习笔记

红黑树特性(1)每个结点或者是黑色,或者是红色。(2)根结点是黑色。(3)每个叶子结点(NIL)是黑色。 (这里的NIL结点非空 结点,是一个实实在在的结点 用于删除的方便)(4)如果一个结点是红色的,则它的子结点必须是黑色的。(5)从一个结点到该节点的子孙节点的所有路径上包含相同数目的黑结点。简易说明:红黑树由黑高来和旋转操作置底向上来维护的。阅读建议:​ 1、读者储备二分搜索树的增删改和树的旋转知识。​ 2、更多细节希望去读《算法导论》此文章仅作为参考笔记。统一名称:​ PP: 为祖父结点​ P:为父结点​ Y:为叔结点​ Z:当前结点INSERT红黑树插入结点会影响到他的结构特性,所以分成三种情况来处理。情况1(P和Y结点为红色)当D插入了就违法了第4个特性,就需要把P结点和Y结点变黑色...

阅读jdk1.7的HashMap源码

首先一开头作者们已经注释了HashMap多线程执行是不安全的是不同步的,如果非要用线程去操作HashMap而且确保同步需要线程加锁或者Map m = Collections.synchronizedMap(new HashMap(...));HashMap底层是数组+链表,实例化不并不会马上去初始化数组,而是有添加数据时才会初始化为2次幂大小容量的数组。详见PUT函数的代码public static int highestOneBit(int i) { // HD, Figure 3-1 i |= (i >> 1); i |= (i >> 2); i |= (i >> 4); i |= (i >> 8); i |= (i >> 16); return i - (i >>> 1); }Integer.highestOneBit 用于找一个接近n又小于等于n的二次幂数字 原理很简单,把二进制的低位都填充1 然后用高位减去低位即可获得2次幂的数。...

基于SpringBoot的个人项目【完结】

Error0 Blog Java版花费我许多时间总算完成了,第一次个人从头到尾写完一个项目。简介主要技术: SpringBoot 、Mybatis、 Bootstrap。页面展示PCphone