Java 标签下的文章

Web Socket

Spring Integration Websocket

一. 依赖(这里只列举了websocket相关依赖)<!-- spring webSocket依赖 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>${spring.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-messaging - ...

阅读剩下更多

Spring Integration Websocket
Java

Java Classloader

1. 类加载时机1.1. 生命周期 1.2. 立即初始化(主动引用) 遇到new、 getstatic、 putstatic或invokestatic这4条字节码指令时 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化. 当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类. 当使用JDK 1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、 REF_putStatic、REF_invokeStatic的 ...

阅读剩下更多

Java Classloader
Java

Java Compile and Optimize

1. 早期(编译期)优化1.1. 概论 前端编译器:Sun的Javac、 Eclipse JDT中的增量式编译器(ECJ) JIT编译器:HotSpot VM的C1、 C2编译器 AOT编译器:GNU Compiler for the Java(GCJ)、 Excelsior JET javac这类编译器几乎不对代码进行性能优化,把性能优化放到了JIT即时编译器内,可为JRuby、Groovy这类语言的代码也同等享有优化带来的好处 1.2. javac编译1.2.1. 编译过程 解析与填充符号表过程 词法、语法分析 词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、 变量名、 字面量、 运算符都可以成为标 ...

阅读剩下更多

Java Compile and Optimize
Java

Java Collection Frame

1. JAVA集合框架图 集合框架 集合框架-简图 2. ArrayList、LinkedList、Vector、Stack 都是java的可存储重复元素的集合容器,都实现了Collection、List接口 ArrayList是基于数组的可动态扩展的、可存储重复元素的、有默认顺序的集合,非线程安全的,最大元素个数为Integer.MAX_VALUE个 由于是基于数组的所以add(E)、get(i)效率较高,set(i,E)、remove(i)、add(i,E)效率较低 LinkedList是基于双向链表的可动态扩展的、可存储重复元素的、非线程安全的有序集合。 由于是基于链表的所以add(E)、add(i,E)、set(i,E)、remove(i)效率较高,get(i)效率较低 Vecto ...

阅读剩下更多

Java Collection Frame
Java

Java GC

一. Java虚拟机内存区域1. 运行时数据区 2. 程序计数器(Program Counter Register) 1、程序计数器是线程内(每个线程都有唯一的、封闭的)一小块内存区域 2、计数器指定的是当前虚拟机执行指令的地址 3、当虚拟机执行的是Native方法时,计数器值为空(Undefined),此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError 情况的区域. 3. Java虚拟机栈(Java Virtual Machine Stacks) 1、虚拟机栈是线程内部的、封闭的 2、虚拟机栈描述的是java方法执行的内存模型 3、每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、 操作数栈、 动态链接、 方 ...

阅读剩下更多

Java GC
返回顶部