自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 Perf分析CPU占用

x轴表示抽样数,如果一个函数在x轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间占比越大。y轴表示调用栈,每一层都是一个函数。顶部是正在执行的函数,下方都是它的调用方。用浏览器打开:perf.svg。如果是CMake编译,那么就。

2025-12-23 18:57:54 235

原创 c++多线程【基于锁的数据结构】

c++并发数据结构

2025-12-09 20:48:40 408

原创 c++多线程【原子操作】

c++ 原子操作

2025-11-30 16:46:30 234

原创 c++多线程【并发操作的同步】

c++多线程,条件变量,std::future,std::promise相关 线程等待以及多线程编程

2025-11-19 20:43:14 731

原创 C++多线程【数据共享】之互斥锁

c++标准库提供了类模板std::lock_guard<>,针对互斥类融合实现了RAII手法:在构造时互斥加锁,在析构时解锁,从而保证互斥总被正确解锁。假定有两个线程,各自关联了std::thread实例,若它们同时在对方的std::thread示例上调用join(),就能制造出死锁现象却不涉及锁操作。有两个线程,都需要同时锁住两个互斥,才可以进行某项操作,单他们分别都只锁住了一个互斥,都等着再给另外一个互斥加锁。需要注意的是,一旦调用者返回指针或引用,指向受保护的共享数据,就会危及共享数据安全。

2025-11-16 18:26:20 251

原创 C++多线程【线程管控】之线程转移以及线程数量和ID

t1 = std::move(t3)操作:在转移之时,t1已经关联运行some_other_function()的线程,因此std::terminate()会被调用,终止整个程序。需要注意的是,硬件支持的线程数量有限,运行的线程数量不应该超出限度(超出的情况称为线程过饱和),因为线程越多,上下文切换越频繁,导致性能降低。std::thread支持移动语义,对于一个具体的执行线程,其归属权可以在几个std::thread实例间转移。当前线程I可以通过std::this_thread::get_id()获取。

2025-11-15 18:48:53 277

原创 C++多线程【线程管控】之线程创建以及参数传递

多线程

2025-11-11 20:25:52 236

原创 视觉Slam14讲笔记第7讲视觉里程计-特征提取与匹配

描述子是对关键点周围区域的数学描述,它是一个向量,用于表示关键点的特征。描述子的目的是让计算机能够比较不同图像中的关键点是否匹配。特征检测指的是在图像中寻找具有显著性的、可重复检测的关键点(KeyPoints)。这些关键点通常是图像中具有独特性质的局部区域。斑点:与周围区域有明显差异的区域,如纹理丰富的区域。列数 (cols):等于描述子的维度(长度)遍历所有描述子,求得描述子之间的最小汉明距离。角点:两条边缘的交点,如建筑物的拐角。行数 (rows):等于关键点的数量。边缘:图像中亮度变化剧烈的区域。

2025-11-01 18:27:11 313

原创 视觉Slam14讲笔记第6讲非线性优化

由于自身编译器是c++14标准,但是g2o的版本是17标准。

2025-10-17 21:35:40 199

原创 C++性能优化Tips(持续更新)

c++性能优化

2025-09-28 11:33:45 345

原创 视觉Slam14讲笔记第4讲李群李代数

sophus使用

2025-09-19 21:52:20 182

原创 视觉Slam14讲笔记第3讲三维空间刚体运动

Eigen使用以及空间中的旋转表示

2025-09-11 22:22:20 134

原创 视觉Slam14讲笔记第5讲相机与图像

相机模型以及畸变参数,opencv图像处理

2025-07-30 22:22:10 368

原创 基础知识1--图片坐标系【x y】【rows cols】 【width height】

图片坐标系以及【width height】 【cols rows】

2025-07-30 16:47:46 106

原创 数据分析6-数据可视化

基本概念数据可视化是指借助于图形化的手段,清晰、快捷有效的传达与沟通信息。同时,也可以辅助用户做出相应的判断,更好的去洞悉数据背后的价值matplotlibmatplotlib是用于Python的绘图库,提供各种常用图形的绘制。例如,条形图,柱形图,线图,散点图等根据惯例,使用如下的方式导入:import matplotlib as mplimport matplotlib.pyplot as plt一、图形绘制绘制线图可以通过matplotlib.pyplot的plot方法进行图形绘制

2021-05-20 11:46:24 1422

原创 数据分析5--多层索引与分组聚合

