摘要: 动态代理是指在运行时,动态生成代理类。正如标题所示,能够提供动态代理的方式有很多。既然选择这么有很多,那么如何选择会更好呢? 带着这个疑问,我找到了Dubbo的作者——梁飞大神的 "一篇文章" 。文章中对四种方式都做了性能测试,从当时测试的结果来看,Javassist成了最好的选择。 不过时间过了那 阅读全文
posted @ 2019-08-22 22:56 bluemilk 阅读(4230) 评论(1) 推荐(0) 编辑
摘要: 步骤如下: 1.使用top命令定位异常进程。可以看见12836的CPU和内存占用率都非常高 2.使用top H p 进程号查看异常线程 3.使用printf "%x\n" 线程号将异常线程号转化为16进制 4.使用jstack 进程号|grep 16进制异常线程号 A90来定位异常代码的位置(最后的 阅读全文
posted @ 2019-07-30 15:00 bluemilk 阅读(1609) 评论(0) 推荐(0) 编辑
摘要: 场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存。 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工作内存,然后才可以使用那个值。 假设现在线程1修改了data变量的值为1,然后将这个修改写入到自己的 阅读全文
posted @ 2019-07-30 13:31 bluemilk 阅读(1997) 评论(0) 推荐(0) 编辑
摘要: 简介 BTrace是sun公司推出的一款Java 动态、安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。 废话不多说,看这篇文章的读者肯定是对Btrace有基本的了解了。笔 阅读全文
posted @ 2019-07-10 17:34 bluemilk 阅读(582) 评论(0) 推荐(0) 编辑
摘要: LinkedHashMap是HashMap的子类,通过维护一个双向链表,实现Map有序遍历元素的特性。 因此,对于LinkedHashMap来说,其基本特性如下: |基本特性 | 结论| |: :|: :| |元素是否允许为null | key和value可以为null | |元素是否允许重复 | 阅读全文
posted @ 2019-04-18 23:20 bluemilk 阅读(866) 评论(0) 推荐(0) 编辑
摘要: 前面讲过ArrayList和LinkedList,它们都是List类型,对于List集合来说,它存储的元素除了有先后顺序关系外,不会在这个集合中表示出其他的联系。本文要讲的HashMap是Map类型,它同时存储key和value两个元素,并且key和value之间是一一对应的。换句话说,Map不光存 阅读全文
posted @ 2019-04-15 21:44 bluemilk 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 对于LinkedList来说,其基本特性如下: |基本特性 | 结论| |: :|: :| |元素是否允许为null | 是| |元素是否允许重复 | 是| |是否有序 | 是| |是否线程安全 | 否| 与ArrayList是一致的。 源码分析 本文使用的是JDK 1.8.0_201的源码。 成员 阅读全文
posted @ 2019-04-09 22:51 bluemilk 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 基本特性 对于集合具体实现类来说,首先需要掌握的基本特性是: 元素是否允许为null 元素是否允许重复 是否有序,指读取数据的顺序是否与存储数据的顺序一致 是否线程安全 对于ArrayList,如下表: | 基本特性 | 结论 | | : : | : : | | 元素是否允许为null | 是| | 阅读全文
posted @ 2019-04-08 23:37 bluemilk 阅读(332) 评论(0) 推荐(0) 编辑
摘要: Java集合与数组是相似的,都用于保存一组对象,并提供一些操作来管理对象。然而,不同于数组的是,当添加或删除元素时集合的大小是可以自动变化的。Java集合不可以存放基本类型数据(比如int,long或double等),而是存放基本类型数据的包装类。 设计目标 Java 集合最核心的目标就是提供一套“ 阅读全文
posted @ 2019-04-07 21:57 bluemilk 阅读(178) 评论(0) 推荐(0) 编辑
摘要: Java 中的 transient 关键字被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 什么是序列化 序列化是对象进行持久化处理,也就是说,将对象转化成一个字节流进行存储(比如存储为一个字节文件)或传输(通过网络传输字节)。同时,我们也可以从 阅读全文
posted @ 2019-04-07 20:50 bluemilk 阅读(6606) 评论(0) 推荐(0) 编辑