思路: cpu多级缓存 - 伪共享 解决一致性 缓存锁MESI + 总线锁 缓存行填充 cpu指令乱序 演示demo 为什么乱序 - 好处 因为cpu比内存块太多,为了充分压榨cpu cpu内存屏障阻止乱序 sfence&lfence&mfence volatile实现 字节码层面 在access ...
分类:
其他好文 时间:
2020-07-15 01:02:42
阅读次数:
97
综述 JDK版本:JDK8/JDK7 + OracleJDK/OpenJDK Java开发框架:Spring Boot/Spring + Hibernate/MyBatis 前后端分离:单页应用/模板引擎 前后端接口文档自动生成:Swagger 业务端逻辑校验框架:Functional Valida ...
分类:
编程语言 时间:
2020-07-15 01:01:42
阅读次数:
130
1.JVM新加“即时编译”,将热点代码直接编成底层代码,减少增加翻译之后可能存在的通信歧义或效率问题; 2.字符集和字符编码 字符集:Unicode 字符编码: utf-8(这个是可变编码,需要1位用1位,需要15位放15位,最大可扩容到4字节,标记隔离的方式是这个字符的前2位来标识是否继续读); ...
分类:
编程语言 时间:
2020-07-14 18:37:38
阅读次数:
66
虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率, 但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用 虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。 ...
分类:
编程语言 时间:
2020-07-14 16:19:50
阅读次数:
88
监控工具:jvisualVM、VisaulVM、jprofiler JVM优化书籍:《Java性能优化权威指南》、《深入理解java虚拟机》 1.年轻代空间不足 2.per Gen(永久代)空间满 3.CMS GC时出现promotion failed和concurrent mode failure ...
分类:
其他好文 时间:
2020-07-14 10:36:50
阅读次数:
187
报错产生的原因 1.重复启动tomcat造成8080端口的冲突 2.其他软件占用了8080端口 解决方案 打开/tomat/bin目录,通过命令强制关闭他 其他软件占用8080,那么需要打开server.xml文件,然后修改tomcat的默认端口号,一般在是service.xml文件当中的65行 注 ...
分类:
其他好文 时间:
2020-07-14 00:53:32
阅读次数:
77
参考:https://my.oschina.net/cicadasmile/blog/4328041 1、基本概念 流量控制的核心作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度流动发送,达到保护系统相对稳定的目的。通常是将请求放入缓冲区或队列内,然后基于特定策略处理请求,匀 ...
分类:
编程语言 时间:
2020-07-14 00:33:42
阅读次数:
102
[第一种确定Java虚拟机JVM是64位JVM还是32位的方法Sun有一个Java系统属性来确定JVM的位数:32或64:sun.arch.data.model=32 // 32 bit JVM sun.arch.data.model=64 // 64 bit JVM您可以使用System.getP... ...
分类:
编程语言 时间:
2020-07-13 22:00:02
阅读次数:
78
[类加载子系统是JVM里面的一个重要的环节。与C/C++那些需要在编译器期进行连接工作的语言不同,Java类的加载、连接和初始化都是在程序运行时完成的,只有在类被需要的时候才进行动态加载。1)JVM何时加载类?有且只有以下5种情况:创建新对象(new)、设置/读取static字段(putstatic... ...
分类:
编程语言 时间:
2020-07-13 21:45:29
阅读次数:
60
JVM内存包含以下部分: 堆内存,它是Java对象的存储 非堆内存,Java用于存储加载的类和其他元数据 其他,JVM代码本身,JVM内部结构,加载的探查器代理代码和数据等。 堆 JVM有一个堆,它是运行时数据区,从中分配所有类实例和数组的内存。它是在JVM启动时创建的。 可以使用以下VM选项配置堆 ...
分类:
其他好文 时间:
2020-07-13 18:32:11
阅读次数:
60