Livfer's Blog


  • 首页

  • 标签

  • 分类

  • 归档

桥接模式

发表于 2019-09-17 | 分类于 PHP , 设计模式

定义

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式

主要角色

  • 抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。
  • 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
  • 实现化(Implementor)角色:定义实现类的接口,不给出具体的实现。此接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以完全不同。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
  • 具体实现化(Concrete Implementor)角色:实现实现化角色接口并定义它的具体实现。
阅读全文 »

适配器(Adapter)模式

发表于 2019-09-16 | 分类于 PHP , 设计模式

定义

通过适配器模式,将一个接口转化为所期待的接口.

通俗的讲,将一个与自己接口定义不一定的类,通过包装,将不兼容的类转成与接口一致

适配器模式分为对象适配器,类适配器

适配器模式中主要角色

  • 目标(Target)角色:定义客户端使用的相关的接口
  • 源(Adaptee)角色:需要进行适配的接口
  • 适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类
阅读全文 »

Singleton模式

发表于 2019-09-16 | 分类于 PHP , 设计模式

单例模式定义

通过在类内部定义个静态变量保存该对象,不允许从外部实例化和clone.单例模式的类永远返回同一个实例化对象

最为常见的就是数据库操作类,我们会创建一个单例模式的操作类.

其实单例模式是一种反设计规范的模式

实例

阅读全文 »

Builder模式

发表于 2019-09-16 | 分类于 PHP , 设计模式

建造者模式定义

建造者模式是一种创建型模式,它可以让一个产品的内部表象和和产品的生产过程分离开,从而可以生成具有不同内部表象的产品

建造者模式中的主要角色

  • 抽象建造者(Builder)角色:定义抽象接口,规范产品各个部分的建造,必须包括建造方法和返回方法。
  • 具体建造者(Concrete)角色:实现抽象建造者接口。应用程序最终根据此角色中实现的业务逻辑创造产品。
  • 导演者(Director)角色:调用具体的建造者角色创造产品。
  • 产品(Product)角色:在导演者的指导下所创建的复杂对象。

适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。
阅读全文 »

Homebrew换源

发表于 2019-09-05 | 分类于 Homebrew

使用国内的镜像替换homebrew镜像,对镜像进行加速源

原先我们执行brew命令安装的时候,跟3个仓库地址有关

1 brew.git

2 homebrew-core.git

3 homebrew-bottles

把三个仓库地址全部替换成国内Alibaba提供的地址

1 替换/还原brew.git仓库地址

1
`# 替换成阿里巴巴的 brew.git 仓库地址:``cd ``"$(brew --repo)"``git remote ``set``-url origin https:``//mirrors.aliyun.com/homebrew/brew.git` `#=======================================================` `# 还原为官方提供的 brew.git 仓库地址``cd ``"$(brew --repo)"``git remote ``set``-url origin https:``//github.com/Homebrew/brew.git`

2 替换/还原homebrew-core.git仓库地址

1
`# 替换成阿里巴巴的 homebrew-core.git 仓库地址:``cd ``"$(brew --repo)/Library/Taps/homebrew/homebrew-core"``git remote ``set``-url origin https:``//mirrors.aliyun.com/homebrew/homebrew-core.git` `#=======================================================` `# 还原为官方提供的 homebrew-core.git 仓库地址``cd ``"$(brew --repo)/Library/Taps/homebrew/homebrew-core"``git remote ``set``-url origin https:``//github.com/Homebrew/homebrew-core.git`

3 替换/还原homebrew-bottles

3.1 这个步骤跟你的macOs系统使用的shell版本有关系,首先查看shell版本

1
`echo $SHELL` `# 如果你的输出结果是 /bin/zsh,参考?的 zsh 终端操作方式``# 如果你的输出结果是 /bin/bash,参考?的 bash 终端操作方式`

3.2 zsh终端操作方式

