大数求余算法
对大数进行求余操作,这里只涉及给定一个大数,针对给定的 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+免费工具集合平台
插件小屋 - Chrome插件,谷歌浏览器扩展下载,Chrome应用商店,离线安装包下载,crx扩展安装
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()}; ^~~~~~~~~~~~~~~ ...
数在计算机中的存储
最近因项目需要对定点数进行计算,太久没有接触这方面知识了,故而将相关知识点进行整理汇总,以备后时之需。
预备知识机器数一个数在计算机中的二进制表示方式就是该数的机器数,它是将符号和数值绝对值一起数字化的数,它是有符号数,通过最高位(即符号位)表示正负,最高位为 0 表示正数,最高位为 1 表示负数
例如:+3=0000 0011 和-3=1000 0011 便是机器数
机器数的真值由于最高位表示符号位,因此一个机器数表示的真正数值不能直接从二进制转换为十进制,需要将符号位排除在外后再进行转换;转换后根据符号位添加正负号,将带符号位的机器数对应的数值称为机器数的真值,即真值为实际生活中使用到的数本身,例如+3,-3
例如:0000 0011 的真值为+000 0011=+3,1000 0011 的真值为-000 0011=-3
原码、反码和补码
在计算机中,每个需要参加运算的数都需要以一定的编码方式进行存储,原码、反码和补码就是计算机存储数的编码方式,即机器数的表示形式为原码、反码和补码,除此之外还有移码
对于负整数或可以通过乘以 2 的幂次方 ...
你和你的研究(You And Your Research)-Richard Hamming (6 June 1995)
Richard Hamming, Learning to Learn: You and Your Research(6 June 1995)_哔哩哔哩_bilibiliRichard Hamming: You and Your Research理查德·汉明《你和你的研究》 - 阮一峰的网络日志读 You and Your Research 笔记
这是对于Richard Hamming公开演讲《You And Your Research》的总结及个人想法。
运气青睐有准备的人
你应该停止无所事事,开始努力,成为一个有价值的人
你必须在正确的时间以正确的方式解决正确的问题
每隔一段时间停止和思考:什么是重要的事情,你所做事情的性质是什么,工作的特点是什么
想要有进步,必须要有变化(变化并不意味着进步,但进步必须要有变化)
未经审视的生活不值得过。- 苏格拉底
要有做大事的想法很多人毕生只是例行公事般地从事安全的工作,所以产出有限。就这么简单:如果你要干大事,你必须毫不迟疑地去解决重大难题。你要跟自己说,往前走,去做大事!
要有清晰的愿景,要做一流的工作,要有远大的目标,要去做大事 ...
esp32移植oled-ui-astra项目
前言:本项目的目的是为了在 esp32 平台上移植开源 OLED 项目 oled-ui-astra,详见GitHub - AstraThreshold/oled-ui-astra: A smooth, easy-to-deploy, and easy-to-extend OLED UI framework, based on C++.,并添加旋转编码器 KY-040 实现 UI 界面的简单切换。尽管笔者已经在本地环境测试没有问题,但是不能保证大家使用后也能正常工作,这里笔者尽量把移植 oled-ui-astra 项目的过程讲清楚,同时把已经测试过没有问题的整体工程放到这里GitHub - Thee24LYJ/oled-ui-astra at esp32,仅供参考。下面正式开始。
1.硬件环境1.1 硬件设备esp32 DevKit、7 针 SPI OLED 和旋转编码器 KY-040
1.2 硬件连线ESP32 采用硬件 SPI 与 OLED 进行通信
OLED
ESP32
SCLK (CLK)/D0
GPIO 18
MOSI (DIN ...












