概念 策略模式是一种行为设计模式, 它将一组行为转换为对象, 并使其在原始上下文对象内部能够相互替换。 策略模式主要的作用还是解耦策略的定义、创建和使用,控制代码的复杂度,让每个部分都不至于过于复杂、代码量过多。 除此之外,对于复杂代码来说,策略模式还能让其满足开闭原则,添加新策略的时候,……
阅读全文
TCP 粘包、拆包属于网络底层问题,在数据链路层、网络层、传输层都有可能出现。 日常的网络应用开发大多数在传输层出现,而 UDP 是由消息保护边界的,不会发生粘包、拆包问题,只发生在 TCP 协议中。 假设客户端向服务端发送了两个连续的数据包 Packet1、Packet2; 在这个过程中可能会出现 3 种情况:……
阅读全文
软件版本周期 α、β、λ 常用来表示软件测试过程中的三个阶段。 α 是第一阶段,一般只供内部测试使用; β 是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用; λ 是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处……
阅读全文
基本命令 PFADD > pfadd key v1 v2 ... vn PFCOUNT > pfcount key PFMERGE > pfmerge newkey key1 key2 ... keyn 实例 zZZZZ> pfadd user:uv 12345 23456 (integer) 1 > pfcount user:uv (integer) 2 > pfadd user:uv 12345 (integer) 0 > pfadd user:uv 4 5 6 (integer) 1 > pfcount user:uv (integer) 5 > keys * 1) "user:uv" > pfadd user:uv:202211 1 2 3 4 5 6 (integer) 1 > PFMERGE uv user:uv user:uv:202211 OK > pfcount uv (integer) 8 总结 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。 因为 HyperLogLog 只会根据输入元素来计算基数,而……
阅读全文
更换源很简单,重度 Node.js 使用者,无法忍受下载插件速度慢,更换源步骤如下 临时使用 $ npm --registry https://registry.npm.taobao.org install express 永久使用 $ npm config set registry https://registry.npm.taobao.org 验证 $ npm config get registry 安装 yarn $ npm install -y yarn……
阅读全文
阅读的意义 阅读在人类的发展和文明进步中具有重要的意义。 主要体现在以下几个方面: 知识获取: 阅读是获取知识和信息的重要途径。通过阅读,我们可以了解各种领域的知识,包括历史、科学、文学、艺术等。阅读扩展了我们的视野,帮助我们了解世界的各个方面。 智力发展: 阅读有助于智力的发展和提高。阅读……
阅读全文