自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 DCL为什么要加volatile

volatile是防止指令重排,为了避免使用半初始化的对象

2020-10-24 13:57:19 174

原创 DCL(DOUBLE CHECK LOCK)

public class Test {private static volatile Test INSTANCE;private Test() {}public static Test getInstance() { if (Objects.isNull(INSTANCE)) { // Double Check Lock synchronized (Test.class) { if (Objects.isNull(INSTANCE)) {

2020-10-24 13:50:17 144

原创 打印语句和本地内存同步代码

public class Test {// 如果此处的变量加上volatile,变量保持可见性,下面的m end会被打印boolean runnig = true;void m() { System.out.println("m start");// 如果此处部位打印语句,线程会一直卡主不会打印下面的m endwhile (runnig) {System.out.println(“start”);}System.out.println(“m end”);}public stat

2020-10-24 13:11:44 88

原创 cpu乱序执行证明代码

public class Test {private static int a = 0, b = 0;private static int x = 0, y = 0;public static void main(String[] args) throws Exception{ int i = 0; for(;;) { i ++; x = 0; y = 0; a = 0; b = 0; Thread one = new T

2020-10-24 13:07:34 368

原创 关于pom文件jar依赖报错

今天在开发时遇到一个问题,运行可以,但是打包报错,一个依赖中的一个包引入不了导致。解决办法:排除引入不了的依赖解决:排除报错的依赖,打包即可

2020-08-12 17:06:37 281

原创 推荐一款好用的线上排查问题工具arthas

Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!5.是否有一个全局视角来查看系统的运行状况?6.有什么办法

2020-08-03 15:10:59 362 1

原创 jvm的四种主要垃圾收集器

1.串行垃圾回收器(Serial):它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境。2.并行垃圾回收器(Parallel):多个垃圾收集线程并行工作,此时用户线程是暂停的,适用于科学计算 /大数据处理首台处理等弱交互场景。3.并发垃圾回收器(CMS):用户线程和垃圾收集线程同时执行(不一定是并行,可能交替执行),不需要停顿用户线程,互联网公司多用它,适用对响应时间有要求的场景。4.G1垃圾回收器:G1垃圾回收器将堆内存分隔成不同的区域然后并发的对其进行垃圾回

2020-08-03 14:55:31 259

原创 synchronized和Lock的详细对比介绍

1.原始构成:    syschronized是关键字属于jvm层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有同步块或方法才能调wait/notify等方法)    monitorexit    lock是具体类(java.util.concurrent.locks.Lock)是api层面的锁2.使

2020-07-28 16:29:03 94

原创 mysql主从复制步骤

MySQL 复制过程分成三步:1.master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;2.slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);3.slave 重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL 复制是异步的且串行化的复制的基本原则:(1)每个 slave 只有一个 master(2)每个 slave 只能有一个唯一的服务器 ID(

2020-07-27 15:05:07 93

原创 线上问题排查命令

java进程排查    ps aux | grep java |grep -v grep    dump内存:jmap -dump:format=b,file=/tmp/dump.dat         jps -l 可以查看java进程的完整名(包括包)    jinfo -flags <进程

2020-07-24 15:10:30 756

原创 关于快速查找数据库重复记录的优化

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-07-24 15:03:48 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除