【C++】网络编程
前言
围绕Socket 的基础概念、I/O 模型,逐步实现阻塞 I/O 客户端 - 服务器、多进程 / 多线程服务端处理,以及基于 select、poll、epoll 的 I/O 多路复用服务端,侧重与如何实现。
什么是socket
在C++中,Socket编程是一种用于在网络上进行通信的技术,它允许不同主机上的应用程序通过TCP/IP协议族进行数据交换。Socket作为 ...
PCI9x5x驱动移植支持PCI9054在win7下使用2
接上文,本文章继续记录中泰联创的数据采集卡驱动翻新过程。
中断初始化部分代码移植
分析PLX9x5x源码可知,中断初始化调用流程如下:
PLxEvtDeviceAdd-PLxInitializeDeviceExtension-PLxInterruptCreate
其中具体初始化代码在PLxInterruptCreate函数中,这部分是纯框架流程无需修改,直接就可以使用:
NTSTATUS
PLxInterru ...
Parasoft助力医疗嵌入式软件测试:从安全性到合规性的一体化方案
在医疗器械软件开发中,嵌入式系统的测试不仅关乎产品质量,更直接关系到患者安全和法规合规。在资源受限的嵌入式环境中,传统测试方法面临严峻挑战,Parasoft 提供了一套面向医疗嵌入式的软件测试解决方案,帮助开发团队提升测试覆盖、风险可控并满足法规要求。
最新版本自动化测试解决方案Parasoft下载,请联系Para ...
Qt的技巧笔记(一):Qt的QComboBox与自定义的枚举类型的遍历绑定
Qt的技巧笔记(一):Qt的QComboBox与自定义的枚举类型的遍历绑定
枚举类型enum通常用于定义一组固定的常量值,在Qt开发中,QComboBox控件中使用枚举值来设置或获取当前中的选项。如果你想要遍历一个枚举类型,比如在QComboBox中填充所用枚举值,你需要先定义枚举,然后利用Qt的元对象系统(Meta-Object System)来获 ...
从框架到体验:Qt + Qtitan 构建制造业嵌入式UI整体解决方案
在制造业软件系统中,嵌入式 UI 往往被视为“最后完成的部分”。只要功能能跑、数据能显示,界面体验似乎并不是核心问题。但在实际使用中,越来越多企业开始意识到:嵌入式 UI 不只是展示层,而是设备操作、业务流程和效率的关键入口。
获取Qt + Qtitan 系列产品试用,请联系官方合作伙伴慧都科技
一、制 ...
汽车软件越来越复杂,测试这件事,真的不能再“靠人扛”了!
这两年,汽车行业有一个非常明显的变化:车还是那辆车,但软件已经完全不一样了。
从传统 ECU,到域控制器、中央计算平台,再到 ADAS、自动驾驶、车联网,汽车正快速变成一个“装在车壳里的大型软件系统”。随之而来的,是软件规模暴涨、代码复杂度飙升,以及越来越严格的安全和合规要求。
很多汽车软件团队都有类似的感受 ...
C++函数返回双值的几种方法
目录1.std::pair<double, double>2.QPair<double, double>3. 自定义结构体(struct)4.QPointF选择建议5.std::pair额外说明1. 显式调用std::pair构造函数(兼容所有C++版本)2. 使用std::make_pair(C++98+,简洁)3. C++17类模板实参推导(CTAD)4. 先创建对象再返回(兼容所有版本)总结在C++结合Qt的开发环境中,若要让 ...
QT中QString按照空格和Tab拆分
目录一、核心知识点二、按空格拆分(" ")1. 基础用法(跳过连续空格)2. 保留空项(默认行为)三、按 Tab 键拆分("\t")1. 基础用法(跳过连续 Tab)2. 保留空项(默认行为)四、进阶:同时按空格和 Tab 拆分总结五、解读1. 先明确两个关键规则(对应你的疑问)2. 实际示例(覆盖你关心的场景)3. 补充:如果只想匹配&ldq ...
C++ 单例模式两种实现方式
目录一、饿汉模式 (Eager Initialization)特点:类加载时就立即创建实例实现代码:优点:缺点:二、饱汉模式 (Lazy Initialization)特点:第一次使用时才创建实例基础版本(非线程安全):线程安全版本(双检锁):C++11 之后更简洁的线程安全版本:三、对比表格性能对比数据四、选择建议使用饿汉模式当:使用饱汉模式当: ...
数据结构入门:顺序表/链表/栈/队列/堆(原理+实现)
一、开篇引入
作为计算机专业的学生,顺序表、链表、栈、队列、堆是《数据结构》课程的核心基础,也是算法刷题、工程开发的"必备工具",但新手刚接触时,常容易混淆各结构的特性,也难以用C语言实现,本文就从概念原理出发,用C语言完成这些数据结构的实现,手把手帮助新手彻底搞懂这些核心结构。
二、数据结构的实现
1.顺序 ...
C++ 标准库中的reverse 函数使用示例
目录一.函数原型二.函数参数三.使用示例1.反转数组2.反转vector3.反转string4,反转部分元素四.复杂度分析五.注意事项六.相关函数1.reverse_copy2.自定义反转算法实现3.与反向迭代器的区别一.函数原型
template <class BidirectionalIterator>
void reverse(BidirectionalIterator first, BidirectionalIterator last);
二. ...
C++标准模板库STL(Standard Template Library)全解析
目录一.STL 概述二.STL 的六大组件1.容器(Containers)1.1序列式容器(顺序容器)1.2关联式容器(有序容器)1.3无序关联式容器(哈希容器,C++11引入)1.4 容器适配器2.算法(Algorithms)2.1. 非修改序列算法2.2. 修改序列算法2.3. 排序和相关算法2.4. 数值算法3.迭代器(Iterators)3.1. 迭代器类别3.2. 迭代器使用3.3. ...
C/C++中 __asm volatile 函数的实现
目录1. 基本概念__asmvolatile2. 基本语法3. 扩展语法(带操作数)操作数约束4. 常见用途内存屏障访问硬件系统调用5. 重要注意事项必须使用 volatile 的场景:可以不使用 volatile 的场景:6. 实际示例7. 跨平台考虑8. 替代方案总结__asm volatile 是 GCC(及兼容编译器如 Clang)中的一个特性,用于在 C/C++ 代码中内嵌汇 ...
c语言struct结构体强制类型转换的实现
目录一、 关于struct相关说明二、强制类型转换三、给结构体变量赋值一、 关于struct相关说明
1、无结构体标签
struct {
int in;
int out;
}GPIO_t;
声明了一个无名结构体,并创建了一个结构体变量GPIO_t(已分配空间),该方法只适合创建一个结构体变量
typedef struct {
int in;
int out;
}GPIO_t;
/*静态分 ...
C++ io_uring的使用小结
目录1. 为什么我们需要 io_uring?2. io_uring 的核心原理:环形缓冲区 (Ring Buffer)3. C++ 中使用 io_uring (liburing)前置准备完整代码示例代码编译4. io_uring 的高级特性A. Submission Queue Polling (SQPOLL)B. 注册文件和缓冲区 (Registered Files/Buffers)C. 链接请求 (IOSQE_IO_LINK)5. C++ 生态中的 io_uring6. i ...
Qt圆角窗口的两种实现方案详解
目录前言:圆角之美方案一:重写paintEvent之法原理剖析代码实现优劣分析应用案例方案二:Qss和QStyleOption原理剖析代码实现关键点说明性能对比表应用案例进阶技巧阴影效果性能优化结语总结前言:圆角之美
✨ 圆角窗口,乃现代UI设计之精髓,去棱角之锋芒,添界面之柔和。Qt框架虽未原生提供圆角窗口,然开发者可自辟蹊径 ...
vs2019+qt工程中如何生成dump文件及调试详解
目录一、调试前置条件二、抓取异常的系统函数区分三、可直接复用的代码:四、调试:总结一、调试前置条件
1、在编译之后,exe和pdb文件均需要发布给用户;
二、抓取异常的系统函数区分
AddVectoredExceptionHandler和SetUnhandledExceptionFilter
AddVectoredExceptionHandler 是“第一现场观察者”,SetUnhandl ...
浅谈C语言中的 #define 宏定义
目录一、无参宏(常量定义/简单文本替换)二、带参宏(类似函数的宏)三、特殊用法:宏拼接与字符串化四、宏定义的高级应用:条件编译五、总结#define 是 C 语言预处理指令,用于在预处理阶段完成文本替换,不占用运行时内存,是实现代码复用、常量定义、简化复杂逻辑的核心工具。它分为 无参宏 和 带参宏 两类,底层依赖预 ...
C++ 类和对象从基础语法到高级特性深度解析
目录一、类的基础认知:定义、访问控制与实例化1.1 类的定义格式1.2 访问限定符:封装的核心实现1.3 类域与成员函数分离1.4 类的实例化1.5 对象大小计算二、this 指针:对象的 “隐藏身份标识”2.1 核心问题2.2 本质与特性2.3 经典面试题解析三、默认成员函数:编译器的 “自动实现”3.1 构造函数:对 ...
一个编译好的Cacti-spine文件,版本1.2.20,用于Linux
官方 只给了源码,我不想每次都编译,应该是可以直接复制到其他的系统上使用
要求
系统架构 / 版本一致:目标系统和编译系统的操作系统版本(如都是 Ubuntu 20.04/ CentOS 7)、CPU 架构(如都是 x86_64)必须完全一致,否则会出现 “无法执行” 或 “缺少库” 的错误。
依赖库必须安装:目标系统不需要编译环境(如 gcc、 ...