1. 1.1 业务系统设计分析思路historical

    1. 需求是什么 - 需求单 - 原型图 2. 为什么要做这个需求 - 用于解决什么问题 - 需求是不是可以不做 - 能不能简化下需求 3. 需求分析 理解概念需要结合系统举例子 3.1. 原有流程是怎样的 找运营或者产品演示流程 读写流程、B端C端流程 3.2. 新流程是怎样的 1. 系统中的角色

  2. 1.2 如何处理海量数据historical

    1. 什么是海量数据 就是数据量太大,没法一次性加载到内存进行处理 2. 如何处理海量数据 分而治之+合适的数据结构处理【关键点】+合并结果 既然没法一次性加载,那么拆分之后多次加载,选用合适的数据结构处理,最后把结果进行合并 2.1. 怎么分 一行行读取大文件,利用 hash+取模 分成小文件。

  3. 1.3 如何设计高可用系统historical

    1. 什么是高可用系统 - 即可用性高的系统 - 可用性指的是系统的一部分出现了故障,我们能预料并应对这个故障。本质上就是容错 - 可用性高 - 可用性=平均故障间隔/(平均故障间隔 + 故障恢复平均时间) - 一般都是以几个9来表示系统的可用性,99.99的可用性较多,9越多就代表可用性越强 2.

  4. 1.4 如何设计高并发系统historical

    1. 什么是可伸缩 - 描述系统应对负载增长的能力 - 负载指的是并发数性能测试.md 2. 如何设计可伸缩系统 - 纵向扩容 - 横向扩容 3. 什么是高并发 - 读或写或者读写QPS高的系统 4. 如何设计高并发 4.1. 服务层可伸缩 - 做到加机器线性增长性能:每个服务是无状态的。就是没有那

  5. 1.5 数据模型historical

    1. 什么是数据模型 - 计算机和现实世界之间的抽象层,描述了数据的特征 2. 为什么需要数据模型 - 计算机不能直接处理现实的事物,所以,人们只有将现实事物转成数字化的数据,才能让计算机识别处理 3. 数据模型有哪些 - 概念模型:描述现实世界的信息 - 逻辑模型:内存中或磁盘中的数据结构 - 物

  6. 1.6 重构historical

    1. 重构是什么 在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。本质上来说,重构就是在代码写好之后改进它的设计。 2. 什么时候需要重构 维护的系统有很多想吐槽的地方或者痛点,这时就需要重构 3. 如何重构旧系统 3.1. 梳理业务流程 体验业务/历史需求单/原型图 一个tag

  7. 1.7 服务扩容historical

    1. 是什么 - PCU指的是同时在线人数,和QPS不同 - 比如10000同时在线人数是用户一点点进来的,所以QPS不可能是10000 - QPS:每秒并发数 2. 步骤 2.1. 计算单核QPS 1. 创建测试计划并执行 2. 使用top命令查看负载是否稳定在60% 3. 计算单核TPS - 假

  8. 1.8 软件系统技术规划方法论historical

    1. 我对软件系统技术规划的理解 软件系统技术规划,顾名思义,就是对软件系统做一些技术侧的规划,分三块描述: 1. 软件系统 2. 技术侧 3. 规划 1.1. 软件系统 往大了说桌面端的PC软件,Web端的网页、移动端的APP等等都是软件系统,往小了说,一个服务,一个模块,一个组件,一个小工具也属

  9. 2.1 如何设计一个缓存中间件historical

    1. 什么是缓存中间件 - 通用缓存的基础设施 2. 为什么需要缓存中间件 - 为应用层屏蔽缓存的读写、并发安全、缓存淘汰、分布式支持等细节 3. 如何设计缓存组件 3.1. 基本读写 - 比如HashMap能实现O(1)的读写效率 3.2. 并发安全 多线程同时读写缓存会出问题,如何解决? 3.2

  10. 2.2 如何设计TCP连接池historical

    1. 什么是TCP连接池 复用TCP Connection的池子 2. 为什么需要TCP连接池 如何设计池化技术.md - 创建TCP连接需要三次握手,关闭连接需要四次挥手,开销大 - TCP连接数量是有限制的。高并发下主动关闭的一方进入TIME WAIT会耗尽连接数TCP time wait.md