摘要: 原型模式,即Prototype,是指创建新对象的时候,根据现有的一个原型来创建。 1. 原型模式 原型模式(Prototype)比较类似于复制粘贴的思想,它可以首先创建一个实例,然后通过这个实例进行新对象的创建。在 Java 中,最典型的就是 Object 类的 clone 方法。 但编码中这个方法 阅读全文
posted @ 2021-04-22 19:36 胖大星- 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 前言 当业务中遇到树形结构时,比如菜单,省市区,部门等时如何设计数据库。一种设计可以通过每个字段带有parent id 来递归获取所有的节点 ,也可以通过另一种方法来获取某个节点的子节点 使用level记录当前节点的父节点code 添加一个辅助的varchar字段level,字段的逻辑是多个部门的i 阅读全文
posted @ 2021-04-01 16:41 胖大星- 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 前言 目前,业内解决分布式事务问题,都基本不用JTA这种强一致性的解决方案,基本是采用如下两套方案: 基于TCC的事务框架 消息队列 JTA强一致性的解决方案有那些? graph LR 服务C-->数据库C 服务C-->服务A 服务C-->服务B 服务A-->数据库A 服务B-->数据库B 服务A和 阅读全文
posted @ 2021-03-22 20:24 胖大星- 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 本章有工厂方法和抽象工厂设计模式 工厂方法 工厂方法 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 工厂方法的目的是使得创建对象和使用对象是分离的 工厂接口,工厂接口中带有静态方法返回真正的子类 public interface Nu 阅读全文
posted @ 2021-03-13 23:07 胖大星- 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 迭代器模式(Iterator)实际上在Java的集合类中已经广泛使用了。我们以List为例,要遍历ArrayList,即使我们知道它的内部存储了一个Object[]数组,也不应该直接使用数组索引去遍历,因为这样 阅读全文
posted @ 2021-03-13 18:45 胖大星- 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 享元(Flyweight)的核心思想很简单:如果一个对象实例一经创建就不可变,那么反复创建相同的实例就没有必要,直接向调用方返回一个共享的实例就行,这样即节省内存,又可以减少创建对象的过程,提高运行速度。 享元模式在Java标准库中有很多应用。我们知道,包装类型如Byte、Integer都是不变类, 阅读全文
posted @ 2021-03-09 23:41 胖大星- 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 前言 延时任务介绍: 比如你在某宝上下了一个订单,却没有支付,过了半个小时后这个订单自动取消了。 设计思路比较方法可以通过性能,能否持久化,拓展分布式等。当然要根据你的业务来。 1. 基于数据库轮训 此方案很easy,即将延时任务存进数据库的表中,然后通过一个线程定时的去扫描数据库,不断的将任务的触 阅读全文
posted @ 2021-02-05 13:53 胖大星- 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 本文的工作流程,有一个共同点:都采用"功能驱动式开发"(Feature-driven development,简称FDD)。 它指的是,需求是开发的起点,先有需求再有功能分支(feature branch)或者补丁分支(hotfix branch)。完成开发后,该分支就合并到主分支,然后被删除。 G 阅读全文
posted @ 2021-01-23 22:49 胖大星- 阅读(2652) 评论(0) 推荐(0) 编辑
摘要: 前言 责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 request → 处理器1 → 处理器2 → 处理器3 → 返回结果 比如财务审批系统,组长可以审批一千元,部门经理审批一千到一万元的, 阅读全文
posted @ 2021-01-21 21:35 胖大星- 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 一、Docker 三剑客 Docker-Compose Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启动那得多费时间。有了Docker-Compose你只需要编写一个文件,在这个文件里面声明好要启动的容 阅读全文
posted @ 2020-12-30 10:46 胖大星- 阅读(476) 评论(0) 推荐(0) 编辑