- 浏览: 34466 次
- 性别:
- 来自: 北京
最新评论
文章列表
一、背景
在java程序运行中发生OOM的时候,我们可以使用强大的内存分析工具MAT进行问题跟踪,但由于习惯了使用idea开发,再为了MAT下载个eclipse太麻烦,所以安装MAT独立版。
二、安装
下载地址:https://eclipse.org/mat/downloads.php,如下
选择自己系统相应的版本下载,下载完得到一个zip文件,笔者这里使用的是Mac OSX (Mac/Cocoa x86_64),解压后得到mat文件
如果这里双击打开没问题,则可以开始正常使用了;如果双击提示异常,那么继续往下看,提示如下
按照提示路径进入日志文件,异常信息:
...
一、背景
今天线上出现了一个问题,使用springMVC RestController接口返回json数据给客户端,发现其中某一个model中的所有属性,被序列化了两遍,并且一次是大写开头,一次是小写,部分结构如下:
"promotionTags": [
{
"CornerRadius": 1,
"TitleFontSize": 10,
...
Hashmap
原理
hashmap的底层数据结构散列表,即:数组+链表,创建的时候初始化一个数组,每个节点可以为一个链表
当一键值对发生put操作时,
首先根据key的hash值得到这个元素在数组中的位置(即下标),如果这个位置上已 ...
一、case复现
事件定义
public class MyEvent extends ApplicationEvent {
public MyEvent(Object object) {
super(object);
}
}
监听定义
@Component
public class MyListener implements ApplicationListener<MyEvent> {
@Override
public void onApplicationEvent(MyEven ...
一、BIO
1、机制
采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的链接,它接收到客户端的连接请求之后为每个客户端请求创建一个新的线程进行链路处理,处理完成之后通过输出流将响应返回给客户端,线程销毁,这就是典型的一请求一应答的通信模型。
2、分析
当客户端并发访问量增加后,服务端的线程个数和客户端并发访问按1:1的正比关系递增,线程膨胀之后,系统的性能会急剧下降,甚至会发生线程堆栈溢出、创建失败,最终发生宕机或将死的惨状。
当然我们可以在服务端使用线程池的方式,来保护我们的系统受到高并发的冲击,但是即使线程池在大毕竟也是有限的,这样会出现大量的请 ...
一、参考链接
参考链接
二、背景
Mac 上尝试了好多网上的方案都破解无效,通过上述链接解决了问题,总结下简要的步骤。
三、方案
1.官网下载SecureCRT
传送门:secureCRT官网,我使用的是7.1.3版本,亲测可用。
2.下载破解文件
传送门:secureCRT破解文件,链接无效的话,请在附件中下载。
3.获取注册信息
secureCRT安装完后,可能应用程序中没有secureCRT,手动copy到应用程序中。
破解文件下载后,会得到名为securecrt_linux_crack.pl的文件,进入文件所在的目录。
打开终端,执行如下命令:
sudo ...
1 基本概念
1.1 Rx概念
一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库,
其实 RxJava 的本质就是一个可以实现异步操作的库
1.2 Rx优势
同样是做异步,为什么人们用它,而不用现成的 Async / Future / XXX / ... 一个词:简洁! 异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 随着程序逻辑变得越来越复杂,它依然能够保持简洁,对日后代码维护省去不少力气。k
1.3 Rx结构
响应式编程的主要组成部分是observable, operator和susbscriber ...
背景
对ThreadLocal的实际使用场景一直有点模糊。在code review中大家对ThreadLocal是否会出现内存泄漏问题提出不同看法。故上网一探究竟,但是发现网上的说法不一,有的说会导致内存泄漏有的说不会,很难发现实战的结晶。
分析
结构
一个简洁的ThreadLocal类的内部结构如下
public class ThreadLocal<T> {
static class ThreadLocalMap {
static class Entry extends WeakReference<ThreadLoc ...
背景
MySQL的InnoDB引擎实现了多版本控制MVCC,其对RR和RC隔离级别提供了支持,RR和RC可以在快照读取数据,那InnoDB是如何支持快照读的呢?
MVCC 是如何操作的
童话里是这么说的
Select
InnoDB只查找版本小于或等于当前事务版本的数据行。确保事务读取到的行,要么是事务开始前就存在的,要么是事务自身插入或者修改的。行的删除版本要么未定义,要么大于当前事务的版本。确保事务读取到的行,在事务开始之前未被删除。
Insert
InnoDB为新插入的每一行保存当前系统版本号作为行版本号
Delete
InnoDB为删除的每一行保存当前系统版本号作 ...
概念
事务
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。
事务并发
数据库是多个用户(事务)共享的,当多个用户同时访问数据时,那么在这种情况下就叫做并发。
更新丢失
两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。
脏读
一个事务读取到了另一个事务未提交的数据操作结果。这是相当危险的,因为很可能所有的操作都被回滚。
不可重复读
一个事务对同一 ...
一、背景
项目上线前QA进行压测,出现SimpleDateFormat线程安全问题,异常如下
Exception in thread "Thread-1" java.lang.NumberFormatException: multiple points
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1082)
at java.lang.Double.parseDouble(Double.java:510)
at java.text.DigitLi ...