摘要:
进程的概念 试想一下这样的场景:我们编写好的代码是怎么运行起来的呢? 我们编写好的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」。 那进程的定义就是: 阅读全文
摘要:
前言 进程调度算法也称 CPU 调度算法,当 CPU 空闲时,操作系统就从就绪队列中按照一定的算法选择某个就绪状态的进程,并给其分配 CPU。通常以下几种情况会发生进程的调度: 当进程从运行状态转到等待状态; 当进程从运行状态转到就绪状态; 当进程从等待状态转到就绪状态; 当进程从运行状态转到终止状 阅读全文
摘要:
JMM 内存模型 为什么需要内存模型? 我们知道 CPU 的运算速度是很快的,与内存也有几个数量级上的差距,所以一般现代计算机系统都会在内存与 CPU 之间加入一层或多层读写速度尽可能接近 CPU 运算速度的高速缓存来作为缓冲。 将运算需要使用的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓 阅读全文
摘要:
吊打面试官之 ThreadLocal 详解 ThreadLocal 的基本原理 我们先看一下 ThreadLocal 的简单使用: ThreadLocal<String> localName = new ThreadLocal(); localName.set("帅枫"); String name 阅读全文
摘要:
为什么要有 happens-before happe-before 是 JMM 最核心的概念,对应 Java 程序员来说,理解 happens-before 是理解 JMM 的关键。 从 JMM 设计者的角度来看,可见性和有序性其实是互相矛盾的两点: 一方面,对于程序员来说,我们希望内存模型易于理解 阅读全文
摘要:
一文带你撸懂AQS、ReentrantLock原理及源码 一、前言 Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队 阅读全文
摘要:
题目:起两个线程交替打印0~100的奇偶数 这个问题大家可能在面试的时候遇到过,虽然学过多线程相关的知识,可能当时一时半会还写不出来,现在就让我带大家写一遍吧! 方法一 首先,我们可以观察到打印的是奇数和偶数,那么我们就可以通过这个特点去写代码。假如我们有一个全局变量 count,当 count 等 阅读全文
摘要:
1. ZooKeeper 安装和使用 1.1. 使用Docker 安装 zookeeper a.使用 Docker 下载 ZooKeeper docker pull zookeeper:3.5.8Copy to clipboardErrorCopied b.运行 ZooKeeper docker r 阅读全文
摘要:
1. 什么是ZooKeeper ZooKeeper 由 Yahoo 开发,后来捐赠给了 Apache ,现已成为 Apache 顶级项目。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的 ZAB 协议完成的。其主要功能包括 阅读全文
摘要:
1. ZooKeeper 介绍 1.1. ZooKeeper 由来 正式介绍 ZooKeeper 之前,我们先来看看 ZooKeeper 的由来,还挺有意思的。 下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节,推荐大家阅读一下: ZooKeeper 最早起源于雅虎研究院的一 阅读全文