05 2022 档案
摘要:数据结构模块 键值对字符串 char* 的不足: 操作效率低:获取长度需遍历,O(N)复杂度 二进制不安全:无法存储包含 \0 的数据 SDS 的优势: 操作效率高:获取长度无需遍历,O(1)复杂度(通过len和alloc,快速获取字符长度大小以及跳转到字符串末尾) 二进制安全:因单独记录长度字段,
阅读全文
摘要:总结 实现一个严格的 LRU 算法,需要额外的内存构建 LRU 链表,同时维护链表也存在性能开销,Redis 对于内存资源和性能要求极高,所以没有采用严格 LRU 算法,而是采用**「近似」**LRU 算法实现数据淘汰策略 触发数据淘汰的时机,是每次处理**「请求」**时判断的。也就是说,执行一个命
阅读全文
摘要:Java 基础 知识体系 Questions 1. HashMap 1.8与1.7的区别 | | 1.7 | 1.8 | | : : | : : | : : | | 底层结构 | 数组+链表 | 数组+链表/红黑树 | | 插入方式 | 头插法 | 尾插法 | | 计算hash值 | 4次位运算+5
阅读全文
摘要:操作系统 知识体系 Questions 1.进程和线程的区别 进程是系统进行资源分配和调度的基本单位; 线程是CPU调度和分派的基本单位。 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行
阅读全文
摘要:计算机网络 知识体系 Questions 1.计算机网络分层的优点和缺点 优点 各层之间是独立的; 灵活性好; 结构上可分割开; 易于实现和维护; 能促进标准化工作。 缺点: 降低效率; 有些功能会在不同的层次中重复出现,因而产生了额外开销。 2.计算机体系结构 3.从输入网址到获得页面的过程 浏览
阅读全文
摘要:基础架构 连接器 建立连接成本过高,尽量使用长连接,维护长连接的方式有两种:定期断开长连接或定期执行mysql_reset_connection 来重新初始化连接资源 查询缓存 (key-value形式)key是查询语句,value是查询结果,查询缓存命中率不高,弊大于利,在mysql8.0已被移除
阅读全文
摘要:接口类型是由 type 和 interface 关键字定义的一组方法集合。其中,方法集合唯一确定了这个接口类型所表示的接口。 Go 语言要求接口类型声明中的方法必须是具名的,并且方法名字在这个接口类型的方法集合中是唯一的。 Go 1.14 版本以后,Go 接口类型允许嵌入的不同接口类型的方法集合存在
阅读全文
摘要:建索引的几大原则 最左前缀匹配原则 mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到
阅读全文
摘要:你了解 Java 应用开发中的注入攻击吗? 注入式(Inject)攻击是一类非常常见的攻击方式,其基本特征是程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果。 下面是几种主要的注入式攻击途径,原则上提供动态执行能力的语言特性,都需要提防发生注
阅读全文
摘要:synchronized 关键字是锁的一种实现 class X { // 修饰非静态方法 // 当修饰非静态方法的时候,锁定的是当前实例对象 this synchronized void foo() { // 临界区 } // 修饰静态方法 // 当修饰静态方法的时候,锁定的是当前类的 Class
阅读全文