![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 53
TwistedFater
这个作者很懒,什么都没留下…
展开
-
Golang设计模式(适配器模式)
模式定义适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。将现有接口或对象转换成客户端需要的接口模式结构适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类Client:客户类对象适配器:类适配器:适用场景在以下情况下可以使用适配器模式:系统需要使用现有原创 2021-02-18 15:41:46 · 156 阅读 · 0 评论 -
Golang设计模式(装饰者模式)
模式定义装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。主要是给原始对象增强功能模式结构装饰模式包含如下角色:Component: 抽象构件ConcreteComponent: 具体构件Decorator原创 2021-02-18 14:37:12 · 290 阅读 · 1 评论 -
Golang设计模式(桥接模式)
模式定义桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。模式结构桥接模式包含如下角色:Abstraction:抽象类RefinedAbstraction:扩充抽象类Implementor:实现类接口ConcreteImplementor:具体实现类适用环境在以下情况下可以使用桥接模式:1.如果一个系统需要在构件的抽象化角色和原创 2021-02-18 11:43:39 · 171 阅读 · 0 评论 -
Golang二进制文件瘦身
问题:Golang 编译出来的二进制文件有点大解决方法:编译时增加增加参数#个人常用编译命令CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -gcflags=m -ldflags="-s -w -extldflags='static'" -o ouput.file input.go#-ldflags="-s -w -extldflags='static'"1.-s strip 去掉无用的符号2.-w DWARF 去掉DWARF调原创 2021-02-04 13:59:35 · 655 阅读 · 0 评论 -
K8S学习笔记(名词介绍)
K8S的概述和介绍kubernetes 简称k8s ,前身Google bogle系统,由go语言重写2014年开发的容器化集群管理系统使用k8s进行容器化应用部署使用k8s利于应用扩展k8s目标是让部署容器化应用更加简洁高效K8S功能自动装箱,根据资源配置自动部署应用容器自我修复,Pod最小部署单元一组容器的集合共享网络生命周期是短暂的Controller确保预期的Pod副本数量无状态的应用部署有状态的应用部署确保所有的Node运行同一个Pod一次性任务原创 2021-02-01 15:10:56 · 127 阅读 · 1 评论 -
Golang设计模式(外观模式)
模式定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。模式结构外观模式包含如下角色:Facade: 外观角色SubSystem:子系统角色适用环境在以下情况下可以使用外观模式:1.当要为一个复杂子系统提供一个简单接口时可以使用外观模式。该接口可以满足大多数用户的需求,而且用户也可以原创 2021-02-01 10:38:58 · 238 阅读 · 0 评论 -
Golang设计模式(代理模式)
模式定义代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。在不改变原始类的情况下,通过引入代理类来给原始类添加功能,注意附加的功能和原始功能没有强关联模式结构代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色适用环境1.业务的非功能性需求开发2.缓存3.rpc 等等。。。代码实现原创 2021-01-29 15:49:57 · 197 阅读 · 0 评论 -
Golang设计模式(原型模式)
模式定义原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。适用环境1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是原创 2021-01-27 19:45:00 · 197 阅读 · 0 评论 -
Golang设计模式(建造者模式)
模式定义模式结构适用环境代码实现原创 2021-01-27 17:09:19 · 207 阅读 · 0 评论 -
Golang设计模式(抽象工厂模式)
模式定义为了更清晰地理解工厂方法模式,需要先引入两个概念:产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。抽象工厂模式原创 2021-01-27 16:29:07 · 476 阅读 · 0 评论 -
SOLID设计原则
设计模式的五大原则:Single Responsibility Principle:单一职责原则Open Closed Principle:开闭原则Liskov Substitution Principle:里氏替换原则Interface Segregation Principle:接口隔离原则Dependence Inversion Principle:依赖倒置原则把这六个原则的首字母联合起来(两个 L 算做一个)就是 SOLID (solid,稳定的),其代表的含义就是这六个原则结合使原创 2021-01-26 15:58:13 · 86 阅读 · 0 评论 -
Ubbuntu docker-ce 的卸载和安装
卸载docker# 删除某软件,及其安装时自动安装的所有包sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc;# 删除无用的相关的配置文件dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P ;#卸载没有删除的docker相关插件(结合自己电脑的实际情况)sudo apt-get autoremove docker-ce-*原创 2020-08-26 20:12:47 · 140 阅读 · 0 评论 -
Golang Rsa 公钥加密私钥解密,私钥签名公钥验证 , 私钥加密公钥解密
//FIXME 配合cgo的openssl使用,为什么要用这个??? 因为大佬说速度比较快import . "github.com/spacemonkeygo/openssl"// 生成 TLS的ca 证书 注意这是cafunc TestCAGenerate(t *testing.T) { cakey, err := GenerateRSAKey(768) if err...原创 2020-05-08 17:29:24 · 833 阅读 · 0 评论 -
apt-get 安装 osquery
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80Bsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEYsudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/...原创 2020-02-28 10:09:26 · 261 阅读 · 0 评论 -
golang使用正则检查密码强度
//密码强度必须为字⺟⼤⼩写+数字+符号,9位以上func CheckPasswordLever(ps string) error { if len(ps) < 9 { return fmt.Errorf("password len is < 9") } num := `[0-9]{1}` a_z := `[a-z]{1}` A_Z := `[A-Z]{1}` sym...原创 2020-02-10 15:57:23 · 3345 阅读 · 0 评论 -
ipfix
rfc7011ipfix字段含义原创 2020-01-10 13:26:22 · 353 阅读 · 0 评论 -
Golang微信小程序
只有一个传送门转载 2020-01-03 20:59:59 · 1278 阅读 · 0 评论 -
[译] LINUX,NETLINK 和 GO – 第 1 部分:NETLINK
只有一个传送门转载 2020-01-03 20:27:40 · 455 阅读 · 0 评论 -
Golang的Ticker使用姿势
golang 中的ticker直接就是代码package mainimport ( "fmt" "time")var Ticker *time.Tickerfunc init() { Ticker = time.NewTicker(time.Second)}func Dosomething(c <-chan time.Time) { for range c...原创 2019-12-27 18:12:26 · 1125 阅读 · 0 评论 -
Golang和jwt
需要使用第三方库go get -u github.com/dgrijalva/jwt-go// jwt.SigningMethodRS256 定义我们的jwt为sha256加密,也就是jwt的头部// jwt.MapClaims{} 这个就是我们jwt中的payload,也就是你需要验证的数据// 这里说下,这个包里已经有了一些写好的func GenerateToken(user...原创 2019-12-24 20:43:08 · 246 阅读 · 1 评论 -
Golang获取本机硬件信息
需要使用第三方库go get -u github.com/shirou/gopsutil获取cpu使用率 cpuuseage, err := cpu.Percent(time.Second, false)// 参数1: 检测时间 参数2:是 逻辑cpu数 否 物理cpu数 if err!=nill{ painc(err) } fmt.Println(fmt.Sprintf("...原创 2019-12-24 10:17:35 · 3777 阅读 · 0 评论