自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 c++ Lambda 表达式

C++ 中的(Lambda Expression)是一种匿名函数,可以在代码中直接定义和使用。Lambda 表达式是 C++11 引入的特性,极大地简化了函数对象的定义和使用,尤其在需要传递简单函数时非常方便。

2025-01-08 08:54:06 889

原创 C++宏和内联的区别

在 C++ 中,(Macro)和(Inline Function)都可以用于代码优化和减少函数调用的开销,但它们的实现方式、使用场景和特性有显著区别。

2025-01-08 08:53:58 314

原创 c++ 中的引用

在 C++ 中,是一种别名机制,允许你为一个已存在的变量创建一个别名。和。它们的主要区别在于它们绑定的对象类型以及用途。

2025-01-02 09:32:48 398

原创 C++ 中强制类型转换

用于非多态类型的转换。:用于多态类型的转换,支持安全的向下转换。const_cast:用于添加或移除const或volatile修饰符。:用于不相关类型之间的转换,通常用于底层编程。在 C++ 中,推荐使用 C++ 风格的类型转换操作符,因为它们提供了更好的类型安全性和可读性。

2025-01-02 09:32:41 342

原创 QT--容器

Qt 提供了丰富的容器类,适用于不同的场景。

2024-12-31 10:43:22 697

原创 QT--多线程

在 Qt 中,多线程开发是一个常见的需求,尤其是在处理耗时操作(如文件 I/O、网络请求、复杂计算等)时,为了避免阻塞主线程(通常是 GUI 线程),可以使用多线程技术。Qt 提供了多种方式来实现多线程开发,包括 、 和 。 是 Qt 中最常用的多线程类,它提供了创建和管理线程的基本功能。1.1 创建一个自定义线程类可以通过继承 并重写 方法来创建一个自定义线程。1.2 启动线程在主线程中创建并启动自定义线程。1.3 线程的停止可以通过调用 或 来停止线程。2. 使用 实现多线程

2024-12-31 10:43:15 1194

原创 QT--模型/视图

如果内置模型无法满足需求,可以继承。

2024-12-26 10:11:50 1060

原创 QT--静态插件、动态插件

在 Qt 中,插件可以分为静态插件和动态插件两种类型。它们的区别主要在于插件的加载方式和使用场景。以下是对这两种插件的详细介绍。动态插件是 Qt 中最常用的插件类型。动态插件以动态库( 或 )的形式存在,可以在运行时动态加载和卸载。动态插件的优点是灵活性高,适合需要动态扩展功能的场景。1.1 动态插件的特点1.2 动态插件的开发流程1.3 动态插件的示例以下是一个简单的动态插件示例:插件接口定义:插件实现:主应用程序加载插件:2. 静态插件静态插件是将插件的功能直接编译到主应用程序中,

2024-12-26 10:11:43 674

原创 QT--信号与槽

信号与槽是 Qt 的核心机制,用于实现对象之间的通信。通过信号与槽,开发者可以轻松实现事件驱动编程,并降低对象之间的耦合度。信号与槽机制支持多对多连接、参数匹配、线程安全等特性,是 Qt 开发中不可或缺的一部分。如果你是 Qt 开发者,建议深入学习信号与槽机制,因为它能够显著提高代码的灵活性和可维护性。

2024-12-25 09:32:34 395

原创 QT--基础

Qt 是一个功能强大且易于使用的 C++ 框架,适用于开发跨平台的桌面应用程序、移动应用程序和嵌入式系统。通过 Qt,开发者可以快速构建复杂的用户界面,并利用信号与槽机制实现高效的事件处理。如果你是 Qt 的初学者,建议从简单的 GUI 应用程序开始,逐步学习 Qt 的核心概念和模块。

2024-12-25 09:32:14 659

原创 c++多态

编译时多态函数重载。模板。运行时多态虚函数和继承。纯虚函数和抽象类。多态的核心是虚函数和虚函数表,通过基类指针或引用调用派生类的实现。合理使用多态可以提高代码的灵活性和可扩展性。

2024-12-23 10:11:56 582

原创 C++线程安全函数

