最后
分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。
这些面试题相对应的技术点:
- JVM
- MySQL
- Mybatis
- MongoDB
- Redis
- Spring
- Spring boot
- Spring cloud
- Kafka
- RabbitMQ
- Nginx
- …
大类就是:
- Java基础
- 数据结构与算法
- 并发编程
- 数据库
- 设计模式
- 微服务
- 消息中间件
-
累加寄存器(AC):通用寄存器,为ALU提供一个工作区,用于暂存数据。
-
数据缓冲寄存器(DR):写内存时,暂存指令或数据。
-
状态条件寄存器(PSW):存储状态标志和控制标志,有时也可以将状态条件寄存器归为控制器部分。
控制器包含:程序计数器、指令寄存器、指令译码器、时序部件。
-
程序计数器(PC):存储下一条要执行的指令的地址。
-
指令寄存器(IR):存储即将执行的指令。
-
指令译码器(ID):对指令中的操作码字段进行分析解释。
-
时序部件:提供时序控制信号。
首先,我们先来看一个在计算机领域中,对计算机的体系结构进行分类的一种经典方法,就是Flynn分类法,Flynn分类法将计算机分成单指令流单数据流、单指令流多数据流、多指令流单数据流、多指令流多数据流。
具体信息如下表所示。
| 体系结构类型 | 结构 | 关键特性 | 代表 |
| — | — | — | — |
| 单指令流单数据流(SISD) | 控制部分:一个 处理器:一个 主存模块:一个 | | 单处理器系统 |
| 单指令流多数据流(SIMD) | 控制部分:一个 处理器:多个 主存模块:多个 | 各处理机以异步的形式执行同一条机灵 | 并行处理机、阵列处理机、超级向量处理机 |
| 多指令流单数据流(MISD) | 控制部分:多个 处理器:一个 主存模块:多个 | 被证明是不可能的,至少是不实际的 | 目前没有,有资料记载流水线处理机为此类 |
| 多指令流多数据流(MIMD) | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统、多计算机 |
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的格式如下所示。
其中,操作码部分指出了计算机要执行什么性质的操作,例如,加法、减法、取数、存数等。地址码字段需要包含各操作数的地址及操作结果的存放地址等,从其地址结构的角度可以分为三地址指令、二地址指令、一地址指令和零地址指令。
三地址指令
例如,执行a+b=c操作时,就是使用的三地址指令。此时如下所示。
二地址指令
例如,执行a+=b操作时,执行的就是二地址指令,此时如下所示。
一地址指令
例如,执行a++操作时,执行的就是一地址指令,此时如下所示。
零地址指令
例如,宕机就是零地址指令。
总体来说,寻址方式可以分为:立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址。
-
立即寻址:操作数直接在指令中,速度快,灵活性差。
-
间接寻址:指令中存放的是操作数的地址。
-
间接寻址:指令中存放了一个地址,这个地址对应的内容是操作数的地址。
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
分的内容。