win下修改文件夹图标
运行需要准备两文件
config.txt 文件中每一行指定待修改图标的文件夹路径,review.ico 图标样本文件
vs2022下编译通过,使用 Unicode 字符集编码
#include <windows.h> #include <shlobj.h> #include <iostream> #include <fstream> #include <string> #include <io.h> //https://stackoverflow.com/questions/68941080/update-folder-icon-with-desktop-ini-instantly-change-c void …
下载CUDA的安装版本
输入命令查看 nvidia-smi,显示的CUDA版本号
打开nvidia的官网 https://developer.nvidia.com/cuda-downloads,打开页面显示的是最新版本的CUDA
如果你的显卡显示的不是最新版本,需要到 Archive 档案列表中去下载
在当前页面往下拉到最后,Resource 下面有一个 Archive of Previous CUDA Releases
点击打开新的页面,可以在新页面里面查找到对应的历史版本
比如,12.1的最新版本为 12.1.1,点击可以进入到其对应的版本页面进行下载 https://developer.nvidia.com/cuda-12-1-1-download-archive
注册表批量删除项记录
某些软件在安装的时候,会生成大量的注册表记录,但在卸载的时候,并不会进行清理,时间长了就会留下很多垃圾
这里使用代码加脚本的方式来实现指定删除,遍历符合规则的注册表项,如 “HKEY_CLASSES_ROOT\AD*“ 的注册表项
#include <stdio.h> #include <Windows.h> int main(int argc, char* argv[]) { int i = 0; while (1) { DWORD dwKeyNameSize = 128; char szKeyName[128] = { 0 }; int retCode = RegEnumKeyEx(HKEY_CLASSES_ROOT, i, szKeyName, …
OledTools扫描图片生成点阵文件
OledTools是一款根据图片生成二进制点阵文件的软件,非常轻量且易于使用,下载地址
链接:https://pan.baidu.com/s/1r920OBKecETkXLj63fsahQ 提取码:fwko
16 x 16 点阵,根据图片生成的点阵,指定的扫描方式为竖向,扫描结果参考如下
生成的二进制bin文件内容如下
分析可以知道,00 以及 10 的地址对应图片的第一列, 01 以及 11 对应图片的第二列,依次类推
其中 08 单元的 df 在图形上表示为左侧第一个有值的列,从上往下依次为低位到高位,写成二进制为 11011111
这里的1表示空缺,0 表示置为需要绘制,0 就是表示上述的黑色阵点
64 x 48 的扫描方式
经过分析计算得知,扫描方式为从开始位置向下取 8 位, …
安装 vcpkg 进行包管理
下载 vcpkg 代码版本包
git clone https://github.com/Microsoft/vcpkg.git 进入代码根目录,执行 bat 文件,这个脚本操作实际上是下载了一个 vcpkg.exe 程序
这个 vcpkg.exe 程序是从 github 上面下载的,也可以手工下载,然后放置到 vcpkg 源代码目录下
.\bootstrap-vcpkg.bat 也可以使用 proxy 将 http 的请求全部都转为代理下载,在桌面增加一个 proxy.bat
set http_proxy=http://192.168.1.200:58591 set https_proxy=http://192.168.1.200:58591 start 双击启动 proxy.bat 文件,然后 cd …
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 = …