都是踩过的坑,趟过的水。
ubuntu虚拟机终端字体太小的设置方法:ubuntu18.04调整终端字体大小
这个方法试试看:https://zhuanlan.zhihu.com/p/139305626
容器里面编译内核代码,进程被杀掉的原因是触发了内核OOM killer,进程被异常杀掉,首要怀疑对象就是OOM。
环境搭建篇
ubuntu设置复制粘贴快捷键设置方法。
ubuntu设置终端字体大小
Ubuntu 22.04 只有在root用户下才能使用go环境解决办法
根本原因:没有设置好go的环境变量导致
1、在/etc/profile或者/etc/bash中添加以下字段
export PATH=$PATH:/usr/local/go/bin
2、在/etc/bash.bashrc中添加以下字段
if [ -f /etc/bash ]; then
. /etc/bash
fi
给ubuntu的终端换个背景图片
实际上手效果并不是很好,字体看起来比较模糊,没有找到较好的解决办法,不建议使用。
sudo apt-get install xfce4-terminal
谷歌浏览器设置黑色背景
chrome://flags/#enable-force-dark
X11 forwarding request failed on channel 0
将/etc/ssh/sshd_config中的以下字段改为no
X11Forwarding no
并且重新启动主机解决
Go语言环境
go build编译出的二进制文件依赖动态库
- 是否有动态库链接
Go 引用了其他包的话,是将引用的包都编译进去。用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用。但是有的又有引用动态链接库,这个是为什么?
回答:Go 默认是开启 CGO_ENABLED 的,即 CGO_ENABLED=1 。但编译出来的二进制程序究竟有无动态链接,取决于你的程序使用了什么包。如果就是一个 hello world,那么编译出来的将是一个纯静态程序。
如果你依赖了网络包或一些系统包,比如用 http 包编写了一个 web server,那么编译出来的二进制程序又会是一个包含动态链接的程序。
原因就在于目前的 Go 标准库中,某些功能具有两份实现,一份是 C 语言实现的,一份是 Go 语言实现的。
在 CGO_ENABLED 开启的情况下, Go 链接器会链接C 语言的版本,于是就有了依赖动态链接库的情况。
如果你将 CGO_ENABLED 置为 0,你再重新编译链接,那么 Go 链接器会使用 Go 版本的实现,这样你将得到一个没有动态链接的纯静态二进制程序。
当CGO_ENABLED=1, 进行编译时, 会将文件中引用libc的库(比如常用的net包),以动态链接的方式生成目标文件。
当CGO_ENABLED=0, 进行编译时, 则会把在目标文件中未定义的符号(外部函数)一起链接到可执行文件中。
1、当go程序中使用了由c/c++等外部库文件或依赖,则go编译需要将cgo开启,并使用gcc进行编译 、如使用了sqlite3的依赖
示例:CGO_ENABLED=1 go build
2、将go编译的程序减小生成的文件大小
参数:CGO_LDFLAGS=“-s -w” CGO_ENABLED=1
3、将动态链接库静态编译到程序中、如使用了插件则不能编译为静态链接、否则会出现无法链接上插件
参数:CGO_LDFLAGS=“-static -s -w” CGO_ENABLED=1
Go语言实现静态编译不依赖动态库
go build -ldflags '-linkmode "external" -extldflags "-static"'
https://blog.csdn.net/qq_43580193/article/details/120305231
tc命令构造网络故障
# 丢包,比例可以是10或者10%
tc qdisc add dev eth0 root netem loss 10%
tc qdisc del dev eth0 root netem loss 10%
# 延迟,延迟时间可以是40,默认单位为us,可输入参数为s/ms/us
tc qdisc add dev eth0 root netem delay 40ms
tc qdisc del dev eth0 root netem delay 40ms
# 查看所有已经定义的规则
tc qdisc show dev eth0
# 清除某个网卡全部规则
tc qdisc del dev eth0 root
# 乱序,如下代表50ms基准上的25%乱序
tc qdisc add dev eth0 root netem delay 50ms reorder 25%
iptables删除防火墙规则
有很多的朋友都会创建了很多的iptables防火墙规则,可是有些需要删除的又不会,现在小编与大家分享一下如何删除Linux下的防火墙iptables指定的规则。
开放端口
iptables -A INPUT -ptcp --dport 9526 -j ACCEPT
查看序号
iptables -L -n --line-number
删除规则
iptables -D INPUT 2
stress-ng cpu加压方法
## cpu
--cpu N 其中N表示cpu满载的个数。
--cpu-load P 其中P表示cpu消耗的比例
后台执行shell命令
# 编译生成main可执行文件
go build ./main.go
# 让进程后台执行
nohup main &
DynamoRIO可以插桩的等级
其中还包含不同程度的运行权限级别:
1.指令级(Instruction level);
2.基本块级(Basic block level);
3.函数级(Function level);
编译使用:https://blog.csdn.net/fenggang2333/article/details/113054565
详细教程:https://www.cnblogs.com/alexicob/p/14840454.html
Go语言标准日志输出
导出logrus:https://blog.csdn.net/weixin_43566459/article/details/112671287
为什么使用导出的函数打印出来的日志信息为数组的形式??
答:logrus没有配置好
这是一个很好的logrus封装的例子:https://www.jianshu.com/p/722250f0b609