- 博客(46)
- 收藏
- 关注
原创 Perf分析CPU占用
x轴表示抽样数,如果一个函数在x轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间占比越大。y轴表示调用栈,每一层都是一个函数。顶部是正在执行的函数,下方都是它的调用方。用浏览器打开:perf.svg。如果是CMake编译,那么就。
2025-12-23 18:57:54
235
原创 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
原创 视觉Slam14讲笔记第7讲视觉里程计-特征提取与匹配
描述子是对关键点周围区域的数学描述,它是一个向量,用于表示关键点的特征。描述子的目的是让计算机能够比较不同图像中的关键点是否匹配。特征检测指的是在图像中寻找具有显著性的、可重复检测的关键点(KeyPoints)。这些关键点通常是图像中具有独特性质的局部区域。斑点:与周围区域有明显差异的区域,如纹理丰富的区域。列数 (cols):等于描述子的维度(长度)遍历所有描述子,求得描述子之间的最小汉明距离。角点:两条边缘的交点,如建筑物的拐角。行数 (rows):等于关键点的数量。边缘:图像中亮度变化剧烈的区域。
2025-11-01 18:27:11
313
原创 基础知识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
原创 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关注的人
RSS订阅