摘要:
软件架构 架构设计的主要目的是为了解决软件系统复杂度带来的问题 “这么多需求,从哪里开始下手进行架构设计呢?” ——通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。 “架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 阅读全文
摘要:
缓存设计模式 缓存热点数据, 缩短调用链 旁路缓存 适用于强一致性 写请求 -> 更新DB, 并删除cache 读请求 -> 先查cache, miss后再查DB并写回 @Service public class UserService{ @Autowired private UserDAO use 阅读全文
摘要:
用途 异步处理 比如某个调用链的业务逻辑可以分为关键和非关键, 那么关键步骤执行完就能立即返回响应, 非关键步骤可以放入MQ异步地消费 在业务高峰期, 可以用k8s动态增加关键服务的节点, 用MQ将非关键操作暂存 在业务低谷期, 再动态减少关键服务的节点, 消费掉非关键服务 |业务场景|关键步骤|非 阅读全文
摘要:
Redis 整体结构 一个访问流程如下 client发起命令 -> 命令被客户端socket封装成网络包, 通过TCP传输协议/RESP通讯协议发送到服务端 -> 在服务端, 访问框架的socket监听6379端口, 收到后使用多路复用框架框架, 将包转给handler验证并解析 -> 解析完命令后 阅读全文
摘要:
1. CPU缓存 CPU缓存分为3级结构: 寄存器 -> L1缓存(数据缓存 + 指令缓存) -> L2缓存 -> L3共享缓存 缓存的最小单位: 缓存行(64kb), 这意味着对于内存连续的数据结构, 一次会将64kb的元素载入数据缓存 好处是: 可以用来提升缓存命中率, 比如二维数组的行优先好于 阅读全文
摘要:
整机管理 top/uptime top - 14:55:19 up 1 day, 15 min, 1 user, load average: 2.70, 2.38, 1.86 任务: 278 total, 3 running, 186 sleeping, 0 stopped, 0 zombie %C 阅读全文
摘要:
|键位|作用| | | | {, } | skip blocks of code ctrl + r | redo yy | yank the line P | paste above :32 | go to line 32 0 | go to beginning of line $ | go to 阅读全文
摘要:
树 埃及分数:正有理数a/b可表示为分子为1,分母不同的分数之和,最少要几个? 可行性剪枝 非法条件 最优性剪枝 空间树某分支一定比当前最优解差,则剪去 alphabeta剪枝 双人游戏 迭代加深搜索 遍历深度,对每个深度dfs 八数码:九宫格缺一个,给定起始状态,变成目标状态的最小移动次数,h可以 阅读全文
摘要:
背包问题 dp[i][j] 表示使用前i个物品,当前体积为j时 能取得的最大价值 for (枚举单个/单组物品) { for (枚举体积) { for (枚举选择) { // 选/不选 单个/单组物品 if (满足条件) { 记录结果 } } } } 恰好装满 | 初始化 | 含义 | | | | 阅读全文
摘要:
常用算法 快速排序 public int[] sortArray(int[] nums) { if (nums == null || nums.length < 2) return nums; quickSort(nums, 0, nums.length - 1); return nums; } p 阅读全文