一、多层索引MultiIndex,即具有多个层次的索引,有些类似于根据索引进行分组的形式。通过多层次索引,我们就可以使用高层次的索引,来操作整个索引组的数据。多层索引的创建方式第一种创建多层索引方式:我们在创建Series或DataFrame时,可以通过给index(columns)参数传递多维数组,进而构建多维索引。【数组中每个维度对应位置的元素,组成每个索引值】多维索引的也可以设置名称(names属性),属性的值为一维数组,元素的个数需要与索引的层数相同(每层索引都需要具有一个名称)。s1

2021-05-19 14:44:18 916

原创 数据分析4--数据相关处理

一、数据加载从csv读取数据首先,我们需要将收集的数据加载到内存中,才能进行进一步的操作。pandas提供了非常多的读取数据的函数,分别应用在各种数据源环境中,我们常用的函数为:read_csvread_tableread_sql其中:read_csv与read_table默认使用的分隔符不同read_csv与read_table常用的参数如下:sep / delimiterheadernamesindex_colusecols具体使用方式如下:read_csv与read_tab

2021-05-17 12:22:34 629

原创 数据分析3--Pandas基本使用

一、简介Pandas库基于Numpy库,提供了很多用于数据操作与分析的功能。安装与使用:pip install pandas根据惯例,我们使用如下的方式引入pandas:import pandas as pd两个常用数据类型:SeriesDataFrame二、Series类型Series类型类似于Numpy的一维数组对象,可以将该类型看做是一组数据与数据相关的标签(索引)联合而构成(带有标签的一维数组对象)。创建方式列表等可迭代对象、ndarray数组对象、字典对象、标量关于Se

2021-05-13 15:48:01 396

原创 数据分析2-numpy基本使用

numpy使用

2021-05-12 10:23:38 543

原创 数据分析1--基本概念

Anconda安装

2021-05-08 13:05:38 493

原创 Python学习24--协程

一、基本概念线程、进程都是系统级别的,是系统来统一调度分配时间片协程是程序级别的,是开发者根据自己的需要调度生成器可以做到从一段代码执行中,跳入到另外一段代码协程其实就是生成器实现的,协程可以利用yield来进程程序之间的切换,或者调度。协程的优势:1、协程有很高的执行效率。只需要程序内部的yield来对程序进行自身控制,不需要线程的切换开销2、协程没有线程安全问题。协程的特点:协程需要激活:next或则send(None)协程的缺点:协程+多进程可以应用多核cpu,无法自己使用多核c

2021-04-27 14:35:16 158

原创 Python学习23--多线程和多进程

一、基本概念1. 异步和同步关注的是消息通信机制,行为方式,描述的是多个(线程、进程)相互之间的关系。同步:调用者主动等待被调用者返回结果,在没有返回结果之前就一直专职等待。比如:打电话,拨号之后,什么都不干,专职等待,拨号的动作和其他的动作之间“同步关系”异步:调用者发送请求之后,不会专职等待被调用者返回结果,而是当被调用者有结果之后,通知调用者,然后调用者再回头继续做刚才的任务。比如:打电话,拨号了之后,我放免提,继续编代码,什么时候接通了,什么时候开始说话。2. 阻塞和非阻塞关注的是

2021-04-24 14:59:28 317

原创 Python学习22--网络编程和几个高阶函数

一、计算机网络编程定义:将地理位置不同具有独立功能的多台计算机,通过通信线路(不是通过硬件存储),来进行互相通信实现数据的共享。网络的七层结构:应用层(最贴近用户使用者):http ftp表示层会话层传输层: tcp udp网络层:ip数据链路层(设备和驱动)物理层(最贴计算机的一层)HTTP协议:超文本传输协议IP协议:互联网传输协议TCP协议:传输控制协议,安全有效的协议,基于连接的协议,点对点的通道,TCP协议可以保证一方发送后,外一方一定能准确(按接收顺序)接收进行三次

2021-04-22 17:10:28 204 1

原创 Python学习21--线程和进程

因为全局解释器锁的存在,在python里经常使用多进程来代替多线程。可以避免受GIL的限制一、进程的创建进程创建有如下三种方式:1、通过multiprocessing下Process类创建子进程;2、继承Process类,重写run方法3、进程池需要注意的是:进程一定要写在“主程序”中,因为windows系统在创建子进程的时候,会将当前的模块导入,如直接写在主程序中,会报错,如下所示:import multiprocessingdef m(): passp1 = multipr

