随笔分类 - 深挖计算机基础
摘要:专栏讲到现在,如果我再问你,计算机五大组成部分是什么,应该没有人不知道了吧?我们这一节要讲的内容,依然要围绕这五大部分,控制器、运算器、存储器、输入设备和输出设备。 CPU所代表的控制器和运算器,要和存储器,也就是我们的主内存,以及输入和输出设备进行通信。那问题来了,CPU从我们的键盘、鼠标接收输入
阅读全文
摘要:在这一节内容开始之前,我们先来看一个3行的小程序。你可以猜一猜,这个程序里的循环1和循环2,运行所花费的时间会差多少?你可以先思考几分钟,然后再看我下面的解释 在这段Java程序中,我们首先构造了一个64×1024×1024大小的整型数组。在循环1里,我们遍历整个数组,将数组中每一项的值变成了原来的
阅读全文
摘要:一、缓存一致性问题指的是什么 在这两个CPU核心里,1号核心要写一个数据到内存里。这个怎么理解呢?我拿一个例子来给你解释。 比方说,iPhone降价了,我们要把iPhone最新的价格更新到内存里。为了性能问题,它采用了上一讲我们说的写回策略, 1、先把数据写入到L2 Cache里面,然后把Cache
阅读全文
摘要:在我工作的十几年里,写了很多Java的程序。同时,我也面试过大量的Java工程师。对于一些表示自己深入了解和擅长多线程的同学,我经常会问这样一个面试题:“ volatile这个关键字有什么作用?”如果你或者你的朋友写过Java程序,不妨来一起试着回答一下这个问题。 就我面试过的工程师而言,即使是工作
阅读全文
摘要:上一节,我讲了哈希算法的四个应⽤,它们分别是:安全加密、数据校验、唯⼀标识、散列函数。今天,我们再来看剩余三种应用: 负载均衡、数据分片、分布式存储 你可能已经发现,这三个应用都跟分布式系统有关。没错,今天我就带你看下,哈希算法是如何解决这些分布式问题的。 应用五:负载均衡 1、如何实现一个会话粘滞
阅读全文
摘要:平时进行服务端软件开发的时候,我们通常会把数据存储在数据库里。而服务端系统遇到的第一个性能瓶颈,往往就发生在访问数据库的时候。 这个时候,大部分工程师和架构师会拿出一种叫作“缓存”的武器,通过使用Redis或者Memcache这样的开源软件,在数据库前面提供一层缓存的数据, 来缓解数据库面临的压力,
阅读全文
摘要:一、理解存储器的层次结构 1、和阅读书籍做个对照 1、CPU比喻成计算机的“大脑”我们思考的东西、就好比CPU中的 寄存器 2、而我们大脑中的记忆,就好比 CPU Cache 2、SRAM 1、SRAM为什么被称为静态存储器 2、SRAM的存储密度不高 3、不过,因为SRAM的电路简单,所以访问速度
阅读全文
摘要:一、引子 1、指令 2、计算 然而,光知道这两部分还不能算是真正揭开了CPU的秘密,只有把“指令”和“计算”这两部分功能连通起来,我们才能构成一个真正完整的CPU。这一讲,我们就在前面知识的基础上,来看一个完整的CPU是怎么运转起来的。 二、指令周期 1、计算机每执行一条指令的过程 4.重复进行1~
阅读全文
摘要:还记得2011年CSDN的“脱库”事件吗?当时,CSDN网站被黑客攻击,超过600万用户的注册邮箱和密码明问被泄露,很多网友对CSDN明⽂保存用户密码行为产生了不满。 如果你是CSDN的⼀名易程师,你会如何存储用户密码这么重要的数据吗?仅仅MD5加密一下存储就够了吗? 要想搞清楚这个问题,就要先弄明
阅读全文
摘要:一、LRU 缓存淘汰算法 1、回顾LRU淘汰算法 2、一个缓存主要包含哪些操作 3、单独使用链表和组合使用对比 4、hnext的作用 5、如何把时间复杂度降到O(1) 在缓存中查找一个数据 从缓存中删除一个数据 往缓存中添加一个数据 二、Redis有序集合 1、有序集合 2、有序集合的操作 3、单独
阅读全文
摘要:通过上一节的学习,我们知道,散列表的查询效率并不能笼统地说成是O(1)。它跟散列函数、装载因子、散列冲突等都有关系。如果散列函数设计得不好, 或者装载因子过大,都可能导致散列冲突发生的概率升高,查询效率下降。 在极端情况下,有些恶意的攻击者,还有可能通过精⼼构造的数据,使得所有的数据经过散列函数之后
阅读全文
摘要:Word这种文本编辑器你平时应该经常见吧,那你有没有留意过它的拼写检查功能呢?一旦我们在Word里输入一个个错误的英文单词,它就会用标红的放式提示“拼写错误”。 Word的这个单词拼写检查功能,虽然很小但却非常实用。你有没有想过,这个功能是如何实现的呢?其实啊,一点儿都不难。只要你学完今天的内容,散
阅读全文
摘要:你是不是感到很疑惑,浮点数的近似值究竟是怎么算出来的?浮点数的加法计算又是怎么回事儿?在实践应用中,我们怎么才用好浮点数呢?这一节,我们就一起来看这几个问题 一、浮点数的二进制转换 1、十进制浮点数9.1 2、小数的二进制表示是怎么回事 3、浮点数其实是用二进制的科学计数法来表示的 4、为什么0.3
阅读全文
摘要:今天我们来聊聊“链表(Linked list)”这个数据结构。学习链表有什么用呢?为了回答这个问题,我们先来讨论一个经典的链表应⽤场景,那就是LRU缓存淘汰算法。 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常用的CPU缓存、数据库缓存、浏览器缓存等等。 缓存的
阅读全文
摘要:技巧一:理解指针或引用的含义 1、指针和引用有什么关系 2、代码实现 技巧二:警惕指针丢失和内存泄漏 1、指针是如何弄丢的呢? 我拿单链表的插入操作为例来给你分析一下 如图所示,我们希望在结点a和相邻的结点b之间插入结点x,假设当前指针p指向结点a。如果我们将代码实现变成下面这个样子,就会发⽣指针丢
阅读全文
摘要:一、案例环境描述 1、环境准备 2CPU,4GB内存 预先安装docker sysstat工具 案例总共由三个容器组成: 1、包括一个 MySQL 数据库应用、2、一个商品搜索应用3、一个数据处理的应用。 其中,商品搜索应用以 HTTP 的形式提供了一个接口: /:返回 Index Page;/db
阅读全文
摘要:一、案例环境描述 1、环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2、温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了。所以,我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析。这样 你可
阅读全文
摘要:一、在软硬件接口中,CPU帮我们做了什么事情 1、从硬件角度看CPU 2、软件工程师看CPU 3、不同的cpu能听懂的语言不太一样 4、不同的指令无法相通 5、存储程序型计算机 一台IBM的Plugboard 二、从编译到汇编,代码怎么变成机器码? 1、C 语言程序程序案例 1、我们拿一小段真实的
阅读全文
摘要:一、MySQL逻架构图 二、连接器工作原理刨析 1、连接器工作原理图 2、原理图说明 1、连接命令 2、查询链接状态 3、长连接端连接 1、什么是长链接? 数据库里面,长连接是连接成功后,如果客户端持续有请求,则一直使用同一个链接。 2、什么是短连接? 短连接则是指每次执行完很少的几次查询就断开连接
阅读全文
摘要:一、文件系统的功能规划 1、引子 咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证。 但是,会议室里面被回收,会议室里面的资料就丢失了。有一些资料我们希望项目结束也能继续保存, 这就需要一个和项目运行生命周期无关的地方,可以永久保存,并且空间也要比会议室大的多。
阅读全文

浙公网安备 33010602011771号