摘要:
Linux删除多余内核 使用 apt dist-upgrade 升级系统后,有时会更新新的内核。我们可以把旧的内核删掉来释放磁盘空间。 查看当前的内核信息 # 查看当前正在使用的内核 uname -a # 查看系统当中的所有内核 apt list *linux* --installed # 或 ls 阅读全文
摘要:
C++20 span 概念 std::span<T, Extent> 类模板就是一块连续内存的视图(类似于 std::string_view ),简化原本C风格的基制指针+长度的使用方式。 模板形参: T :元素类型;必须是完整对象类型且非抽象类 Extent :连续序列中的元素数,默认为动态长度( 阅读全文
摘要:
RESTful API介绍 理解RESTful架构 - 阮一峰的网络日志 (ruanyifeng.com) 概念 REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。 总结一下什 阅读全文
摘要:
g++链接报错:undefined reference to typeinfo of xxx 问题背景 在项目中遇到了这样一个问题:C++文件编译都OK,但链接的时候报错:undefined reference to typeinfo for xxx。 std::typeinfo 是C++中的RTT 阅读全文
摘要:
QT中一些常用的宏 宏 说明 Q_ASSERTQ_ASSERT_X 常用于断言,Release模式下不起作用 Q_ASSUME = Q_ASSERT_X + Q_UNREACHABLE Q_COREAPP_STARTUP_FUNCTION 添加一个全局函数,在QCoreApplication构造时被 阅读全文
摘要:
C++ 返回值类型推导 前言 C++ 中获取函数签名可以很简单地用 decltype(函数名) 来获得,但是这样无法直接提取出返回值类型。 有时我们需要获取函数或可调用对象的返回值类型,以便进行后续的操作,在泛型编程中很常用,特别是当不同的参数集的结果类型不同时。 头文件 <type_traits> 阅读全文
摘要:
C++对象析构顺序问题——由QObject::desroyed展开的思考 C++析构函数执行的顺序是最先执行继承链最末端的子类的,最后执行顶层的基类的。 而 QObject::destroyed(QObject* obj = nullptr) 信号在 Qt 文档中说是“在 obj 被完全析构时之前立 阅读全文
摘要:
C++获取类型名称的技巧 在某些情况下,我们需要明确知道编译器推导出的类型,特别是复杂类型。这些类型信息对于调试、优化和确保代码正确性非常重要。 技巧1:在编译期确定类型 主要用于模板编程和泛型编程时。 在编译期间确定类型的一种方法是通过引发编译错误,查看编译器的错误信息。 示例:如何通过引发编译错 阅读全文
摘要:
C++11 mem_fn成员指针包装器 介绍 函数模板 std::mem_fn 生成成员指针的包装器对象,用于存储、复制及调用成员指针。指向对象的引用和指针(包括智能指针)都可以在调用 std::mem_fn 时使用。 注意: std::mem_fn 只能包装 public 的成员指针,不能包装全局 阅读全文