摘要:
title: 桥接模式 date: 2021-07-30 21:45:40 tags: 设计模式 categories: 程序设计基础 桥接模式 概述 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 抽象化角色:定义抽象类,包含一个对实现化对象的引用。 阅读全文
摘要:
title: 原型模式 date: 2021-07-27 21:54:36 tags: 设计模式 categories: 程序设计基础 原型模式 概述 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 场景 如果有一个对象,希望生成与其完全相同的一个复制品。最 阅读全文
摘要:
工厂模式 概述 在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。 使用场景 假设一家汽车制造公司,一直在使用一套程序生产比亚迪型号的汽车,现在出现了大批量的特斯拉汽车的订单,如果在原来的程序上进行修改的话就会违反开闭原则,同时如果后期又多了其他品牌的订单,则再原程序上修改显得不现实。 阅读全文
摘要:
作用 生成器模式是一种创建型设计模式,能够分布创建复杂对象。允许使用相同的创建代码生成不同类型和形式的对象。 结构 生成器接口(Builder) 声明在所有类型生成器中通用的产品构造步骤。 具体生成器(Concrete Builders) 提供构造过程的不同实现,具体生成器也可以构造不遵循通用接口的 阅读全文
摘要:
开闭原则 对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是扩展一个新的功能。 比如手机的导航为高德地图,现在需要修改为百度地图,不是修改高德地图的功能,而是要新增一个百度地图。 里氏替换原则 **任何基类可以出现的地方,子类一定可以出现。**通俗理解:子类可以扩展父类的功 阅读全文
摘要:
LFU VS LRU LFU:least frequntly used,按最近的访问频率淘汰,比LRU更加精准的表示了一个key的被访问热度。 redis对象的热度 redis的所有对象头结构中都有一个24bit的字段,用来记录对象的热度。 typedef struct redisObject { 阅读全文
摘要:
1.3 81. 分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11]. 思路 和除以2,判断数组中元素和是否可以组成。 最优解 状态定 阅读全文
摘要:
压缩列表 redis为了节约内存空间使用,zset和hash容器对象在元素个数较少的时候,采用压缩列表(zipList)进行存储,压缩列表是一块连续的内存空间,元素之间挨着存储,没有任何冗余空隙。 127.0.0.1:6379> zadd programmings 1.0 go 2.0 java 3 阅读全文
摘要:
12.29 76. 剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]k[1]...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2 阅读全文
摘要:
字符串 SDS(Simple Dynamic String)是一个带长度信息的字节数组 struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 byte flags; // 特殊标识 byte[] content; // 数组内容 } content里存 阅读全文