08 2023 档案
摘要:# mmap > Memory Map # 1.`mmap`使用方法 ```go func Mmap(fd int, offset int64, length int, prot int, flags int) ([]byte, error) ``` 1. fd:文件描述符 2. offset:文件
阅读全文
摘要:行为型设计模式(Behavioral Design Patterns),关注的是对象之间的通信、职责分配以及算法交互等行为相关的问题。这些模式主要关注对象的行为和相互之间的协作,以实现更灵活、可扩展的系统。 行为型设计模式涵盖了许多在不同情境下有助于优化对象之间交互的设计方法。这些模式帮助我们在系统
阅读全文
摘要:# 策略模式 ## 1. 简介 策略模式`(Strategy Pattern)`允许在运行时选择算法或行为,从一组算法中选择一个合适的实现。这种模式使得算法的变化可以独立于使用算法的客户端。 策略模式的核心思想是将不同的算法封装成各自的`策略类`,然后在一个`上下文类`中维护一个策略接口的实例,根据
阅读全文
摘要:# 迭代器模式 ## 1.简介 迭代器模式`(Iterator Pattern)`,提供了一种顺序访问集合对象中各个元素的方法,同时隐藏了集合对象的内部细节。 使用迭代器模式,可以将遍历集合的逻辑从客户端代码中分离出来,使得客户端只需要与迭代器接口交互,而不需要关心集合的内部实现细节。这有助于提高代
阅读全文
摘要:# Varint编码 ## 规则 1. 用7个比特位存储整数的值的部分,最高位(第8位)标识是否还有后续字节。 `0`表示是最后一个字节 `1`表示后面还有 2. 后续字节的每个字节的最高位都是1,其余7位存储整数的值的部分。 ## 案例 以32为int为例 1. 值:1 常规编码:`0000 00
阅读全文
摘要:# 一、LRU 每次淘汰最久未访问的那个元素 用双向链表 + hash实现 ## 1.1 流程 ### 插入 直接插入到队头 ### 查找 通过hash找到对应元素,然后将这个元素调整到队头 ### 淘汰 队尾元素(队头的前一个)就是最久未访问的那个元素,直接淘汰 ## 1.2 实现 https:/
阅读全文
摘要:### 分析 比如 ``` x = 1 res=2 x = 6 res=8 x = 31 res=32 x = 100 res=128 ``` 以100为例,它的二进制表示是 ``` 0110 0100 ``` 128的二进制是 ``` 1000 0000 ``` 不难看出以下结论 1. 2的幂次方
阅读全文
摘要:1. 原理 布隆过滤器拥有K个哈希函数,当一个元素要加入布隆过滤器时,会使用K个哈希函数对其进行计算,得到K个哈希值,然后根据哈希值,在一维数组中把其对应下标的值置位1。 要判断某个数是否在布隆过滤器中,就进行K次哈希计算,得到哈希值,然后在位数组中判断哈希值对应位置是否都为1,如果都为1,就说明这
阅读全文
摘要:## 1.同步和异步 > 同步和异步指的是两个函数之间的关系 **同步**:A调用B,A必须得到B返回的结果才能干其它事。 **异步**:A调用B,同时提供给B一个函数,即回调函数,此时A没有得到任何结果继续执行,B在执行完成后,调用A提供的函数告知A。 定义:和同步相对,发出异步调用后,调用者在没
阅读全文