自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MAT内存分析工具-独立版安装

一、背景在java程序运行中发生OOM的时候,我们可以使用强大的内存分析工具MAT进行问题跟踪,但由于习惯了使用idea开发,再为了MAT下载个eclipse太麻烦,所以安装MAT独立版。二、安装下载地址:https://eclipse.org/mat/downloads.php选择自己系统相应的版本下载,下载完得到一个zip文件,笔者这里使用的是Mac OSX (Mac/Cocoa x86_64...

2018-02-09 15:03:43 24581 5

原创 Jackson序列化之自动检测

一、背景今天线上出现了一个问题,使用springMVC RestController接口返回json数据给客户端,发现其中某一个model中的所有属性,被序列化了两遍,并且一次是大写开头,一次是小写,部分结构如下:Java代码  "promotionTags": [      {          "CornerRadius": 1,          "TitleFontSize": 10,  ...

2018-02-09 15:03:05 2493 1

原创 Map原理及使用

Hashmap原理hashmap的底层数据结构散列表,即:数组+链表,创建的时候初始化一个数组,每个节点可以为一个链表 当一键值对发生put操作时,首先根据key的hash值得到这个元素在数组中的位置(即下标),如果这个位置上已经存在其他元素,将进行下一步操作。 由于同一点是链表方式存储,会将原来的元素向后推然后新的元素放在这个位置上put操作可能会出现冲突,冲突分两种: 不同的key值,通过ha...

2018-02-09 15:01:00 25535

原创 spring事件机制-onApplicationEvent执行两次

一、case复现事件定义 Java代码  public class MyEvent extends ApplicationEvent {        public MyEvent(Object object) {          super(object);      }  }    监听定义 Java代码  @Component  public class MyListener implem...

2018-02-09 15:00:11 5280 2

原创 JAVA BIO与NIO的对比

一、BIO1、机制 采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的链接,它接收到客户端的连接请求之后为每个客户端请求创建一个新的线程进行链路处理,处理完成之后通过输出流将响应返回给客户端,线程销毁,这就是典型的一请求一应答的通信模型。2、分析当客户端并发访问量增加后,服务端的线程个数和客户端并发访问按1:1的正比关系递增,线程膨胀之后,系统的性能会急剧下降,甚至会...

2018-02-09 14:59:13 258

原创 SecureCRT for mac 破解安装

一、参考链接参考链接二、背景Mac 上尝试了好多网上的方案都破解无效,通过上述链接解决了问题,总结下简要的步骤。三、方案1.官网下载SecureCRT传送门:secureCRT官网,我使用的是7.1.3版本,亲测可用。2.下载破解文件传送门:secureCRT破解文件3.获取注册信息secureCRT安装完后,可能应用程序中没有secureCRT,手动copy到应用程序中。破解文件下载后,会得到名...

2018-02-09 14:57:58 15393 1

原创 Rxjava学习

1 基本概念1.1 Rx概念一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库,其实 RxJava 的本质就是一个可以实现异步操作的库1.2 Rx优势同样是做异步,为什么人们用它,而不用现成的 Async / Future / XXX / ... 一个词:简洁! 异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 随着程序逻辑变...

2018-02-09 14:56:46 247

原创 深入理解ThreadLocal的"内存溢出"

背景对ThreadLocal的实际使用场景一直有点模糊。在code review中大家对ThreadLocal是否会出现内存泄漏问题提出不同看法。故上网一探究竟,但是发现网上的说法不一,有的说会导致内存泄漏有的说不会,很难发现实战的结晶。分析结构一个简洁的ThreadLocal类的内部结构如下Java代码  public class ThreadLocal<T> {         s...

2018-02-09 14:56:00 829

原创 深入了解MVCC

背景MySQL的InnoDB引擎实现了多版本控制MVCC,其对RR和RC隔离级别提供了支持,RR和RC可以在快照读取数据,那InnoDB是如何支持快照读的呢?MVCC 是如何操作的童话里是这么说的SelectInnoDB只查找版本小于或等于当前事务版本的数据行。确保事务读取到的行,要么是事务开始前就存在的,要么是事务自身插入或者修改的。行的删除版本要么未定义,要么大于当前事务的版本。确保事务读取到...

2018-02-09 14:55:00 394

原创 事务并发之隔离级别

概念事务事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。 事务并发数据库是多个用户(事务)共享的,当多个用户同时访问数据时,那么在这种情况下就叫做并发。 更新丢失两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。这是因为系统没有执行任何的锁操作,因此并发事务并...

2018-02-09 14:51:20 139

原创 SimpleDateFormat线程安全问题

一、背景项目上线前QA进行压测,出现SimpleDateFormat线程安全问题,异常如下Java代码  Exception in thread "Thread-1" java.lang.NumberFormatException: multiple points      at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecim...

2018-02-09 14:50:16 168

MAT内存分析工具-独立版安装

 一、背景在java程序运行中发生OOM的时候,我们可以使用强大的内存分析工具MAT进行问题跟踪,但由于习惯了使用idea开发,再为了MAT下载个eclipse太麻烦,所以安装MAT独立版。二、安装下载地址:https://eclipse.org/mat/downloads.php,如下选择自己系统相应的版本下载,下载完得到一个zip文件,笔者这里使用的是Mac OSX (...

2018-02-04 17:35:46 396

空空如也

空空如也

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

TA关注的人

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