自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 交替打印奇偶的常见实现方式

关于交替打印奇偶数的代码实现网上已经很多了,这篇文章并不是提出新的实现方式,而是对网上现有的实现方式进行一个汇总,闲话不多说,直接上代码基于volatile的实现public class Main { private static volatile int num = 0; //是否打印奇数 private static volatile boolean isPri...

2020-04-03 15:16:42 454

原创 MySQL 主从复制原理浅析

复制流程如上图所示,主库在进行数据改动时,将日志记录到bin-log里,从库存在两一个线程,一个叫做IO 线程,一个叫做SQL 线程。IO 线程从主库的bin-log里拉取日志,存入到从库的relay-log,SQL 线程则从relay-log中读取日志,进行回放、应用到从库,从而实现主从复制。复制模式异步复制主库完成将日志记录到本地的bin-log后,就返回成功给客户端,即不关心从库是...

2020-03-12 15:08:55 256

原创 限流之 Guava RateLimiter 实现原理浅析

Guava 作为一个工具包,内部提供了 RateLimiter 这样的限速工具,RateLimiter采用令牌桶的原理限制同一时刻的并发数量,起到限流作用。关于令牌桶的原理,如下图所示令牌生成器负责向令牌桶内定时投递令牌,如果令牌桶满了,则溢出,保持令牌桶的令牌数不超过令牌桶容量应用程序每次执行时,都要向令牌桶获取令牌,如果成功获取令牌,则继续执行,如果获取令牌失败,则拒绝执行...

2020-01-03 16:36:40 1500

原创 Java多线程之synchronized

多线程环境下,涉及到对于临界区代码的并发访问,有多种同步方位策略,其中synchronized作为最原始的一种同步访问策略存在已久。相比于API层面的Lock锁,synchronized是基于指令的语义层面的一种同步机制,通过在字节码中插入monitorenter、monitorenter指令来实现,相关使用以及具体实现会在下面阐述。synchronized 三种使用场景锁定对象,对一个对象...

2019-11-14 11:21:43 338

原创 Java多线程之ThreadLocal

前言在多线程环境下进行开发时,经常会遇到这样的一种场景,就是在使用某个非线程安全的类时,鉴于线程安全问题,因此会在每次使用时,创建一个新的实例对象,典型的例子就是SimpleDateFormat日期格式化类。即使是对于同一个线程内而言,在每次使用时都会创建一个新的实例对象,这无疑会造成重复创建对象的情况,并会带来一定的性能损耗,在Web应用中尤为常见。线程安全是针对于多个线程共享使用同一实例对...

2019-10-11 11:13:19 307 1

原创 JVM 故障诊断常用工具之 jinfo

该工具可以查看指定JVM进程的系统属性,以及启用/禁用、查看/修改JVM相关参数,具体的命令:jinfo [option] <pid>常用option选项如下所示-sysprops查看指定JVM进程系统属性-flags打印指定JVM进程的相关参数-flag [name]查看指定JVM进程的指定参数-flag +/- [name]启用/禁用指定JVM参...

2019-02-01 19:40:35 196

原创 JVM 故障诊断常用工具之 jstat

该工具可以查看JVM加载的类的数量、堆内存各部分的使用量以及垃圾回收统计,命令格式如下所示jstat <-选项> <进程ID> <间隔时间/毫秒> <查询次数>类加载统计:jstat -class <pid>Loaded 加载class的数量 Bytes 加载的class所占用空间大小 Unloaded...

2019-02-01 19:37:16 234

原创 JVM 故障诊断常用工具之 jmap

该工具可用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 此外,该工具还可以查看堆内存详细信息、堆内存中的对象统计信息、堆内存中的类加载器统计信息、在F-Queue队列等待Finalizer线程执行finalizer方法的对象。使用格式:jmap [option] &lt...

2019-02-01 19:16:16 358

原创 JVM 故障诊断常用工具之 jstack

利用该工具可以查询指定JVM进程中的各个线程状态、线程调用栈信息以及线程死锁检测,常常用于检测是否死锁并打印出和死锁相关的线程信息。jstack相关参数说明如下:默认打印各个线程的状态、锁竞争状态、调用栈信息如果线程之间存在死锁,在输出结果底部会打印出涉及死锁的相关线程信息,如下所示-l命令格式:jstack -l <pid> ,除了和默认输出结果一样外,还...

2019-02-01 19:14:03 215

原创 JVM 故障诊断常用工具之 jps

jps类似于linux中的ps 命令,只是相比ps不同的是jps命令只会列出JVM的相关进程,而ps命令会列出所有进程。在linux中,使用ps命令来查找JVM进程时,一般使用ps -ef | grep java 或者 ps aux | grep java,通过管道命令来过滤出JVM进程。使用jps命令则可以直接查看JVM进程信息。jps相关参数说明如下:默认输出进程ID、主类名-...

2019-02-01 19:11:36 205

原创 JDK8 CompletableFuture常用Api使用梳理

        在JDK8中,CompletableFuture作为一个全新的任务执行框架类,它可以通过简单的api实现任务的异步执行、任务之间的协同、以及任务编排等功能。在CompletableFuture中,每个任务可以被同步的执行、也可以被异步的执行(通过提交到线程池中来实现)。在CompletableFuture中,几乎每一个操作都有三套API,API形式如:xxx(...)、xxxAsy...

2018-10-22 10:50:01 1140

原创 Java多线程之线程停止的正确方式

    在开发中,经常会遇到需要停止一个正在运行的线程的场景,以前的做法是通过Thread.stop() 的方式来停止具体的线程,但是这个方法目前是被废弃掉的,不推荐使用。不推荐使用的原因如下:1、该方式是通过立即抛出ThreadDeath异常来达到停止线程的目的,而且此异常抛出可能发生在程序的任何一个地方,包括catch、finally等语句块中。2、由于抛出ThreadDeatch异常...

2018-08-17 15:06:08 16675 2

原创 Java多线程之volatile变量

    在Java中,同步机制有很多种,其中volatile变量被称作为”轻量级“的同步机制,之所以被称之为”轻量级“同步机制,是因为在和sychronized关键词进行对比之下,volatile变量所需要的代码和运行时开销更少。当然,因为是”轻量级“的同步机制,volatile变量所具备的功能也仅仅是sychronized的一部分。例如,volatile能够保证内存的可见性,并不能够保证操作的原...

2018-08-16 16:27:29 620

原创 虚拟机下CentOS7开启SSH连接

在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS71、 首先,要确保CentOS7安装了openssh-server,在终端中输入yum list installed | grep openssh-server此处显示已经安装了openssh-server,如果又没任何输出显示表示没有安装openssh-ser

2016-10-08 12:27:58 84615 25

空空如也

空空如也

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

TA关注的人

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