Fork me on GitHub
上一页 1 2 3 4 5 6 7 ··· 12 下一页
摘要: 概述 前面两篇文章聊了下MESI协议和java内存模型,但是都是介绍原理,没有介绍在语言级别到底是如何保证的线程安全,从本文开始就开始介绍java语言中常用的关键字和锁。本文先介绍一下volatile,这个关键字面试的时候很喜欢考察,其实面试并不是为了考察volatile的用法,而是为了考察java 阅读全文
posted @ 2020-09-01 16:07 猿起缘灭 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 概述 Java内存模型是屏蔽掉硬件和操作系统内存访问差异,实现在各个平台内存访问的一致性。本文就介绍一下Java内存模型原理,之后介绍一下并发编程中常见的原子性、可见性、有序性问题。 主内存和工作内存 由于内存和CPU性能的差异,所以现代计算机都使用多级缓存的方式来加快运算速度,也就是说CPU不能直 阅读全文
posted @ 2020-09-01 10:27 猿起缘灭 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 概述 由于内存的运行速度和CPU的运行速度相差太多,所以现代计算机CPU都不是直接操作内存,而是直接操作寄存器和高速缓存,如果只有一个CPU这个事情就很简单,但是如果计算机中有多个核,那每个CPU都从主内存中读取了同一个变量,如何保证缓存的一致性,就变得非常麻烦,现在常用的解决办法有两种。 总线锁定 阅读全文
posted @ 2020-08-31 21:51 猿起缘灭 阅读(4316) 评论(1) 推荐(1) 编辑
摘要: 概述 本文会介绍HashMap部分源码和一些常见问题。 HashMap中参数介绍 /**默认初始化容量大小*/ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /**最大容量*/ static final int MAXIM 阅读全文
posted @ 2020-08-30 22:21 猿起缘灭 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 概述 第一次听说这个概念是在看kafka原理的时候,因为当时很好奇为什么kafka一个基于磁盘存储的MQ会那么快,当时找到的答案是kafka采用磁盘顺序读写和零拷贝技术,从而使得kafka的吞吐量非常大。本文就介绍一下操作系统中的零拷贝技术原理,之后会介绍kafka是如何使用操作系统的零拷贝技术实现 阅读全文
posted @ 2020-08-21 17:13 猿起缘灭 阅读(1496) 评论(0) 推荐(2) 编辑
摘要: 概述 进程之间需要协作完成一个事情,往往就需要通信,而且这个问题是面试的时候,面试官非常喜欢问的问题,很少有面试官会去问操作系统页面置换算法的。本文就介绍一下进程之间常用的通信方式。 信号 信号是在软件层面对中断的模拟。 特性 任何时候都可以发出,无论接收信号目标进程是处于什么状态,如果接收信号的目 阅读全文
posted @ 2020-08-20 16:49 猿起缘灭 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 概述 线程安全问题,是一个非常重要且复杂的问题。在多线程修改共享变量的时候,如果不做特殊的处理,变量的最终的结果往往不会符合我们的预期,原因很简单,因为现代的计算机都做了多级的缓存,而且使用了多核,那每个线程修改某个变量是在CPU的高速缓存中修改,而且修改完之后并不是立即就同步到主存中,这就导致某一 阅读全文
posted @ 2020-08-19 19:20 猿起缘灭 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 概述 上节讲了操作系统内存管理,讲到由于内存空间有限,无法把全部的进程所需的资源都放入内存,所以提出了很多的页面置换算法,这一节面临一个新的问题,就是内存中那么多的进程,到底应该选择哪一个进程执行,这是一个很重要的问题。为了达到不同的目的,就会有不同的策略,比如在交互式系统中,我们肯定希望计算机的响 阅读全文
posted @ 2020-08-17 19:06 猿起缘灭 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 概述 在前几篇讲内存管理的时候,提到地址空间是内存的抽象。那进程就是CPU的抽象,一个程序运行起来以后就是一个进程,线程是进程创建出来的,其本身并不能独立运行,一个进程可以创建出来多个线程,他们之间会共享进程的堆空间,公共变量等。本文就详细介绍一个进程和线程基础。 进程 进程定义 一个具有一定独立功 阅读全文
posted @ 2020-08-16 16:42 猿起缘灭 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 概述 上一篇文章把分段和分页介绍了一下,以及两者的寻址方式和优化方法都介绍了,这节主要介绍另一个重要问题,页面置换算法,当内存空间不足时,需要把内存中的页放入磁盘,那到底选择哪些页放到磁盘上比较好呢?这篇文章会回答这个问题。 如何解决内存不够用 早期的解决办法是采用覆盖技术,但是覆盖技术需要程序员做 阅读全文
posted @ 2020-08-14 12:08 猿起缘灭 阅读(364) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 12 下一页