摘要:『建造者模式』是一种简化复杂对象构建过程的设计模式,他的核心夙愿是:把对象的构建和表述分离。 举个栗子 每种食品包装上都会有一个营养成分表,每份的含量、每罐的含量、每份卡路里、脂肪、碳水化合物、钠等,还可能会有其他 N 种可选数据,大多数产品的某几个成分都有值 那么我们表述这个食品类: public 阅读全文
posted @ 2021-04-20 09:20 Single_Yam 阅读(249) 评论(0) 推荐(1) 编辑
摘要:今天聊一聊大家最耳熟能详的设计模式,『工厂模式』。实际上这个设计模式有三个变种,分别是『简单工厂模式』、『工厂方法模式』以及『抽象工厂模式』,可能大部人所熟知的是前两种,抽象工厂模式有一定的场景限制,很少出现在大家的视野中,不过今天我们一并谈一谈。 简单工厂模式 简单工厂说白了就是一个超级工厂,他可 阅读全文
posted @ 2021-04-18 19:13 Single_Yam 阅读(642) 评论(1) 推荐(0) 编辑
摘要:『单例模式』是一种创建型的设计模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。 在一个系统中,一个类经常会被使用在不同的地方,通过单例模式,我们可以避免多次创建多个实例,从而节约系统资源。 单例模式往往有三个特征,一个类只能有一个实例,它必须自行提供实例的创建,它必须提供方法暴露此实例。 阅读全文
posted @ 2021-04-16 20:50 Single_Yam 阅读(100) 评论(0) 推荐(0) 编辑
摘要:今天和大家聊『状态模式』这个设计模式,也是由于业务上遇到了一个极其难以维护的订单状态,不得不去重构。 阿里规约其中就有一条: 简单来说,状态模式用于消除冗余的大量『if else』判断。 举个例子 业务中有一个订单表,其中订单状态大约有如下十多种,我们维护在一个枚举类型中。 接着,我们有一个 ser 阅读全文
posted @ 2021-04-14 20:30 Single_Yam 阅读(134) 评论(0) 推荐(0) 编辑
摘要:又是一季 “金三银四” ,你面试了吗? Q1:String、StringBuffer、StringBuilder 有什么区别? Tips:首先要整理出 String 的基本特性,Immutable、不可变等特性,其次是后两者与前者的区别,最后是 StringBuffer 与 StringBuilde 阅读全文
posted @ 2021-04-13 23:15 Single_Yam 阅读(719) 评论(0) 推荐(0) 编辑
摘要:上一篇我们介绍了 redis 主从节点之间的数据同步复制技术,通过一次全量复制和不间断的命令传播,可以达到主从节点数据同步备份的效果,一旦主节点宕机,我们可以选择一个工作正常的 slave 成为新的主节点,并让其他 slave 去同步它。 这是处理 redis 故障转移的一个方式,但却不具备生产实用 阅读全文
posted @ 2020-04-11 09:31 Single_Yam 阅读(10768) 评论(1) 推荐(2) 编辑
摘要:基于前面介绍的 Redis 内容,Redis 只能作为一个单机内存数据库,一旦服务器宕机即不能提供服务,即便能通过持久化策略重启恢复数据,往往也做不到百分之百还原。再一个就是,单机的 Redis 需要处理所有的客户端请求,包括读和写操作,压力很大。 说了这么多,Redis 当然也提供了解决方案,主从 阅读全文
posted @ 2020-03-29 21:25 Single_Yam 阅读(901) 评论(0) 推荐(0) 编辑
摘要:上篇我们简单介绍了 redis 客户端的一些基本概念,包括其 client 数据结构中对应的相关字段的含义,本篇我们结合这些,来分析分析 redis 服务端程序是如何运行的。一条命令请求的完成,客户端服务端都经历了什么?服务端程序中定时函数 serverCron 都有哪些逻辑? 一、redis 客户 阅读全文
posted @ 2020-03-19 21:04 Single_Yam 阅读(777) 评论(0) 推荐(1) 编辑
摘要:Redis 是一个客户端服务端的程序,服务端提供数据存储等等服务,客户端连接服务端并通过向服务端发送命令,读取或写入数据,简单来说,客户端就是某种工具,我们通过它与 Redis 服务端进行通讯并完成数据操作。 客户端并不是 Redis 的核心,Redis 的核心是它的服务端程序,服务端程序才是完成数 阅读全文
posted @ 2020-03-12 21:41 Single_Yam 阅读(2416) 评论(0) 推荐(0) 编辑
摘要:上一篇文章,我们讲的是 Redis 的一种基于内存快照的持久化存储策略 RDB,本质上他就是让 redis fork 出一个子进程遍历我们所有数据库中的字典,进行磁盘文件的写入。 但其实这种方式是有缺点的,先不说阻塞式 save 调用会阻塞整个 redis 服务,即便异步式 bgsave 也是基于时 阅读全文
posted @ 2020-02-04 16:36 Single_Yam 阅读(1620) 评论(0) 推荐(1) 编辑