4.2 命令
命令模式别名 Action Transaction 意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 Encapsulate a request as an object, thereby letting you parameterize clientswith different requests, queue or log requests, and support undoable operations. 结构 参与者 Command 声明 Execute 操作的接口。 ConcreteCommand 将一个接收者对象绑定于一个动作。 调用接收者相应的操作,以实现 Execute。 Client 创建一个具体 Command 对象并设定它的接收者。 Invoker 要求 Command 执行请求。 Receiver 知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。 适用性 在以下情况下可以使用 Command 模式: Command模式是回调(ca...
4.9 策略
策略 Strategy别名 Policy 意图定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。使得算法可独立于使用它的客户而变化。 结构 参与者Strategy 定义所有支持的算法的公共接口。Context 使用这个接口来调用 ConcreteStrategy 定义的算法。 ConcreteStrategy 实现 Strategy 接口和具体算法。 Context 用一个 ConcreteStrategy 对象来配置。 维护一个对 Strategy 对象的引用。 可定义一个接口来让 Strategy 访问它的数据。 适用性在以下情况下可以使用 Strategy 模式: 许多相关的类仅仅是行为有异。Strategy 提供了一种用多个行为中的一个行为来配置一个类的方法。 需要使用一个算法的不同变体。 算法使用客户不应该知道的数据。 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关条件分支移入它们各自的 Strategy 类中以代替。 缺点 客户必须了解不同的 Strategy。要选择合适的 Str...
FORMAT
notes 本篇标题(主题) 用来记录各个科目的markdown笔记,并逐渐从有道云笔记将内容移植过来。 关于笔记记录的说明:我觉得笔记记录的内容过于细节。所有的知识应该以书上为准。整理笔记的目的应该是作为一种快速参考或者索引,而不是详细的记录所有的细节。说实话,我觉得你的笔记废话太多,自己都不一定会看。我觉得是时间放弃你愚蠢的笔记策略了。从今以后,必须跟上自己的笔记进度和作业进度。不能就学两科还跟不上进度,太傻逼了。上课时间才是最重要的,记得做笔记啊,啥时候,你成了一个上课不听,下课做作的人???没用的。以后自己去坐到前排学习吧,这种事,确实有利。能强迫自己认真听讲。 1 分类标题(用来描述主题的各个方面或者分类)1.1 知识点、词条(用来表述这个方面或者分类的词条)使用正文来记录知识点内容 使用无序列表来记录知识点内容 无序列表 次级列表 次级列表 使用有序列表来记录知识点内容 有序列表 次级列表 次级列表 2 关于做笔记的讨论 感觉没有必要做笔记,只要在书上做好指明就好了。这就好像在PDF原文上做笔记一样。 那么什么样的东西才会需要自己做笔记呢?我觉得...
github
1 使用github 参考文献[https://www.bilibili.com/video/av10475153/index_2.html\#page=5] github的简介 Create Repository创建仓库 Star收藏 Fork复制一份远程仓库 Pull Request拉我呀,快点,我改好了。 Open & Merge Request拉你了,别墨迹。 Watch看着你呢,关注一个项目。 Github主页仓库主页——仓库相关的信息和相关操作 2 pull request3 fork syncize 参考文献 https://blog.csdn.net/qq_22918243/article/details/89642445 配置fork远程仓库 查看fork之后的项目的远程仓库状态 1git remote -v 添加一个将被同步给 fork 远程的上游仓库 1git remote add upstream <git_url> 再次查看状态确认是否配置成功 同步Fork 从上游仓库 fetch 分...
附录6 MySQL分库分表
MySQL分库分表和主从分离1 概述分库分表的原因当一张表的数据达到几千万时,查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。 用户请求量太大。因为单服务器TPS,内存,IO都是有限的。解决方法:分散请求到多个服务器上; 其实用户请求和执行一个sql查询是本质是一样的,都是请求一个资源,只是用户请求还会经过网关,路由,http服务器等。 单库太大。单个数据库处理能力有限;单库所在服务器上磁盘空间不足;单库上操作的IO瓶颈 解决方法:切分成更多更小的库 单表太大。CRUD都成问题;索引膨胀,查询超时。解决方法:切分成多个数据集更小的表。 分库分表的形式 单库单表。单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表。随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysq...
Docker
Docker Docker 一、解决的问题 二、与虚拟机的比较 三、优势 四、使用场景 五、镜像与容器 参考资料 一、解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。 Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 二、与虚拟机的比较虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 启动速度启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程非常慢; 而启动 Docker 相当于启动宿主操作系统上的一个进程。 占用资源虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU 资源,一台机器只能开启几十个的虚拟机。 而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千...
z常见问题总结
SQL 语法 SQL 语法 一、基础 二、创建表 三、修改表 四、插入 五、更新 六、删除 七、查询 DISTINCT LIMIT 八、排序 九、过滤 十、通配符 十一、计算字段 十二、函数 汇总 文本处理 日期和时间处理 数值处理 十三、分组 十四、子查询 十五、连接 内连接 自连接 自然连接 外连接 十六、组合查询 十七、视图 十八、存储过程 十九、游标 二十、触发器 二十一、事务管理 二十二、字符集 二十三、权限管理 参考资料 一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 主键的值不允许修改,也不允许复用(不能将已经删除的主键值赋给新数据行的主键)。 SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。 SQL 支持以下三种注释: 1234...
2.2 简单工厂
简单工厂(Simple Factory)Intent在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。 Class Diagram简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 Implementation12public interface Product {} 12public class ConcreteProduct implements Product {} 12public class ConcreteProduct1 implements Product {} 12public class ConcreteProduct2 implements Product {} ...
2.5 生成器
生成器意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 结构 参与者 Builder 为创建一个 Product 对象的各个部件指定抽象接口。 ConcreteBuilder 实现 Builder 的接口以构造和装配该产品的各个部件。 定义并明确它所创建的表示。 提供一个检索产品的接口。 Director 构造一个使用 Builder 接口的对象。 Product 表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包括将这些部件装配成最终产品的接口。 适用性 在以下情况下可以使用 Builder 模式: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 效果 它使你可以改变一个产品的内部表示。在改变该产品的内部表示时所要做的只是定义一个新的ConcreteBuilder。 它将构造代码和表示代码分开,提高了对象的模块性。客户不需要知道定义产品内部结构的类的所有信息。 它使你可...














