- 博客(23)
- 收藏
- 关注
原创 嵌入式-常见协议(SCP)
SCP是基于SSH的安全文件传输协议,用于在本地和远程主机间复制文件或目录。它通过SSH加密通道传输数据,但不具备独立协议层,而是直接执行远程SCP命令进行文件传输。SCP操作简单,通过ASCII控制消息和二进制流完成文件传输,但功能有限,不支持断点续传等高级特性。常用命令包括文件上传下载与递归目录复制,支持端口指定、压缩等选项。Windows和Linux系统均有SCP工具支持,适合基础安全文件传输需求。
2025-10-29 21:42:18
1156
原创 嵌入式-常见协议(FTPS)
文章摘要 TLS/SSL是保障网络数据传输安全的协议,通过加密、完整性校验和身份认证确保信息安全。FTPS是FTP结合TLS/SSL的加密版本,分为显式和隐式两种模式:显式FTPS先建立明文FTP连接再通过AUTHTLS命令升级加密(端口21),而隐式FTPS直接建立加密连接(端口990)。两种模式均需在控制通道完成TLS握手,数据通道可选择加密(PROTP)或明文(PROTC)。FTPS显著提升了FTP的安全性,但需客户端支持TLS扩展。
2025-10-29 21:40:12
915
原创 嵌入式-常见协议(SFTP)
SFTP是基于SSH的安全文件传输协议,通过SSH加密通道进行文件操作。它使用TCP 22端口,采用二进制报文结构实现文件上传下载等操作,支持并行流水线传输以提高效率。SFTP客户端可发送多个请求,无需等待响应。常用Linux命令包括ls、get/put等,支持批量操作。主流工具包括FileZilla、WinSCP等GUI客户端,以及OpenSSH、ProFTPD等服务端。开发库如libcurl、paramiko等支持嵌入式开发与自动化任务。
2025-10-29 21:04:10
1223
原创 嵌入式-常见协议(FTP)
摘要:FTP(文件传输协议)是一种基于TCP的应用层协议,用于客户端与服务器间文件传输。它采用双连接架构:控制连接(端口21)负责命令交互,数据连接传输文件内容。FTP支持主动(PORT)和被动(PASV)两种模式,其中被动模式更适应现代防火墙环境。协议提供丰富的文件操作命令(如RETR/STOR)和目录管理功能,支持ASCII/二进制传输模式。尽管存在明文传输等安全隐患,FTP仍广泛用于嵌入式系统、工业设备等场景,常见工具包括FileZilla、vsftpd等,开发库涵盖libcurl、Pythonftp
2025-10-28 22:11:13
1237
原创 嵌入式-常见协议(Telnet)
Telnet是一种基于TCP/IP的远程登录协议(RFC854),默认使用TCP 23端口在应用层工作。它通过三次握手建立连接后,会进行选项协商(如回显、终端类型等),使用IAC控制字节(255)管理交互流程。与SSH不同,Telnet以明文传输数据,缺乏加密和认证机制。虽然已不推荐用于安全远程管理,但仍可用于网络调试、协议测试等场景。常见工具包括系统自带的telnet命令、PuTTY等客户端,以及Python的telnetlib等开发库。其数据传输包含普通字符和控制帧(IAC命令),所有通信内容均可被抓包
2025-10-27 22:28:30
1517
原创 嵌入式-常见协议(SSH )
Transport Layer(传输层)提供机密性、完整性、压缩(可选),负责密钥协商、加密通道建立,以及服务端主机密钥认证。常见内容:密钥交换(KEX)、对称加密算法、消息认证码(MAC)、压缩。User Authentication Layer(用户认证层)在安全通道上对用户进行认证:密码、publickey、keyboard-interactive、hostbased 等。Connection Layer(连接/通道层)
2025-10-26 21:33:18
1401
原创 嵌入式C/C++进阶-进程/线程通信《信号量,一文详解》
信号量是操作系统提供的同步机制,用于协调多进程/线程对共享资源的访问,防止竞争条件。其本质是内核维护的原子计数器,通过P/V操作实现资源控制:P操作请求资源(计数器减1,若<0则阻塞),V操作释放资源(计数器加1,若≤0则唤醒等待线程)。信号量分为SystemV(跨进程IPC)和POSIX(支持线程同步)两类标准,前者通过semget/semop/semctl操作,后者提供sem_init/sem_wait/sem_post等接口。典型应用包括生产者-消费者模型、临界区保护等,需注意初始值设置和P/V
2025-10-25 22:12:58
901
原创 嵌入式C/C++进阶-进程/线程通信《套接字socket,一文详解》
Socket是一种通用的进程间通信机制,主要用于网络通信和本地进程间通信。它通过文件描述符抽象封装了底层通信细节,支持TCP/IP协议和Unix域套接字等多种协议族。Socket编程涉及创建、连接、收发三个阶段,提供统一的接口如socket()、bind()、listen()、accept()等。示例展示了TCP/UDP/Unix域套接字的实现方式,包括客户端和服务端的封装。在高并发场景下,可使用select/poll/epoll实现I/O多路复用。常见面试问题包括TCP/UDP区别、阻塞/非阻塞模式、I/
2025-10-25 11:30:54
1159
原创 嵌入式C/C++进阶-进程/线程通信《信号,一文搞定》
本文摘要: 信号是Linux/Unix系统中进程间异步通信的核心机制,本质是内核向进程发送的软中断通知。POSIX标准扩展了SystemV的基础功能,支持信号处理函数注册、屏蔽和定时器。信号分为不可靠信号(1-31)和实时信号(SIGRTMIN-MAX),其中SIGKILL/SIGSTOP不可捕获。典型应用场景包括进程控制、异常处理、定时任务等。开发建议使用sigaction替代老旧signal接口,处理函数需遵循异步安全原则。信号虽快速轻量,但因异步特性不适合频繁数据通信,多线程环境中更推荐条件变量等同步
2025-10-23 22:19:40
1031
原创 嵌入式C/C++进阶-进程/线程通信《共享内存,一文搞定》
共享内存是一种进程间通信(IPC)机制,允许多个进程直接访问同一块内存区域,从而实现高速数据交换。✅让不同进程“共享同一片内存”,从而跳过内核缓冲区,数据不需要多次拷贝。⚡速度最快的进程间通信方式(零拷贝)🚫无内核缓冲区(直接读写)🧩需要同步机制保证一致性📦 可配合信号量、互斥锁等实现安全通信。
2025-10-22 22:32:02
787
原创 嵌入式c/c++进阶-进程/线程通信《消息队列,一文详解》
本文系统介绍了消息队列的核心概念、实现方式及应用场景。消息队列作为一种进程间通信机制,具有异步通信、结构化消息和内核缓存等特点,主要分为SystemV(传统Unix IPC)和POSIX(现代标准)两种类型。文章详细讲解了C语言实现方案,包括SystemV的msgget/msgsnd/msgrcv接口和POSIX的mq_open/mq_send/mq_receive接口,并提供了嵌入式RTOS(如FreeRTOS)的实现示例。在C++实现部分,介绍了使用标准库队列、线程结合条件变量等方法。最后总结了20个常
2025-10-20 22:30:18
1308
原创 嵌入式C/C++进阶-进程/线程通信《管道详解,一文搞定》
管道是一种半双工的进程间通信机制,数据只能单向流动。它分为匿名管道(用于有亲缘关系的进程)和命名管道(允许无亲缘关系的进程通信)。管道通过内核缓冲区实现数据传输,具有FIFO特性,自带同步机制。主要区别在于:匿名管道通过pipe()创建,生命周期随进程结束;命名管道通过mkfifo创建,以特殊文件形式存在,可持久化。管道适用于简单顺序数据流传输,如Shell命令中的管道操作。使用时需注意阻塞行为、原子性写入和错误处理。在嵌入式系统中,管道常用于进程间通信,但需考虑资源限制和优先级问题。
2025-10-19 10:44:08
670
原创 C/C++语言进阶-进程/线程/多线程《从进程到线程的实战技巧》
本文摘要: 进程和线程是操作系统的核心概念。进程是程序运行的实例,拥有独立地址空间和资源;线程是进程内的执行单元,共享进程资源但拥有独立栈空间。线程同步机制包括互斥锁、条件变量和信号量,用于解决数据竞争问题。C++标准库提供了std::thread等线程管理工具,支持跨平台开发。文章详细介绍了线程创建、同步机制、常见面试问题,并比较了不同锁类型的特点。重点讲解了数据竞争、死锁避免等并发编程关键问题,以及原子操作、线程池等高级话题。
2025-10-18 20:59:39
965
原创 C/C++语言进阶-fork详解《原理、示例、父子进程看门狗、守护进程》
Linux fork()系统调用详解 fork()是Linux/Unix中创建新进程的核心系统调用,具有以下特点: 工作原理:复制当前进程创建子进程,父子进程从fork()处继续执行 返回值特性:父进程返回子进程PID,子进程返回0,出错返回-1 内存机制:采用写时复制(COW)技术优化性能 典型应用: 创建并发服务器 结合exec执行新程序 实现守护进程和看门狗机制 注意事项: 需处理僵尸进程 注意缓冲区问题 避免fork炸弹 父子进程执行顺序不确定 文中提供了多个实用代码示例,包括基础用法、进程监控和守
2025-10-18 16:22:15
939
原创 Cursor 高效开发指南:从零配置到精通,打造你的AI编程助手
本文提供Cursor AI助手的详细设置建议: 基础设置:新手推荐智能模式、自动滚动、待办清单等直观功能 自动补全:建议开启光标补全、导入建议,关闭部分接受 代码库索引:可将项目文件生成语义索引(云端存储embeddings,本地保留源码),注意隐私设置 文档管理:支持添加API文档/设计文档,通过@Add快速索引 规则设置:支持自然语言编写项目约束,如代码风格、文档格式等 实用技巧: 频繁更新项目建议手动Sync索引 敏感代码可启用隐私模式 通过.cursorignore排除node
2025-10-18 14:21:30
1311
原创 C/C++语言进阶-哈希表 <哈希表完全解析:从算法原理到C语言实战,一次彻底搞懂Hash!>
哈希表完全解析:从算法原理到C语言实战,一次彻底搞懂Hash!内容较多,但非常全面,内容涵盖了哈希表从算法原理 → 代码实现 → 实际应用 → 面试考点的全流程,非常适合做学习资料或面试复盘。本文将带你从零开始,深入理解哈希算法的原理与实现,掌握链地址法、开放寻址法、负载控制与扩容机制,并通过完整C语言示例代码构建自己的哈希库。无论你是准备面试、写底层代码,还是做嵌入式内存优化,这都是一篇你读完就能上手实战的 Hash 全指南。
2025-10-15 22:09:44
457
原创 Ubuntu安装 VS Code 并配置 C++ 开发环境完整指南
[摘要] 本文介绍了在Ubuntu上安装Visual Studio Code(VSCode)的三种主流方法:通过官方APT仓库安装(推荐)、Snap包安装和手动下载.deb包安装。官方APT仓库安装最稳定且支持自动更新;Snap安装简单自动更新;.deb包适合离线安装。详细步骤包括添加密钥、更新源、安装命令等。此外,还提供了C/C++开发环境配置指南,包括安装build-essential、gdb工具包和VSCode的C/C++扩展插件,以支持代码编译、调试和智能提示功能。
2025-10-14 21:30:23
1157
原创 VMware / VirtualBox 安装 Ubuntu 后无法自适应分辨率、复制粘贴?一文教你全部搞定!
在虚拟机中安装Ubuntu后常遇到分辨率、复制粘贴和文件共享问题。VMware用户需安装VMware Tools或开源替代包open-vm-tools;VirtualBox用户需安装增强功能(Guest Additions)并启用双向剪贴板和拖放功能。两种方案安装后都需要重启虚拟机,能解决窗口自适应、主机与虚拟机间的文件传输等问题。具体操作包括挂载安装光盘、执行安装命令及处理可能的依赖问题。
2025-10-13 21:43:57
255
原创 嵌入式学习1-常见存储介质及软硬件策略
snprintf(buffer[count], sizeof(buffer[count]), "采集数据 %d\n", i);snprintf(line, sizeof(line), "采集数据 %d\n", i);fprintf(fp, "采集数据 %d\n", i);fprintf(fp, "采集数据 %d\n", i);fprintf(fp, "采集数据 %d\n", i);
2025-10-13 21:09:28
603
原创 《新手必看:Qt 6 + MSVC 在 Windows 平台的安装与配置教程(含国内镜像加速)》
本文介绍了安装Visual Studio和Qt的详细步骤。首先需从官网下载Visual Studio 2022,安装时勾选"C++桌面开发"选项以获取MSVC编译器。然后下载Qt社区版在线安装包,推荐使用国内镜像源(如中科大、清华等)加速下载。安装过程中需注意使用社区版账号登录,选择与VS匹配的编译器版本(如6.7.3)。最后验证安装是否成功,确保项目能同时使用MinGW和MSVC编译器。整个安装过程需注意版本匹配和组件选择。
2025-09-28 19:31:48
469
原创 Windows 平台下 Qt WebEngine:MinGW 与 MSVC 的差异解析(解决QT Unknown module(s) in QT: webenginewidgets问题)
Qt项目报错"Unknown module: webenginewidgets"主要是因为MinGW版Qt不包含WebEngine模块。解决方案:1)换用MSVC版Qt(官方推荐);2)改用QtWebView(功能较弱);3)自行编译WebEngine(极不推荐)。根本原因是Chromium仅支持MSVC编译,故Qt官方未为MinGW预编译该模块。
2025-09-22 22:26:03
445
原创 kafka免安装测试环境搭建
摘要:本文介绍了Kafka测试环境的搭建流程。首先下载安装VMware并导入预装Docker和Kafka的Ubuntu虚拟机(密码123456)。然后修改docker-compose.yml中的IP地址,启动Kafka服务。文章提供了容器内外的测试方法:容器内通过kafka-topics.sh等命令创建主题、生产消费消息;外部Windows主机需安装JDK和Kafka客户端,通过kafka-topics.bat等命令进行测试。还提及了SASL_SSL加密配置的可选方案。整个流程包含详细的IP修改提示和测试验
2025-09-22 22:20:19
937
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