分类目录归档:研发dev
C++常用数据结构性能分析
C++编译优化之—likely/unlikely
一、概述
在一些明确的场景下,程序员比CPU和编译器更了解哪个分支条件更有可能被满足。我们是否可将这一先验知识告知编译器和CPU, 提高分支预测的准确率,从而减少CPU流水线分支预测错误带来的性能损失呢?答案是可以!它便是likely和unlikely。在Linux内核代码中,这两个宏的应用比比皆是。下面是他们的定义:
如何使用ChatGPT
gRPC概述
OpenSSL: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small问题解决
问题:
部署了一台新的Ubuntu20机器,在wget指定产出仓库的output.tar.gz文件时,报以下错误:
分布式实时通信—DDS进阶
分布式实时通信—DDS概述
C++使用std::atomic实现并发无锁同步
C++11中引入了mutex和方便优雅的lock_guard,但是有时候我们想要一个性能更高的实现方式,本文主要讲解如何使用C++11中的原子操作类atomic来巧妙地实现无锁同步。
C++ lock_guard和unique_lock的区别
C++多线程编程需要对共享的数据进行写保护,以防止多线程在对共享数据成员进行并发写时造成资源争抢而导致出现崩溃或其他不符合预期的结果。通常的做法是在修改共享数据成员前先对互斥锁mutex进行lock加锁,在修改后再进行unlock操作,这个场景中经常会出现由于疏忽或异常导致lock之后未能unlock,最终导致死锁。
C++ std::static_pointer_cast详解
一、概述
static_pointer_cast从表面上看就是静态指针类型转换。细细看来,并不是那么简单,有一个隐形的限制条件。首先这个是c++11里的,更老的编译器不支持,其次指针是shared_ptr类型的,对于普通指针是无效的。还有一般只用在子类父类的继承关系中,当子类中要获取父类中的一些属性时,或工厂模式等需要通过父类参数接收不同子类实例的场景(当然了子类通过多态拥有自己的父类继承来的属性和行为,但是还想知道父类相应的属性和行为,这时,将父类的shared_ptr通过static_pointer_cast转化为子类的shared_ptr,这样就可以使得子类可以访问到父类的方法)。
解决Ubuntu”Authentication required. System policy prevents WiFi scans”问题
在一块新的pi4板子上装了ubuntu20.04,结果连wifi一直弹出”Authentication required. System policy prevents WiFi scans”的认证提示,没完没了的弹,点了之后也无法输入密码。
CentOS8安装Dlib
机器人操作系统ROS—树莓派Pi4B+激光雷达SLAM建图环境搭建(Ubuntu20.04.3 + ROS Noetic)
Ubuntu禁用自动挂起/休眠
开发板平时不连接显示器,放时间久了会自动挂起连不上,解决方法如下: