自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 write、fwrite、fstream二进制I/O的效率对比

write、fwrite、fstream二进制I/O的效率对比

2023-10-31 22:43:04 468

原创 C++ 类、方法的同一声明不同实现的方式

编译、静态链接、动态链接、运行阶段完成源码实现的选择。

2023-09-24 23:56:29 167

原创 基于ORB-SLAM2的语义地图构建,分成服务端和客户端

基于ORBSLAM2系统构建语义地图。图像语义分割作为服务端,由python实现;语义建图作为客户端,由ImageSeg类实现与服务端数据交互,PointCloudMappingClient类实现语义地图构建,C++实现。

2021-02-24 11:46:44 3689 28

原创 基于ORB-SLAM2的语义地图构建

在ORB-SLAM2的基础上进行语义地图的构建。

2021-01-26 11:50:17 8546 22

转载 linux下用Kazam录屏视频在windows不能播放解决

描述 之前在ubuntu上记录一些东西,但是转而在windows就不能播放,查了一下资料说是解码器的问题。大概也有网友遇到类似问题,那就分享一下吧! 解决 windows上下载安装软件HandBrake (点这里)打开之后点击 Open Source,添加需要...

2021-01-25 11:33:03 742

原创 动态环境下的ORB-SLAM2_实现鲁棒的定位

改进的ORB-SLAM2,用于实现在动态环境下的鲁棒定位。

2021-01-22 13:19:03 3369 10

原创 Latex bibtex制作参考文献遇到问题总结

Bibtex 报错 Unsupported entry type for misc原因:由于参考文献著录/标注标准(2005版)GBT7714-2005.bst 中不支持 misc 的 entry type,所以会报错“Unsupported entry type for *** misc”。实际在该参考文献著录/标注标准中有一个online的entry type可作为misc的替代类型。(具体参考的博文忘记了~~)解决:xxx.cls文件中(如zjuthesis.cls)中修改参考文献样为 gbt77

2021-01-17 16:44:59 2796 2

原创 2020秋招_操作系统笔记(一):进程和线程

进程、线程进程(process)和线程(thread)的区别?进程和线程本质上都是CPU的一个工作时间段,进程包括了CPU加载程序上下文、CPU执行、CPU保存程序上下文。线程包含在进程中,一个进程至少有一个线程,也可以有多个线程,进程的不同线程之间共享CPU和程序上下文。进程是操作系统资源分配(包括CPU、内存、磁盘IO等)的最小单元;线程是CPU调度和分配的基本单元,是最小的执行单元。...

2020-10-19 14:50:40 396

原创 2020秋招_TCP/IP协议知识(笔记)

TCP三次握手过程,为什么是三次而不是两次或四次?两张动图-彻底明白TCP的三次握手与四次挥手TCP 为什么三次握手而不是两次握手(正解版)四次握手过程:客户端向服务端发送SYN同步请求;服务端向客户端返回ACK确认同步;服务端向客户端发送SYN同步请求;客户端向服务端返回ACK确认同步。显然,四次握手中的第二次和第三次握手都是服务端向客户端发送,因此可以简化成三次握手,提高建...

2020-10-19 14:50:24 169 1

原创 2020秋招_leetcode刷题记录

面试题 10.03. 搜索旋转数组 -> 二分查找(两次二分查找过不了特殊例子,一次二分查找理解起来有点麻烦)

2020-10-17 21:22:54 220

原创 2020秋招_高性能服务器框架

总览服务器三个主要模块:I/O处理单元逻辑单元存储单元I/O处理单元四种IO模型,两种高效处理模型。四种IO模型两种高效处理模型逻辑单元两种高效并发模式,高效的逻辑处理方式——有限状态机。...

2020-10-17 21:18:16 565

原创 2020秋招_数据库(mysql)学习记录

索引索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。普通索引和唯一索引唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。普通

2020-10-17 21:16:56 271

原创 2020秋招_C++基础、数据结构基础面经记录

malloc/free和new/delete的区别深入理解C++ new/delete, new []/delete[]动态内存管理malloc/free是C/C++标准库的函数,new/delete是C++操作符(编译器可以优化操作符,但无法优化库函数)。malloc/free只是动态分配内存空间/释放空间。而new/delete除了分配/释放内存空间还会调用构造函数和析构函数进行初始化与清理(清理成员),即可以实现动态的内存管理。malloc/free管理内存失败会返回NULL(0),new/

