最近在分析一潜在内存泄露问题的时候,jmap出来中有很多的FastThreadLocalThread实例,看了下javadoc,如下: A special variant of ThreadLocal that yields higher access performance when accessed from a FastThreadLocalThread. Internally, a FastThreadLocal uses a constant index in an array, in…
阅读这篇文章之前,建议先阅读和这篇文章关联的内容. 1. 详细剖析分布式微服务架构下网络通信的底层实现原理(图解) 2. (年薪60W的技巧)工作了5年,你真的理解Netty以及为什么要用吗?(深度干货) 3. 深度解析Netty中的核心组件(图解+实例) 4. BAT面试必问细节:关于Netty中的ByteBuf详解 5. 通过大量实战案例分解Netty中是如何解决拆包黏包问题的? 6. 基于Netty实现自定义消息通信协议(协议设计及解析应用实战) 7. 全网最详细最齐全的序列化技术及深度解…
JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don't accept new tasks, but process queued tasks STOP状态: Don't accept new tasks, don't process queued tasks, and interrupt in-progress tasks TIDYING状态:All tasks ha…
OK,现在我们来研究下JDK自带的日志Logger. 从jdk1.4起,JDK开始自带一套日志系统.JDK Logger最大的优点就是不需要任何类库的支持,只要有Java的运行环境就可以使用. 相对于其他的日志空间,JDK自带的日志可谓是鸡肋,无论易用性,功能还是扩展性都要稍逊一筹,所以在商业系统中很好直接使用. 我们现在整理到日志系列了,所以这里只是做一个简单的介绍就好了,比较实际编码中也不会写到这部分代码. JDK Logging把日志分为如下几个级别,等级依次升高. all→finest→…
前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想. java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 package java.util; public interface Observer { void update(Observable o, Object arg); }  借鉴 JDK 封装方法的过多参数的方案 也十分直接,就是使用顶级父类 Object 做参数类型,然后自己可以定义一个参数封装的类…
最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇Java调优经验谈.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://java-performance.info这个站点上看到了类似的一篇博文,自我感觉很有指导意义.于是决定翻译+重组织一下此篇文章:Java server application troubleshooting using JDK tools. 引言 在Java世界中,我们的很多开发工作从编码.调试到调优都在使用GUI工具.我…
  一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id   jstack 查看Java线程      jstack -l pid; 做thread dump,直接打印在串口     jstack pid>> ./threaddumps  输出到指定文件分析   jmap 查看Java内存使用情况         jmap -histo:live pid 对象占用内存排名     jmap -dump:file=memroydumps pid 把h…
