首页
统计
留言
投币
友链
关于
Search
1
抖音鸡汤(一)
15 阅读
2
扩展:268条PCB Layout设计规范!
7 阅读
3
新版Keilv5安装相关问题大全
7 阅读
4
Arduino库介绍——AccelStepper
6 阅读
5
Ubuntu系统——虚拟机ubuntu22.04没有网
3 阅读
基础
CPP语法
算法题
硬件设计
PCBLayout
电子设计
单片机
ESP32
STM32
STC51
Arduino
LuatOS
FreeRTOS
LVGL
Linux
QT
树莓派
T113S3
Linux系统
Linux应用开发
Linux驱动开发
IoT
MQTT
Lora
NB-IOT
米家
涂鸦
AI
OpenCV
项目
杂谈 | 日记
投资笔记
登录
Search
标签搜索
Arduino
ESP32
PCBLayout
鸡汤
ubuntu
步进电机
KEIL
CPP
QT
OTA
会焊工的程序猿
累计撰写
11
篇文章
累计收到
0
条评论
首页
栏目
基础
CPP语法
算法题
硬件设计
PCBLayout
电子设计
单片机
ESP32
STM32
STC51
Arduino
LuatOS
FreeRTOS
LVGL
Linux
QT
树莓派
T113S3
Linux系统
Linux应用开发
Linux驱动开发
IoT
MQTT
Lora
NB-IOT
米家
涂鸦
AI
OpenCV
项目
杂谈 | 日记
投资笔记
页面
统计
留言
投币
友链
关于
搜索到
11
篇与
的结果
2026-01-30
Ubuntu系统——开启与配置SSH服务
安装与启动SSH服务安装OpenSSH ServerUbuntu默认可能未安装SSH服务端,使用以下命令安装:sudo apt update sudo apt install openssh-server启动SSH服务安装完成后,SSH服务通常会自动启动。可通过以下命令检查状态:sudo systemctl status ssh如果未运行,手动启动服务并设置开机自启:sudo systemctl start ssh sudo systemctl enable ssh防火墙配置如果系统启用了防火墙(ufw),需允许SSH端口(默认22):sudo ufw allow ssh # 或指定端口号:sudo ufw allow 22/tcp sudo ufw enable # 启用防火墙(如果未启用) sudo ufw status # 确认规则生效测试SSH连接ssh <username>@<ip-address>示例ssh user@192.168.1.100高级安全配置修改SSH配置文件(/etc/ssh/sshd_config)以增强安全性:sudo nano /etc/ssh/sshd_config常见配置选项:配置项说明示例值Port修改默认端口2222PermitRootLogin禁用root登录noPasswordAuthentication禁用密码登录no修改后重启服务生效:sudo systemctl restart ssh故障排查检查服务状态:sudo systemctl status ssh查看SSH日志:journalctl -u ssh确认端口监听:ss -tuln | grep 22 # 或替换为自定义端口
2026年01月30日
3 阅读
0 评论
0 点赞
2026-01-30
Code管理工具——Git
Git 常用命令仓库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]配置# 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"增加/删除文件# 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]代码提交# 提交暂存区到仓库区 $ git commit -m [message] # 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a # 提交时显示所有diff信息 $ git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...分支# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git checkout -b [branch] # 新建一个分支,指向指定commit $ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区 $ git checkout [branch-name] # 切换到上一个分支 $ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支 $ git merge [branch] # 选择一个commit,合并进当前分支 $ git cherry-pick [commit] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]标签# 列出所有tag $ git tag # 新建一个tag在当前commit $ git tag [tag] # 新建一个tag在指定commit $ git tag [tag] [commit] # 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tagName] # 查看tag信息 $ git show [tag] # 提交指定tag $ git push [remote] [tag] # 提交所有tag $ git push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]查看信息# 显示有变更的文件 $ git status # 显示当前分支的版本历史 $ git log # 显示commit历史,以及每次commit发生变更的文件 $ git log --stat # 搜索提交历史,根据关键词 $ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 $ git log --follow [file] $ git whatchanged [file] # 显示指定文件相关的每一次diff $ git log -p [file] # 显示过去5次提交 $ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file] # 显示暂存区和工作区的差异 $ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD # 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [commit] # 显示某次提交发生变化的文件 $ git show --name-only [commit] # 显示某次提交时,某个文件的内容 $ git show [commit]:[filename] # 显示当前分支的最近几次提交 $ git reflog远程同步# 下载远程仓库的所有变动 $ git fetch [remote] # 显示所有远程仓库 $ git remote -v # 显示某个远程仓库的信息 $ git remote show [remote] # 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch] # 上传本地指定分支到远程仓库 $ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force # 推送所有分支到远程仓库 $ git push [remote] --all撤销# 恢复暂存区的指定文件到工作区 $ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop# 恢复暂存区的指定文件到工作区 $ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区 $ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit] # 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop其他# 生成一个可供发布的压缩包 $ git archive
2026年01月30日
3 阅读
0 评论
0 点赞
2026-01-21
Arduino库介绍——AccelStepper
仓库地址: https://github.com/waspinator/AccelStepper.git以下为 AccelStepper 常用 API 的简要注释(速查表,示例签名为伪代码以便快速理解):// 类与构造 AccelStepper(interface, pin1, pin2, pin3 = -, pin4 = -, enablePin = -) // interface: 驱动类型(2线/4线/驱动器等)。构造器也有简化形式用于 STEP/DIR 驱动。 // 运动参数设置 setMaxSpeed(float maxSpeed) // 设置最大速度(步/秒) setAcceleration(float accel) // 设置加速度(步/秒^2) setSpeed(float speed) // 直接设置当前速度(步/秒),不改变目标位置 maxSpeed() / acceleration() / speed() // 返回对应参数值(getter) // 位置与目标 moveTo(long absolute) // 设置目标绝对位置(步数) move(long relative) // 相对移动(步数) targetPosition() // 返回目标位置 currentPosition() // 返回当前已记录的位置 setCurrentPosition(long pos) // 重置当前位置计数器 distanceToGo() // 返回剩余步数(target - current) // 运行控制(需要在 loop 中反复调用 run* 来推进电机) run() // 以加速度/速度曲线移动一步;需要频繁调用(非阻塞) runSpeed() // 以当前 speed 速度移动(不处理加速度) runToPosition() // 阻塞直到到达目标位置 runToNewPosition(long position) // 设置目标并阻塞到达 // 紧急停止/软停止 stop() // 触发减速到停止并更新目标(软停止,非立即硬刹) isRunning() // 判断是否仍在移动(库版本可能有此方法) // 引脚与输出控制 enableOutputs() / disableOutputs() // 使能/禁能输出(使能引脚高/低依驱动需求) setEnablePin(pin) // 指定使能引脚(如需) setPinsInverted(dirInvert, stepInvert, enableInvert, ...) // 反转引脚逻辑(视硬件需要) // 其它 setMinPulseWidth(unsigned int us) // 设置步脉冲最小宽度(微秒) stop(); // 请求平滑停止(见上)测试A4988芯片驱动步进电机#include <Arduino.h> #include <AccelStepper.h> const uint8_t STEP_PIN = 2; const uint8_t DIR_PIN = 3; // AccelStepper in DRIVER mode for STEP/DIR drivers (A4988) AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { stepper.setMaxSpeed(1000); // 步/秒 stepper.setAcceleration(400); // 步/秒^2 stepper.setCurrentPosition(0); stepper.setMinPulseWidth(1); // 最小脉冲宽度(微秒),根据 A4988 要求调整 } void loop() { // 简单往返示例:到达目标后切换目标位置 if (stepper.distanceToGo() == 0) { if (stepper.currentPosition() == 0) stepper.moveTo(2000); else stepper.moveTo(0); } stepper.run(); // 非阻塞,需在 loop 中频繁调用以推进运动 }
2026年01月21日
6 阅读
0 评论
0 点赞
2026-01-20
Ubuntu系统——虚拟机ubuntu22.04没有网
一 概况今天登录虚拟ubuntu22.04发现不能上网,昨天还能上网,在此记录一下解决方案。二 原因分析个人怀疑是虚拟机不稳定导致网络启动失败查看网络状态[main] sudo cat /var/lib/NetworkManager/NetworkManager.state结果如下[main] NetworkingEnabled=false WirelessEnabled=true WWANEnabled=trueNetworkManager是一个服务,管理网络相关的,NetworkManager.state是网络状态,因为虚拟机不稳定,开机启动时候,启动网络不成功,所以记录了这个状态。三解决方案1.先停止网络管理服务2.删除网络状态文件3.重启网络服务sudo service NetworkManager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service NetworkManager start
2026年01月20日
3 阅读
0 评论
0 点赞
2026-01-05
抖音鸡汤(一)
做好三件事1. 第一件事是研究挣钱。尤其是没钱、没人脉、没资源的时候,钱能解决人生90%的难题,剩下的10%,也能靠钱大大缓解。2. 第二件事是研究人性。摸透人性的本质,看懂人心的复杂,才能在纷繁的社会里站稳脚跟,立于不败之地。3. 第三件事是爱护身体。别等熬坏了才后悔,一个人最大的糊涂,就是拿健康去换那些生不带来、死不带去的身外之物。好的习惯,是人生的底牌:排名第一的是自律,排名第二的是终身学习,排名第三的是坚持运动。能把这三样攥在手里,美好的人生其实触手可及。别焦虑,别内耗1. 平复焦虑的八字真言:事缓则圆,人缓则安。2. 生活陷入困境时,别急着硬碰硬。任何难题砸过来,不必立刻回应,也别逼自己马上解决。给事情一点时间发酵,往往会峰回路转。别给自己太大压力,一件事打不败你的人生。记住:自己永远比别人重要,当下永远比过去和未来重要。允许一切发生,才能不焦虑、不内耗。什么叫认知1. 拿你有的,换你要的,这就是世界的底层逻辑。2. 光想不做,永远都是局外人;只有迈开步子行动,才能真正改变现状。3. 没钱、没人脉、没资源的时候,更要懂:靠体力赚钱,年龄越大越窘迫;靠脑子赚钱,年纪越大越吃香。4. 鸡蛋从外打破是食物,从内打破是新生。人也一样,被外力打破是压力,靠自己打破是成长。5. 一个人成长最快的时刻,恰恰是失去所有安全感,只能逼自己向前的时刻。6. 多做点实事,少点想当然。努力、幸运、成功1. 做任何事都是这个理:不去做的人,成功率0%;试着做的人,成功率20%;好好做的人,成功率60%;努力做的人,成功率80%;拼命做的人,成功率100%。你要相信,越努力,才越幸运。2. 人生最痛的不是失败,而是那句“我本可以”。人的一生有一万种可能,但你若不尝试、不努力,得过且过混日子,你的人生就只剩一种可能——后悔。人生本就很累,你现在偷的懒,未来都会加倍偿还;人生本就很苦,你现在不吃的苦,以后都会变本加厉找上门。3. 好的人生,都是拼出来的。不经一番寒彻骨,怎得梅花扑鼻香;不经历风雨,怎能见彩虹。人生路上,上天从不会亏待那些认认真真实打实千的人。让我疯狂自律的一段话稻盛和夫说:“把时间放在床上,成就了体重;把时间放在书上,成就了智慧;把时间放在锻炼,成就了健康;把时间放在勤劳,成就了财富;把时间放在市场,成就了事业;把时间放在家庭,成就了亲情。行动在哪里,收获就在哪里;目光在哪里,风景就在哪里。提升自控力,才能掌控人生。”就像村上春树说的:“有限的目标,能让人生变得简洁。”既然花了时间定计划,就别给自己找借口。今天下雨、明天太累、后天加班,永远迈不出第一步,这不是做事的态度。今天不想跑,所以才去跑;今天不想学,所以才去学;今天不想做,所以才去做。这,才是真正的强者思维。{dotted startColor="#ff6c6c" endColor="#1989fa"/}千万别再假大方了 1. 吃饭抢着买单,随份子冲在最前,花钱从不计较零头。总以为大方待人,就能换来真心和尊重。可现实会狠狠教你一课:当你没钱、没人脉、没资源的时候,连影子都会离你而去。2. 你瞧不上的那些小钱,不知不觉就全溜走了。电费、水费、房租、车费……各种账单从不会迟到。成年人的崩溃,从来不是从借钱开始的,而是从不存钱那一刻就埋下了伏笔。能存住钱,才算真正赚到了钱;赚再多留不住,又有什么意义?赚钱是本事,存钱才是王道,别再打肿脸充胖子,挥霍自己的辛苦钱。请记得,永远置顶自己的感受 你要明白,我们不是为了满足别人的期待而活,而是为了自己,活出想要的人生。哪怕被讨厌、被非议,也不必太在意。因为别人如何看待你,是别人的课题,与你无关。取悦自己,才是人生的头等大事;自爱,才是终身浪漫的开始。永远别低头,自信才是你的铠甲。不要被任何人的想法绑架,也不必强求在所有人眼里都光鲜亮丽。多取悦自己一点,你的感受、你的开心,才是最重要的。去想去的地方,吃想吃的东西,见想见的人,做想做的事。请记得,永远把自己的感受置顶。然后,记得做一个勇敢的人 允许一切发生,允许自己失败,允许人生有缺憾,也允许有些人突然离场。真正的强大,不是忘记,而是坦然接受。接受人生的遗憾,接受独处的孤独,也接受那个不完美的自己。然后,抬起头往前走,别回头。一定要学会和不值得的人、不值得的事说再见。拖着不放,只会不断消耗自己,让你身心俱疲、情绪烦躁。我们都要做个勇敢的人,遇事果断一点,接受世界的不完美,也接纳不完美的自己。没做成的事,下次再努力;偶尔的失败,不是人生的终点。允许世事无常,允许聚散离合,勇敢说再见,才能迎来新的开始。希望我们都能好好爱自己,然后,做一个勇敢的人。最好的伯乐,是努力的自己靠自己的力量,才能拥抱美好的人生。站在树上的鸟,从不怕树枝断裂,因为它依靠的不是树枝,而是自己的翅膀。没钱、没人脉、没资源的时候,靠自己,才最有底气,也最有魅力。这个世界上,没有什么能挡住一颗奋进的心。脚踏实地走好每一步,勤恳付出,真诚做人,认真做事。去努力,去拼搏,就一定能拥抱属于自己的美好人生。从今天起,把更多时间拿来丰富自己。你读过的书、走过的路、见过的人、付出的善良,最终都会化作光,照亮你前行的路。
2026年01月05日
15 阅读
0 评论
0 点赞
1
2
3