GO语言相关命令
下载包 go get-x :下载依赖包,并显示执行的命令 构建 go build-n :显示构建过程的命令,但不执行-x :显示执行构建的命令-o :构建输出可执行文件 1go build -o app 运行1go run . 包依赖1go mod tidy && go mod vendor 如果遇到以下问题,则是由代码中引入的package地址与项目的git仓库不一致导致的。例如:代码中引入package github.com/coreos/prometheus-operator/pkg/client, 但它的git仓库是github.com/prometheus-operator/prometheus-operator/pkg/client,在执行go mod tidy则会报错: 1234go: example.com/operator imports github.com/coreos/prometheus-operator/pkg/client/versioned: github.com/coreos/prometheus-opera...
Go语言语法
顺序编程变量12345678910var v10 intv10 = 123v11 := 234// 匿名变量示例func GetName() (firstName, lastName nickName string) { return "May", "Chan", "Chibi"}_, _, nickName := GetName() 常量iota是一个特殊的常量,它会在每一个const关键字出现时重置为0,然后在下一个const出现前,每出现一次iota,它代表的值加1。如果两个const的赋值语句表达式一样,后一个赋值可省略。 12345const ( c0 = iota c1 = iota c2) 枚举12345678910const ( Sunday = iota Monday Tuesday Wednesday Thursday Friday Saturday numberOfDays) 类型 布尔:bool 整型:int8、byte、int16、int、uint、u...
Go-常用设计模式
1. 单例模式:12345678910111213141516171819package singletonimport ( "sync")type singleton struct {}var ins *singletonvar once sync.Oncefunc GetInsOr() *singleton { once.Do(func() { ins = &singleton{} }) return ins} 2. 简单工厂模式12345678910111213141516type Person struct { Name string Age int}func (p Person) Greet() { fmt.Printf("Hi! My name is %s", p.Name)}func NewPerson(name string, age int) *...
Go常用资源列表
Awesome go 最全资源列表Awesome go 中文版以下是项目中使用到的部分package。 网络mux实现了请求路由器和调度程序,用于将传入请求与其各自的处理程序匹配。例如统一HTTP与RPC服务入口。 数据库db migrate支持常见的数据库升级与降级rediselasticsearch cligormGORM 是 Go 语言的 ORM 包,功能强大,调用方便。 模板引擎pongo2非预编译,类django特性的引擎,简单易用hero预编译模板引擎,性能更好 监控Prometheus Client开发exporter 日志Uber zap对性能和内存做了极致的优化 命令工具Cobrakubectl使用Cobra开发命令行工具Kingpingo-flagscligoctl工具使用是这个命令行工具 单元测试Mock testify/mock可用来Mock Http请求Sql mock driver可以用来模拟数据库连接。数据库是项目中比较常见的依赖,在遇到数据库依赖时都可以用它。Testify测试断言包 Automatically generate Go t...
Go语言编码规范指导
From:茹姐 https://zhuanlan.zhihu.com/p/63250689 本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一个说明。该规范参考了 go 语言官方代码的风格制定。 一、 命名规范命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。 Go在命名时以字母a到Z或a到Z或下划线开头,后面跟着零或更多的字母、下划线和数字(0到9)。Go不允许在命名时中使用@、$和%等标点符号。Go是一种区分大小写的编程语言。因此,Manpower和manpower是两个不同的命名。 当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);命名如果以小写字母开头,则对包外是不可见的,但是...
Vagrant扩展虚拟机盘
扩展虚拟机盘123456789101112131415161718# 停止虚拟机vagrant halt <machine_name># 进入VirtualBox VMs目录,查看并记录原磁盘uuid,留作后用vboxmanage showhdinfo box-disk1.vmdk# 克隆磁盘,vmdk格式无法调整大小,需要转成vdi格式vboxmanage clonehd box-disk1.vmdk new-virtualdisk.vdi --format vdi# 调整克隆磁盘的大小,这里调整为400Gvboxmanage modifyhd new-virtualdisk.vdi --resize 409600# 在克隆磁盘的基础上再克隆vdi格式的磁盘vboxmanage clonehd new-virtualdisk.vdi resized.vmdk --format vmdk# 覆盖原磁盘(如果担心磁盘数据出现不可逆损坏,请先做好备份)mv resized.vmdk box-disk1.vmdk# 此时节已删除中间文件rm new-virtualdisk....
Openshift-常见运维脚本及问题解决
1.扩容计算结点在执行扩容前需检查扩容节点的以下几点信息: 内核版本 selinux已经开启enforcing docker数据盘已经就绪 /etc/resolv.conf配置正确 hostname已经设置 时间同步已配置 在每个节点都能解析新增节点的域名,如果是通过/etc/hosts来配置域名解析,需要在配置后重启所有节点的dnsmasq服务 docker证书的问题需要添加到自动化配置中来,特别是私有镜像仓库的证书。有三个地方: /etc/sysconfig/docker配置, /etc/pki/ca-trust/source/anchors/目录下的证书, /etc/docker/certs.d下docker拉取镜像认证证书 123456789101112131415# /etc/ansible/hosts[OSEv3:children]mastersnodesetcdnew_nodes...[new_nod...
使用Ansible-Tower与Jenkins集成实现CI-CD
Ansible Tower是什么?Ansible Tower是一个基于Web的用户界面,提供了IT自动化的企业解决方案。它有一个友好用户的仪表板来管理部署和监控资源。Ansible Tower为Ansible增加自动化,可视化管理和监控能力。 为什么要使用Ansible Tower替换Ansible与Jenkins集成?使用Ansible Tower与Jenkins集成,打开了一个充满可能性的世界。与一篇中介绍的《Ansible与Jenkins集成实现CI/CD》进行比较,它可以从Jenkins中删除很多配置,比如部署应用的服务器的访问配置,管理playbook执行,最重要的是,避免在Jenkins端配置SSH密钥,同时Jenkins不需要知道应用程序的部署服务器地址:它可能位于公有云中,物理机中,甚至是笔记本电脑上的虚拟客户端。 把这些配置与过程都放到Ansible Tower中进行集中管理。 Ansible Tower的组件 Credentials: Ansible Tower在运行作业时,访问Tower外部服务或者连接主机时需要进行身份验证。Credenti...
自动化工具集(持续更新------)
1. 部署集群kopskubespraykubeoperatork(8s) in d(ocker) 2. 部署应用kustomize 路径名中有/时,使用~1替换 123456789101112131415161718kustomization.yaml---apiVersion: kustomize.config.k8s.io/v1beta1kind: Kustomization...patchesJson6902:- target: version: v1 kind: Namespace name: argocd path: patch-namespace.yamlpatch-namespace.yaml---- op: replace path: "/metadata/annotations/iam.amazonaws.com~1allowed-roles" value: > ["arn:aws:iam::12313112:role/argocd"] kapphelmhelmfileargoc...
OpenShift压测工作必不可少,使用Jmeter搞起来
毫无疑问OpenShift是一个优秀的容器平台,但是我们有没有想过这些问题呢?OpenShift集群最多能运行多少个容器?每个请求的延时是多少呢?当有大量Pod并发启动时,容器平台是否还能轻松应对呢?等等这些问题在容器平台上生产时,我们都得心里有数。否则随着容器平台的压力不断扩大,到了无法承受之痛时,而我们却毫不知情。那么对OpenShift容器平台做压力测试就成了一项必不可少的工作。但是怎样去做呢?业界使用最多的方法就是用Jmeter来模拟API请求进行压测。 新建测试计划与进程组 创建一个名为”测试OpenShift Api”的Test Plan 右击”测试OpenShift Api”,Add->Threads(Users)->ThreadGroup,创建名为”模拟客户端”的Thread Group 右击”测试OpenShift Api”,Add->Listener->Aggregate Report,创建名为“测试OpenShift API Report”的Aggregate Report 通过模拟请求获取访问OpenShift平台的ACCESS_...









