Go 中的 Arrays 和 Slices

Golang 中的 Arrays 和 Slices 在 go 语言中,我们经常使用Slices类型因为它的方便和灵活,它和另一个Arrays类型有着密切的关系,Slices 是建立在 Arrays 的基础上的,搞明白它们的原理能使我们更加的轻松的使用它们 Arrays Arrays 和别的语言(C、Java)的类型一样,有固定的长度,在内存里是一块连续的空间,用以存储相同类型的 types。用如下方式申明 var array [5]int 像[size]T在 go 中申明array,size 是 type 的一部分 如上面的[5]int代表 5 个 int 元素的 Arrays,和另一个如[10]int是不同的类型,Arrays 有确定的长度。并且申明之后带默认值(各类型的零值)。也可以使用[...]符号省略 size 申明,编译器自动计算 如array := [...]int{1, 2, 3, 4, 5} 变量array引用的是整个 Array 而不是 Array 的第一个元素,如果将一个数组另外赋值是将这个数组拷贝了一份,数组作为函数参数也是将整个数组拷贝一份,非引用数组的指针 Slices 就是因为 Arrays 比较难用,go 在此基础上建立了 Slices,它是可以动态调整长度(dynamically-sized)的描述 Arrays 一部分的 types,Slices 可以使用切片数组的方式得到 array := [5]int{1, 2, 3, 4, 5} // Arrays var slice = array[1:4] // same as `var slice []int = array[1:4]` fmt....

April 8, 2021 · 3 min · 507 words · Fython

Bash备忘录

BASH SHELL cheat sheet 记录一些 bash shell 脚本的奇技淫巧,都是从实际使用中 google 的。bash 各 Linux 发行版都自带方便好用特别是文本处理、一些运维之类的小脚本,但有些语法繁琐不好记容易忘整理一下方便查找。 trap trap 命令 用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作。当 shell 接收到 sigspec 指定的信号时,arg 参数(命令)将会被读取,并被执行。例如: trap "exit 1" HUP INT PIPE QUIT TERM 表示当 shell 收到HUP,INT,PIPE,QUIT,TERM这几个信号时,当前执行的程序会读取参数"exit 1",并将它作为命令执行。 如果要忽略某个信号就参数使用单引号就可以'' trap '' signals 如果启动的时候忽略了信号比如使用了nohup,trap 命令是无效的。具体信号可使用man 7 signal或者kill -l查阅 $*、$@、$# 直接上例子看,如下脚本test.sh echo 参数总个数 \$#: $# echo 第0个参数 \$0: $0 for a in $(seq 1 $#); do eval b=\$$a echo 第"$a"个参数 \$"$a": $b done echo -e "\nUsing \"\$#\":" echo "$#" echo -e "\nUsing \$#:" echo $# echo -e "\nUsing \"\$*\":" for a in "$*"; do echo $a; done echo -e "\nUsing \$*:" for a in $*; do echo $a; done echo -e "\nUsing \"\$@\":" for a in "$@"; do echo $a; done echo -e "\nUsing \$@:" for a in $@; do echo $a; done 然后运行此脚本,注意最后3 4用了双引号...

January 20, 2021 · 2 min · 415 words · Fython

使用kubeadm在虚拟机本地搭建Kubernetes集群

使用kubeadm在虚拟机本地搭建Kubernetes集群 本文使用ESXi创建3台ubuntu server 虚拟机搭建一个完整的Kubernetes集群,1台master主节点,2台worker做为工作节点。很多地址都是google的域名,安装下面一些环境可能需要科学上网,创建k8s集群需要如下包 docker – 容器运行环境 kubelet – Kubernets节点代理 kubeadm – 部署多节点Kubernetes集群的工具 kubectl – 用于和Kubernetes交互的命令行工具 会创建如下3台机器 主机名 IP地址 角色 master.k8s 10.0.0.175 主节点 node1.k8s 10.0.0.176 工作节点1 node2.k8s 10.0.0.177 工作节点2 记一下安装时最新的版本号 ubuntu server 20.04.1 kernel version 5.4.0 kubernetes v1.20.0 docker-ce 19.03.14 创建虚拟机配置网址和安装docker 首先在ESXi控制台创建一台ubuntu server虚拟机,配置建议2CPU、2G RAM、20G硬盘,主机名为master.k8s开机更新到最新版本后重启安装docker,切换到root用户,以下所有操作都用root用户 修改主机名 # set hostname hostnamectl set-hostname master.k8s 然后修改/etc/hosts域名解析并添加之后两台的ip地址,如下 10.0.0.175 master.k8s 10.0.0.176 node1.k8s 10.0.0.177 node2.k8s 配置主节点的网络修改/etc/netplan/00-installer-config.yaml如下,我这网卡是ens160 network: version: 2 renderer: networkd ethernets: ens160: # change your's dhcp4: no addresses: [10....