1
`# 替换成阿里巴巴的 homebrew-bottles 访问地址:``echo ``'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles'` `>> ~/.zshrc``source ~/.zshrc` `#=======================================================` `# 还原为官方提供的 homebrew-bottles 访问地址``vi ~/.zshrc``# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置``source ~/.zshrc`

3.3 bash终端操作方式

1
`# 替换 homebrew-bottles 访问 URL:``echo ``'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles'` `>> ~/.bash_profile``source ~/.bash_profile` `#=======================================================` `# 还原为官方提供的 homebrew-bottles 访问地址``vi ~/.bash_profile``# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置``source ~/.bash_profile`

Linux清理

发表于 2019-08-06 | 分类于 Linux

清理旧版软件缓存

sudo apt-get autoclean

清理所有软件缓存

sudo apt-get clean

删除系统不再使用的孤立软件

sudo apt-get autoremove

阅读全文 »

Linux查看文件夹大小

发表于 2019-08-06 | 分类于 Linux

1. 查看目前所有文件系统的可用空间及使用情形

df -h

2. 查看文件或文件夹的磁盘使用空间

du -h –max-depth=1 your_dest_dir

--max-depth参数,用来控制你想要查看的目录的深度

注意,du -h –max-depth=1 your_dest_dir 只会返回目标文件夹和目标文件夹下首层文件夹的大小,不会返回更深层的文件夹的大小,也不会返回文件的大小。

要想返回更深层的文件夹的大小,可以设置–max-depth为更高的数值,或者干脆取消–max-depth参数,这样它就会返回目标文件夹下所有子文件夹的大小,不管其深度(但仍不会返回文件大小,其实,想看文件大小,直接在目标目录下运行命令 ls -htla就可以啦!)。

要还想返回目标文件夹下首层的文件大小,可以使用下述命令:

du -h –max-depth=0 your_dest_dir/*

它不仅返回了/home/xuhanhui下首层的文件夹大小,也返回了首层的文件大小

elastic学习记录-2

发表于 2019-08-06 | 分类于 ElasticSearch

elastic 学习记录-1

发表于 2019-08-05 | 分类于 ElasticSearch

查看所有Index

curl -X GET "localhost:9200/_cat/indices?v"

创建Index

curl -X PUT "localhost:9200/customer?pretty"

删除索引

1
2
vagrant@homestead:~$ curl -X DELETE  "localhost:9200/customer"
{"acknowledged":true}

创建索引内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//指定ID建立内容 使用PUT 如果不需要指定ID,则只用POST
curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "John Doe"
}
'
curl -X POST "localhost:9200/customer/_doc/?pretty" -H 'Content-Type: application/json' -d'
{
"name": "John Doe"
}
'

## 返回
{
"_index" : "customer", //索引名称
"_type" : "_doc", //索引类型
"_id" : "1", //类似于MySQL逐渐
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
阅读全文 »

go内置函数

发表于 2019-07-11 | 分类于 go

内置函数

名称 说明
close 用于管道通信
len、cap len 用于返回某个类型的长度或数量(字符串、数组、切片、map 和管道);cap 是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)
new、make new 和 make 均是用于分配内存:new 用于值类型和用户定义的类型,如自定义结构,make 用于内置引用类型(切片、map 和管道)。它们的用法就像是函数,但是将类型作为参数:new(type)、make(type)。new(T) 分配类型 T 的零值并返回其地址,也就是指向类型 T 的指针。它也可以被用于基本类型:v := new(int)。make(T) 返回类型 T 的初始化之后的值,因此它比 new 进行更多的工作new() 是一个函数,不要忘记它的括号
copy、append 用于复制和连接切片
panic、recover 两者均用于错误处理机制
print、println 底层打印函数,在部署环境中建议使用 fmt 包
complex、real imag 用于创建和操作复数
1…345…8
Livfer

Livfer

代码的搬运工

73 日志
18 分类
39 标签
GitHub E-Mail
Links
  • 🍊程成🍊
© 2020 Livfer
由 Hexo 强力驱动
|
主题 — NexT.Mist