1 | 初始化go.mod: |
1 | 下载GO插件支持golang语言,下载gopls包进行代码提示,设置gopls的环境变量启动 |
1 | 初始化go.mod: |
1 | 下载GO插件支持golang语言,下载gopls包进行代码提示,设置gopls的环境变量启动 |
1 | syntax = "proto3"; |
1 | Go plugins for the protocol compiler: |
1 | protoc --go_out=. --go-grpc_out=. .\xxx.proto |
在C盘的用户,当前用户目录下新建pip文件夹,里面新建pip.ini文件,内容为
1 | [global] |
1 | package main |
使用工厂类创建多种产品对象
使用方便,不符合开闭原则(修改了原来的代码)
多个工厂类实现一个工厂接口,使用工厂类生产不同的产品
类越来越多
多个工厂类实现一个工厂接口,每种产品类实现一种产品的接口,使用工厂类生产不同的产品
使用方便,归类清晰
违反开闭原则
保证一个全局唯一的变量对象
抽象类Builder,包含各种加工产品的抽象方法,实现类Builder实现后创建产品类,对产品类进行各种修饰后返回产品对象。Director创建或接收实现类Builder后,调用Builder的部分加工产品的方法后获取产品对象。
可以分离构建和表示,可以自选加工方法,加工顺序等等,符合开闭原则
适用于产品变化不大,产品相同点多的场景
新建产品类后,产品类实现克隆接口,使用新建的这个产品类浅克隆一个新对象,深克隆需要重写克隆接口的方法
服务端类通过适配器类兼容其他接口类,首先用新建一个抽象适配器类,使用服务端类调用抽象适配器类的方法,适配器类实现抽象适配器类的方法,继承其他接口类的方法并调用方法(类适配器)或新建其他接口的对象并调用方法(对象适配器)
适配器可以把不同的适配者适配到同一个目标
单继承不能适配多个类,抽象类是接口,具有局限性
使用接口来分类一次品牌,使用抽象类分类一次物品,抽象类包括接口品牌,这样就可以将两种类型分离,在增加物品的同时,可以选择品牌
违背单一继承原则,复用性差,类的个数多,减少了子类,维护性强,符合开闭原则
增加了设计难度,抽象层设计难度大,使用局限大
出售人实现接口的方法,代理人实现接口的方法,代理人调用代理的实现的接口方法,购买人通过代理人来调用出售人实现的接口方法,代理人可以拥有自己独立的方法
出售人的代码更加简单,各种业务交给了代理人类,方便集中扩展
每个出售人都对应一个代理人,代码量翻倍,开发效率会降低
基于接口的动态代理,基于类的动态代理,通过加载类实现的接口方法来执行,在方法执行前后可以添加任意代码。一个动态代理代理了一个接口,实现该接口的类都可以代理
装饰者和被装饰者实现同一个抽象的超类,实现类继承双方的同时,装饰者实现类要可以对被装饰者实现类进行接收修改
可以很方便的对被装饰者进行各种修改
由一个管理类创建销毁其他的各种类,客户类只需要调用管理类即可使用其他类
解耦,易于扩展和维护,使用简单,层次清晰,隐藏了子系统的细节
树枝树叶实现同一个接口,客户类可以很方便的使用树枝和树叶实现类,无需关心他们两个的区别
简化了客户端代码,很容易的添加对象,符合开闭原则
设计复杂,不容易新增功能,不容易限制组件
创建类的抽象接口或抽象类来定义公共属性方法,实现类继承接口或抽象类,使用工厂类创建实现类的同时还可以保证实现类的唯一性
减少了对象的创建,节省了内存
提高了系统的复杂度
让策略类实现策略的抽象类或接口类,客户类调用策略抽象类或接口类
可以很方便的选择使用各种算法
策略类会越来越多,所有策略类都需要对外暴露
模板类是接口或者抽象类,实现类继承或实现模板类
代码复用率高,符合开闭原则
不同实现会新增子类,导致类的个数增多
定义观察者和被观察者接口,被观察者保存观察者的列表,在需要通知时遍历列表通知观察者
观察者与被观察者是抽象耦合的
观察者数量太多时会花费很多时间来通知,观察者与被观察者不能很好的互相调用,观察者不知道被观察者是如何变化的
创建抽象或接口容器类以及迭代器类,分别拥有对应的具体实现类,容器类用于将其他的数据创建成迭代器类,迭代器类拥有取出下一个元素,移除当前元素等迭代器类方法
简化了容器类,新增容器类和迭代器类都很简单
会导致类的数量增加
创建抽象或接口处理人类,创建他们的实现类,高层处理人类中包含低层的处理人类,如果高层处理类处理完后或不处理,可以交付给低一级的处理类
通过哦这种方法,可以实现多层过滤
请求者类调用抽象命令类,具体命令类实现抽象命令类并调用执行者类,实现相应的功能
创建抽象或接口备忘录类,由发起人创建设置备忘录实现类的各种属性,由管理者保存取出备忘录的对象
定义抽象或接口状态模式,创建多个状态模式的实现类,创建抽象或接口环境类以及其实现类,实现类包含多个状态模式实现类,根据需要设置不同的当前状态实现类,从而拥有不同的行动
首先定义抽象访问者,指明要访问哪些元素类,然后实现抽象访问者,在访问元素类时做什么,写一个抽象或接口元素类,用具体实例实现元素类,元素类可以调用访问类的方法来实现访问
创建接口或抽象中介者类以及同事类,同事类之间的相互交流使用中介者类
创建抽象表达式,各种表达式均实现抽象表达式,解释器的各种方法使用不同的表达式来实现
正数的原码补码相同
负数的原码符号位不动,其余各位取反加一得到补码。
负数的补码符号位不动,其余各位取反加一得到原码。
1 | package main |
1 | package main |
1 | # vim /opt/local/tomcat/conf/tomcat-users.xml |
1 | # vim /opt/local/tomcat/webapps/manager/META-INF/context.xml |
1 | # /opt/local/tomcat/bin/shutdown.sh # 停止 |
1 | 打开网络配置文件 |
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment