首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
学习
09cakg86qfjwymvm8cd3h1dew
创建于2023-01-06
订阅专栏
记录学习过程中的笔记
等 4 人订阅
共253篇文章
创建于2023-01-06
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Java内存模型:Java中的volatile有什么用
内存模型是用来描述编程语言在支持多线程编程中,对共享内存访问的顺序。 Happens-Before 的规则: <img src="https://p3-juejin.byteimg.com/tos
NUMA:非均匀访存带来了哪些提升与挑战
不同的 CPU 访问不同地址主存的速度各不相同,我们把采用这种设计的内存叫做非一致性访存(Non-uniform memory access,NUMA)。 物理内存最重要的三个部分是: * 从 64
内存模型:有了MESI为什么还需要内存屏障
CPU 的设计者为每个核都添加了一个名为 store buffer 的结构,store buffer 是硬件实现的缓冲区,它的读写速度比缓存的速度更快,所有面向缓存的写操作都会先经过 store bu
MESI协议:多核CPU是如何同步高速缓存的
从缓存和内存的更新关系看,写策略分为写回和写直达; * 写回,对缓存的修改不会立刻传播到主存,只有当缓存块被替换时,这些被修改的缓存块,才会写回并覆盖内存中过时的数据; * 写直达,缓存中任何一个字节
CPU Cache:访存速度是如何大幅提升的
离处理器越近,访问速度就越快,造价也就越高,同时容量也会更小。缓存是处理器和内存之间的一个桥梁,通常分为多层,包括 L1 层、L2 层、L3 层等等。缓存的速度介于处理器和内存之间,访问处理器内部寄存
存储电路:计算机存储芯片的电路结构
组合逻辑电路是指,输出仅由输入信号的状态决定的电路。而时序逻辑电路是指,电路的输出值同时依赖于电路过去的状态和现在的输入,所以时序逻辑电路中含有用于记忆电路状态的存储单元。 RAM 大体上分为两类:
内存虚拟化:云原生时代的奠基者
在虚拟化技术中涉及的有三个核心角色,分别是宿主机,客户机和虚拟机监控器。宿主机,也被称为 Host,一般指代物理主机。客户机,也被称为 Guest,是指运行在宿主机上的虚拟机。而负责为客户机准备虚拟
即时编译:高性能JVM的核心秘密
通常,Java 语言虚拟机包含两大核心模块:执行器和内存管理器,这里的执行器就是专门用来执行字节码的。 在 Hotspot 里,解释器主要分为两大类:cpp 解释器和模板解释器。 每一个 Java
页中断:fork、mmap背后的保护神
页中断和普通的中断一样,它的中断服务程序入口也在 IDT 中,但它是由 MMU 产生的硬件中断。页中断有两类重要的类型:写保护中断和缺页中断。正是这两类中断在整个系统的后台默默地工作着,就像守护神一样
深入理解堆:malloc和内存池
malloc 实现的基本原理是先向操作系统申请一块比较大的内存,然后再通过各种优化手段让内存分配的效率最大化。在 glibc 的实现里,malloc 函数在向操作系统申请堆内存时,会使用 mmap,以
动态链接(下):延迟绑定与动态链接器
# patch code 技术 对于一个 class 文件,只有当 hotspot 第一次使用它的时候,它才会被加载进来。 在即时编译 A 方法的时候要调用 B 方法,但这时 B 方法还没有被加载
动态链接(上):地址无关代码是如何生成的
将常用的公共的函数都放到一个文件中,在整个系统里只会被加载到内存中一次,无论有多少个进程使用它,这个文件在内存中只有一个副本,这种文件就是动态链接库文件。 它在 Linux 里是共享目标文件 (sh
静态链接:变量与内存地址是如何映射的
链接器的作用就是为符号转换成地址,一般来说可以分为三种情况: 1. 生成二进制可执行文件的过程中。这种情况称为静态链接; 2. 在二进制文件被加载进内存时。这种情况是在二进制文件保留符号,在加载时再把
栈的魔法:从栈切换的角度理解进程和协程
执行单元是指 CPU 调度和分派的基本单位,它是一个 CPU 能正常运行的基本单元。常见的执行单元有进程,线程和协程三种。 进程有自己独立的内存空间和页表,以及文件表等等各种私有资源。 同一个进程
深入理解栈:从CPU和函数的视角看栈的管理
栈帧本质上是一个函数的活动记录。当某个函数正在执行时,它的活动记录就会存在,当函数执行结束时,活动记录也被销毁。 在一个函数执行的时候,它可以调用其他函数,这个时候它的栈帧还是存在的。例如,A 函数
内存布局:应用程序是如何安排数据的
一个程序的机器码会被组织到同一个地方,这个地方就是代码段。 数据段存放的是程序中已经初始化且不为 0 的全局变量和静态变量。 对于未初始化的全局变量和静态变量,因为编译器知道它们的初始值都是 0,
聊聊x86体系架构中的实模式和保护模式
虚拟内存,它可以将每个进程的地址空间都隔离开,极大地减轻了程序员的负担,同时由于页表项中有多种权限保护标志,极大地提高了应用程序的数据安全。所以人们把 CPU 的这种工作模式称为保护模式(Protec
虚拟内存:为什么可用内存会远超物理内存
X86 架构的 CPU 在上电以后,为了与 8086 保持兼容,还是运行在 16 位实模式下,实模式的特点是所有访存指令访问的都是物理内存地址。 基于局部性原理,CPU 为程序员虚拟化了一层内存,我
哪些分布式数据库值得看
# NewSQL Spanner 和 F1 一起开创了 NewSQL 风格,它是这一流派当之无愧的开山鼻祖。 Spanserver 的核心工作有三部分: 1. 基于 Paxos 协议的数据复制 2
银行是怎么选择分布式数据库的
# 工行 选择了 DBLE + MySQL 的组合,选择 MySQL 是因为它的普及程度足够高;而选择 DBLE 则因为它是在 MyCat 的基础上研发,号称是“增强版 MyCat”,由于 MyCat
下一页