学习笔记

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 <commit_id>
    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 <url> <path>
    git submodule add git@git.minerhub.iask.in:Web/pow.one-pack.git extern/pow.one-pack
    其中,url为子模块的路径,path为该子模块存储的目录路径。
    删除子模块
    有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。
    
    如何删除submodule呢?  git rm <submodule-name> || git submodule deinit <submodule-name>

    删除子模块较复杂,步骤如下:

    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/
                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值