QT版本的下载和安装
官方下载地址 http://download.qt.io/ ,国内清华镜像 https://mirrors.tuna.tsinghua.edu.cn/qt/
archive 和 official_releases 两个目录都有最新的 Qt 开发环境安装包,通常从 archive 中下载安装包
archive 目录下有几个子目录
打开 qt 目录下的 6.5.0 的路径
single 表示 Qt 完整的源码包,submodules 表示 Qt 各个子模块 源码包
自从 5.14.2 版本后,官方不再提供离线安装包,都需要通过安装器在线安装
在线安装器下载 https://download.qt.io/official_releases/online_installers/ 选择 windows 版本的
在线安装的 …

Charles抓包工具注册
官网版本下载地址 https://www.charlesproxy.com/download/
在线计算注册码:https://www.zzzmode.com/mytools/charles/
在线注册代码:https://go.dev/play/p/Qtt2CmHbTzU
package main import ( "bytes" "encoding/binary" "fmt" "math/rand" "time" ) const ( rounds = 12 roundKeys = 2 * (rounds + 1) ) func main() { rand.Seed(time.Now().UnixNano()) name := …

windows下gRPC编译记录
从官方的信息来看,gRPC并没提供C++二进制包,除了C++其他语言都提供二进制版本的安装方式
对于国内的童鞋来说,因为众所周知的原因,编译gRPC还是有点麻烦的
代码下载
> git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc > cd grpc > git submodule update --init 执行 git submodule update --init 的时候,如果碰到某些子模块下载异常,需要清除后重新下载
比如:我这里更新的时候,abseil-cpp子模块下载失败了,需要手工处理
(1)在 grpc\third_party\abseil-cpp 目录下,将子模块目录的文件清空,删除 .git 文件以及其他文件( …

搭建redis集群
当前有三个节点 10.32.5.41,10.32.5.81,10.32.5.88
在每个节点上启动两套redis服务,分别监听7000以及7001端口,其他的配置一致
两套服务分别在处于不同的路径下,按官方文档修改最小配置
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes 修改完配置之后,执行命令分别启动所有的redis服务 ./bin/redis-server ./conf/redis.conf
服务启动后,现在每个节点都是独立的,并没有关联起来,需要执行命令使它们绑定依赖;
在其中的一个节点上执行以下命令,执行完毕后输出节点集群信息
./redis-cli …

定时任务crontab的使用
常用方式有以下几种
使用的时候特别要注意路径问题,脚本中的涉及的文件尽量使用全路径,不然可能导致运行时错误
*/1 * * * * /opt/log/disk_check.sh #每分钟执行一次 50 3 * * * /opt/log/disk_check.sh #每天3点50分执行一次 0 */1 * * * /opt/log/disk_check.sh #每小时0分执行一次(整点执行) 0 * * * * /opt/log/disk_check.sh #每小时0分执行一次(整点执行) 以下表示每分钟执行一次,小时时间表示每步进一个小时满足条件
分值时间表示任意时刻都可以,因此匹配为每分钟运行一次
* */1 * * * /opt/log/disk_check.sh 2>&1 几种符号的意义
* …

Converting a pointer to a byte slice
如果是从裸指针直接转为 []byte 数组接收,会出现异常,需要准备 []byte 的底层结构再行转换
https://stackoverflow.com/questions/43591047/converting-a-pointer-to-a-byte-slice
https://play.golang.org/p/An7jG5xl2W
package main import ( "fmt" "reflect" "unsafe" ) var data = []byte(`foobar`) func main() { rv := reflect.ValueOf(data) ptr := rv.Pointer() length := rv.Len() var sl …

使用telnet传输文件
部分情况下,目标机器上没安装任何可以传输文件的命令,也没有任何权限进行安装,但是有 telnet 命令
如果需要传输文件,那么会比较麻烦,这里通过 python 的方式进行传输文件
传输文件的方式:从本地机器(python服务端)到目标机器(telnet客户端)
整体逻辑(需要确保目标机器可以连接到本地机器)
1、本地机器启动一个 python 监听
2、目标机器 telnet 连接到本地机器
3、本地机器等待到监听后,读取文件发送到 socket 流
4、目标机器 telnet 客户端接收数据流,写到目标文件
下面是网上找到传输文件的例子,这里还进行 base64 编码(可以去掉),实际使用根据需要调整
import socket import base64 port = 10005 filename = …