December 23, 2020 · 3 min · 504 words · Fython

正则表达式中的预查

正则表达式中的预查 有时候使用正则会用到非获取匹配,就是不进行存储供以后使用,也就是正则中的预查,预查分为正向预查(lookahead)和反向预查(lookbehind)。 正向预查 (?=pattern)正向肯定预查(Positive lookahead)。如Python(?=3)匹配Python后跟3的语句,如输入Python3但其中最后的3不算进结果,返回Python (?!pattern)正向否定预查(Negative lookahead)。和上面的类似只是否定的,Python(?!3)匹配后面不带3的句子,输入Python2,也是返回Python 反向预查 (?<=pattern)反向肯定预查(Positive lookbehind)。如(?<=2)Python其实和上面也差不多反向就是向左匹配就是匹配Python前面是2的语句,如输入2Python,返回Python (?<!pattern)反向否定预查(Negative lookbehind)。如(?<!3)Python匹配Python前面不是3的输入,如输入2Python,返回Python 还有一个长的挺像的这里也记录下 (?:pattern) 匹配pattern但不获取匹配结果。 (?:t|b)oy只匹配boy或者toy,和toy|boy一样但更简洁,当然如果使用(t|b)oy就会多一个group

October 27, 2020 · 1 min · 16 words · Fython

Bash 快捷操作

Bash 快捷操作 GUN Bash 是现代操作系统一般都默认自带的 Shell,它兼容 sh 并提供了更多的 feature,如果我们常用命令行那么记住一些快捷键和 trick 能大大提高我们的工作效率,这篇文章就介绍下本人常用的快捷键和一些技巧。 Bash 默认的是 emacs 模式,这里的快捷键以默认的为准,可以使用set -o命令查看,使用set -o emacs设置。 移动光标 快捷键 描述 Ctrl + a 移动光标到行首 Ctrl + e 移动光标到行尾 Alt + b 移动光标后退一个单词(词首) Alt + f 移动光标前进一个单词(词首) Ctrl + f 光标前进一个字母 Ctrl + b 光标后退一个字母 Ctrl + xx 当前位置与行首之间光标切换 一般配合Ctrl的是单字符移动,Alt是单词为边界。建议将键盘上的caps lock键改成Ctrl这样手指移动距离更短按起来也更加舒服方便。 剪切(删除)粘贴 快捷键 描述 Ctrl + k 剪切从光标到行尾 Ctrl + u 剪切从光标到行首 Ctrl + w 从光标向前剪切一个单词 Alt + Backspace 与 Ctrl + w 类似,但分隔符是一些特殊字符 Alt + d 从光标向后剪切一个单词 Ctrl + d 删除光标下一个字母,如果没有字符存在,ctrl+d 则会登出该会话 Ctrl + h 删除光标前一个字母 Alt + t swap(当前单词, 上一个单词) Ctrl + t swap(当前字母, 上一个字母) Ctrl + y 粘贴上一次剪切的文本,配合 Ctrl-u、Ctrl-k 效果极好 大小写转换 快捷键 描述 Alt + c 大写当前字母,并移动光标到单词尾 Alt + u 大写从当光标到单词尾 Alt + l 小写从当光标到单词尾 历史命令 快捷键 描述 Ctrl + r 向后搜索历史命令 Ctrl + g 退出搜索 Ctrl + p 历史中上一个命令,代替向上方向键 Ctrl + n 历史中下一个命令,代替乡下方向键 Alt + ....

July 14, 2020 · 3 min · 459 words · Fython