Don't Stop


  • 首页

  • 标签

  • 分类

  • 关于

多线程并发 之 AQS(整理+转载)

发表于 2019-01-08 | 分类于 多线程并发

前言

前面博客中讲的synchronized是一个隐式锁,即锁的持有与释放都是隐式的,直观上感受就是在字节码可以看到一对monitorenter、monitorexit。而这篇讲的Lock是一个显示锁,即加锁和释放都是要手动编写的。Lock的一些实现如ReetrantLock底层实现细节是依赖于AQS的。网上关于AQS的文章非常多,但是我觉得能够讲清楚的寥寥无几。下面两篇博客是无数不多的能够深入彻底的去解析AQS,所以这篇博客我只记录一下我一些看法,详细的看下面的博客。

深入剖析基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理
剖析基于并发AQS的共享锁的实现(基于信号量Semaphore)

阅读全文 »

多线程并发 之 volatile

发表于 2019-01-05 | 分类于 多线程并发

前言

相信大家谈及到 Java 多线程的时候,对volatile一定不会陌生。这篇我就来分享一下我对volatile的了解。

阅读全文 »

多线程并发 之 synchronized 锁的优化

发表于 2019-01-03 | 分类于 多线程并发

前言

早期版本的synchronized在性能上比较差,好在Jdk1.6之后对其进行种种优化,那么这篇我们就来学习一下synchronized锁都有哪些优化操作!因为网上关于这块的解析比较多了,所以基础如自旋、Mark Word就不再复述了,主要讲我对锁优化的认识!

阅读全文 »

Redis 主从架构

发表于 2019-01-01 | 分类于 Redis

前言

Redis 在一些高并发的查询起到了至关重要的作用,在生成环境中通常需要设置主从架构或者集群架构。其中主从架构中主Redis负责读写功能,从Redis只负责读功能,当主Redis宕机那么服务就不再提供写的功能,所以需要再搭配哨兵,使得从Redis往主Redis进行转变。这里就来详细阐述一下简单的主从架构,下一篇讲解主从架构+哨兵。实验环境:Linux + Redis 4.0.13

阅读全文 »

高性能IO 之 FileChannle和MMAP分析

发表于 2018-12-29 | 分类于 高性能IO

前言

上一篇的博客中,我从底层上分析了BufferInputStream为什么效率会比FileInputStream来得高,这两种方式都是传统的IO,在JDK1.4 中NIO又多了两种新的IO方式:FileChannle 和 MMAP。这里着重来解释FileChannle的高性能的场景。

阅读全文 »

高性能IO 之 BufferedInputStream底层原理解析

发表于 2018-12-27 | 分类于 高性能IO

前言

RMQ中为了实现高性能在IO上做了很多优化,在阿里中间件性能挑战赛也可以看到很多大神们在IO上花了很多功夫去分析优化,这篇主要来解析一下BufferedInputStream的实现原理,看看它在IO上做了哪些优化。

阅读全文 »

高性能IO 之 Linux shm和mmap的区别

发表于 2018-12-24 | 分类于 高性能IO

前言

这几天看了不少关于mmap的资料,发现在查阅的过程对mmap存在两种不同的说法。

第一种:将磁盘文件与虚拟内存进行映射,通过页表在物理内存发现缺页的情况,于是将磁盘上的文件拷贝到对应的物理内存上。这个是正确的说法。

另外一种:mmap将一段内核内存和用户内存进行映射,这样当内核把磁盘的文件拷到内核缓存的时候,就不需要再拷贝到用户内存中。应为用户内存和内核内存已经映射过了。(错误的说法)

期初看到这两种说法,让我一直很懵逼,直到今天看了一篇博客,是关于内存共享的,才知道第二种说法其实是shm的内存共享原理。

阅读全文 »

高性能IO 之 内存映射 mmap的理解(转载+整理)

发表于 2018-12-21 | 分类于 高性能IO

前言

上一篇解释了RMQ为了提高大文件的读写效率,使用了内存映射的方法,将磁盘上的文件与进程中的进程虚拟空间进行了映射,减少一次内核空间到用户空间的一次复制。看到这里我就有了疑惑,既然内存映射有这么好的特性,为什么还需要传统的IO呢?看下文的分析。

阅读全文 »

RocketMQ 源码分析 消息存储(预备知识二)(转载+整理)

发表于 2018-12-19 | 分类于 MQ

前言

在RMQ中为了提高commitlog文件的读写效率,而采用了一个叫做内存映射的技术。按照我的理解,内存映射在处理大文件上有非常大的性能提升,所以这篇来记录一下我对内存映射的理解。

阅读全文 »

RocketMQ 源码分析 消息存储(预备知识一)

发表于 2018-12-18 | 分类于 MQ

前言

看到RocketMQ的性能问题的时候,通常能看到page cache、顺序IO写、预读等,要想设计出一个高性能的中间件,这部分的知识是绝对要掌握的。

阅读全文 »
1…345…11
JinTx

JinTx

104 日志
26 分类
65 标签
github E-Mail CSND
© 2020 JinTx
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4