自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 资源 (1)
  • 收藏
  • 关注

原创 简易的MVVM实现原理

【代码】简易的MVVM实现原理。

2025-05-28 08:01:52 326

原创 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

原创 初识main函数

X64。

2025-05-24 00:14:15 828

原创 QML属性使用注意点

*具体参考 QML Object Attributes **

2025-05-21 08:25:09 250

原创 协议设计(二)

案例三: nginx (ngx_message_head_t)

2025-05-20 08:15:05 282

原创 协议设计(一)

每个包严格限定为100字节,不足则填充,接收方按100字节分段解析。实际设计中,可组合使用(如HTTP/2采用包头+分帧提升效率)。:包头4字节(含2字节类型+2字节长度),包体长度由包头定义。:MQTT、自定义RPC协议等需要高效二进制编码的场景。:HTTP头部、Redis协议等文本型协议。:实时音视频流等固定帧大小的传输。作为包结束符,接收方扫描到。

2025-05-20 08:14:20 378

原创 Reactor(select实现)

【代码】Reactor(select实现)

2025-05-18 12:56:43 119

原创 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:15:08 271

原创 类初始化方法

掌握类初始化的正确方法,能够有效避免资源泄漏、提升程序性能,并为复杂对象系统奠定可靠基础。实际开发中应结合具体需求,灵活选择最适合的初始化策略。

2025-05-13 07:00:47 320

原创 vector`的底层实现

在C++标准库中,vector。

2025-05-13 06:35:44 366

原创 std::move 和 std::forward

特性std::move目的强制转为右值,触发移动语义保持参数原始值类别,完美转发转换条件无条件依赖模板参数T典型应用移动构造函数、避免拷贝泛型代码中的参数转发参数类型接受任意类型通常与万能引用T&&配合使用。

2025-05-12 23:03:37 409

原创 Chain Responsibility Pattern

【代码】Chain Responsibility Pattern。

2024-12-19 23:08:02 339

原创 QML-C++(No.1)

【代码】QML-C++(No.1)

2024-12-12 22:27:27 265

原创 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

原创 Composite Pattern

【代码】Composite Pattern。

2024-12-10 21:37:07 492

原创 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

原创 Prototype Pattern

【代码】Prototype Pattern。

2024-12-10 20:08:15 468

原创 Memory Ordering

【代码】Memory Ordering。

2024-12-09 21:35:40 271

原创 Singleton Pattern

【代码】Singleton Patten。

2024-12-09 21:31:35 367

原创 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

原创 第四章:动态创建

【代码】第四章:动态创建。

2024-11-14 22:57:46 282

原创 第三章:Controls(Styles)

Qt Quick Controls 2 拥有更好的性能。qquick controls 1 基本弃用。

2024-11-10 21:26:27 190

原创 第二章:组件、变换、布局、提高启动速度

组件就是基本元素的组合。比如按钮,用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

原创 2024年6月-7月

1、mysys使用

2024-06-05 22:01:52 208

原创 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

原创 Cocos 2d入门(第一天)

cocos-enginejson开源库

2023-11-14 13:58:31 174

原创 Nvidia-smi简介

nvidia-smi简介

2022-12-28 10:55:15 821

原创 QML使用基础(1-30)

qml、qquick基础

2022-11-11 10:06:55 251

原创 qmake 读三种变量。

qmake配置

2022-06-28 11:34:04 235

原创 QWidget 实现原理调查

前言QWidget实际上就是个壳,用来标记脏区域,处理一些事件。1、首先update, repaint 最终都调用QWidgetPrivate::syncBackingStore,2、QWidgetPrivate::syncBackingStore 相关流程,最终调用endPaint进入平台层 , 调入void QFbBackingStore::flush(QWindow *window, const QRegion &region, 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

## No1.How to Create Qt Plugins ### 1、定义插件接口 ### 2、使用Q_DECLARE_INTERFACE()宏 tell Qt's meta-object system about the interface.Export the plugin using the Q_PLUGIN_METADATA() macro. ### 3、QPluginLoader加载插件 ### 4、qobject_cast()测试接口实现 ## No2.How to Debug Plugins ### 环境变量中设置QT_DEBUG_PLUGINS=1 ### 无法加载的

2020-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除