Spring注解
主要是总结线程间的通信方式有哪些. 通信方式 通过synchronized进行通信 public class MyObject { synchronized public void methodA() { //do something.... } synchronized public void methodB() { //do some other thing } } public class ThreadA extends Thread { privat…
为什么String被设计为不可变类 保证String对象的安全性。假设String对象时可变的,那么String对象将可能被恶意修改 保证hash属性值不会频繁变更,确保了唯一性,使得类似HashMap容器才能实现响应的key-value缓存功能 可以实现字符串常量池。在Java中,通常两个创建字符串对象的方式, 通过字符串常量的方式创建String str = "abc" 字符串变量通过new形式的创建String str = new String("abc") new String("abc")方式创建Stri…
Switch查找case的方式 tableswitch: a table with keys and labels lookupswitch: uses a table with labels only(采用二分查找法) tableswitch 当使用tableswitch时,从stack中获取int值,并直接通过index获取需要跳转的label, 并且立即执行跳转操作。在整个lookup + jump进程中,时间复杂度为O(1) public static void testSwitch(String type…
-Xms 代表着最小堆, 在jvm启动时就会分配到该大小的区域 -Xmx 代表最大堆, 在jvm最小堆不能满足需求时, 对jvm内存进行扩展, 直到最大堆的内存大小 -Xmn 代表新生代区域的大小 -XX:SurvivorRatio 代表着Eden区域与Survivor区域的比例. 一般Survivor的区域有两个。例如:-XX:SurvivorRatio = 3;则Survivor的大小 = 1/5 * 新生代大小 -XX:NewSize 设置新生代大小 -XX:NewRatio 设置新生代与老年代比值。例如:-…