- 博客(1605)
- 资源 (8)
- 收藏
- 关注
原创 C++中巧用#define访问类的私有成员
但是,这是一个非正规的手段,它将破坏类的所有封装性。而C++中的#define的存在也是为了跟C兼容。所以只有在非常特殊的情况下,才会用这种非正规方法访问类的私有或保护成员。我们知道,类的私有成员在类的外部是不能被访问的。但是,我们并不是没有办法来访问类的私有成员。
2025-04-03 16:35:16
63
原创 c++ [[fallthrough]] 属性
1:[[fallthrough]] 属性:这个属性用于在switch语句中。通常,当switch语句的一个case执行完毕后,会自动跳转到switch语句的末尾,除非存在break语句。如果你想要故意从一个case“落入”(fall through)到下一个case,可以使用[[fallthrough]]属性来告诉编译器这是故意的行为,以避免编译器发出警告。
2025-04-02 19:16:28
76
原创 static_cast 比强转 好在哪儿
:在C++标准库的容器中,如std::vector、std::list等,static_cast可以用于执行一些安全的类型转换操作,例如将一个std::string转换为const char*,或者将一个整数类型的迭代器转换为另一个整数类型的迭代器1。:static_cast可以用于指针和引用的类型转换,而C语言中的类型转换只能用于数值类型之间的转换。:在类层次结构中,static_cast可以用于将一个基类指针或引用转换为派生类指针或引用。
2025-03-26 13:48:15
194
原创 ultraiso制作u盘启动
UltraISO是一款功能强大的工具,可以帮助用户将ISO镜像文件写入U盘,从而制作成可启动的系统安装盘。通过以上步骤,你可以轻松使用UltraISO制作一个可启动的U盘系统安装盘,适用于安装或修复操作系统。
2025-03-23 22:51:12
483
原创 好的服务设计怎么做?15个原则.服务的归一化设计原则是什么?
服务的归一化设计原则旨在通过标准化和规范化的设计方法,提高系统的可维护性、扩展性和可靠性。服务的归一化设计原则是指在设计和实现分布式系统中的服务时,遵循一系列标准化和最佳实践,以确保系统的可维护性、扩展性和可靠性。定义:服务应具备良好的监控和日志记录能力,以便及时发现问题和进行故障排查。定义:所有服务应提供一致的接口规范,包括请求和响应格式、错误处理机制等。定义:服务不应依赖于客户端的状态信息,每次请求应包含所有必要的信息。定义:使用负载均衡技术分发请求,确保服务的高可用性和性能。
2025-03-18 20:09:06
263
原创 qnx使用valgrind, 内存
Invalid free() / delete / delete[] / realloc() //申请释放不匹配。Use of uninitialised value of size //使用未初始化的指针或者变量。Source and destination overlap //内存踩踏。Invalid write of size 1 //内存越界或者数组越界。内存常见的错误代表如下。改变tmp目录位置.
2025-03-18 17:18:56
174
原创 qnx error “Bad file descriptor“ with errno 9
fork、system这种调用” 和 “本进程里其他会造成文件描述符变化的操作,类似open/close” 同时执行的时候 会产生这个错误。fork/system...和 open/close 给这两种大的类型加锁,面同时执行的地方 加锁。
2025-03-18 17:10:56
113
原创 解决qnx调试core文件堆栈是问号
到一个目录比如:/home/xxx, 或者根目录/, 根据报错信息创建对应的目录.home/xxx, 再执行 bt,
2025-03-18 10:55:40
87
原创 C++中=delete的巧妙用法
这个特性在很多场合都非常有用,比如当我们想要阻止一个类被复制或者赋值时。来显式地禁止编译器自动生成某些函数。类的复制构造函数和赋值运算符。这样,如果我们试图复制一个。在C++11中,我们可以在函数原型后面添加。是一个新的特性,它允许我们显式地禁止。1.1.2 在函数原型中使用。在这个例子中,我们使用。对象,编译器就会报错。
2025-03-11 10:43:20
163
原创 C++学习,# 和 ## 运算符
运算符用于将其后的宏参数转换为一个字符串常量。如果宏参数是一个宏标识符,则它会被转换成用双引号括起来的该标识符的字符串表示。## 运算符用于在宏扩展时连接两个标记(token)。运算符,它们主要在宏定义中使用,用于字符串化和标记粘贴(token pasting)操作。# 运算符生成的字符串不包括任何周围的引号,但它确实会生成一个字符串字面量。使用 ## 运算符时,如果任一操作数在宏扩展后为空,则行为是未定义的。这两个运算符是预处理指令的一部分,它们在编译之前由预处理器处理。## 运算符:标记粘贴。
2025-03-11 10:12:02
286
原创 c++ 返回引用
在C++中,返回引用是一种常见的做法,特别是在需要返回大型对象时,以避免不必要的复制,从而提高程序的效率。返回引用通常有两种情况:返回局部变量的引用和返回成员变量的引用。下面分别讨论这两种情况以及如何安全地实现它们。
2025-03-10 21:07:54
775
原创 C++关键字deprecated
利用 deprecated 声明,可以将函数重载的特殊形式指定为已弃用,而 pragma 形式适用于函数名称的所有重载形式。利用 deprecated 声明,可以指定在编译时显示的消息。该消息的文本可以来自宏。只能使用 deprecated pragma 将宏标记为已弃用。指示声明有此属性的名字或实体被弃用,即允许但因故不鼓励使用。
2025-03-07 16:57:16
101
原创 C++之thread_local变量
线程局部存储(Thread Local Storage,TLS)是一种存储期(storage duration),对象的存储是在线程开始时分配,线程结束时回收,每个线程有该对象自己的实例;如果类的成员函数内定义了 thread_local 变量,则对于同一个线程内的该类的多个对象都会共享一个变量实例,并且只会在第一次执行这个成员函数时初始化这个变量实例。thread_local 是 C++11 为线程安全引进的变量声明符。thread_local 一般用于需要保证线程安全的函数中。
2025-03-06 19:29:35
161
原创 c++雅兰亭库 (yalantinglibs) 介绍及使用(序列化、json和结构体转换、协程
它是阿里开源的一个现代C++基础工具库的集合, 现在包括 struct_pack, struct_json, struct_xml, struct_yaml, struct_pb, easylog, coro_rpc, coro_io, coro_http 和 async_simple等功能, 也一直在持续优化并添加更多的新功能。yaLanTingLibs 的目标::为C++开发者提供高性能,极度易用的现代C++基础工具库, 帮助用户构建高性能的现代C++应用。雅兰亭库(yalantinglibs)介绍。
2025-03-06 14:23:49
181
原创 SFINAE 规则, c++编译时策略, 模板
12。SFINAE主要应用于模板元编程和泛型编程中,允许根据类型是否具有某种性质来选择不同的模板实例1。
2025-03-06 14:16:30
289
原创 悬挂引用,智能指针 & 裸指针 & 悬挂指针
解释:函数 createDanglingReference 定义了一个局部整型变量 localValue 并初始化为100。然后,它返回这个局部变量的引用。在 C++ 中,局部变量在函数结束时会被销毁,这意味着 localValue 的内存被释放,而返回的引用指向了一个不再有效的内存位置。在 main 函数中,通过这个已经无效的引用尝试访问或使用该变量的值将导致未定义行为,因为引用所指向的内存区域可能已经被操作系统回收或用于其他目的。
2025-02-20 21:33:23
873
原创 c++ 浮点数比较判断
在C++中,由于浮点数的精度问题,直接使用 `==`、`<`、`>` 等运算符来比较浮点数可能会导致不准确的结果。- 选择合适的 `epsilon` 值,通常使用 `1e-6` 或 `std::numeric_limits<double>::epsilon()`。C++ 标准库提供了 `std::numeric_limits` 来获取浮点数的机器 epsilon,这是一个更精确的阈值。- 使用 `(a - b) > epsilon` 或 `(b - a) > epsilon` 来判断大小关系。
2025-02-07 21:12:30
419
原创 repo 切换 分支
Repo/Git 常用命令使用_repo查看提交记录-优快云博客repo forall -c 'git checkout release-v2.14'
2025-02-06 19:03:14
172
原创 ubuntu 把安装好的 wine软件 打包 到另外一台机器
ubuntu迁移已安装的软件到新的机器上_如何把 一台主机的软件 拷贝到另外台机器 ubuntu-优快云博客
2025-01-24 11:01:20
490
原创 std::shared_mutex与std::mutex的不同适用场合
通过使用共享锁和独占锁,std::shared_mutex允许多个线程同时读取共享数据,同时确保写操作的独占性,从而提高了并发性能。并发读:在需要多个线程同时读取共享数据的场景中,std::shared_mutex允许多个线程同时持有共享锁,避免了不必要的锁争用。std::shared_mutex支持两种锁定模式:共享锁(sharedlock)和独占锁(exclusivelock)。std::shared_mutex与std::mutex的不同点。
2025-01-17 20:45:48
432
原创 shell 脚本 找到 指定内容 并注释掉
是stream editor的缩写,用于处理文本数据。: 是搜索模式,用于匹配包含"TO_COMMENT"的行。确保在实际应用中检查和备份原始文件,以防止意外数据丢失。: 表示将每个匹配行的开头替换为。: 表示直接修改文件内容。
2025-01-13 20:23:35
160
原创 using namespace和 using
如果你需要在命名空间外部访问xxxx::soa::xxxx中的特定名称,你应该在该命名空间内部定义它。如果你需要在多个文件中使用xxxx::soa::xxxx中的多个名称,你可以在每个文件的顶部分别使用using-declaration。如果你需要引入整个命名空间,你应该在命名空间外部使用using namespace,而不是using-declaration。但如果你只需要使用该命名空间中的某个特定名称,你应该在命名空间内部定义它,或者在需要使用它的文件中使用。
2025-01-10 14:45:23
143
原创 system securiry: supervisor password required
报错解释: 这个错误表明系统安全模块(如SELinux或AppArmor)需要超级用户(通常是root)的密码来确认一个操作。这通常发生在尝试进行某些需要高级权限的系统更改时。解决方法: 如果你拥有root权限,你可以直接输入root密码来满足安全模块的要求。如果是AppArmor,可以调整AppArmor的配置文件。如果你需要长期改变策略,考虑修改安全模块的配置文件或者在系统启动时禁用该模块。请注意,禁用安全模块可能会降低系统的安全性,因此应该只在完全理解后果的情况下进行。
2025-01-10 14:37:55
408
原创 linux route修改指定 默认网关的优先级 metric
ip route show defaultip route del defaultip route del defaultip route add default via 192.168.1.1 metric 10
2025-01-09 11:13:25
208
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人