2020-10-17 21:15:34 592

原创 ORB-SLAM2实时显示稠密点云图

基于ORBSLAM2,离线或者在线生成稠密点云地图。在线生成点云的同时还可以将采集到的图像数据以TUM数据集的格式保存。

2020-10-17 20:05:54 8798 41

原创 2020秋招_动态规划之背包问题学习总结

文章目录0-1背包问题0-1背包不超过背包体积下的最大重量0-1背包恰好装满问题完全背包问题多重背包二进制优化方法背包问题九讲0-1背包问题O(V×N)O(V\times N)O(V×N)有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。状态转移方程:dp[i][j]dp[i][j]dp[i][j]表示前 iii 件物品,容量为 jjj 的背包,可获得最大的总价值。dp[i][j]=max(dp[i−1][j],dp[i−1][j

2020-09-10 11:10:15 226

原创 多线程交替打印数组(C++11实现)

#include <thread>#include <iostream>#include <condition_variable>#include <mutex>#include <vector>using namespace std;mutex mtx;condition_variable cond;int counter = 0;int order = 0;// k -> 交替打印数组个数// o ->

2020-08-29 11:17:02 705

原创 归并排序之多线程实现(C++)

归并排序使用多线程分析归并排序分为两步:不断地对半拆分数组(向下的过程);合并相邻的子数组(向上的过程)。对于拆分成的子数组,它们之间相互独立,资源不共享,因此用多线程是安全的。(在合并前,两个子线程需要运行完毕,即join阻塞当前线程直到两个子线程运行完毕)C++代码#include <iostream>#include <thread>#include <vector>#include <functional>using name

2020-06-27 22:42:47 1786

原创 Linux关闭与切换进程相关的信号:SIGINT、SIGKILL、SIGTERM、SIGSTOP

参考Linux中ctrl-c, ctrl-z, ctrl-d 区别ctrl-d ( Terminate input, or exit shell ) 一个特殊的二进制值,表示 EOF,作用相当于在终端中输入exit后回车;ctrl-/ 发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件;ctrl-s 中断控制台输出;ctrl-q 恢复控制台输出;ctrl-l 清屏。Linux命令kill和signalkill <pid> :

2020-06-25 12:38:37 5525 1

原创 deb、rpm、run程序安装包的制作

run包转载自:制作linux下的.run安装包介绍run程序安装包实质上是一个安装脚本加要安装的程序,文件后缀为.run。安装方法很简单, 以 xxx.run 为例:终端或控制台下运行 sh xxx.run。——————|   安装脚本   |——————|     程序包     |——————run 安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂

2020-06-19 14:46:03 2774

原创 2020秋招_高性能服务器优化与检测

源自《LInux高性能服务器编程》- 游双指令使用psps -ef | grep 命令详解ps 命令的作用是显示进程信息的。如ps -ef | grep Server 显示Server进程的信息。系统检测工具mpstatmpstat(multi-processer statistics),它能实时检测多处理器系统上每个CPU的使用情况。%usr:除了nice值为负的进程,系统上其他进程运行在用户空间的时间占CPU总运行时间的比例。%sys:系统上所有进程运行在内核空间的时间占CPU总运行

2020-06-10 22:10:27 269

原创 Linux Socket编程(四):Reactor并发模式的理解和实现

#include <iostream>#include <stdio.h>#include <cstring> // void *memset(void *s, int ch, size_t n);#include <sys/types.h> // 数据类型定义#include <sys/socket.h> // 提供socket函数及数据结构sockaddr#include <arpa/inet.h>

2020-05-16 15:28:58 667

原创 UBuntu环境下通过VSCode将文件上传到github

参考Ubuntu环境如何上传项目到GitHub网站?设置SSH Key -> 参考安装并初始化gitsudo apt-get install gitmkdir mycode && cd mycodegit inittouch 001.cpp在github新建一个仓库添加远程仓库git remote add repository_name url如:git remote add my_repository https://github.com/ShenXinda

2020-05-14 21:45:56 1464

原创 Ubuntu16.04/ubuntu18.04运行kinectV2:安装libfreenect2和iai_kinect2中遇到的问题

参考Ubuntu18.04+ROS安装Kinect V2步骤及问题解决 -> 先按照这个教程进行安装。Ubuntu安装和卸载CUDA和CUDNN编译和运行libfreenect2遇到问题Ubuntu16.04和Ubuntu18.04基本一样。运行问题: found 0 devicesKinect2一定要插USB3.0,如果插了USB3.0还是找不到设备,那就多换几个USB口试试,本人是插了台式机背后的USB3.0接口才成功连上Kinect2的。运行问题:subpacket too lar

2020-05-12 16:54:10 1364 4

原创 C++多线程:互斥锁、自旋锁、条件变量、读写锁的定义与使用

互斥锁使用std::mutex类;条件变量使用std::condition_variable类;自旋锁通过C++11的std::atomic类实现,使用“自旋”的CAS操作。#include <thread>#include <mutex>#include <iostream>#include <atomic>#include <co...

2020-05-06 12:27:16 1771

原创 Linux Socket编程(三):固定线程数的线程池实现

目录实现固定数目的线程池线程池实现主要的私有成员变量线程池实现主要的函数线程池主要的实现原理(基于实现代码-1分析)实现代码-1实现代码-2实现固定数目的线程池线程池实现主要的私有成员变量std::mutex mtx_;std::condition_variable cond_;bool is_shutdown_ = false; // 线程池对象结束标志std::queue<s...

2020-05-02 22:37:43 765

原创 2020秋招_C++笔记之左值和右值,拷贝构造和移动构造,类型自动推导

目录拷贝构造函数拷贝构造函数和赋值构造函数调用拷贝构造函数的场景拷贝构造函数的参数类型必须是引用深拷贝和浅拷贝左值(lvalue)和右值(rvalue)左值引用和右值引用移动构造和移动赋值移动语义和std::move()通用引用(universal references)完美转发和std::forward()emplace_back减少内存拷贝和移动总结模板类型自动推导理解情形1:ParamTyp...

2020-04-29 21:24:56 725 1

原创 Linux Socket编程(二):多线程实现同时响应多个客户端

目录服务端可以同时对多个客户端的请求做出响应吗?服务端多线程实现运行测试服务端可以同时对多个客户端的请求做出响应吗?上一篇文章:Linux Socket编程(一):简单地实现进程间TCP通信在上一篇文章中讲述了Linux下通过socket简单地实现进程间TCP通信。现在做一个简单的测试:打开一个服务端,同时打开两个客户端请求与服务端连接。由第一张图可以看到,服务端只能对先连接上的客户端做出响...

2020-04-25 01:08:41 2815 1

原创 数据结构和算法笔记(二):位运算、栈、队列

目录位运算位异或相关练习位运算位异或异或的性质:两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1。异或的规律:(1)任何数和本身异或则为0;(2)任何数和 0 异或是本身;(3)异或满足交换律。 即 a ^ b ^ c ,等价于 a ^ c ^ b。只出现一次的数字(其余都出现两次) -> ...

2020-04-21 23:16:03 207

原创 数据结构和算法笔记(一):二叉树、堆、链表、双指针

时间复杂度常见数据结构的查找、插入、删除时间复杂度二叉树(Binary Tree)存储结构二叉树的存储结构有两种,顺序存储结构和链式存储结构。PS:链式存储结构的二叉树极端情况下会退化成线性链表。几种特殊二叉树完全二叉树满二叉树二叉搜索树/二叉排序树平衡二叉树/AVL树红黑树STL里哪些容器用到二叉树存储?…未完待续堆(heap)堆以完全二叉树的形式表示,用队列(数组...

2020-04-21 00:49:17 333

原创 Linux Socket编程(一):简单地实现进程间TCP通信

服务端和客户端通过Socket通信过程参考博客:TCP网络编程中connect()、listen()和accept()三者之间的关系网络套接字编程基本api服务端:socket() :创建套接字,设置套接字IP地址类型、传输协议类型。bind():绑定ip地址和端口号到套接字。listen():将套接字变成被动的连接监听套接字。监听套接字的端口号,随时准备接收客户端发来的连接请求。...

2020-04-18 17:38:14 1208

原创 C++11多线程编程(笔记)

C++11 标准库提供std::tread类用于多线程编程。线程的创建和阻塞线程的三种创建方式函数名或函数指针创建线程函数对象(仿函数)创建线程lambda表达式创建线程。阻塞主线程:join()和detach()函数两者区别:子线程对象调用join()函数,主线程会被阻塞,直到子线程执行完成,主线程才能接着执行。子线程对象调用detach()函数后,执行的子线程从线程对象中分离...

2020-04-15 01:07:53 582 1

原创 对于深度学习中 Batch Normallization (BN) 和 Batch Renormalization 的理解

Batch NormalizationBatch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift由上图可知,Batch Normalization(BN)算法总共有四行,分两步。第一步是前三行,将激活值(论文中进行BN的是激活函数的输入值,也可以是激活函数的输出值,不...

2020-01-19 00:10:25 1353 1

原创 深度CNN感受野(Receptive Field)的计算

参考如何计算感受野(Receptive Field)——原理FOMORO AI -> 可视化计算感受野的网站Python代码import sys# VGG16为例# k_size, stride, padding(1->"same",0->"valid")convnet = [[3,1,1],[3,1,1],[2,2,0],[3,1,1],[3,1,1],[2,2...

2020-01-09 18:29:57 562 1

原创 TUM数据集groundtruth轨迹与估计轨迹统一参考系

TUM数据集groundtruth轨迹与估计轨迹(ORBSLAM2运行的结果)统一参考系参考:https://blog.csdn.net/luo870604851/article/details/85006243阅读ORBSLAM的相关论文并且在UBuntu系统上编译好ORB-SLAM2后,准备运行下程序,获得估计的轨迹后,评估下轨迹的误差。这里运行的是rgbd_dataset_freibur...

2019-12-27 22:06:58 4890 1

原创 ORBSLAM2解析(2)——Tracking 线程

Tracking线程作为系统的主线程,主要实现输入的预处理、地图的初始化、相机位姿估计、局部地图的跟踪、关键帧的判断与创建。文章主要给出了这些模块的思维导图,并重点分析了相机位姿估计模块使用的方法。

2019-12-22 21:02:14 301

原创 旋转描述以及位姿描述:旋转矩阵、旋转向量、欧拉角、四元数

注:参考视觉SLAM十四讲第三章。相同点:旋转矩阵、旋转向量、欧拉角、四元数都可以用来描述同一个旋转。不同点:旋转矩阵R∈R3×3R\in\mathbb{R^{3\times 3}}R∈R3×3用9个向量描述3自由度的旋转,具有冗余性;旋转矩阵必须是行列式为1的正交矩阵,这些约束会使得求解旋转矩阵变得困难。旋转向量θn\theta nθn用转轴n∈R3n\in\mathbb{R^{3}}...

2019-12-15 21:57:30 1459

原创 第十讲(第一版第十一讲)-位姿图优化部分

误差关于位姿的雅克比矩阵推导今天看到后端优化的关于位姿图优化部分,对于误差关于两个位姿的雅克比矩阵推导部分理解遇到了一些困难。书中直接给TiT_iTi​和TjT_jTj​各乘了一个左扰动,然后就开始推导了。倒数第三行到倒数第二行的近似运用了Taylor Expansion,倒数第二行到倒数第一行的近似是什么原理就不太清楚了。(希望如果有知道其中原理的大神看到了,能在评论里给出解释或者推导过程的...

2019-12-07 23:59:40 1288 3

原创 标量、向量、矩阵之间求导笔记

记录一些平时碰到的标量、向量、矩阵之间求导的公式以及个人的理解。

2019-12-06 21:43:23 584

原创 第七讲-位姿估计PnP/ICP部分代码的理解

视觉SLAM十四第7讲关于PnP部分代码学习记录,包括手写的高斯牛顿法求解和g2o进行图优化求解的代码解读,以及课后习题第6题的代码。

2019-12-02 17:33:31 1256

原创 MathType公式在word\ppt\visio重新打开显示乱码解决

在visio、word、PPT中经常需要插入MathType编辑的公式,但是重新打开后总是会遇到公式显示出现了乱码问题,这里给出了这些问题的解决方案。

2019-10-31 22:23:14 7670 2

VSCode.zip

Ubuntu的VScode编辑器,使用了视觉SLAM十四讲中提到的Eigen3/OpenCV/Ceres/g2o库,用cmake编译链接,代码是视觉SLAM十四讲中的一些例子,主要目的还是练习cmake和这些库的基本用法.

2019-07-29

空空如也

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

TA关注的人

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