随笔分类 - 技术人生
摘要:JDK21中正式引入了虚拟线程,这是Java标准库首次正式支持用户态轻量级线程,它的出现让Java并发编程更加简单高效。这篇文章将深入探讨虚拟线程的概念和原理,帮助你更好的理解和使用虚拟线程。 为什么需要虚拟线程 在虚拟线程出现之前,Java中主要依靠线程(Thread)实现并发编程,通过将多个任务
阅读全文
摘要:一、从开发日常说起 在平时的开发中,我们经常看到很多工程师和架构师为了解决数据库性能瓶颈会选择在数据库前面增加一层缓存来缓解数据库访问压力,提高服务端性能。这样做到底有没有效?对于要求1毫秒甚至100微秒完成的处理,这个策略还会有效吗? 二、理解局部性原理 我们知道从CPU缓存、内存、硬盘性能和价格
阅读全文
摘要:一、全貌 计算机里面的存储器是通过各种不同的设备、不同的方法一层层组合起来的系统。 CPU中的寄存器本质上也是一种存储设备,它使用SRAM(Static Random-Access Memory)芯片做成,但由于它集成在CPU的内部,因此其容量有限、速度极快、和CPU同步。 二、SRAM SRAM
阅读全文
摘要:一、GPU出现的历史背景 随着深度学习的发展,GPU一下子火了,但是其实GPU一开始是为图形计算而生,由于其架构设计的特点使得它在图形计算和深度学习领域相比CPU有很大优势。 二、图形渲染流程 要在电脑显示器上显示出3D效果,并不是通过拍摄,而是通过多边形建模创建出来的,包括3D画面中人物的移动以及
阅读全文
摘要:一、概念释义 按指令长度是否可变,将CPU中运行的指令集分为 CISC(Complex Instruction Set Computing 复杂指令集,指令长度可变)和 RISC(Reduced Instruction Set Computing 精简指令集,指令程度不可变)。 二、CISC 和 R
阅读全文
摘要:一、异常的来源和应用 程序运行并不总是正常的,总有一些异常情况出现,这些异常有的来自硬件,称为硬件异常,有些来自软件称为软件异常。异常的发生和捕捉由硬件完成,而异常的处理却是由软件来完成。计算机会为每一种可能发生的异常设定一个异常编码,也可以称之为中断向量。异常的发生通常是由于CPU检测到了一个异常
阅读全文
摘要:一、Hyper Threading 超线程技术 流水线架构、分支预测、乱序执行、超标量和超长指令字这些技术,都是通过指令级别的并行来提高CPU运行的速度,并且在一个引用程序内都需要处理指令依赖的问题。而计算机上是同时运行着多个进程,不同程序之间的指令不存在依赖关系,因此如果不同程序的指令能够“同时”
阅读全文
摘要:一、回顾一下指令执行时间 程序执行时间 = 指令数 * CPI * Clock sycle time 二、多发射与超标量:并行取指令、指令译码 CPU乱序执行的优化中,取指令和指令译码的操作还是串行的,为了提高取指令和指令译码的效率,通过增加硬件的方式,使得同一时间可以取到多条指令、并行译码。这种方
阅读全文
摘要:前面我们讲到,流水线技术能够显著提高CPU的吞吐率,只不过我们需要解决结构冒险、数据冒险、控制冒险三个方面的问题,这些问题和CPU的运行机制密切相关。 一、结构冒险: 结构冒险问题本质是一个硬件资源抢占的问题,也就是电路问题。同一个时钟周期内,同时运行两条计算机指令的不同阶段的指令时,如果会恰好用到
阅读全文
摘要:一、指令周期 计算机每条执行过程分解如下: Fetch:取指令,从PC寄存器取出指令地址,内存中取出指令,将取出的指令加载到指令寄存器,PC寄存器自增; Decode:指令译码,解析指令寄存器中指令,确定指令类型以及要操作的寄存器、数据、内存地址; Execute:指令执行,根据不同指令类型执行算数
阅读全文
摘要:接口分离原则指在设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。即,一个类要给多个客户使用,那么可以为每个客户创建一个接口,然后这个类实现所有的接口;而不要只创建一个接口,其中包含所有客户类需要的方法,然后这个类实现这个接口。 定义没那么重要,对于非软件从业者,可以无视上面的定义,直接
阅读全文

浙公网安备 33010602011771号