- 博客(155)
- 资源 (1)
- 收藏
- 关注
原创 noexcept 优势
(这一点很关键,接口设计时候,不可忽视的一个细节)明确告诉编译器无需处理异常路径,直接省略异常处理代码,减少二进制体积并提升执行效率。编译器可假设noexcept 函数无异常分支,生成更直白的指令序列,提升流水线效率。框架等),即使函数未实际抛出异常。是函数接口的一部分,强制设计者明确异常行为,减少隐藏的运行时风险。,容器会优先使用移动(高效);)在扩容或移动元素时,会根据操作的。函数更易被内联,减少函数调用开销。:减少异常处理代码,提升运行效率。:影响标准库和编译器的决策(如移动。/拷贝选择、内联)。
2025-05-27 07:29:03
252
原创 由QFlags引发的思考
直接 C++ 实现:适合需要类型安全和定制控制的场景。:适合简单、非类型敏感的位操作。Boost 辅助工具:减少样板代码,但需额外依赖。根据项目需求选择合适方案,若追求与QFlags一致的体验,推荐手动实现枚举类 + 运算符重载。
2025-05-27 07:21:12
194
原创 对比slect、poll、epoll
优先选择 epoll:适用于 Linux 高并发场景(如 Web 服务器)。:适用于跨平台或低并发简单场景。边缘触发(ET):需确保一次处理完数据(如循环 read/write 直到EAGAIN错误),避免事件丢失。引申问题:什么叫同步IO?IO使用的基本步骤有哪些?步骤:1.检测 2.从内核态拷贝数据到用户态。
2025-05-24 07:56:18
280
原创 阻塞 I/O、非阻塞 I/O、I/O 多路复用和异步 I/O
通过对比可以看出,选择 I/O 模型需权衡并发量、开发复杂度、系统资源等因素。例如,高并发场景下,I/O 多路复用或异步 I/O 更为合适,而简单任务可使用阻塞或非阻塞 I/O。
2025-05-24 07:52:00
426
原创 协议设计(一)
每个包严格限定为100字节,不足则填充,接收方按100字节分段解析。实际设计中,可组合使用(如HTTP/2采用包头+分帧提升效率)。:包头4字节(含2字节类型+2字节长度),包体长度由包头定义。:MQTT、自定义RPC协议等需要高效二进制编码的场景。:HTTP头部、Redis协议等文本型协议。:实时音视频流等固定帧大小的传输。作为包结束符,接收方扫描到。
2025-05-20 08:14:20
378
原创 IP地址、子网掩码、网关和DNS是网络通信中的核心概念
IP地址、子网掩码、网关和DNS是网络通信中的核心概念,它们协同工作以实现设备间的通信和互联网访问。
2025-05-18 12:54:33
319
原创 菱形继承原理
普通菱形继承:基类冗余存储,存在数据冗余和二义性。虚继承:通过虚基类指针共享唯一基类,牺牲间接访问性能换取空间和语义统一。编译器通过虚基类表(如GCC的vbptr)管理偏移量,确保派生类正确访问共享基类。最后,尽量不使用菱形继承:● 组合代替继承:将共享功能封装为工具类,通过对象组合调用。● 接口分离:将基类拆分为多个职责单一的接口,避免多重继承。● 依赖注入:通过参数传递依赖对象,而非直接继承。
2025-05-18 12:52:51
540
原创 Reactor (epoll实现基础)
Reactor 网络模型是一种高性能的事件驱动模型,广泛应用于网络编程中。它通过 I/O 多路复用技术,实现了高效的事件处理和系统吞吐量的优化。_,以事件的形式通知相关线程进行数据读写和处理。Reactor 模型_
2025-05-17 17:42:18
497
原创 类初始化方法
掌握类初始化的正确方法,能够有效避免资源泄漏、提升程序性能,并为复杂对象系统奠定可靠基础。实际开发中应结合具体需求,灵活选择最适合的初始化策略。
2025-05-13 07:00:47
320
原创 std::move 和 std::forward
特性std::move目的强制转为右值,触发移动语义保持参数原始值类别,完美转发转换条件无条件依赖模板参数T典型应用移动构造函数、避免拷贝泛型代码中的参数转发参数类型接受任意类型通常与万能引用T&&配合使用。
2025-05-12 23:03:37
409
原创 C(Notes.1)
Note that if you want to initialize all elements of an array to a non-zero value(e.g.,1), you cannotuse the syntax in a[10]={1}; The statement int a[10]= {1}; will only initialize a[0] to 1,while allother elements will be initialize to 0(according to t
2024-12-12 07:35:06
149
原创 Bridge Pattern
The intent is to separate the abstraction from the implementation so that both can evolve independently.https://www.runoob.com/design-pattern/bridge-pattern.html
2024-12-10 21:01:38
330
原创 UNIX domain sockets
A UNIX socket is an inter-process communication mechanism that allows bidirectional data exchange between processes running on the same machine.IP sockets (especially TCP/IP sockets) are a mechanism allowing communication between processes over the network
2024-12-10 20:11:03
478
原创 Design Patterns
Common design pattens are typically divided into three main categories:Creational, Structural, and Behavioral. Singleton Patten. Factory Method Patten. Abstract Factory Patten. Builder Patten. Prototype Patten. Adapter Patten. Bridge Patten. Composi
2024-12-09 21:30:14
395
原创 第二章:组件、变换、布局、提高启动速度
组件就是基本元素的组合。比如按钮,用Text ,Image,MouseAread 实现一个按钮。主要有Row ,Column , Grid。TODO 后续贴上链接代码。这里主要就是矩阵变换了。TODO 后续展开了讲。
2024-11-10 16:19:58
466
原创 第一章:快速入门
在现代的软件开发中有一个内在的冲突,用户界面的改变速度远远高于我们的后端服务。Qt提供了一个典型的运行环境叫做qmlscene,但是想要写一个自定义的允许环境也不是很困难,我们需要一个快速视图(quick view)并且将QML文档作为它的资源。Qt Quick 提供了一个类似HTML声明语言的环境应用程序作为你的用户界面前端(the front-end),在你的后端使用本地的c++代码。回到我们之前的例子,在一个例子中我们使用了一个c++的城市数据模型。下面是一个简单的Qt Quick UI的例子。
2024-11-10 15:04:15
614
原创 第一章:类型推导,左值,右值
auto的使用必须马上初始化,否则无法推导出类型auto在一行定义多个变量时,各个变量的推导不能产生二义性,否则编译失败auto不能用作函数参数在类中auto不能用作非静态成员变量auto不能定义数组,可以定义指针auto无法推导出模板参数decltype推导规则对于decltype(exp)有exp是表达式,decltype(exp)和exp类型相同exp是函数调用,decltype(exp)和函数返回值类型相同。
2024-11-10 12:32:02
864
原创 day2 生成lua代码
在实际应用中,你可能需要更复杂的交互和功能,以及涉及 Node.js 和 C++ 之间的数据传递和类型转换等处理。要在 Node.js 中调用 C++ 代码,可以使用 node-addon-api 这样的工具来创建一个 C++ 的扩展模块。首先,创建一个名为 addon.cpp 的 C++ 文件,其中包含要导出到 Node.js 的函数。然后,创建一个名为 binding.gyp 的文件,用于构建 Node.js 扩展模块。运行 index.js 文件,将会输出 5,表示成功调用了 C++ 函数。
2023-12-18 09:40:25
948
原创 QWidget 实现原理调查
前言QWidget实际上就是个壳,用来标记脏区域,处理一些事件。1、首先update, repaint 最终都调用QWidgetPrivate::syncBackingStore,2、QWidgetPrivate::syncBackingStore 相关流程,最终调用endPaint进入平台层 , 调入void QFbBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset)1
2022-04-06 11:23:15
821
原创 嵌入式Qt踩过的坑 (1- 30)
一、scence/view,QWidget, QQuick框架选择问题1、QQuick虽然支持GPU渲染,但是,在不支持GPU的屏上表现效率比QWidget差。2、scence/view框架,除了需要浮点计算支持,void QGraphicsProxyWidget::setWidget(QWidget *widget) 整合QWidget,更是把效率拉跨到了极限。3、QWidget,中规中矩,能解决绝大部分需求。强烈推荐二、setStyleSheet这个函数也是十分消耗性能的,不建议频繁调用。
2022-03-17 10:03:16
1356
QtPluginDemo.rar
2020-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人