OSI模型
网络拓补结构
城域网
核心层核心层是城域网的最高层,负责处理大量的数据流量。核心层的设备通常是高性能的路由器和交换机,能够处理大量的数据传输。高速数据交换。
提供对外(互联网出口)的连接
为整个城域网提供一个高速、安全与具有QoS保障能力的数据传输环境
汇聚层汇聚层位于核心层和接入层之间,负责将接入层的流量汇聚到核心层。汇聚层的设备通常是中等性能的路由器和交换机,能够处理中等规模的流量。
处理身份认证、计费和宽带控制
流量汇聚:将多个接入层节点的数据向上透传
接入层接入层是城域网的最底层,负责将终端设备(如PC、服务器等)接入网络。接入层的设备通常是交换机,能够提供多个端口供终端设备连接。
城域网技术描述
可以使用==SNMP==实现带外网络管理,利用IP网络及协议进行网络管理,汇聚层以上(核心交换层)带外管理,汇聚层以下(用户接入层)带内管理
保证服务质量QoS的有:==资源预留(RSVP)、区分服务(diff server)和多协议标记交换(MPLS)==
技术特征ADSL(非对称 ...
这是一个全能的python包管理工具【全面掌握UV:Python下一代环境管理懒人工具(Python五分钟)】 https://www.bilibili.com/video/BV15MVdzaEUw/?share_source=copy_web&vd_source=9c987ed6ab5014f976c5bd5305300cc0
安装1234powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# 直接安装到 /usr/local/bin,这样所有用户(pi, root)都能直接用curl -LsSf https://astral.sh/uv/install.sh | sudo INSTALLROOT=/usr/local/bin sh
代替pip12345uv run <main.py> 直接运行python文件uv add --script 添加依赖到单个python文件uv remove --script 删除依赖到单个python ...
scoop.sh中国用户能用的 Scoop 应用库,每日同步 Scoop 的官方库,加速应用的下载速度
123456789101112Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserInvoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression# 国内加速,三选一irm https://gh-proxy.com/https://raw.githubusercontent.com/duzyn/scoop-cn/master/install.ps1 | iexirm https://cdn.jsdelivr.net/gh/duzyn/scoop-cn/install.ps1 | iexirm https://raw.gitmirror.com/duzyn/scoop-cn/master/install.ps1 | iex# 超级一键安装iex (irm https://duzyn.github.io/scoop-cn/install.ps ...
在 ROS2 开发中,我们经常会接入多个 USB 串口设备(如激光雷达、485 转换器、STM32 控制板等)。Linux 系统默认分配的 /dev/ttyUSB0、ttyUSB1 会因为重启或插拔顺序导致名称“漂移”。
本文记录如何通过 lsusb 排查硬件并使用 udev 规则永久固定设备名称。
1. 硬件信息排查首先,通过“排除法”确定各设备的硬件 ID。
12345678910# 1. 不插设备时运行一次lsusb# 2. 插上激光雷达,再次运行,多出的设备即为雷达# 示例输出:Bus 001 Device 014: ID 10c4:ea60 Silicon Labs CP210x...# 其中 10c4 是 vendorID,ea60 是 productID# 3. 插上 485 转换器,再次运行# 示例输出:Bus 001 Device 016: ID 1a86:7523 QinHeng Electronics CH340...# 其中 1a86 是 vendorID,7523 是 productID
1udevadm info -a -n /dev/ttyACM0 | ...
安装依赖123# 安装依赖bun add ai @ai-sdk/react zodbun add @ai-sdk/openai-compatible @ai-sdk/deepseek
@ai-sdk/openai-compatible基本上可以调用所有服务商,然后openai自己的还改版了!
配置环境变量 .env.local12AI_GATEWAY_API_KEY=xxxxxxxxxAI_IFLOW_API_KEY=xxxxxx
创建自定义的openai格式的服务提供商1234567891011121314151617181920import { streamText, UIMessage, convertToModelMessages } from 'ai';import { createOpenAICompatible} from "@ai-sdk/openai-compatible";// Create an OpenAI instance,然后自定义的provider名称是iflow_opena ...
父仓库操作
定位到父仓库的目录:1cd /path/to/parent-repository
添加子模块:使用 git submodule add 命令添加现有的 Git 文件夹作为子模块。确保提供子模块的 Git URL 和您希望在父仓库中放置子模块的路径。1git submodule add /path/to/child-repository.git path/to/child
这里的 path/to/child-repository.git 是子模块仓库的本地路径,而 path/to/child 是子模块在父仓库中的路径。
提交更改:子模块添加后,会有一个新的 .gitmodules 文件和一个记录子模块提交的文件。您需要提交这些更改。1git commit -m "Add child-repository as a submodule"
子仓库操作(可选)如果子模块已经是一个远程跟踪的仓库,那么您不需要进行任何操作。但如果它只是一个本地仓库,并且您想要将它推送到远程服务器,您可以这样做:
定位到子仓库的目录:1cd /path/to/child-repo ...
标准文档入口neupan_ros2/src/neupan_ros2/README_cn.md at main · KevinLADLee/neupan_ros2根目录md是旧版的
快速上手安装,拉取的是一整个ROS2工作空间123456789101112131415161718192021git clone https://github.com/KevinLADLee/neupan_ros2.gitcd neupan_ros2# 安装系统依赖chmod +x setup.sh./setup.sh# 配置依赖uv venvuv pip install torch torchvision "numpy<2.0" --torch-backend=auto# 拉取Neupan的主仓库git clone https://github.com/hanruihua/NeuPAN.gituv pip install -e NeuPAN/# 构建工作空间chmod +x build.sh./build.sh# Source 工作空间s ...
SO-ARM100/101 - Waveshare Wiki
https://wiki.seeedstudio.com/cn/lerobot_so100m_new
【SO-ARM机械臂Lerobot超详细上手教程:1序言】 https://www.bilibili.com/video/BV1H6UUBcErT/?share_source=copy_web&vd_source=9c987ed6ab5014f976c5bd5305300cc0
LeRobot SO-101 机械臂实践 · MyBlog
启用MuJoCo仿真拉取官方lerobot仓库1git clone https://github.com/huggingface/lerobot.git ~/lerobot
使用UV安装GPU-Torch 和 MuJoCo123456uv venvuv pip install torch --torch-backend=autouv add mujoco feetech-servo-sdkuv syncuv pip install -e .
配置舵机idSO-ARM1 ...
学长的传承下载、安装1234567# Install or upgrade the ultralytics package from PyPIpip install -U ultralytics# Use uv install Ultralyticsuv init --python 3.13uv venvuv pip install ultralytics --torch-backend=auto
训练1uv run yolo train model=yolo26n.pt data=./data.yaml epochs=100 imgsz=640
推理1uv run yolo predict model="训练出来的最好的模型的路径\best.pt" source=(图片地址/数字则是摄像头序号) show=True(是否开个窗口)
如果你是个嵌入式开发者 (ESP32, STM32, Arduino),或者只是想在 WSL 里刷个机,你一定遇到过这个痛点:WSL 2 默认居然看不见 Windows 插上的 USB 设备!
别急,微软官方开源的工具 usbipd-win 就是为了解决这个问题而生的。它能通过网络把 Windows 上的 USB 端口“借”给 WSL 用。
本文带你光速上手,顺便解决常见的“权限报错”和“火绒冲突”问题。
🛠️ 第一步:安装工具 (Windows 端)在 Windows 11 或 Windows 10 (建议 Win11,体验更丝滑) 上,打开 PowerShell (管理员模式)。
使用微软官方包管理器 winget 一键安装:
1winget install usbipd
安装完成后,弹出的窗口会自动关闭。建议重启一个 PowerShell 窗口以确保环境变量生效。
🔗 第二步:找到你的设备把你的开发板(比如 ESP32)插上电脑。在 PowerShell 中输入:
1usbipd list
你会看到类似这样的列表:
123BUSID VID:PID DEVIC ...
大多数主题下,光标在一个单词上面,就会给这个单词添加一个背景色,然后标注出其他相同单词,但是选中单词里面的单个字符,仅仅只是加深一点点颜色,非常不明显,所以可以通过一下方法解决
打开设置JSON12ctrl + shift + popen settings json
在外边的大括号里面添加12345678910111213"workbench.colorCustomizations": { // 1. 【核心】你鼠标拖黑选中的那部分文本的背景色 // 建议:用一个高饱和度、深一点的颜色,甚至带点透明度 "editor.selectionBackground": "#ff000055", // 2. 【核心】和你选中的文本相同的其他单词的背景色 // 建议:用一个淡淡的灰色或黄色,只要和上面明显不同即可 "editor.selectionHighlightBackground": "#ffff0055", // 3. 当你没选中,只是把 ...
安装12345678910// powershell admindism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart// 设置成wsl2wsl --set-default-version 2// 查看可安装的linux发行版wsl --list --online
备份、导入导出、迁移将现有的发行版打包成一个 .tar 文件。这既是备份,也是迁移的第一步。命令格式:
1wsl --export <发行版名称> <导出文件路径.tar>
示例:将名为 Ubuntu-20.04 的发行版备份到 D 盘:
1wsl --export Ubuntu-22.04 D:\backup\ubuntu-backup.tar
注意:导出过程可能需要几分钟,具体取决于系统大小。
...
12345678wget http://fishros.com/install -O fishros && . fishros鱼香的一键命令RCM(待研究)https://gitee.com/ncnynl/commands换源的Python库6-rosdep
概念然后功能包就是放在src下面
12345678910111213141516171819典型工作流程# 1. 创建工作空间,ros2_wsmkdir -p ~/ros2_ws/srccd ~/ros2_ws# 2. 创建包cd srcros2 pkg create --build-type ament_cmake my_package# 3. 编译,在工作空间的目录下进行cd ..colcon build# 4. 设置环境source install/setup.bash# 5. 运行节点ros2 run my_package my_node
创建一个Python功能包1ros2 pkg create example_py --build-type ament_python --dependencies r ...
第一步:先拉取官方仓库git clone https://github.com/hiyouga/LlamaFactory.git
第二步:然后编辑文件夹下的uv配置文件pyproject.toml,添加以下内容123456789101112[tool.uv.sources]torch = [ { index = "pytorch-cu124", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },]torchvision = [ { index = "pytorch-cu124", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },][[tool.uv.index]]name = "pytorch-cu124"ur ...
官方就有Arduino的组件Arduino 作为 ESP-IDF 组件——Arduino ESP32 最新文档 — Arduino as an ESP-IDF component - - — Arduino ESP32 latest documentation快速上手
1idf.py create-project-from-example "espressif/arduino-esp32^3.3.6:hello_world"
添加依赖1idf.py add-dependency "espressif/arduino-esp32^3.3.6"
注意,一定要先configTICK_RATE_HZ = 1000,不然会报错,并且无法通过menuconfig修改
配置更改主程序后缀把main.c改成main.cpp,注意检查一下CMakeLists.txt文件。
添加依赖库例如u8g2
新建一个components目录
git clone下来 git clone https://github.com/olikraus/u8g2.git
在compo ...
UV 安装GPU PyTorch123torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124uv pip install xxx --torch-backend=auto
12345678910111213141516171819dependencies = [ "ipykernel>=7.1.0", "matplotlib>=3.10.8", "torch", "torchvision",][tool.uv.sources]torch = [ { index = "pytorch-cu124", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },]torchvision = [ ...
systemd入门教程如果你刚接触Ubuntu、CentOS等Linux系统,大概率会遇到“启动服务”“开机自启”这类需求。而systemd,就是Linux系统里负责“统筹管理”这些事的“大管家”。这篇教程不讲复杂原理,只教你搞懂它是什么、怎么用,轻松搞定服务管理和开机自启。
一、先搞懂:systemd到底是啥?我们先抛弃专业定义,用比喻理解:
把Linux系统想象成一个“大家庭”,家里有各种“打工仔”(进程):有的负责网络连接(sshd服务),有的负责网页服务(nginx),有的负责定时任务(crond)。这些“打工仔”大多在后台默默干活,不露面(也就是“守护进程”)。
而systemd,就是这个家的“大管家”——它的核心工作的是:
开机时,按顺序叫醒需要的“打工仔”(并行启动服务,加快开机速度);
运行中,管理“打工仔”的生死(启动、停止、重启服务);
听话办事,比如你让某个“打工仔”开机就上班(配置开机自启);
记日志,哪个“打工仔”出问题了,它会记下原因(方便排错)。
补充:Ubuntu 16.04、CentOS 7及以上版本,都默认用systemd当“管家”。之前的老系统 ...
按照数据通行方式分类:串行通信、并行通信按照数据传输方向分类:单工通信、半双工通信、全双工通信按照数据同步方式分类:同步通信、异步通信
[!note]- 同步通信要求收发双方使用同一个时钟信号实现同步,数据以帧为单位连续传输,帧内无间隔或仅有固定间隔。其优点是传输速率高、数据格式紧凑、传输效率高;但对时钟同步精度要求极高,时钟偏差易导致数据传输错误,适用于以太网、SPI、I2C、光纤通信、SDH/SONET光传输网络等大批量连续数据传输场景。
[!note]- 异步通信无需收发双方统一时钟,数据以字符为单位传输,每个字符前添加起始位、后添加停止位,通过这两个标识实现字符级同步。该方式的优点是无需额外时钟线、硬件结构简单、容错性强;缺点是起始位和停止位会占用10%-20%的带宽,额外开销大,传输速率较低,常见于UART串口通信、键盘与主机通信、鼠标与主机通信等间歇性、小批量数据传输场景。
UART
[!tip]+异步通信RX-TX发射端和接收端各自都是独立时钟,通过波特率保持同步
波特率每秒传输的码元个数,单位是Baud(波特)常见波特率:9600(基础)、1920 ...