centos7 安装hexo
安装node:
yum install -y nodejs
安装hexo脚手架:
npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install -g hexo-cli
安装git(因为不安装会初始化很慢):
yum install -y git
初始化一个博客:
hexo init blog
启动服务(可以提供http服务)
hexo server
简单记录一些技术解决方案
安装node:
yum install -y nodejs
安装hexo脚手架:
npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install -g hexo-cli
安装git(因为不安装会初始化很慢):
yum install -y git
初始化一个博客:
hexo init blog
启动服务(可以提供http服务)
hexo server
下载工具:
wget https://dl.eff.org/certbot-auto
给予执行权限:
chmod u+x certbot-auto
生成证书:
./certbot-auto certonly -d “*.yubangweb.com” -m xxx@yubangweb.com –manual –preferred-challenges dns-01 –server https://acme-v02.api.letsencrypt.org/directory
注意:上面的域名换成自己的,邮箱换成自己的。然后根据提示,在自己的域名解析添加txt记录完成验证
证书更新:
certbot-auto renew
Abstract Factory模式,抽象工厂模式。首先这种模式跟Factory模式非常相近,但是抽象工厂模式是创建一系列产品,而工厂模式创建的是一种产品。
应用场景:
优点:
缺点:
UML:
builder模式,可以组装复杂的实例。
构建者模式,首先定义一个类,然后这个类定义好一系列函数来生成必要数据,再提供一个函数来调用这些函数。
应用场景:
优点:
缺点:
UML:
例子:
产品线只需要定义各部分的工艺,就可以一个流程生产出产品。
prototype模式,通过复制生成实例。
通过复制已有实例生成一个新的实例。
应用场景:
优点:
缺点:
UML:
例子:
就像制作菜式一样,当你成功实践出一道美食,以后只需要复制烹饪的食材和方法即可。
Singleton模式,单例模式。
一个类仅有一个实例,然后全局提供访问。
使用场景:
优点:
缺点:
UML:
例子:
同一时刻只允许一个程序读取文件,只允许一个程序连接打印机。
Factory Method模式,工厂方法模式。
我们初始化类可以通过 new A1(),new A2()的方法产生,但是呢,假如初始化类的时候有一些需要转换的参数或其他需求,我们可以定义一个类B,然后通过类B的一个函数返回我们需要的初始化的实例。
但是这种通过一个类的函数生成不同的类的实例叫做简单工厂模式,但是当我们需要这个类(工厂类)生成非常多不同类的实例的时候,这个类就会变得非常臃肿。另一种解决方案是,生成不同的类的实例的逻辑实现放到工厂类的子类来实现,每个工厂类的实例只对应生成一个类的实例。
应用场景:
优点:
缺点:
UML:
例子:
例如手机工厂,每生产一种型号的手机(产品类子类)就多开一条产品线(工厂类子类)。
Template Method模式,模板方法模式。当多个需求都有相同的操作步骤,仅仅是某些步骤实现不同的时候,就可以定义一个父类,固定结构。然后定义子类,实现具体的细节算法。
应用场景:
优点:
缺点:
UML:
例子:
一批同型号的榨汁机卖给一条街的店铺,店铺A放置苹果进去,得到苹果汁。店铺B放置西瓜进去,得到西瓜汁。使用流程都一样,但是具体使用,放置材料这步修改了,就得到不同的产物,这就是模板方法模式。
Adapter模式,就是适配器模式。
假如已有一个类(A),但是这个类输出的数据并不能满足新的需求。那么我们可以定义一个接口(B)需要实现函数(C),然后新建一个类(D)继承类(A)实现接口(B)。然后类(D)在实现函数(C)的时候,调用类A的函数,然后处理输出新的需求需要的数据。
应用场景:
优点:
缺点:
UML:
例子:
例如家里的插座交流电都是220V,但是我们各种电器需要的电压却各不相同,所以就需要一个电源适配器把电流转换成电器适合的电压,这就是适配器模式。
itorator模式,又称迭代模式,本质是提供统一的接口,让外部可以顺序访问到内部的数据。
对外暴露两个接口:
为什么需要这种模式?因为底层数据实现可能是数组,也可能是链表,前者可以通过下标遍历,后者通过指针遍历。但是这样子,在调用的时候,调用者还要分别处理。假如我们在它们上面包裹一层,提供hasNext和next函数,那么调用者就可以统一来遍历处理了。
uml图:
例子:
我们平常的各种调味品,例如糖,盐,味精,我们都可以放到一个一个相同的罐子存储,使用时候用勺子拿出一点点。统一的取出方法,能判断还能不能取出,这就是迭代模式。