1、学习资料部分:
查看io命令
iostat -xdk 2
emqx start
emqx stop
redis:http://redisdoc.com/
画图工具:drawio
https://github.com/Unknwon/the-way-to-go_ZH_CN
https://studygolang.com/pkgdoc
Go 入门指南
https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
Go语言圣经中文版
http://www.kancloud.cn:8080/hartnett/gopl-zh/126045
Go语言高级编程(Advanced Go Programming)
https://chai2010.cn/advanced-go-programming-book/
Go语言四十二章经
https://www.bookstack.cn/read/go42/SUMMARY.md
mysql性能优化教程:https://wenku.baidu.com/view/aa43ecc3aa00b52acfc7ca94.html?st=1
慢查询相关(https://www.cnblogs.com/magic-chenyang/p/10557002.html):
查看是否开启慢查询功能:
mysql> show variables like 'slow_query%';
+---------------------+------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/instance-1-slow.log |
+---------------------+------------------------------------+
2 rows in set (0.01 sec)
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
说明:
slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录
配置
临时配置
默认没有开启慢查询日志记录,通过命令临时开启:
mysql> set global slow_query_log='ON';
Query OK, 0 rows affected (0.00 sec)
mysql> set global slow_query_log_file='/var/lib/mysql/instance-1-slow.log';
Query OK, 0 rows affected (0.00 sec)
mysql> set global long_query_time=2;
Query OK, 0 rows affected (0.00 sec)
1、show processlist;
查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill掉
2、show variables like "max_connections";
查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many connections的情况
3、set GLOBAL max_connections=1000;
修改最大连接数,但是这不是一劳永逸的方法,应该要让它自动杀死那些sleep的进程。
4、show global variables like 'wait_timeout';
这个数值指的是mysql在关闭一个非交互的连接之前要等待的秒数,默认是28800s
5、set global wait_timeout=300;
修改这个数值,这里可以随意,最好控制在几分钟内
6、set global interactive_timeout=500;
修改这个数值,表示mysql在关闭一个连接之前要等待的秒数,至此可以让mysql自动关闭那些没用的连接,但要注意的是,正在使用的连接到了时间也会被关闭,因此这个时间值要合适
7、批量kill之前没用的sleep连接,在网上搜索的方法对我都不奏效,因此只好使用最笨的办法,一个一个kill
1、select concat('KILL ',id,';') from information_schema.processlist where user='root'; 先把要kill的连接id都查询出来
2、复制中间的kill id;内容到word文档
3、替换掉符号“|”和回车符(在word中查询^p即可查询到回车符)
4、把修改过的内容复制回终端,最后按回车执行!
select concat('kill ', id, ';') from information_schema.processlist where command != 'Sleep' and time > 70000 order by time desc;
kill 1;
画图工具:https://plantuml.com/zh
sudo update-alternatives --install "/usr/bin/go" "go" "/home/cjx/go/go1.15.5/bin/go" 0
sudo update-alternatives --set go /home/cjx/go/go1.15.5/bin/go
golang代理:
export GO111MODULE=on
export GOPROXY=https://goproxy.io
旧项目转换成gomod
go mod init projectName
goland:
查找文件: CTRL+SHIFT+N(https://blog.51cto.com/9291927/2294263)
ctrl+alt+L格式化
ctrl+enter执行sqllike
按住鼠标中键 复制
ctrl+D
shift+alt
protobuf:
github源代码下载地址:https://github.com/google/protobuf
./autogen.sh
./configure
make
make install
ldconfig #refresh shared library cache
以太坊相关:
infura:
https://infura.io/
以太坊JSON RPC手册:
http://cw.hubwiz.com/card/c/ethereum-json-rpc-api/1/3/39/
eth event签名:
https://me.tryblockchain.org/blockchain-solidity-event.html
浏览器:
https://etherscan.io/ --已被墙
https://cn.etherscan.com/
sudo apt-get update
sudo apt-get install ruby-full
时序数据库 influxdb单表限制
Royal TSX
sftp:https://blog.csdn.net/axing2015/article/details/89313460
列出远程目录的内容
ls
列出本地目录的内容
lls
打印本地工作目录
lpwd
将文件从服务器下载到本地计算机
#把sftp服务器上test.txt文件下载到本地
get /tmp/test.txt ~/
#把sftp服务器上test文件下载到本地
get -r /tmp/test/ ~/
put [本地文件的地址] [服务器上文件存储的位置]
172.26.16.101
select user, plugin from mysql.user;
update mysql.user set authentication_string=PASSWORD('12345678'), plugin='mysql_native_password' where user='root';
flush privileges;
退出后,切换到普通用户shell并重启MySQL,即可使用root用户和上一步设置的root密码登录MySQL
rabbitmq
查看所有队列:rabbitmqctl list_queues
关闭应用:rabbitmqctl stop_app
清除队列:rabbitmqctl reset
启动应用:rabbitmqctl start_app
注:使用此命令前,要先关闭应用,否则不能清除
2、git部分
git pull
git status
git diff readme.txt
git add + 文件
git add -u + 路径:将修改过的被跟踪代码提交缓存
git add -A + 路径: 将修改过的未被跟踪的代码提交至缓存
git commit -m //提交
回滚已push的提交
git reset --hard
git push origin HEAD --force
git clone
回退到上一个版本
git reset --hard HEAD^
回到1094a版本
git reset --hard 1094a
git reset --soft 76e5740644 回退到76e5740644
git reset --hard
git checkout master
git reset --hard
git fetch --all
git reset --hard origin/master
git pull
git clone --depth=1
//合并某条commit
git cherry-pick 28a9513ba7
所有分支
git branch -a
切换分支
git checkout branchName
创建分支
git branch branchName
//推送分支
git push --set-upstream origin feature-hide_discover_tab
git branch --set-upstream-to=origin/dev dev
git rebase 过程中可以使用git --abort/--continue来进行操作,成功之后如何撤销呢?
首先执行git reflog查看本地记录
git reset --hard 02a3260
设置代理
git config --global http.proxy
git config --global --unset http.proxy
拉取tag版本修改重新打tag:
1、git checkout v1.4.7
2、修改增加记录失败的图片内容。
git add ....:q
git commit -m '.......'
3、git tag v0.10.0
4、git push origin v0.10.0
删除本地tag:
git tag -d v20190514
删除远程tag:
git push origin :refs/tags/v20190514
git submodule init
git submodule update
git submodule update --init --recursive
根据 go.mod 文件来处理依赖关系。
go mod help 查看帮助
go mod init<项目模块名称>初始化模块,会在项目根目录下生成 go.mod 文件。
go mod tidy 根据 go.mod 文件来处理依赖关系。
go mod vendor 将依赖包复制到项目下的 vendor 目录。建议一些使用了被墙包的话可以这么处理,方便用户快速使用命令 go build -mod=vendor 编译
go list -m all 显示依赖关系。go list -m -json all 显示详细依赖关系。
go mod download 下载依赖。参数是非必写的,path 是包的路径,version 是包的版本。
添加子模块
git submodule add
git submodule add [email protected]:Web/pow.one-pack.git extern/pow.one-pack
其中,url为子模块的路径,path为该子模块存储的目录路径。
删除子模块
有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。
如何删除submodule呢? git rm
删除子模块较复杂,步骤如下:
rm -rf 子模块目录 删除子模块目录及源码
vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
vi .git/config 删除配置项中子模块相关条目
rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可
git fsck --full
rm -rf .git/xxxx
fatal: bad object HEAD
git pull origin feat/nebula-fil-mainnet-0.16-sector_pool_msg_cjx
https://blog.csdn.net/panbinxian/article/details/82665810
git remote add github https://github.com/drand/drand
git fetch github
git checkout v1.2.1
git branch nebula-fil-mainnet-0.17
git push --set-upstream origin nebula-fil-mainnet-0.17
error: cannot lock ref 'refs/remotes/origin/nebula-fil-mainnet-0.29-merge-tgm': unable to resolve reference 'refs/remotes/origin/nebula-fil-mainnet-0.29-merge-tgm': reference broken
From git.minerhub.iask.in:Nebula/lotus-daemon
清理目录下对应分支:
.git/refs/remotes/origin
3、docker部分
a、redis部分
docker exec -it redis redis-cli
GET "otc.199025978935083008.1."
TTL "otc.199025978935083008.1."
get nebula_access_token_13_16605924075_5
监控
127.0.0.1:6379> monitor
b、mysql部分
docker exec -it mysql env LANG=C.UTF-8 /bin/bash
docker exec -it mysql0 bash
1、备份(未验证):mysqldump -t otc_admin -u otc -h 127.0.0.1 -p'otc' -P3306 --tables apps appeal_service >./db_script.sql
mysqldump -uroot otcpay_otc_admin menu_conf > /home/otcpay/release/develop/menu_conf.sql
2、登录:mysql -u username -p
mysqldump -u 用户名 -p 数据库名 > 保存文件.sql
3、
insert into 表1
select * from 表2
insert into 表(列名1,列名2,列名3)
select 列1,列2,列3 from 表2
c、docker 服务器更新
docker-compose down
docker images
docker rmi registry.devgo.xyz/otcpay/otc-hotfix:latest
docker-compose up -d
d、其他
//最近30分钟日志
docker logs --since admin-v1.5-0-0
//实时显示最后100条
docker logs -f -t --tail 100 admin-v1.5-0-0
docker logs admin-v1.4-0-0
docker logs admin-v1.4-0-0 |less 这个可以翻页
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某时间段日志:
docker logs -t --since="2021-06-04T10:00:00" --until "2021-06-04T10:00:00" CONTAINER_ID
docker-compose -f docker-compose-base.yml up -d
sudo docker login registry.devgo.xyz
报错:Error saving credentials: error storing credentials - err: exit status 1, out: Error calling StartServiceByName for org.freedesktop.secrets: Timeout was reached
解决方案
sudo apt install gnupg2 pass
devgo
gogo@666
查看私有仓库的镜像
curl -XGET https://registry.otcpay.pro/v2/_catalog
docker安装mysql:
sudo docker pull mysql:latest
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
docker inspect : 获取容器/镜像的元数据。
4、命令工具相关
二维码识别相关
Red Hat: yum install zbar
ubuntu: sudo apt install zbar-tools
文字识别:
ubuntu下安装tesseract命令(直接调用命令)
sudo apt install tesseract-ocr
使用https://github.com/otiai10/gosseract本质是调用tesseract库接口(c++),需安装一下依赖
sudo apt install libleptonica-dev
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr-chi-sim
sudo apt-get install libpng-dev
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libicu-dev
sudo apt-get install libpango1.0-dev
时区设置
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5、谷歌proto
protoc --proto_path=src --go_out=build/gen src/foo.proto src/bar/baz.proto
protoc --proto_path "pb/" --go_out=pb pb/*.proto
6、其他
a、启动http服务
python -m SimpleHTTPServer 9010
python -m http.server
b、查看硬盘分区
sudo fdisk -l
查看磁盘剩余空间
sudo df -hl
系统版本信息
cat /proc/version
切换到root用户
sudo su - root
查看cpu信息
lscpu
内存
free -h
netstat -nlpt
scp local_file remote_username@remote_ip:remote_folder
service iptables stop //关闭防火墙
service sshd start //启动 SSHD 服务
rustup update
rustup component add clippy
systemctrl restart appname
清除ls命令包(不保留配置文件)
apt-get purge ls
7、获取服务的实时堆栈。只能在本地运行
wget "http://127.0.0.1:10000/debug/pprof/goroutine?debug=1" -O goroutine2.log
8、mysql死锁:Deadlock found when trying to get lock; try restarting transaction
https://www.cnblogs.com/hunternet/p/11383360.html
https://cloud.tencent.com/developer/article/1472341
https://bugs.mysql.com/bug.php?id=77209
http://www.yywang.top/2020/11/17/%E4%B8%80%E6%AC%A1MySQL%E6%AD%BB%E9%94%81%E7%9A%84%E8%B8%A9%E5%9D%91%E8%AE%B0%E5%BD%95/