2021-04-20 09:47:42 237 1

原创 Python学习20--线程

一、基本概念程序:程序可以理解成是一系列的指令集,程序是静态进程:当程序运行时,会创建一个进程线程:进程基本执行单元,一个进程至少有一个线程进程和线程之间的关系:一个线程只属于一个进程,一个进程包含多个线程进程资源、线程的对比:进程具有独立的空间和系统资源线程没有独立的空间和系统资源,同一个进程下的多个线程共享该进程下的资源问题:多线程中对于共享资源修改的问题—多线程同步问题,线程不安全二、多线程多线程在单核CPU下的执行状况:从宏观上可以认为是并行,从微观上看是串行多线程在多核C

2021-02-24 20:37:32 250

原创 Python学习19--几种排序算法的实现

一、稳定排序和不稳定排序稳定排序:相同的两个元素经过排序后相对位置不变不稳定排序:相同的两个元素经过排序后相对位置发生改变二、冒泡排序

2021-02-22 22:49:41 196

原创 Python学习18--常用的数据结构以及查找方法实现

一、常用的数据结构1、数组数组在内存中是连续存储,通过起始位置和偏移量来对其中每一个元素进行访问;优点:随机访问很好。资源使用少缺点:插入或者删除元素比较麻烦。第一个元素:起始地址+0偏移量第二个元素:起始位置+1偏移量第i个元素: 起始位置+(i-1)*偏移量时间复杂度 :数组的随机访问元素时间复杂度O(1):常数时间复杂度线性存储:每个元素都有一个前驱元素,一个后续元素2、链表链表是线性存储的数据结构,跟数组不同在于,链表不是连续的,链表中的每一个点被称为【节点】,每个节点都包含

2021-02-07 15:30:50 420

原创 Python学习17-正则表达式

一、简述正则表达式:对【指定的字符串】与【模式】之间进行模式匹配,可以获得模式匹配的结果。模式:可以是普通字符串,也可以是含有特殊意义的字符(正则表达式)python中re模块是来支持正则表达式re.search(模式,待搜索的字符串),返回的是匹配对象匹配对象下的group方法可以返回匹配的内容使用方法如下:import rer = re.search("abc","abccd")if r: print(r.group())else: print("没有匹配")输出

2021-01-30 15:03:25 324 1

原创 Python学习16--文件和上下文管理器

操作系统的文件分为:(1)文本文件:.txt(2)二进制文件:.mp3、.wma、.doc一、获取文件对象运用open函数来获得 文件对象格式为:open(file,mode)file: 泛指文件和文件夹,相对路径:从当前路径开始的路径绝对路径:从盘符开始的路径如:“E:\test”mode模式说明:r:(1)读模式(默认模式),用来读取文件内容。文件指针在文件的开头。文件需要事先存在,否则会产生异常。w:(1)写模式,用来向文件写入数据。文件指针在文件的开头。如果文件存在,则覆盖文件

2020-08-02 19:38:54 769

原创 Python学习15--迭代器、生成器、装饰器

