【Go标准库】flag包的使用
Go语言flag包基本使用Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。
os.Args使用如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。
12345678910111213141516package mainimport ( "fmt" "os")func main() { //os.Args是一个[]string fmt.Println("osArgs:", os.Args) // [./args_demo a b c d] if len(os.Args) > 0{ for index,v:=range os.Args{ fmt.Println(index,v) } }}
将上面的代码执行go build -o "args_demo"编译之后,执行:
123456$ ./args_demo a b c d0 ./args_demo1 a2 ...
Helm3通过Rook安装Ceph集群
一、Rook简介Rook官网:https://rook.io
Rook使用Kubernetes原语使Ceph存储系统能够在Kubernetes上运行。下图说明了Ceph Rook如何与Kubernetes集成:
随着Rook在Kubernetes集群中运行,Kubernetes应用程序可以挂载由Rook管理的块设备和文件系统,或者可以使用S3 / Swift API提供对象存储。Rook oprerator自动配置存储组件并监控群集,以确保存储处于可用和健康状态。Rook oprerator是一个简单的容器,具有引导和监视存储集群所需的全部功能。oprerator将启动并监控ceph monitor pods和OSDs的守护进程,它提供基本的RADOS存储。oprerator通过初始化运行服务所需的pod和其他组件来管理池,对象存储(S3 / Swift)和文件系统的CRD。
oprerator将监视存储后台驻留程序以确保群集正常运行。Ceph mons将在必要时启动或故障转移,并在群集增长或缩小时进行其他调整。oprerator还将监视api服务请求的所需状态更改 ...
【Go学习笔记】小案例(持续更新)
统计文章字符出现的次数12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152func main() { word := `Five score years ago, a great American, in whose symbolic shadow we stand signed the Emancipation Proclamation. This momentous decree came as a great beacon light of hope to millions of Negro slaves who had been seared in the flames of withering injustice. It came as a joyous daybreak to end the long night of captivity. But one hundred years later, we must face t ...
Helm3安装treafik-2.4.9
添加traefik的helm仓库
123$ helm repo add traefik https://helm.traefik.io/traefik$ helm repo list $ helm pull traefik/traefik --version 10.0.0
生成部署values.yaml清单,清单内容照着自带的values.yaml修改添加
这里的内容是我修改过的my_values.yaml文件
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152# 使用hostNetwork网络,service就不需要创建了service: enabled: falsedeployment: replicas: 1# traefik是dashboard的配置,web和websecure是入口的配置ports: traefik: port: 9000 expose: false web: expose: false ...
【Go学习笔记】切片相关操作
切片相关操作Go语言切片是对数组的抽象。数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片(”动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
需要说明,slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案
第一种切片定义和初始化
12345678910func main() { var slice []int fmt.Printf("%#v", slice) // 切片定义后未赋值的默认值是[]int(nil) nil slice = []int{} fmt.Printf("%#v", slice) // 切片空值初始化为 []int{} slice = []int{1, 2, 3} // 切片可以任意长度 fmt.Println(slice)}
第二种,通过索引指定切片的初始化值,未指定初始值为默认值
1234func main() ...
【Go学习笔记】Map映射相关
map映射操作Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
键必须是支持相等运算符 (“==”、”!=”) 类型, 如 number、string、 pointer、array、struct,以及对应的 interface。
值可以是任意类型,没有限制。
定义map映射方法一,声明一个map映射
1234func main() { var m map[string]float64 fmt.Printf("%#v", m)}
方法二,先声明后初始化map映射
12345func main() { var m map[int]string m = map[int]string{1: "Go语言", 2: "Python", 3: ...
【Go学习笔记】数组相关
数组相关数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
在Go语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从0开始。
数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可以让它在CPU缓存中待更久,所以迭代数组和移动元素都会非常迅速
数组的定义第一种,通过指定数据类型和元素个数(数组的长度)来声明数组
示例:
1234567func main() { // 定义一个长度为6的int类型数组 var array [6]int // 为前面定义的数组赋值,当对应索引未赋值时默认初始化数据类型的默认值 array = [6]int{1, 2, 3, 4, 5} // [1 2 3 4 5 0] fmt.Println(array)}
第二种,快速创建和初始化数组的方法是使用数组字面值。数组字面值允许我们声明我们需要的元素个数并指定数据类型。
示例:
1234 ...
将Centos7内核升级到最新版本
升级centos内核到最新版本
载入公钥1rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELRepo1rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
载入elrepo-kernel元数据1yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
查看可用的rpm包1yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
安装最新版本的kernel1yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
查看默认启动顺序123456awk -F\' '$1=="menuentry " {print $2}' /etc/ ...
fio对磁盘进行性能IO测试
fio是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。
注意事项
CentOS 6.5等较老版本的操作系统用fdisk创建分区时,默认为非4KB对齐选择初始磁柱编号,对性能有较大的影响,建议针对该类操作系统,在创建分区时4KB对齐选取初始磁柱编号。
请不要在系统盘上进行fio测试,避免损坏系统重要文件。
测试硬盘性能时,建议直接测试裸数据盘(如 /dev/vdb)。
测试文件系统性能时,推荐指定具体文件测试(如 /data/file)。
fio测试建议在空闲的、未保存重要数据的磁盘上进行,并在测试完成后重新创建文件系统。
参数
参数名
说明
取值样例
name
定义测试任务名称
N/A
filename
测试对象,即待测试的磁盘设备名称。
N/A
bs
每次请求的块大小。取值包括4k、8k及16k等。
4k
bsrange
bsrange=512-2048 数据块的大小范围
N/A
size
I/O 测试的寻址空间。也可是百分数,比如size=20%,表 ...
【Go学习笔记】字符串操作相关
二、字符串相关字符串赋值字符串的赋值,使用""可以添加\n,\t这些字符,使用反引号将代表原生的字符。
123456789package mainimport "fmt"func main() { myName := "我的名字是\nzhangsan" myName1 := `我的名字是\nzhangsan` fmt.Println(myName,myName1)}
运行结果:
12我的名字是zhangsan 我的名字是\nzhangsan
字符串的拼接123456789101112131415161718192021package mainimport ( "fmt")func main() { world := "我的名字是:" myName := "zhangsan" msg := "name" msg += "---zhangsan" // 类似 msg = msg ...