命令 awk
awk 命令结构
awk -F "," '/^a/ {print $3}' f
-F 部分是参数
’ 内前面是范围,后面是操作
awk 语言的数组下标是从 1 开始的,0 表示整个原始字符串。
详细命令
比如 netstat 命令打印的网络状况如下:
awk -F "," '/^a/ {print $3}' f
-F 部分是参数
’ 内前面是范围,后面是操作
awk 语言的数组下标是从 1 开始的,0 表示整个原始字符串。
比如 netstat 命令打印的网络状况如下:
dig 是 Domain information Groper 的缩写,是一个 DNS 查询工具,用于 DNS 的故障诊断。
dig @server name type
server 是待查询服务器的名称或者 ip 地址,一般指定为 DNS 服务器
name 是将要查询的名称
type 显示所需要查询的类型,ANY,A,TXT,MX,SIG 等,不提供任何参数默认是对 A 记录的查询。
在平时的开发中,一言不和就会新建一个分支来开始新的工作,当工作完成后我们可能不会及时的删除掉建立的分支,久而久之,查看分支的时候就出现了类似下面的情况。
有时候我们希望自己的 github 使用一个私钥,公司的 git 账号使用另一个私钥。这样就需要在客户端上配置支持多个 git 账号。
git config --global --unset user.name
git config --global --unset user.email
使用 ssh-keygen 生成新的秘钥对。注意这个时候需要输入文件名,使用默认的名字会覆盖已有的。比如这里使用名字 id_rsa_new
sudo mkdir -p /etc/systemd/system/docker.service.d
# 写入 /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://bb.bb.com"
Environment="HTTPS_PROXY=http://bb.bb.com"
Environment="NO_PROXY=aa.bb.com"
然后
sudo systemctl daemon-reload
sudo systemctl restart docker
更新:大部分已经不可用
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
Git 常用撤销操作
git checkout <file-path>
这样就可以把文件恢复到 git 版本里的样子。
如果修改的文件已经 add 了,可以用下面的方法撤销 add。
git reset HEAD <file-name> # 撤销某个文件
git reset # 撤销所有文件
同样,另一个操作也可以达到一样的效果
Channel 的操作对应在运行时里的方法(都在 $GORROT/src/runtime/chan.go 里)
Channel 操作 | 运行时方法 |
---|---|
make(chan int, 4) | makechan(int, 4) |
make(chan int) | makechan(int, 0) |
ch <- v | chansend1(ch, &v) |
v <- ch | chanrecv1(ch, &v) |
close(ch) | closechan(ch) |
makechan 返回的是一个叫做 hchan 的结构。所以 chan 本质上是用 hchan 表示的,它的传参与赋值始终都是指针形式,每个 hchan 对象代表着一个 chan。
当运行 go generate 命令时,他会扫描当前包相关的源代码文件,找出所有包含有 //go:generate
的特殊注释,提取并执行注释后面的命令,命令为可执行程序,如同在 shell 下面执行。
需要注意的
这个注释必须在 .go 源码文件中
Go 在 1.11 版本上发布了 go module 版本管理方案,用于解决被人诟病已久的 Go 项目版本管理问题。这个方案最早来自 Go & Versioning。这个方案引入了一些新的概念,也抛弃了原有的 GOPATH,导致在使用思路上有一些区别。
go trace 在 go 1.5 版本加入,会在运行中收集以下事件的所有数据
创建,启动和终止 goroutine
阻塞/非阻塞 goroutines(syscalls, channels, locks)
网络 io
Syscalls
gc
收集后不会做任何类型的聚合和抽样。
pprof 用来分析 CPU 和内存分别用在了哪里,trace 用来确定什么阻止了 goroutine 运行,goroutine 在 OS 线程上如何被调度。