自定义博客皮肤

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JVM内存模型

先上图一张 再简要总结: JVM内存模型 Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。 下面对这五个区域展开深入的介绍。 1. 程序计数器 ...

2019-04-24 14:25:43

阅读数 22

评论数 0

1.通过jstack与jmap分析一次线上故障

一、发现问题 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。 二、排查思路 简单分析下可能出问题的地方,分为5个方向: 1.系统本身代码问题 2.内部下游系统的问题导致的雪崩效应...

2019-04-23 14:26:47

阅读数 36

评论数 0

tomcat NIO

Tomcat的NIO是基于I/O复用来实现的。对这点一定要清楚,不然我们的讨论就不在一个逻辑线上。I/O模型一共有阻塞式I/O,非阻塞式I/O,I/O复用(select/poll/epoll),信号驱动式I/O和异步I/O。首先看下IO的五种模型。下面是摘录前辈的文章 ,分析的不错,仅做收藏 ...

2019-04-19 11:13:09

阅读数 37

评论数 0

idea的常用功能

一,搜素快捷键1.Ctrl+N搜素类,相当于eclipse的ctrl+shift+R2.Ctrl+Shift+N 搜索所有文件,包含类,xml,js,web 等3.Ctrl+H 查看类的继承关系,例如String的父类是Object4.Ctrl+Alt+B 查看子类方法实现,方便查看实现类Ctrl...

2018-05-15 10:09:36

阅读数 2037

评论数 1

Future模式(并发模式)

多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池;    锁(分为内部锁、重入锁、读写锁)、ThreadL...

2018-04-20 17:53:05

阅读数 548

评论数 0

线程可见性

1.可见性一个线程对共享变量值得修改,能够及时的被其他线程看到。2.共享变量如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。3.Java内存模型描述了Java程序中各种变量(线程共享变量)的访问规则,以及在jvm中将变量存储到内存和内存中读取出变量这样的底层细节...

2018-04-18 14:09:59

阅读数 74

评论数 0

无锁机制实现并发访问

对于并发控制而言,    锁是一种悲观的策略。它总是假设每一次的临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果有多个线程同时需要访问临界区资源,就宁可牺牲性能让线程进行等待,所以说锁会阻塞线程执行。    而无锁是一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突,自然不需...

2018-04-18 13:50:38

阅读数 634

评论数 0

数据库的系统设计-1

数据库垂直拆分 水平拆分        当我们使用读写分离、缓存后,数据库的压力还是很大的时候,这就需要使用到数据库拆分了。                数据库拆分简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主...

2018-04-17 11:10:29

阅读数 62

评论数 0

简述spring加载注解的过程

上文我们已经学会使用@Resource注解注入属性。学是学会了,但也仅限于会使用而已,故我们要深入剖析其内部原理,才算真正明白。接下来我们就来编码剖析@Resource注解的实现原理,但这都是建立在用@Resource注解完成属性装配的案例基础上的。  由于我们要使用dom4j工具来读取Spin...

2017-11-10 11:28:27

阅读数 1710

评论数 0

锁及cas的妙用

锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进...

2017-08-15 20:16:53

阅读数 889

评论数 0

轻量级mq实现之 disruptor 原理

Disruptor最大的特点是无锁实现队列.(当然默认使用的BlockingWaitStrategy还是用到了lock.lock();publish的时候signalAll().但是你可以选择不用这种策略的) Disruptor说的是生产者和消费者的故事. 有一个数组.生产者往里面扔芝麻.消费者...

2017-08-14 16:55:20

阅读数 1112

评论数 0

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