一、迭代器可迭代对象:可以进行遍历的对象,如:字符串、列表、元组、字节、字典、集合可迭代对象:Iterable迭代器:Iterator验证可遍历对象是可迭代对象:from collections.abc import Iterable,Iteratorprint(issubclass(list,Iterable))print(issubclass(tuple,Iterable))print(issubclass(str,Iterable))print(issubclass(bytes,It

2020-07-27 23:05:41 435

原创 Python学习14--错误和异常/Try_except

一、异常的概念错误:在程序的编译期就出现的异常:在程序的运行期,是因为程序没有按照正常或者期望方式执行【异常产生的时候,程序处理的处理方式】:在异常放生的位置,程序会创建异常类型的对象,“暂停”程序,从上下文中想寻找有没有异常处理的程序,如果有异常处理,那么会进入到异常处理程序(try except)。如果没有异常处理,那么异常会向上传播【异常的向上传播】:如果异常是在函数中产生,会传播给函数的调用者如果异常是在模块的顶级位置产生,会传播给引用这个模块的模块如下所示:def a():

2020-07-05 16:25:08 400

原创 Python学习13--几个常用的模块

一、math模块import math(1)pi:圆周率piprint(math.pi)输出:3.141592653589793(2)e:自然常数eprint(math.e)输出:2.718281828459045(3)ceil:向上取整a = 3.5b = -3.5print(math.ceil(a))print(math.ceil(b))输出:4-3(4)floor:向下取整a = 3.5b = -3.5print(math.floor(a))p

2020-06-29 22:22:30 465

原创 Python学习12--模块和包

一、模块1、基本概念物理的角度:一个文件就是一个模块。逻辑的角度:模块(功能划分)模块中可以定义的内容: 类、函数、变量模块的名字就是文件的名字,被存储在模块命名空间。划分模块的好处:(1)有利于项目按照功能进行划分,每个人负责一个模块,或者多个模块,方便协作开发。(2)模块提供了独立的命名空间(全局命名空间),可以解决命名冲突问题。(3)模块可以提供多人使用,提高程序的复用性。在python中一个模块可以支持多个class的建立2.模块的导入有两种方式模块的导入方式分别为:impo

2020-06-06 14:06:12 201

原创 Python学习11--面向对象

一、面向过程和面向对象面向过程:程序里面有大量的函数,每一个环节都是进行函数的调用。编程思想是按照执行时从头到尾的顺序来进行编程的面向对象:根据需求,划分不同的对象,将对象划分成若干个类,以对象的方式来进行方法或者行为的调用,不是以函数为单位,而是以对象为单位。举例说明:编写一个实现请假功能的代码块,大致流程为:员工请假—领导审批—人事记录1、以面向过程的思想编程:定义以下函数执行,伪代码如下:def 请假(员工,领导) passdef 撤销请假流程(员工,领导) passdef 审

2020-05-25 22:23:39 383

原创 Python学习10--习题1

一、如何判断输入的数是否是回文数:回文数如12321,个位与万位相同,十位与千位相同方法(1):利用字符串的逆整切片与原有字符串进行比较是否相等。如下:num = input("请输入一个数字:")new_num = num[::-1]if num == new_num: print("是回文数")else: print("不是回文数")方法(2):通过索引比较,并...

2020-05-03 13:55:57 555

原创 Python学习9--类和对象

一、相关概念1、对象: 对象也叫做实例。万物皆对象。 对象是具有行为和属性的。举例:桌子,椅子,你,你同桌,小猫,小狗。。。。属性: 名词行为: 动词2、类:一个类别,按照需求划分,把具有相同属性和行为的对象划分成一个类。学生管理系统, Student Teacher公交刷卡系统, Person ticket划分的时候,一般来说,相同类别的对象之间总是比不同类别的对象之间更加相似...

2020-04-20 16:21:42 510

原创 Python学习8--函数

一、函数的定义函数产生的背景:重复的需求 如:让控制台打印5行星星,每行5个;函数的定义:可以重复使用,用来实现单一或者多个“功能”的代码段,以功能为单位;函数的意义:提高程序的模块化管理,提高代码重复使用率;函数的分类:内置函数(内建函数),自定义函数;内建函数:如print自定义函数格式:def 函数名(【参数1,参数2】):函数体【return 返回值】函数名:大写字母,...

2020-04-19 15:57:54 470

原创 Python学习7--字典和集合

一、字典1、字典的定义字典名={key1:value1,key2:value2…}s = {"Tom":90,"Tim":80,"Kate":60}print(s,type(s))输出:{‘Tom’: 90, ‘Tim’: 80, ‘Kate’: 60} <class ‘dict’>字典查询速度快:字典的key会使用hash函数映射成一个hashcode(整数),has...

2020-04-17 16:35:40 648

原创 Python学习6--列表和元组

一、列表****数据类型:****序列—列表 list列表:可以存储多个元素的数据类型变量=[元素1,元素2…]1.列表的特性(1)列表是有序(2)列表中的元素可以是多种类型(3)列表中的元素是可变的2. 创建Li=[] 空列表Li=[元素,元素……]Len(li)求列表长度3. 操作(1)操作符in not in is is not < > ...

2020-04-15 19:42:52 1347

原创 Python学习5--编码问题、格式化和流程控制(选择和循环)

一、 程序执行的过程:(1)顺序执行:按部就班的执行(2)选择:在一些选择中取一种情况,执行,根据不同的条件,执行不同的代码段(3)循环:体现的是重复执行同一段代码二、选择(if)If 布尔条件:If 布尔条件返回True会执行的代码else:if布尔条件返回False会执行的代码注意: (1)if 能够单独存在,else不能单独存在(2)else没有条件(3)设置if条...

2020-04-13 20:43:11 320

空空如也

空空如也

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

TA关注的人

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