![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程相关
文章平均质量分 68
惊鸿一博
毕业于中国科学院大学/中科院自动化研究所;专注于SLAM,三维重建,图像处理,视觉定位等;曾就职于鸿海集团,大陆集团,现在某自动驾驶独角兽企业;热爱分享,热爱生活;欢迎一起交流,学习,进步。
展开
-
C语言_将多个标志位保存到一个char里
首先,为每个标志位定义一个位掩码(bit mask)。位掩码是一个整数,其只有一个二进制位为1(代表你的标志位),其他位都是0。原创 2024-07-10 22:30:00 · 347 阅读 · 0 评论 -
Debug_怎么使用glog打印出程序异常时的backtrace到文件中
打印出程序异常时的backtrace到文件中(而不仅仅是控制台中), 方便追踪.原创 2023-07-18 22:45:00 · 569 阅读 · 0 评论 -
git命令_git stash
如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因,希望回溯到之前的版本,确定下从哪个提交引入的问题,但是还不想把现在的修改提交,也不希望在Git上看到当前修改的版本(带有大量日志和调试信息)。命令时可以通过名字指定使用哪个stash,默认使用最近的stash(即stash@{0})。转载 2022-09-28 15:57:00 · 733 阅读 · 0 评论 -
Git创建本地分支并关联远程分支
介绍使用Git怎么创建本地分支并提交到远程,以及如何使新建本地分支与远程相关联。转载 2022-09-09 17:11:58 · 25081 阅读 · 0 评论 -
CMakeLists中的add_definitions()函数
在我们更改别人代码做实验时使用,既不对其源码进行破坏,又可以添加自己的功能。之前都是在程序中进行#define,有了这个后可以直接在编译的时候进行选择。具体的,在工程CMakeLists.txt 中,使用add_definitions()函数控制代码的开启和关闭:......转载 2022-06-24 11:45:30 · 1986 阅读 · 4 评论 -
catkin屏蔽掉不想编译的package
catkin屏蔽掉不想编译的package; Packages "your-pkg-name" not found in the workspace原创 2022-06-15 17:34:31 · 804 阅读 · 0 评论 -
CUDA编程入门极简教程
2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎,来更加高效地解决比较复杂的计算难题。近年来,GPU最成功的一个应用就是深度学习领域,基于GPU的并行计算已经成为训练深度学习模型的标配。目前,最新的CUDA版本为CUDA 9。...转载 2022-06-22 09:25:31 · 2235 阅读 · 0 评论 -
命令行解析工具gflags详解(main函数参数/参数文件解析)
目录一、Gflags简介二、下载和安装三、用CMake声明flags之间的依赖关系四、定义flag五、flag变量六、在其他文件中调用flag变量七、完整性检查——RegisterFlagValidator八、flag与参数九、命令行设置flag十、更改flag默认值一、Gflags简介Gflags是一种命令行解析工具,主要用于解析用命令行执行可执行文件时传入的参数。与getops()不同的是,在gflags中flag可以分散的定义在各个文件之中,而不用定转载 2022-05-30 18:22:23 · 2200 阅读 · 0 评论 -
Gerrit的commit-msg hook使用指南
Git hooks是Git提供的一种机制,这些hooks能够直接被git commit命令调用,无需开发人员手工设置。Gerrit提供的commit-msg hook,被调用时,可以自动根据模板编辑commit message,开发人员不必再手工输入commit message。1.commit-msg hook实现机制在Gerrit中,该hook实际上就是一个简短的Shell脚本实现。commit-msg hook可以接收一个文件名作为参数,该文件中包含写好的commit message,具转载 2022-05-18 22:04:09 · 2843 阅读 · 0 评论 -
Ubuntu系统下Python的虚拟环境搭建方法简介:venv、virtualenv、pipenv
一、Python虚拟环境的作用及创建方法简介1.1 创建虚拟环境的必要性Python虚拟环境的作用:针对不同项目搭建独立的Python运行环境,防止与其他Python运行环境发生冲突。Python虚拟环境的优点:有助于Python包管理和维护。另外,便于卸载不需要的Python虚拟环境,最直接的方法就是直接删除存放Python虚拟环境的文件即可,实际操作起来十分方便。1.2 venv、virtualenv、pipenv三种创建虚拟环境方法比较1、搭建Python虚拟环境的方法创建Python转载 2022-05-17 22:18:15 · 3680 阅读 · 0 评论 -
内存问题分析工具_valgrind之memcheck基本使用
1. 下载安装下载地址:Valgrind: Current Releases安装:例如版本 valgrind-3.18.1tar xvf valgrind-3.18.1.tar.bz2cd valgrind-3.14.0/./configuremakesudo make install2. 使用示例valgrind --log-file=valgrind.log --tool=memcheck --leak-check=full --show-leak-kinds=all .原创 2022-03-18 15:09:48 · 1507 阅读 · 0 评论 -
vscode 单击跳转 ctrl+鼠标左键不能跳转到函数或变量的定义
1. ctrl+shift+p 打开命令面板2. 输入Edit configurations,打开c_cpp_properties.json文件检查 "includePath" 字段。3. includePath 字段 添加"${workspaceFolder}/**",或者其他include头文件所在目录原创 2021-10-12 21:39:09 · 11125 阅读 · 0 评论 -
github常用命令汇总
上传文件到master或者main分支" git add . "(注意" . "不能省略,此操作是把meituan文件夹下面新的文件或修改过的文件添加进来,如果有的文件之前已经添加了,它会自动省略)git commit -m "提交信息"(提交的信息是你的项目说明)git push -u origin main(此操作目的是把本地仓库push到 GitHub 上面,此步骤需要你输入登录github上的帐号和密码)参考:https://blog.csdn.net/Jacks...原创 2021-06-30 20:31:46 · 395 阅读 · 0 评论 -
linux常用命令(ubuntu)
系统管理查看当前目录下,每个文件夹大小: du -h --max-depth=1 查看指定进程: ps -af | grep clion* ps选项:-e —– 显示所有进程-f —— 全格式-h —– 不显示标题-l —— 长格式-w —– 宽输出a —— 显示终端上的所有进程,包括其他用户的进程r ——- 只显示正在运行的进程u —— 以用户为主的格式来显示程序状况x —— 显示所有程序,不以终端机来区分 查找软件安装与删除.......原创 2020-09-23 10:22:55 · 377 阅读 · 0 评论 -
windows命令 笔记
1. 文件输出" > " 重定向操作符, 如: 定向到文件, 覆盖式写入; " >> " 追加式写入打印字符串到文件: echo "======" >> F:\log\1.txt将一个文件内容追加到另一个文件结尾: type F:\log\1.txt >> F:\log\2.txt获取指定目录树桩文件结构, 写入文件: tr...原创 2020-04-12 10:40:52 · 113 阅读 · 0 评论 -
HDF5快速上手全攻略
HDF5快速上手全攻略1. HDF5简介Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植性强,灵活可扩展的特点受到了广泛的关注和应用。很多大型机构的数据存储格式都采用了HDF5,比如NASA的地球观测系统,MATLAB的.m文件,流体细算软件CDF,都将HDF5作为标准数据格式。现在HDF5还支持了大数据技术和NoSQL技术,并广泛用转载 2020-12-07 10:44:22 · 6856 阅读 · 0 评论 -
PCL_PCLVisualizer在多线程中的使用问题(viewer spinOnce crash)
问题描述:使用多线程进行点云的实时重建, 在主线程中创建 PCLVisualizer 对象指针(即使智能指针boost::shared_ptr),传入子线程中进行显示(viewer->spinOnce(100),)结果crash//主线程中: typedef boost::shared_ptr<pcl::visualization::PCLVisualizer> PViewer; //定义 PCLVisualizer PViewer pViewer (new pcl:原创 2020-11-26 10:41:00 · 5084 阅读 · 2 评论 -
std::thread的常用参数传递总结
实参的生命周期给std::thread传递参数的时候要注意,参数是引用或者指针的情况下,要注意生命周期的问题#include <iostream>#include <thread>#include <chrono>#include <fstream>using namespace std::chrono_literals;void func_str(const std::string & str){ std::this_thr转载 2020-11-25 21:54:17 · 2787 阅读 · 0 评论 -
PCL使用类成员函数作为pclvisualizer的回调函数
参考链接#include <pcl/point_types.h>#include <pcl/point_cloud.h>#include <pcl/point_representation.h>#include <pcl/visualization/pcl_visualizer.h>using namespace pcl; class dummyClass{ public: dummyClass(); ~dummyC转载 2020-11-25 20:49:10 · 521 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public: char *_pstr; int _s转载 2020-11-23 10:03:56 · 220 阅读 · 0 评论 -
Ubuntu16.04 jsoncpp 的安装
这里记录两种安装方法:1.联网安装使用apt-get installsudo apt-get install libjsoncpp-dev这里安装可以看到是1.7.2版本的jsoncpp头文件在:/usr/include/jsoncpp/json动态库在:/usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.22.离线安装下载源码自己手动编译 ,使用 meson + ninja 进行编译jsoncpp的下载地址:https:/转载 2020-11-21 11:51:32 · 1094 阅读 · 0 评论 -
python c++ socket 通信一个示例
1 作用说明客户端: 连续发送n个字符串消息 ("client_msg_n"), 服务端: 处理客户端消息, 返回对应的字符串信息("client_msg_n<<handled")2 代码2.1 客户端client ( c++ boost::asio)main.cpp#include <iostream>#include <boost/asio.hpp>using namespace std;//clientint main(int ar原创 2020-11-21 10:33:59 · 1024 阅读 · 0 评论 -
boost::asio c++ 网络编程socket通信一个简单例子
1 说明:客户端: 连续发送n个字符串消息 ("client_msg_n"), 服务端: 处理客户端消息, 返回对应的字符串信息("client_msg_n<<handled")2 代码:2.1 客户端clientmain.cpp#include <iostream>#include <boost/asio.hpp>using namespace std;//clientint main(int argc, char **argv) {原创 2020-11-20 16:39:49 · 3275 阅读 · 0 评论 -
boost boost::asio::read read_some receive 区别
boost boost::asio::read 尝试读一定数量的字节,直到读到为止,或者出错. Attempt to read a certain amount of data from a stream before returning. 即收到指定的数据才返回。socket.read_some 读一下socket,读到多少算多少basic_stream_socket::receive:Receive some data on the socket. 即收到一些数据...原创 2020-11-20 16:24:19 · 2322 阅读 · 0 评论 -
随手记_ubuntu下配置vscode+cmake c++开发环境
1. 安装vscode2.安装vscode的c++拓展 如下3个3. 打开项目,点击三角形 debug按钮,在 launch.json中 配置 调试器(gdb)、输出项目名称(program)、命令行参数(args)4. 点击cmake按钮,进入cmake子界面,点云 配置(方框左箭头)、编译(下箭头)5. 点击三角形,进入debug界面,进行调试...原创 2020-10-16 16:28:37 · 733 阅读 · 1 评论