标准库函数:如std::coutstd::mutex等。互斥锁:通过std::mutex保护共享资源。原子操作:使用避免数据竞争。条件变量:通过实现线程同步。线程安全容器:手动加锁保护标准库容器。单例模式:使用双重检查锁定或实现线程安全的单例。根据具体需求选择合适的方式,可以实现高效、安全的并发编程。

2024-12-23 10:11:49 1082

原创 c++多线程

thread>:创建和管理线程。<future>:异步编程和获取结果。<mutex>:线程同步,保护共享资源。:线程间通信和同步。<atomic>:无锁编程,避免数据竞争。<barrier>和<latch>:线程同步(C++20)。根据具体需求选择合适的方式,可以实现高效、安全的并发编程。

2024-12-20 20:20:53 633

原创 STL--函数对象

一元函数对象:接受一个参数并返回一个结果,适用于对单个元素进行操作。二元函数对象:接受两个参数并返回一个结果,适用于对两个元素进行操作。谓词:返回布尔值的一元函数对象,适用于条件判断。二元谓词:返回布尔值的二元函数对象,适用于比较两个元素。算术函数对象:提供基本的算术操作,适用于算术运算。比较函数对象:提供基本的比较操作,适用于比较运算。逻辑函数对象:提供基本的逻辑操作,适用于逻辑运算。绑定器:将二元函数对象的一个参数绑定到一个固定值,生成一个一元函数对象,适用于简化函数对象的使用。函数适配器。

2024-12-20 20:20:43 702

原创 STL--迭代器

输入迭代器:只读,单向移动,适用于单次遍历。输出迭代器:只写,单向移动,适用于单次遍历。前向迭代器:可读可写,单向移动,适用于多次遍历。双向迭代器:可读可写,双向移动,适用于需要双向移动的场景。随机访问迭代器:可读可写,支持随机访问,适用于高效随机访问的场景。连续迭代器:可读可写,支持随机访问,元素在内存中连续存储,适用于高效随机访问且元素连续存储的场景。

2024-12-12 09:40:52 942

原创 STL--算法

排序算法std::sort和适用于需要排序的场景,性能分别为 O(n log n)。查找算法std::find适用于线性查找,和适用于对数时间查找有序容器。合并算法std::merge适用于合并两个有序容器,性能为 O(n + m)。复制和变换算法std::copy和适用于复制和变换操作,性能为 O(n)。累加和遍历算法和适用于累加和遍历操作,性能为 O(n)。反转和去重算法和适用于反转和去重操作,性能为 O(n)。

2024-12-12 09:40:45 616

原创 STL--容器

适用于需要高效随机访问和尾部操作的场景。std::list:适用于需要频繁中间插入和删除的场景。std::deque:适用于需要高效头部和尾部操作的场景。std::set和 std::map:适用于需要有序集合和关联容器的场景。和 std::unordered_map:适用于需要高效查找、插入和删除的场景。std::stack和 std::queue:适用于需要实现栈和队列的场景。:适用于需要实现优先级队列的场景。

2024-12-11 09:35:59 674

原创 虚基类、纯虚类与抽象类

在多重继承中,通过。

2024-12-11 09:35:41 899

原创 纯虚函数与虚函数

在基类中使用。

2024-12-10 12:08:58 245

原创 设计模式--工厂模式

工厂模式在C++中的应用场景非常广泛,主要用于对象的创建和管理。通过使用工厂模式,可以提高代码的灵活性、可维护性和扩展性,同时将对象的创建与使用分离,使得代码更加清晰和易于管理。

2024-12-10 12:08:48 423

原创 适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换为客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以协同工作。

2024-12-04 11:45:08 389

原创 观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。观察者模式通常用于实现事件处理系统、消息通知系统等。

2024-12-04 11:44:58 306

原创 protobuf中使用UTF-16

在 Protobuf 中,字符串类型默认使用 UTF-8 编码。如果你需要处理 UTF-16 编码的字符串,可以通过在发送和接收数据时进行编码转换来实现。这种方式允许你在 Protobuf 中使用 UTF-8 编码的字符串,同时处理 UTF-16 编码的字符串。