最近看到了大量关于java性能调优.故障排查的文章,自己也写了一篇< Java调优经验谈 >.接着此篇文章,其实一直打算写写一些常用调优工具以及它们的惯常用法的.后来在http://java-performance.info这个站点上看到了类似的一篇博文,自我感觉很有指导意义.于是决定翻译+重组织一下此篇文章:Java server application troubleshooting using JDK tools. 引言 在Java世界中,我们的很多开发工作从编码.调试到调优都在使用GU…
监控小程序的配置 生产环境tomcat的配置 编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: export JAVA_OPTS="-Xms256m -Xmx512m -Xss256m -XX:PermSize=512m -XX:MaxPermSize=1024m  -Djava.rmi.server.hostname=136.64.45.24 -Dcom.sun.management.jmxremote.port=9315 -Dcom.s…
大家好,你还在面向 for 循环编程吗? 还有谁不会用观察者模式吗? 本篇栈长带来<观察者模式>理论及实战- 什么是观察者模式? 观察者模式(Observer Pattern)定义了对象间的一种一对多的依赖关系,这样只要一个对象的状态发生改变,其依赖的所有相关对象都会得到通知并自动更新. 在观察者模式中,发生改变的对象叫做观察目标,而被通知更新的对象称为观察者,一个观察目标对应多个观察者,观察者一般是一个列表集合,可以根据需要动态增加和删除,易于扩展. 使用观察者模式的优点在于观察目标和观察者…
有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位.这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手. 对于此类问题,一般我们都有固定的分析流程.借助于JDK自带的一些分析工具,比如jstack.jmap.jstat一类的命令行工具,除此之外,还有jconsole.mat.jvisualvm这些图形界面分析工具. 这篇文章基于JDK8,操作系统是macOS 12.0.1 1.一些命令行分析工具 这些命令行分析工具都在jdk/bin目录下 解压jdk/lib/tool.j…
使用JDK自带的visualvm进行性能监测和调优   1.关于VisualVm工具  VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 Java 应用程序的详细信息.在 VisualVM 的图形用户界面中,您可以方便.快捷地查看多个 Java 应用程序的相关信息. 入门指南(中文版)地址:http://visualvm.java.net/zh_CN/gettingstarted.html 在进行性能监测前,先安装好相关的插件 2.监控…
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码. 二.如何启动JConsole 如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole…
带连接池的netty客户端核心功能实现剖析 带连接池的netty的客户端核心功能实现剖析 本文为原创,转载请注明出处 源码地址: https://github.com/zhangxianwu/light-netty-client 1.连接池 由于TCP连接的建立和关闭分别会经历三次握手和四次挥手,而三次握手和四次挥手都是系统开销很大的操作.如果每次一个新的请求发起时,都为其新建一个连接,在请求处理完毕后,再将这个新的连接关闭,这样处理的代价是高昂的,尤其是在请求本身的处理逻辑比较简单时,那么新建…
1,建立自己的java项目my_service 2,建立包,com.hjg.service 3,创建类: IMyService.java package com.hjg.service; import javax.jws.WebService; @WebService public interface IMyService { int add(int a, int b); int minus(int a,int b); } 加上@Webservice注解JAX-WS注解,表示java api x…
有时候在MyEclipse中,文件只能保存为“ISO-8859-1”的类型,而这种类型的文件时无法保存中文数据的,那么我们只能将中文数据经过Unicode编码才能往文件中保存,这里可以使用JDK自带的工具——native2ascii. 使用命令行窗口,输入“native2ascii”,如下图所示: 输完回车后,光标会另起一行,这时候就可以输入中文了,按回车结束,对应的Unicode码会在下一行显示:…
package com.stone.dp.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * jdk自带的动态代理:必须实现了某个接口:<br> */ public class JdkProxy implements InvocationHandler { private Object obj; publ…
使用JDK自带的MessageDigest计算消息摘要 上代码 /** * 使用JDK自带MessageDigest */ public class MessageDigestUtils { /** * 计算消息摘要 * @param algorithm 消息摘要算法 * @param in 数据流 * @return 消息摘要 * @throws IOException * @throws NoSuchAlgorithmException */ public static byte[] dig…
package com.tools.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher;…
Jvisualvm:jdk自带的监控工具(JDK1.6+) 在终端中输入Jvisualvm回车出现如下界面:…
1 代码如下 public class LRULinkedHashMap<K, V> extends LinkedHashMap<K, V> { private final int maxCapacity; private static final float DEFAULT_LOAD_FACTOR = 0.75f; private final Lock lock = new ReentrantLock(); public LRULinkedHashMap(int maxCapac…
前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现的问题及解决办法. 1:什么是HTTPS? HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证. 问题: Firebug和postm…
本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 开发时间久了,难免会写出一些一些死锁的代码,自己明明调用该方法可该方法就是不执行.不进该方法.日志也不打印! 这里我们模拟一段死锁的代码,使用jdk自带的管理工具来排查是不是死锁了! //死锁代码 public class DeadLockDemo implements Runnable{ public int flag = 1; //静态对象是类的所有对象共享的 private static Obj…
转自:http://blog.csdn.net/huangxinyu_it/article/details/41693633 有关http与https的区别请看<浅谈http与https的区别(转)> 目前我们看到的很多网站采用的都是http协议,信息是明文传输的,很容易被黑客或是有恶意行为的人截获,所以对于安全系数比较高的系统(如:银行等)不能直接采用http协议,需要采用https协议.使用https协议需要购买ca认证,本示例我们采用jdk自带的keytool工具生成证书,但是实际项目中…
1.何为注解? 概念:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释.          如下所示,我们在编程中经常遇到的@Override等等都是注解. 2.注解的分类 2.1 按照运行机制  (往后会讲) 源码注解:       注解只在源码中存在,编译成.class文件就不存在了. 编译时注解:       注解在…
该篇文章,主要是工具普及,告诉大家有这么两款工具,可帮助我们进行JVM调优,及时看到JVM的变化. 不过建议,最好还是对于JVM相关的知识点,有一定的基础和熟悉. JDK自带jconsole.exe和jvisualvm.exe这两款JVM分析工具.就跟平时打开eclipse.exe文件一样,双击即可 1.jconsole.exe进去后,如图: 内存: 线程: 类: 概要: MBean 2.java VisualVm 总的来说,这两款工具,使用方式基本没有什么区别,都能帮助你用于JVM分析.…
VisualVM是什么? VisualVM是JDK自带的一个用于Java程序性能分析的工具,JDK安装完毕后就有啦,在JDK安装目录的bin文件夹下能找到名称为jvisualvm.exe. 要使用VisualVM分析您的应用性能,首先得让VisualVM识别出您的应用.Eclipse有个插件名叫"VisualVM Launcher for Eclipse",可以帮助我们做到这一点. Eclipse VisualVM Launcher的安装和配置 1. 从下面的链接下载VisualVM…
对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等. 本文基于JDK1.8而写成. 我下面写了一个最简单的Java类,包含了一个无限循环,每隔5秒增加一个计数器的值. package jmap; class Tool{ private int count = 0; public void Run() throws InterruptedException{ while(true){ Sys…
版权声明:本文为Jaiky_杰哥原创,转载请注明出处.This blog is written by Jaiky, reproduced please indicate. https://blog.csdn.net/jaikydota163/article/details/52783588 关于Logger 最近放假在家无聊,研究一个开源框架时发现它频繁运用到了一个叫Logger的相关类来进行日志记录,作为log4j的忠实粉丝,在大多数项目上都看到的是log4j和commons-logging,…
jps工具 虚拟机进程状况工具 工具主要选项 jstat: 虚拟机统计信息监视工具 jinfo: Java配置信息工具 jinfo( Configuration Info for Java) 的作用是实时地查看和调整虚拟机各项参数. 使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表, 但如果想知道未被显式指定的参数的系统默认值, 除了去找资料外, 就只能使用jinfo的-flag选项进行查询了( 如果只限于JDK 1.6或以上版本的话, 使用java-XX: +PrintFlags…