在 Java 中生成随机密码

Java 

1.使用 SecureRandom.nextInt(…) 和 StringBuilder一个简单的解决方案是从定义的 ASCII 范围中随机选择字符,并从中构造一个所需长度的字符串。要构造随机字母数字密码,ASCII 范围应由数字、大写和小写字符组成。import java.security.Sec

JDK为什么选择管程(Monitor)

Java 

管程和信号量都能解决并发问题,它们是等价的。所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。但是管程在信号量所实现功能的基础上提供条件同步,使用更容易,所以 Java 采用的是管程技术.

JDK中Stream的实现原理

Java 

1.Stream是如何做到向前兼容的Stream是JDK1.8引入的,如要需要JDK1.7或者以前的代码也能在JDK1.8或以上运行,那么Stream的引入必定不能在原来已经发布的接口方法进行修改,否则必定会因为兼容性问题导致老版本的接口实现无法在新版本中运行(方法签名出现异常),猜测是基于这个问题

堆分析工具MAT使用

Java 

MAT全程Eclipse Memory Analyzer,是一个非常强大的的内存分析工具,可以帮助我们分析堆内存,找到内存泄露的地方,减少内存消耗。MAT除了可以作为Eclipse的插件使用。官方也提供了独立的安装版本。1.安装可以安装MAT的独立安装包,到官网https://www.eclipse

CPU占用过高排查过程

Java 

1.top通过top命令,进入界面之后按P,根据CPU占用排序,找到最耗CPU的进行PID,从下图种可以发现PID为 15913。可以看到是java应用占用CPU。2.top -p 15913 -H加上 -H 选项可以该进程的相关线程信息,从下图种可知最耗CPU的两个线程PID分别是 15924和1

volatile解析

Java 

1.volatile变量的可见性Java虚拟机规范中定义了一种Java内存 模型(Java Memory Model,即JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。Java内存模型的主要目标就是定义程序中各个变量的访问规则,即在虚拟机中将