- 博客(65)
- 问答 (2)
- 收藏
- 关注
原创 TMEnIPPath类中Fit与GetPath方法详解
函数是路径生成的核心编码器,负责将CIP元素按协议规范打包到字节数组中。Attribute段处理。Instance段选择。由类型标识符低位决定。
2025-05-29 16:45:54
864
原创 基于socket的sendCmd和reciveRes
好的,以下是 C++98 标准下的实现,去掉了 C++11 的特性(如 std::string 的简洁构造、auto、nullptr、统一初始化等),并严格使用 std::string、传统循环和指针操作方式。1. 请求响应一一配对:sendCommand → recvResponse,双方严格同步,一个请求一个回复,不并发。如果你告诉我你使用的协议(有没有换行、有没有 ID、有没有固定长度等),我可以进一步为你定制。4. 前置长度字段:发送数据前写入长度(如 4 字节),接收时先读长度再读正文。
2025-05-29 07:36:24
174
原创 简单的makefile
创建一个简单的Makefile可以帮助你自动化编译过程,特别是在处理C或C++项目时。下面是一个基础的示例,展示了如何为一个简单的C项目编写Makefile。假设你有一个C项目,包含一个名为main.c的主程序文件,和一个名为math.c的辅助函数文件。你的项目结构可能看起来像这样:project/│├── main.c├── math.c└── MakefileMakefile 示例在你的项目目录中创建一个名为Makefile的文件,并输入以下内容:CC=gccCFLAGS=-I.LDFLAGS
2025-05-27 15:47:01
185
原创 tar+split分卷压缩
使用tar命令结合split工具通过管道操作是实现分卷压缩的核心方法。具体可通过两种方式实现:1. 先压缩再分卷的分步操作;-d使用数字后缀格式(生成filename_part00、filename_part01等)。直接生成分卷文件(filename_part00、filename_part01等)。管道同步操作 tar与split同步完成压缩分卷 高效率的大文件处理场景。-b 100M指定分卷大小为100MB。两种实现方式的对比:。管道同步操作(推荐)。分卷压缩核心方法。
2025-05-27 09:45:44
382
原创 C++ 定义一个结构体,用class还是struct
如果你不需要从该结构体派生其他类,并且希望成员变量默认是公开的,那么使用struct。如果你希望你的结构体中的成员变量默认就是公开的,并且你不需要从该结构体派生其他类,那么使用struct可能更合适。如果你希望你的结构体中的成员变量默认是私有的,或者你需要从这个结构体派生其他类,那么使用class可能更合适。继承方式:继承默认是private的,即派生类默认不能直接访问基类的所有成员,除非显式改变访问权限。默认访问权限:在class中,成员变量的默认访问权限是private。
2025-05-25 17:03:35
245
原创 Cloudflare Tunnel 实现远程访问树莓派的 SSH
要通过 Cloudflare Tunnel 实现远程访问树莓派的 SSH(22端口)服务,你可以使用 cloudflared 工具将树莓派的 SSH 暴露到一个 HTTPS 域名下,然后通过 Cloudflare Zero Trust 实现安全访问。如果你告诉我你的域名(如 example.com)和系统(Raspberry Pi OS / Ubuntu 等),我可以直接为你生成完整的配置文件和一键部署脚本。4. 绑定自己的域名(如 ssh.yourdomain.com)
2025-05-20 07:21:22
357
原创 cloudflare 树莓派一键部署脚本
非常好,下面是一个`,用于在树莓派上:• 安装并配置 Cloudflare Tunnel• 启用 systemd 自动运行 tunnel• 暴露多个本地服务(WebUI、SSH、NAS)⸻🧾 你将需要准备:1. 已注册的域名(在 Cloudflare 上管理)2. 已在树莓派中登录 Cloudflare(我们会自动处理)⸻🛠️ 脚本功能概览:子域 绑定服务 本地端口webui.example.com 树莓派的 Web 服务 localhost:8000。
2025-05-20 07:20:51
778
原创 扫描网络内所有设备的IP地址
arp 命令本身不能直接列出网络中所有 IP 地址,它只能显示本机 ARP 缓存中已知的 IP-MAC 映射,即:本机通信过的设备。如果你想查询局域网中所有在线的 IP 地址,需要配合 ping 扫描或使用更强大的工具。以下是几种常见的方法:⸻✅ 方法一:使用 arp -a + ping 扫描整个网段(适合 Linux/macOS/Windows)
2025-05-19 21:47:43
620
原创 树莓派(Raspberry Pi)中切换为国内的软件源
在树莓派(Raspberry Pi)中切换为国内的软件源(例如中科大、清华等)可以显著提升 apt 安装与更新速度。apt-key 导入公钥 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E。如果你使用的是较新的系统(例如 bookworm 或之后),apt-key 已不推荐使用。这个错误是因为你添加的清华源(或其他源)缺少对应的 GPG 公钥,APT 无法验证该源的签名,因此默认禁用。
2025-05-19 21:42:32
972
原创 centos6.10 qemu图形化安装
好!我们直接安装 CentOS 6.10 带 GUI(图形界面) 的版本,适配你 macOS(M 系芯片)环境。下面是一整套从镜像下载到图形界面安装运行的完整步骤 💻🎨。⸻🧰 一、准备工作✅ 1. 安装 QEMU(如未安装)⸻✅ 2. 下载 CentOS 6.10 DVD 镜像(含 GUI)从官方 vault 镜像站点下载:下载这个文件(~4.3G):📁 保存路径假设是 ~/Downloads/CentOS-6.10-x86_64-bin-DVD1.iso⸻🚀 二、启动图形安装流程。
2025-05-15 07:18:31
931
原创 完整的 CentOS 6.10 虚拟机安装启动脚本
好的!下面是一个 完整的 CentOS 6.10 虚拟机安装启动脚本,专为你在 macOS(M 系芯片)+ QEMU(x86_64 软件模拟) 环境设计,确保你能顺利启动并安装一个接近 Red Hat 6.4 的开发环境。⸻✅ 前提准备从官方镜像站下载:建议下载这个:假设你放在 ~/Downloads/ 目录。⸻🚀 一键启动脚本(首次安装)将以下内容保存为 run_centos6.sh:/bin/bash。
2025-05-14 23:25:28
546
原创 centos6.10在Macbook m芯片上使用
你在 Red Hat 6.4 上做了 4 年开发,那意味着你熟悉的是 RHEL 6.x 系列行为 —— CentOS 6.10 是最接近且最合理的选择,没有必要回退到 6.4 版本。📌 总结:如果你的目标是学习 Linux 2.6 系内核的设计思想、接口行为,或者搭建接近 Red Hat 6.x 的系统环境,CentOS 6.10 是最佳选择。• 推荐:CentOS-6.10-x86_64-minimal.iso(适合开发者,启动快)• 💡 帮你定制一个适配 CentOS 6.10 的内核学习项目?
2025-05-14 23:23:10
345
原创 Step1
我可以边讲边拆调度器的核心逻辑(context switch、time quantum、fairness 等)——只要你说一声“讲讲这个”,我就补全理论给你。📌 Step 2:增加 arrivalTime 判断(进程不是一开始都就绪)• 🔧 两种调度器(Round Robin + SJF)• 你可以改写调度器让它按照到达时间决定是否能调度。📌 Step 3:增加统计数据(周转时间、等待时间)📌 Step 1:理解调度器行为(基础)• ✍️ 主函数已演示调度器运行效果。• 📦 模拟进程类 Proce
2025-05-14 23:03:13
201
原创 vim启动的时候,执行gg
如果你希望在每次打开文件时自动执行,自动命令或启动脚本可能更合适。你可以创建一个小的 Vim 脚本,该脚本在启动时执行 gg 命令,然后在启动 Vim 时使用 -S 选项来执行这个脚本。在 Vim 编辑器中,gg 命令是一个非常有用的命令,它可以将光标快速移动到当前窗口的顶部(即第一行)。注意,这种方法的有效性可能受到文件类型的限制,因为并非所有类型的文件都支持模式行。你可以在启动 Vim 时使用 -c 选项来执行一个命令。这将在 Vim 启动时执行 startup.vim 中的命令。
2025-05-14 13:29:28
352
原创 win10 局域网内聊天
好的,既然你选择的是 方案一:LAN Messenger,下面是完整的指南,教你如何在 Windows 10 局域网内使用 LAN Messenger 进行群聊 / 私聊。• 🔗 地址:https://github.com/lanmessenger/lanmessenger。🟣 Bonus:ZeroTier + Element 聊天方案(跨平台、安全)🔵 推荐方案 1:使用 LAN Messenger(开源、图形界面)🔵 推荐方案 2:使用 IP Messenger(轻量、稳定)
2025-05-13 23:44:49
585
原创 对于centos6.4 多个用户之间如果想聊天,有什么好的方法
在 CentOS 6.4 上,如果你希望多个用户之间聊天,talk 就不够用了(它是 一对一聊天工具)。虽然是 Web 界面,但你可以安装在内网,用老版本浏览器或 curl + API 实现聊天,甚至通过控制台浏览器(w3m)访问。✅ 方案四:搭建轻量级聊天服务器(如 Rocket.Chat 或 Mattermost)✅ 方案一:使用 irssi + bitlbee(控制台 IRC 聊天)✅ 方案二:使用 tmux + write/wall(共享终端聊天室)✅ 方案三:共享 tmux 会话(多人同屏打字)
2025-05-13 23:32:01
311
原创 talk-centos6之间实现
在 CentOS 6.4 上配置和使用 talk 工具,需要注意系统版本较老,很多配置可能不同于现代系统。我会提供 详细步骤 + 自动化脚本,帮你在两台 CentOS 6.4 机器上实现局域网聊天。或者你可以告诉我现在你两台机器的 IP 和用户名,我直接为你写好命令。echo “警告:/etc/xinetd.d/ntalk 不存在,可能安装未成功”echo “>> 安装 talk 和 talk-server”echo “>> 添加防火墙规则(517/518 UDP)”
2025-05-13 23:26:57
357
原创 talk-linux 不同用户之间终端通信
• 如使用 CentOS 或 RHEL 系统,需要替换 apt 为 dnf,并安装 talk 和 talk-server 包。下面是一个完整的指南和脚本,用于在两台 Linux 主机上配置并使用 talk 聊天功能(假设它们在同一个局域网内)。echo “未检测到 UFW,请确保 UDP 517 和 518 端口已开放”• 如果你用的是远程终端(如 ssh),请确保 ssh 会话保持活动状态。echo “✅ talk 服务已安装并启用,请使用以下命令测试:”echo “配置防火墙(如使用 UFW)…
2025-05-13 23:21:28
466
原创 vscode不能跳转到同一个工作区的其他文件夹
2. .vscode/settings.json 或 .clangd 文件中告诉 clangd 去哪里找这个 compile_commands.json 文件。你先打开的是项目文件夹(比如 MyProject),然后通过 VS Code 的“添加文件夹到工作区”功能,把 ThirdPartyLib 文件夹添加进来。1. 你的编译系统(比如 CMake)生成的 compile_commands.json 中,-I 包含了 ThirdPartyLib 的路径;✅ 方法三:改为直接打开上层总目录(最直接)
2025-05-13 18:54:32
994
原创 vscode 同一个工作区,不同文件夹之间跳转问题
VS Code 的 C++ 跳转能力(如 Go to Definition)取决于背后的语言服务器(如 clangd 或 Microsoft C++ Extension)能否正确索引你的项目 包括依赖的头文件路径。你说的问题,其实和 VS Code 的「工作区」机制、c_cpp_properties.json、compile_commands.json 或 LSP 后端(如 clangd)的索引行为有关。方法一:使用 compile_commands.json(推荐,适配 clangd)
2025-05-13 18:38:54
1055
原创 Termius ssh连接服务器 vim打开的文件无法复制问题
• 在 Termius (macOS) SSH 连接到 VMware Ubuntu,使用 vim 打开 .cpp 文件时,可以复制文本;set t_ti= t_te= " ❗禁用 alternate screen,退出 Vim 时保留选中内容。• 但如果 Vim 进入 全屏模式(alternate screen buffer),你复制的是“空”;输出是 mouse=a 表示启用了鼠标模式,鼠标选择会被 Vim 接管,导致你不能复制。
2025-05-12 22:11:02
623
原创 tumx+ttyd 交互式
好的!下面是一个 “可交互终端共享”版本 的脚本,允许你通过网页远程操作终端,适合你 “我操作别人也可以操作” 的需求场景。⸻✅ 功能列表:1. ✅ 网页交互式终端共享(非只读)2. 🔐 用户名密码保护3. 🌐 自动检测内网 IP 并生成访问链接4. 📱 二维码扫码访问⸻📜 脚本:start_shared_terminal.sh/bin/bashPORT=7681。
2025-05-10 09:24:34
788
原创 tmux+ ttyd 增强脚本
太棒了,下面是一个 增强版共享终端脚本,支持以下功能:⸻✅ 功能列表:1. 网页只读终端共享2. HTTP Basic 认证(用户名密码保护)3. 自动检测内网 IP 并显示访问链接4. 自动生成二维码(可扫码访问)⸻📜 脚本:start_readonly_terminal_secure.sh/bin/bashPORT=7681。
2025-05-10 09:22:44
745
原创 tmux+ttyd一键shell
将以上内容保存为文件,例如 start_readonly_terminal.sh。是否需要我扩展一下这个脚本,加上密码保护、显示二维码等功能?好的,下面是一个一键启动“只读终端共享”的。
2025-05-10 09:20:35
117
原创 tmux + ttyd 原理
第一种方法(tmux + ttyd --readonly)的原理确实挺巧妙,但本质并不“神恶魔”,它是基于 Unix 多路复用终端的结构性特性 实现的。ttyd 相当于是给 tmux attach 做了个只读网页壳子,tmux 则负责让多个前端共享一个终端后端,关键的“多终端共享同一个 shell”的魔法,全靠 tmux 实现。因为你用了 --readonly 选项,ttyd 只会把 tmux 里已有的内容渲染出来,WebSocket 不接受任何键盘输入事件,也就做不到写操作。🔒 为什么别人不能输入?
2025-05-10 09:19:13
195
原创 tmux + ttyd 实现“共享本地终端只读查看”
注意:gotty 目前只支持 x86,不支持 Apple Silicon(M1/M2)架构,如果你是 ARM 的 Mac,会报错(你之前也遇到了)。非常关键的问题:tmate 默认生成的链接是公网可访问的,不适合内网使用场景。✅ 方法一:使用 tmux + ttyd 实现“共享本地终端只读查看”公网上远程查看你操作 tmate(默认公网 SSH) ❌ 不适合内网。✔ 推荐工具:gotty 或 ttyd,+只读模式 + 本地操作。✅ 场景 2:需要公网分享终端(不推荐敏感场景)目标 推荐方案 是否支持内网。
2025-05-10 09:16:46
140
原创 tmate工具使用
tmate 是一个基于 tmux 的开源工具,它允许你将当前终端会话通过 SSH 或 Web 链接临时共享给别人。它特别适合远程协作、教学演示或紧急支援,非常轻量且支持 macOS、Linux、ARM 架构。⸻✅ 一、安装 tmate(macOS)在 macOS 上安装非常简单:如果你还没安装 Homebrew,请先运行:⸻✅ 二、快速开始使用1. 在终端输入:tmate⸻✅ 三、示例说明👥 让别人访问你的终端:• 通过 SSH:ssh user@ny.tmate.io。
2025-05-10 08:54:45
334
原创 terminal 共享工具ttyd
ttyd 是一个非常轻量的工具,它可以将你的终端(如 bash)通过 Web 页面共享出去,适合教学、演示、远程协作等场景,而且 支持 macOS、ARM64、Linux 等平台。需要我帮你写一个自动启动 ttyd 的 macOS launch agent(自启动服务)或创建一个桌面图标快捷启动吗?如需公网访问,你可以结合 frp、ngrok、cloudflare tunnel 实现端口穿透。系统会提示输入用户名密码(admin / 1234),登录后进入你的 bash 终端。
2025-05-10 08:53:46
282
原创 eclipse常用快捷键
快捷键 | 功能描述 ||----------------------|---------------------------------||| 快捷键 | 功能描述 ||----------------------|---------------------------------||| 跳转到定义(变量、方法、类等) ||
2025-05-07 08:43:21
1031
原创 Linux C++ xercesc xml 怎么判断路径下有没有对应的节点
catch (const XMLException& e) { // 捕获并处理异常,例如无效的XPath表达式等。if (resultObj->getSnapshotLength() > 0) { // 检查是否有匹配的节点。// 不存在节点,返回false。
2025-04-30 16:00:32
1109
原创 映射关系6
✅ 支持打印完整树结构(可以清晰看到每层路径和对应的ID)🌟 加强版 STDTMDirTree.cpp。✅ 插入时自动检查 ID 总长度不超过 5。🌟 加强版 STDTMDirTree.h。✅ 保持 C++98 标准,兼容老项目。需要的话可以告诉我:「要缓存版!要的话,我继续帮你优化!• 直接ID到节点缓存,超快跳转。• 节省内存版(共享路径前缀)✅ 整体更安全,容错更好。• 热路径加速(LRU)✅ 支持批量插入接口。
2025-04-27 00:36:41
917
原创 映射关系5
要不要我顺便再教你一招,怎么加速查询?比如维护一个id到路径的哈希表,瞬间查出路径,速度还能提一档。要的话告诉我:「继续加速版本!OK,我直接接着上面那版来,给你补充 getPathFromId 方法,并且保持整体风格统一,简洁、高效!• findPathRecursive :从树根出发,按ID去匹配,一层层往下走。• 每次检查节点的idPart,必须能对应上 id 数组的相应位置。• 如果能一路匹配到5位数字填满,就找到路径了!根据完整的5位ID,反查出对应的路径。
2025-04-27 00:32:55
464
原创 映射关系4
• 拼接ID时,直接用 char result[6] 一次性拼,不用 ostringstream,超快!• idPart 从 int ➔ std::string,一层一段。• 补齐5位数字,多的截掉,少的补0,严格控制位数。• 结构更清晰,更快拼接。
2025-04-27 00:31:26
274
原创 路径与编号的关系存储3
3. 进入 “robot” 节点,从它的 children 里找,看有没有 idPart == 234。1. 先从根节点找,看有没有 child 的 idPart == 1 (ID的前1位)。每个节点都有一个 idPart,表示这个层级在 ID 中占据的数字。• ID匹配时,按当前节点孩子的 idPart 长度截取比对。2. 找到了 “robot”,剩下 ID “2340”。我来给你画一张清晰的树结构示意图,对应你这套设计。5. 走到 “arm1”,剩下 “0”,已经结束。
2025-04-27 00:29:44
171
原创 路径与编号的映射关系2
• 每次在当前节点的 children 里面找,看有没有子节点的 idPart 能跟 ID 当前部分对得上。• 每走一层,ID指针往后推进对应 idPart.length() 长度。• 倒推出对应的路径,比如 12340 → /robot/arm1。我来给你超清晰分步讲,然后给出完整 C++98 代码!• 从一个完整的 ID(5位数字字符串),• 如果走完了 5 位,就还原出路径了。• 继续 符合 C++98标准。• 如果找不到,返回「找不到」。• 还是基于你现有的 树结构。• 遍历树,从根开始。
2025-04-27 00:28:55
227
原创 建立路径和编号的关系1
• 完全使用 C++98 标准(也就是说,不用 C++11/14/17 的任何特性,比如 auto、nullptr、range-for、emplace、lambda、std::to_string 等)。明白,下面我给你提供一版 严格符合 C++98标准 的完整实现!• 节点每层保存自己的 idPart(一小段编号字符串)。• 允许路径中断查找(比如只输入部分路径也可以找)。• 用 char buf[6] 拼接编号(更快)。• 最终拼接成5位数字,超了截断,不足补0。• 继续保持路径编号是5位数字。
2025-04-27 00:27:24
453
原创 MyVimrc
IMvimrcforOpenVMSsys" out.“evim”finishendif"else" endifendifendifau!" The!" packadd!matchit" endifset rulerset nusyntax on.cpp,.h,.cpp,.h,.cpp,
2025-04-15 16:07:18
879
原创 makefile学习mk4 Linux系统编程
你提供的 Makefile 定义了一个基本的 C 项目的构建过程。让我逐行解析这个 Makefile 的每个部分:⸻CC = gccAS = as⸻.s.o:这条规则是用来将汇编源文件(.s 文件)编译成目标文件(.o 文件)。然而,这个规则有些问题,as 命令不需要 -o $< -o $@,正确的用法应该是:.s.o:⸻.c.o:这条规则表示将 C 源文件(.c 文件)编译成目标文件(.o 文件)。是源文件,@ 是目标文件。这里 -c 表示只进行编译而不链接。⸻。
2025-03-23 18:38:35
639
TA创建的收藏夹 TA关注的收藏夹
TA关注的人