自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 JVM内存模型

先上图一张 再简要总结: JVM内存模型 Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。 下面对这五个区域展开深入的介绍。 1. 程序计数器 1.1. 什么是程序计数器? 程序计数器是一块较小的内存空间,可以把它看作当前线程正...

2019-04-24 14:25:43 118

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

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

2019-04-23 14:26:47 264

转载 tomcat NIO

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

2019-04-19 11:13:09 925

原创 idea的常用功能

一,搜素快捷键1.Ctrl+N搜素类,相当于eclipse的ctrl+shift+R2.Ctrl+Shift+N 搜索所有文件,包含类,xml,js,web 等3.Ctrl+H 查看类的继承关系,例如String的父类是Object4.Ctrl+Alt+B 查看子类方法实现,方便查看实现类Ctrl+B可以查看父类或父方法定义,但是不如ctrl+鼠标左键方便。但是在这里,Ctrl+B或ctrl+鼠标...

2018-05-15 10:09:36 6325 1

转载 Future模式(并发模式)

多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池;    锁(分为内部锁、重入锁、读写锁)、ThreadLocal、信号量等在并发控制中发挥着巨大的作用。这里重点介绍第一种并发——Future模型。一、什么是...

2018-04-20 17:53:05 1402

原创 线程可见性

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

2018-04-18 14:09:59 739

转载 无锁机制实现并发访问

对于并发控制而言,    锁是一种悲观的策略。它总是假设每一次的临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果有多个线程同时需要访问临界区资源,就宁可牺牲性能让线程进行等待,所以说锁会阻塞线程执行。    而无锁是一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突,自然不需要等待,所以所有的线程都可以在不停顿的状态下持续执行。那遇到冲突怎么办呢?无锁的策略使用一种叫做比较交...

2018-04-18 13:50:38 1433

转载 数据库的系统设计-1

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

2018-04-17 11:10:29 390

转载 简述spring加载注解的过程

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

2017-11-10 11:28:27 4598 1

转载 锁及cas的妙用

锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态

2017-08-15 20:16:53 1489

转载 轻量级mq实现之 disruptor 原理

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

2017-08-14 16:55:20 2113

空空如也

空空如也

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

TA关注的人

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