2024-12-03 11:09:46 410

原创 C++中使用RAII技术来管理资源

RAII技术通过将资源的获取和释放与对象的生命周期绑定在一起,确保资源在对象的生命周期内被正确管理。这种技术可以显著减少资源泄漏的风险,并使代码更加安全和易于维护。在C++中,RAII通常与智能指针(如和)结合使用,以进一步简化资源管理。

2024-12-03 11:09:38 217

原创 C++中使用智能指针来避免内存泄漏

适用于独占所有权的场景,确保只有一个指针指向对象。:适用于共享所有权的场景,允许多个指针指向同一个对象。:适用于解决循环引用问题,不增加引用计数。通过使用这些智能指针,可以显著减少内存泄漏的风险,并使代码更加安全和易于维护。

2024-11-27 09:44:35 180

原创 c/c++中的内存管理

内存泄漏是指程序在运行过程中分配了内存,但在不再需要时未能释放,导致内存资源浪费。

2024-11-27 09:44:23 826

原创 iceoryx qnx编译

【代码】iceoryx qnx编译。

2024-11-23 22:16:16 337

原创 C++中使用Protobuf

创建一个名为data.proto通过这个示例,你学会了如何使用Protobuf在C++中进行序列化和反序列化。Protobuf提供了高效的二进制序列化格式,适用于网络传输和存储;提供了内存中的序列化和反序列化。这种方式适用于网络传输、内存缓存等场景,避免了文件操作的开销。

2024-11-23 22:15:42 728

原创 vscode远程连接linux服务器

要在远程服务器上使用 Visual Studio Code (VS Code) 的图形界面,可以通过以下几种方法实现。最常见的方法是使用 VS Code 的 Remote Development 插件,这样你可以在本地机器上使用 VS Code 连接并编辑远程服务器上的文件。

2024-10-25 20:54:35 830

原创 内存错误检测工具--asan

是一个强大的工具,可以帮助检测和调试内存错误。使用编译和链接标志来启用 AddressSanitizer。运行程序时,AddressSanitizer 将自动检测并报告内存错误。通过使用 AddressSanitizer,您可以更容易地发现和修复内存错误,从而提高代码的可靠性和稳定性。

2024-10-25 20:54:24 515

原创 iceoryx丢包问题例子及解决方案

iceoryx 是一种高性能的、零拷贝的中间件,主要用于实时系统间的通信。尽管 iceoryx 旨在提供可靠的通信,但在某些情况下仍可能会出现丢包问题。

2024-10-16 09:39:23 608

原创 更换阿里源

使用gedit文本编辑器,将下边的阿里源复制进去,然后点击保存关闭。把原有的含deb的前面全部加“#”

2024-10-16 09:39:12 765

原创 iceoryx UntypedClient VS Client

Iceoryx 是一个高效的跨进程通信框架,主要用于实时系统和嵌入式系统中。Iceoryx 提供了两种主要的客户端类型:UntypedClient 和 Client。它们之间的主要区别在于类型安全性和使用场景。

2024-10-08 09:57:55 338

原创 iceoryx UntypedPublisher vs Publisher

Iceoryx 提供了两种主要的发布者类型:UntypedPublisher 和 Publisher。它们之间的主要区别在于类型安全性和使用场景。

2024-10-08 09:57:34 378

原创 c++ 动态库&静态库 使用cmakelist注意事项

c++ 动态库&静态库

2024-09-16 09:41:19 588

原创 单例模式-C++

单例模式,懒汉式、饿汉式和线程安全的懒汉式。

2024-09-11 07:21:47 327

原创 iceoryx QOS 策略

iceoryx QOS;冰羚QOS;

2024-09-06 23:53:14 944

原创 docker镜像制作

VirtualBox生成docker镜像 制作docker镜像

2024-09-05 07:03:45 410

原创 c++上报URL

【代码】c++上报URL。

2024-09-03 23:04:50 276

原创 vscode 调试手册

launch.json vscode调试

2024-09-03 23:04:40 472

空空如也

空空如也

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

TA关注的人

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