linux系统资源查看-top命令
参考:每天一个 Linux 命令-top(1)_哔哩哔哩_bilibili
任务列表区域PIDProcess Id,进程IDUSEREffective User Name,有效用户名PRPriority,优先级NINice Value:Nice值VIRTVirtual lmage(KiB),进程使用的虚拟内存大小RESResident Size(KiB),进程占用的驻留内存大小SHRShared Memory(KiB),进程占用的共享内存大小SProcess Status,进程状态RRunning,运行sSleeping,可中断的睡眠状态DUninterruptible Sleep,不可中断的睡眠状态TTraced,已被跟踪或已停止zZombie,僵尸进程×Exited,退出状态%CPUCPUUsage,自从上一次更新到现在进程所使用的CPU时间百分比%MEMMemory Usage(RES),进程所使用的物理内存的百分比TIME+CPU Time,hundredths,任务后动后到现在所使用的全部CPU时间,精确到百分之一秒COMMANDCommand Name/Line,命今名 ...
PyInstaller打包python脚本为可执行文件
PyInstaller 是一个将 Python 脚本打包成独立可执行文件(例如 Windows 系统的.exe)的工具,方便在没有 Python 环境的机器上运行程序
安装 pyinstaller在项目 python 环境的终端执行:
1$ pip install pyinstaller
使用 pyinstaller 命令打包 python 脚本
在脚本所在目录终端中执行:
1234# 创建带有控制台窗口的可执行文件及运行库文件(文件夹)$ pyinstaller your_script.py# 创建去除控制台窗口,自定义图标的单个可执行程序(文件)$ pyinstaller -F -w -i your_icon.ico your_script.py
执行后会生成 build、dist 文件夹和 .spec 配置文件,dist 中的文件即为打包完成的可执行文件
常用参数:
123456-F , --onefile:打包成单个可执行文件-D , --onedir:打包成文件夹(默认)-w , --windowed:去除控制台窗口(适合 GUI 程序)-c , --console:保 ...
git diff命令进行差异比较
git 仓库工作区与版本库使用git init初始化仓库时会在当前工作目录下生成.git目录,该目录属于 git 的版本库,存储项目的完整历史快照。它包含暂存区(索引区,使用git add添加)和本地对象库(git commit添加),而我们进行编码的当前工作目录属于工作区
123graph TD A[工作区] -->|git add| B[暂存区] B -->|git commit| E[对象库]
git diff 的四种情况工作区和暂存区
git diff:查看工作区和暂存区所有文件的差异
git diff -- {filename}:只查看工作区和暂存区文件{filename}的差异(注意–和{filename}间的空格)
git diff -- {filename1} {filename2}:查看工作区和暂存区文件{filename1}、{filename2}的差异(注意空格)
工作区和版本库
git diff HEAD : 查看工作区与最新版本库之间所有的文件差异(将 HEAD 替换为某个 ...
大数求余算法
对大数进行求余操作,这里只涉及给定一个大数,针对给定的 mod 值采用模拟手算的方法进行求余操作
模拟手算原理:从字符串 large_num 首位开始对 mod 进行取余操作,并将余数 result 存起来与后一位合到一起继续进行取余操作,直到遍历完整个字符串得到最终余数
核心代码:
12345long long result = 0;for (int i = 0; i < large_num.size(); i++){ result = (result * 10 + large_num[i] - '0') % mod;}
模拟手算(优化版)原理:在模拟手算基础上,将大数进行分块,每块含多位数字,每次对块进行取余操作,并将余数 result 存起来与后一块合到一起继续进行取余操作,直到遍历完所有得到最终余数
核心代码:
123456789int k_size = 9;long long result = 0;string segment;for (size_t i = 0; i < large_num.size(); i += ...
git代码提交规范
git 提交代码时需要写 commit message(提交说明),通过该提交说明来说明本次提交的目的
1.提交说明作用
提供更多历史信息,方便快速浏览
通过grep命令筛选特定提交,便于快速查找信息
通过 commit 直接生成 change log
2.提交说明格式12345<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer>
其中第一行为 header(不可省略),其他 body 和 footer 均可省略,<BLANK LINE>为空行(分隔行)
2.1 header
header 包括 type(必需)、scope(可选)和 subject(必需)三个字段
2.1.1 type用于说明 commit 的类别,只允许使用下面 7 个标识:
feat:新功能(feature)
fix:修补 bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refa ...
Linux免密执行特定脚本
为单个用户添加免密码执行某个脚本权限使用命令sudo visudo安全编辑 sudoers 文件(不要直接编辑 /etc/sudoers),在打开的文件中添加以下行(注意:将 username 替换为实际用户名,例如 thee),然后保存退出
123username ALL=(ALL) NOPASSWD: /path/to/your/script.sh# 或者允许目录下所有脚本username ALL=(ALL) NOPASSWD: /path/to/scripts/*
若配置后执行脚本仍然需要手动输入密码,那么可以按照下面的步骤进行检查:
12345678# 使用 visudo 检查语法sudo visudo -c# 查看当前用户的 sudo 权限,该命令可以查看具有 sudo 权限的脚本,配置成功后能在该命令输出结果中看得到sudo -l# 查看特定用户的 sudo 权限sudo -l -U username
除了配置特定用户免密码执行脚本命令(可以携带参数)外,还可以配置特定组中所有用户免密码执行脚本、特定目录下所有脚本免密码执行,配置模版如下:
1234 ...
工具收藏合集
工具类中国科学技术大学测速网站
菜鸟工具 - 不止于工具在线工具 - 你的工具箱在线工具大全专注于体验的免费在线工具 - 独特工具箱 - dute.orgIT Tools - Handy online tools for developers实用在线工具箱 - 500+免费工具集合平台
Linuxtldr InBrowser.AppLinux命令搜索引擎 命令,Linux Linux命令搜索引擎 命令详解:最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。 - Linux 命令搜索引擎
参考手册Quick Reference & Quick Reference
C/C++cplusplus.comcppreference.comLinux 常用 C 函数参考手册 — Linux C 函数大全 - 中文参考手册C++ Cheat Sheets & Infographics | hacking C++
esp32s3实现USB直连HID设备遇到的问题记录
前言:最近购买了一块 esp32s3 devkitc-1 N16R8 开发板,想使用 esp32s3 自带的 USB-OTG 功能实现 USB 的 HID 设备,其中与串口芯片连接的 USB 口专门用作程序下载,另一个与 esp32s3 直连的 USB 口模拟 HID 设备,但实际测试发现并非想的那么简单,下面详细叙述相关测试记录
环境配置硬件esp32s3 devkitc-1 N16R8 开发板
软件采用 arduino 框架开发,使用的库为 Adafruit_TinyUSB 库,使用的源码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include "Adafruit_TinyUSB.h"// Report IDenum { RID_KEYBOARD = 1, RID_MOUSE, RID_CONSUMER_CONTROL, // Media, vol ...
esp32+PlatformIO串口通信问题
最近使用esp32-cam开发板时,发现通过VScode+PlatformIO平台编译下载网络摄像头程序复位后通过monitor无法接收串口数据,但使用使用 arduino 的监视器或者其他串口通信软件在开发板复位时则能打印出相关信息
原因:在 PlatformIO monitor 中查看串口相关配置信息,发现其中 DTR 和 RTS 默认为 activate (即保持为高电平),而 arduino 和串口通信软件中默认未勾选 DTR 和 RTS (即保持为低电平),而勾选了 DTR 和 RTS 后,软件会持续拉高对应信号线的电平。对于 RTS 来说,主机会持续向外设发送”我已准备好接收数据”的信号,对于 DTR 来说,主机向外设宣告”我已上电就绪,可通信”
解决办法:在 platformio.ini 中添加如下两行代码(强制 RTS 和 DTR 端口为低电平,再次下载程序复位后就能在 monitor 中打印出相关信息):
12monitor_rts = 0monitor_dtr = 0
对于很多 USB 转 TTL 串口线(例如常用的 CH340G、CP2102、FT232R ...
esp32移植TinyUSB库时遇到的问题
前言:最近想使用 esp32 系列的芯片实现 HID 设备(如键盘、鼠标)的模拟,但是使用 PlatformIO 平台进行开发的过程中遇到了一些问题,下面对其进行记录和总结。
环境配置硬件
esp32 devkit 开发板,芯片型号 ESP32-D0WD-V3
Platform IO 配置123456[env:esp32dev]platform = espressif32board = esp32devframework = arduinomonitor_speed = 115200lib_deps = adafruit/Adafruit TinyUSB Library@^3.7.2
添加 TinyUSB 库后编译 TinyUSB 例程报错1234567891011src/main.cpp:23:5: error: 'TUD_HID_REPORT_DESC_KEYBOARD' was not declared in this scope TUD_HID_REPORT_DESC_KEYBOARD()}; ^~~~~~~~~~~~~~~ ...








