自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (5)
  • 收藏
  • 关注

原创 C++ 互斥量mutex

C++ 互斥量mutex前言一、互斥量的用法1.lock( )、unlack( )2.lock_guard类模板二、死锁三、lock函数模板四、总结前言  互斥量的存在就是为了保护多线程中数据的安全。一、互斥量的用法1.lock( )、unlack( )#include<iostream>#include<list>#include<thread>#include<mutex>using namespace std;class A{

2021-05-11 17:50:55 483

原创 传递临时对象作为线程参数时注意事项

传递临时对象作为线程参数时注意事项前言一、例子二、当定义参数类型作为参数时修改:总结:前言  当在传递临时对象作为线程的参数时,并且该线程执行了函数detach()分离主线程。那么在主线程中创建的临时变量作为分离线程的参数时,在分离线程就会失效,因为当主线程结束时,就会将主线程创建的对象释放。那么该怎么处理呢?一、例子#include<iostream>#include<thread>using namespace std;void myprintf(const

2021-04-24 23:14:06 562 3

原创 MOS晶体管原理与特性

MOS晶体管原理与特性一、工作区域二、长沟道晶体管的I-V特性I-V特性表达式为I-V特性表现图为三、非理想晶体管的I-V效应四、晶体管的C-V特性栅电容Cg覆盖电容Cgol扩散电容Csb、Cdb一、工作区域MOS管有三种状态工作区域:截止区线性区饱和区以nMOS管为例:(Vgs为栅极与源级间的电压,Vt为截止电压,Vgd为栅极与漏级间的电压,Vds为源级与漏级间的电压)  如果Vgs<Vt时,晶体管为截止区;  如果Vgs>Vt时,晶体管为导通,并Vds较小,晶体管处于线

2021-04-19 17:48:28 10846

原创 尽量使用const、enum、inline来替换#define

尽量使用const、enum、inline来替换#define前言一、const替代#define二、enum替代#define三、inline替代#define总结前言  因为“#define”并不是语言的一部分,所以在一些情况下,“#define”并不是一个最佳的选择,甚至无出现意想不到的报错。一、const替代#define  由于 #define 不是语言的一部分,所以也许在编译器开始处理源码之前就被预处理器移走了,于是就没有进入记号表内,所以在一些不够优秀的编译器内会报错,并且也很难对

2021-04-03 12:43:35 866

原创 CMOS逻辑

CMOS逻辑前言一、反相器二、与非门(NAND)三、逻辑门四、或非门五、复合门六、传输管和传输门七、三态门八、多路开关九、锁存器和触发器前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、反相器CMOS反相器即为非(NOT)门,是由一个pMOS管和nMOS管串联构成。下图为反相器的电路图(a)和符号图(b):当输入A为0时,p.

2021-03-31 18:05:13 7551 2

原创 C++转型操作符(More Effective C++)

C++转型操作符前言一、static_cast?二、const_cast?三、dynamic_cast?四、reinterpret_cast?总结前言  在C++中,为实现不同类型间的转换,C++定义了四个类型转换操作符static_cast, const_cast, dynamic_cast, 和 reinterpret_cast。  下面介绍不同操作符的使用。一、static_cast?  static_cast 用于平常数值类型的转换,例如:int、double、float等  书写方

2021-03-29 16:19:03 187

原创 指针和引用的适用情况(More Effective C++)

指针和引用的适用情况指针和引用不同的地方一、操作符的不同?二、对象不同?1.指针可设为NULL,引用不可设为NULL2.对象是否可变总结指针和引用不同的地方1. 操作符的不同 2. 对象不同一、操作符的不同?指针用操作符“*”和“->”引用使用操作符“. ”二、对象不同?1.指针可设为NULL,引用不可设为NULL代码如下(示例):char *pc = 0; // 设置指针为空值char& rc = *pc; // 让引用指向空值  让引用指向空值,毫无疑问。.

2021-03-27 20:26:46 125

原创 Makefile文件

格式目标文件:依赖文件 命令行 //以Tab间距开头目标文件:这一步执行后要生成我的文件——可执行文件或.o文件依赖文件:生成目标文件需要的.c/.cpp文件,.h文件是不需要写在依赖文件的在编译过程为:预处理 g++ -E file.cpp -o file.i编译 g++ -S file.i -o file.s汇编 g++ -c file.s -o file.o链接 g++ file.cpp -o file在makefil

2020-12-25 17:47:22 118

原创 运动目标检测

文章目录前言一、混合高斯模型是什么?二、API1.代码2.结果前言前景/背景分割法提取前景物体的方法比较简单,适用于背景相对固定的简易场景。但是在很多情况下,背景中的某些部位会在不同的值之间波动,导致背景检测结果频繁出错。背景物体的移动(如树叶)、刺眼的物体(如水面)等因素都是产生这种现象的原因。物体的阴影也会带来问题,因为阴影也是会移动的。为了解决这些问题,我们引入了更复杂的背景模型。提示:以下是本篇文章正文内容,下面案例可供参考一、混合高斯模型是什么?  混合高斯方法是这些改进型算法中的

2020-12-08 22:19:13 420 3

原创 git 上传代码到 github

下载并安装git工具创建文件夹作为本地临时仓库,并文件右击用git打开绑定用户在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)$ git config --global user.name "hanyuntao"$ git config --global user.email "[email protected]"设置SSH key如果没有密钥,则通过$ ssh-keygen -t rsa -C "[email protected]"生成,

2020-11-23 21:34:58 95

原创 SGM—视差计算学习笔记

SGM—视差计算  以下将基于个人理解,分别从SGM的核心公式,代价计算步骤,代价聚集。由于笔者学识所限,如有错漏或者理解错误的地方,敬请批评。  子像素拟合和一致性检查几乎是所有立体匹配算法必执行的策略。子像素拟合将整像素精度提高到子像素精度,而一致性检查可以说是剔除错误匹配的不二选择。  在局部立体匹配匹配中,与基础图像 Ib 对应的视差图Db是通过选择每一个像素p和对应的最小代价视差d来确定的。对于子像素拟合,通过相邻代价拟合一条二次曲线,即在下一个更高和更低的视差处,计算最小值的位置。然

2020-11-09 17:17:22 987

原创 SGM—代价聚合学习笔记

SGM学习笔记

2020-11-08 21:24:30 2236 1

原创 Linux——网络_1(协议、模型、套接字)学习笔记

文章目录一、典型协议二、网络应用程序设计模式1.C/S模式2.B/S模式3.两种模式优缺点三、网络分层模型四、协议格式1、 数据包的封装2、TCP 面向连接的可靠数据包传递五、NAT映射六、打洞机制七、套接字1、网络字节序2、IP地址转换函数3、Socketaddr数据结构一、典型协议应用层:常见协议有FTP/HTTP协议传输层:常见协议有TCP/UDP协议网络层:常见协议有IP/ICMP/IGMP协议网络接口层:常见协议有ARP/RARP协议  TCP传输控制协议(Transmi

2020-09-11 11:20:20 147

原创 Linux——进程间同步笔记

文章目录前言一、互斥量Mutex1.应用函数二、fcntl函数1.函数2.注意事项前言进程间同步和线程间同步原因一样,都是为了防止数据混乱,提出同步机制实现进程间同步方法:互斥量Mutex 和 fcntl函数一、互斥量Mutex在线程同步中,用到过互斥量Mutex。互斥量Mutex在默认情况下可以实现线程间同步,通过改变其属性可以实现进程间同步。要在thread_mutex_init函数使用前将其属性进行初始化。1.应用函数int pthread_mutex_init(pthread_m

2020-09-07 10:48:44 236

原创 Linux——线程_2(线程同步)笔记

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport

2020-09-06 17:39:21 271

原创 Linux——线程_1笔记

文章目录线程概念一、线程资源?线程共享资源线程非共享资源二、优缺点1.优点2.缺点三、线程控制原语pthread_exit、return、exit的区别线程概念线程又称为轻量级进程,本质仍是进程(在linux环境下)进程:独立地址空间,拥有PCB线程:也有PCB,但是没有独立的地址空间,是共享进程地址空间在Linux下:  线程:是最小的执行单位  进程:是小的分配资源单位一、线程资源?线程共享资源文件描述符表每种信号的处理方式当前工作目录用户ID和组ID内存地址空间(.

2020-09-04 12:07:39 129

原创 Linux——进程间通信(信号与信号集)笔记

文章目录信号的概述一、信号相关的事件和状态产生信号递达未决信号的处理方式阻塞信号集(信号屏蔽字)未决信号集信号四要素信号处理默动作二、信号发送与捕捉1.发送信号2.信号捕捉3.信号集的操作自定义集合信号屏蔽字未决信号集信号的概述信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些事件。它可以在任何时候发给某一进程,而无需知道该进程的状态。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直

2020-09-03 18:35:02 158

原创 Linux——进程间通信(储存映射mmap)笔记

文章目录前言一、储存映射的原理二、储存映射函数总结前言  上节内存共享用的shm,是采用访问物理内存来实现内存共享。本节使用的是mmap通过磁盘上建立文件来存储映射实现进程间通信。  相对于shm来说,mmap更加简单,调用更加方便。  另外mmap有一个好处是当机器重启,因为mmap把文件保存在磁盘上,这个文件还保存了操作系统同步的映像,所以mmap不会丢失,但是shmget就会丢失。一、储存映射的原理  存储映射使一个磁盘文件与储存空间中的缓存区相映射。于是当从缓冲区中取数据,就相当于

2020-09-01 16:38:39 164

原创 Linux——进程间通信(共享内存shm)笔记

文章目录前言一、共享内存的通信原理二、共享内存函数1.共享内存实现步骤2.函数的说明1.shmget( )函数2.shmat( )函数3.shmdt( )函数三、代码示例:执行结果显示总结前言  共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存,不需要任何数据的拷贝。为了在多个进程间交换信息,内核专门留出了一块内存区。这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高了效率。  共享内存并未提供同步机制.

2020-08-29 11:25:11 4246

原创 Linux——进程通信(管道)笔记

进程通信方式当今比较常用的有:管道(使用简单)信号(开销最小)共享映射区(无血缘关系)本地套接字(最稳定)管道管道又分为:无名管道和有名管道FIFO无名管道:只能用于有亲属关系的进程间有名管道:可以用在有亲属关系的进程间也可用在无亲属关系的进程间无名管道管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符 fds[0]和 fds[1],其中 fds[0]固定用于读管道,而 fd[1]固定用于写管道,这样就构成了一个半双工的通道。管道关闭时只需将这两个文件描述符

2020-08-26 22:18:14 287

原创 Linux——守护进程笔记

Linux——守护进程笔记概念:   守护进程:是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。   守护进程不因为用户或终端或其他的变化而受到影响。编写守护进程步骤:创建子进程,退出父进程     fork()在子进程中创建会话     setsid()改变当前目录为根目录     chdir()重设文件权限掩码     umask()关闭文

2020-08-25 17:30:23 145

原创 Linux——进程控制笔记(2)exec函数组和wait函数

exec函数组exec 函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。execlp函数  加载一个进程,借助PATH环境变量    int execlp(const char *file,const char *arg,…) 成功:无返回 失败:-1  参数1:要加载的程序名字。还函数需要配合PAT

2020-08-23 22:36:13 494

原创 Linux——进程控制笔记(1)

fork函数fork()函数创建一个子进程pid_t fork(void)  失败返回:-1   成功返回:1.父进程返回子进程ID;        2.子进程返回0注意:fork函数不是返回两个值,而是fork()后,fork函数变为两个,父子进程各一个1.创建的单个子进程2.循环创建N个子进程进程共享fork函数后,子进程是父进程的一个复制品。父子进程相同之处为:进程上下文、代码段、全局变量、进程堆栈、宿主目录、进程工作目录、内存信息、打开文件

2020-08-23 15:48:02 108

原创 Linux——进程的相关概念

Linux——进程的相关概念程序和进程的区别:程序是静态的,是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。不占用系统资源。进程是动态的,是程序执行的过程。它是程序执行和资源管理的最小单位。存储在内存上。并发和并行:并发运行:就是CPU轮换的执行,当前进程执行了一个短暂的时间片后,切换另一个进程,如此的循环往复,由于时间片很短,在宏观上我们会感觉到所有的进程都是同时运行的,但是在微观上CPU每次只能执行某个进程的指令。并行运行:在多核的情况下,不同的CPU核可以同时执行不同的进程,这种叫

2020-08-22 16:37:51 229

原创 Linux——文件I/O编程笔记

Linux——文件I/O编程文件描述符  Linux中的文件主要分为4种:普通文件、目录文件、连接文件和设备文件。这么的文件系统如何做区分呢?——文件描述符。  文件描述符是个非负整数,是个索引值,并指向在内核中每个进程打开文件的记录表。  在一个进程启动时,会自动打开3个文件:标准输入、标准输出和标准错误处理,这3个文件分别对应的文件描述符为0、1、2。底层文件操作  文件I/O操作的系统调用,主要用到5个函数:open()、read()、write()、lseek()和close()。这些函

2020-08-21 11:47:09 238

原创 力扣笔记 —— 数组——单词顺序翻转

力扣笔记 —— 数组——单词顺序翻转用到的知识点:1.字符串的拼接2.sstream库中的istringstream类型字符串的拼接字符串的拼接可以用“+=”和.append()来操作s1="hello ";s2="world";s3=s1+s2;//输出就是 hello worldsstream库中的istringstream类型istringstream用于执行C++风格的串流的输入操作。它可以将空格前面的字符取出s="the sky is blue"istringst

2020-08-02 20:36:37 175

原创 数据结构——哈希表解析

数据结构——哈希表解析哈希表概念  哈希表又称散列表:是根据关键字的值直接访问元素存储位置的存储结构。也就是说,在元素的存储地址和它的关键字之间建立的一个确定的对应关系H,使每个关键字和一个唯一的存储位置向对应。  散列表既是一种存储方式,也是一种查询方式。  当不同的关键字通过相同的散列函数计算得到同一地址的现象称为冲突或碰撞,称这些发生冲突的关键字相对于散列函数的同义词,在一般的情况下,冲突只能尽量减少,而不能完全避免。构造散列函数的方法1.直接定址法2.折叠法3.数值分析法4.平方

2020-07-30 11:42:51 387

原创 C++ 哈夫曼树和哈夫曼编码

C++ 哈夫曼树和哈夫曼编码哈夫曼树又称最优二叉树是树的结构应用之一。哈夫曼树的构建:从集合中选出最小的两个元素,相加和放入集合。再从集合中选出最小的两个元素,相加和放入集合…不说了,直接上图哈夫曼树的带权路径长度:即叶结点权值 * 根结点到该叶结点的路径长度路径长度:根结点到第L层结点的路径长度为L-1哈夫曼编码从结点开始,左分支路径记0,右分支路径记1,从根结点到目标叶结点路径上的编号序列就是哈夫曼编码...

2020-07-27 17:32:36 1607

原创 C++优先级队列解析

C++优先级队列解析优先级队列:是零个或多个元素的集合,优先级队列中每一个元素都有一个优先级,元素的先后的出队顺序是由优先级的高低决定的。优先级高的先出队,优先级低的后出队。优先级队列的主要特点:从一个集合中能够快速的查找到和删除最大值和最小值的元素。1.入队解释图:2.出队解释图:3.代码:PriorityQueue.h#pragma once#ifndef MYPRIORITYQUEUE_H#define MYPRIORITYQUEUE_H#include<iostre

2020-07-27 16:54:26 895

原创 sizeof()和strlen()

sizeof()和strlen()sizeof()是计算字符串的长度,strlen()是计算有效字符串的长度,即‘\0’之前的字符数。例如1:char str2[] = "abcde";printf("%d\n", sizeof(str2));printf("%d\n", strlen(str2));结果:65字符数组例如2:char str1[] = { 'a','b','c','d','e','\0','f' };printf("%d\n", sizeof(str1));

2020-07-25 21:52:04 138

原创 指针与字符串常量

指针与字符串常量选择为真的表达式:char str1[] = “abc”;char str2[] = “abc”;const char str3[] = “abc”;const char str4[] = “abc”;const char *str5 = “abc”;const char *str6 = “abc”;char *str7 = “abc”;char *str8 = “abc”;A、str1 == str2B、str3 == str4C、str5 =

2020-07-25 18:04:07 4349 2

原创 字符串和数组和矩阵笔记

字符串和数组字符串字符串是以‘\0’为结束符;sizeof()和strlen()的不同sizeof()表示的大小包括‘\0’;而strlen()表示的大小不包括‘\0’,只计算‘\0’前面元素的大小 char str[] = "ABCDEFG"; int len=strlen(str); int lens=sizeof(str); printf("%d\n", len); printf("%d\n", lens);输出结果为:78当字符串空间定义了大小时: cha

2020-07-23 11:16:52 281

原创 指针与数组关系笔记

指针与数组指针初始化时注意事项1.不能使用未经赋值的指针变量进行间接引用int *p;*p=100; /*指针变量P未经赋值*/2.不能通过指定具体地址的方式对内存单元进行间接引用int *p;p=200; /*不能直接指定内存单元的地址*/3.两个类型不同的指针间,不能直接赋值int a,*p;float x,*q;p=&x;q=&a; /*指针的类型不同,不能直接赋值*/指针与一维数组1.如

2020-07-23 10:32:08 135

原创 C++中字符类型的转化

C++中字符类型的转化int转换成stringⅠ、to_string函数c++11标准增加了全局函数std::to_string:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (un

2020-07-21 17:52:02 259

原创 static和const关键字的作用、c++中四种cast转换、C/C++ 中指针和引用的区别

static关键字至少有下列n个作用:全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。局部静态变量在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。内存中的位置:静态存储区初始化:未经初始化的全局静态变量

2020-07-21 17:35:30 253

原创 数据结构—队列

数据结构—队列队列是一种只允许在表的一端插入,在另一端删除,操作受限的线性表。具有先进先出的特点。下图为队列的入队和出队的图释:队列分为:顺序队列和链式队列顺序队列:1.定义队列类template<class T>class seqqueue{public: seqqueue(); void push_queue(T value); void pop_queue(); T front_queue(); T back_queue(); int getsize();

2020-07-15 22:42:41 121

原创 数据结构——栈的应用

数据结构——栈的应用1.就近匹配规则如下:如果是左括号,则入栈;如果是右括号,若栈顶元素是其对应的左括号,则退栈,若不是对应的左括号,则结论为括号不匹配;当表达式结束后,若栈为空,则表明表达式中括号匹配;否则表明表达式中括号不匹配。#include"linkstrack.cpp"#include<string>int match(string &str ){ LinkStrack<char> ls; for (int i = 0; i < st

2020-07-15 22:16:39 381

原创 数据结构——栈

数据结构——栈栈—是只允许在表的一端进行插入、删除操作的线性表,具有先进后出的特点。最先插入的最后删除、最晚插入的最先删除。下图为:栈的入栈和出栈的图解栈分为两种,分为顺序栈和链栈顺序栈顺序栈:栈中的元素用一个一维数组来存储。1.定义顺序栈类template<class T>class SeqStrack{public: SeqStrack(); void push_seqstrack(T value); T Top_seqstrack(); void pop_se

2020-07-15 21:30:40 141

原创 数据结构——循环链表和企业链表

数据结构——循环链表和企业链表

2020-07-11 10:38:16 131

原创 数据结构——单向链表和双向链表

数据结构——链表

2020-07-10 22:22:44 715

boostdesc_bgm.i,vgg_generated_48.i等文件

boostdesc_bgm.i,vgg_generated_48.i等文件

2020-12-14

职工管理系统.zip

职工管理系统代码设计

2020-04-10

通信录设计程序.zip

用C++写的通讯录程序

2020-04-10

meanshift().zip

Opencv——用均值平移法meanshift做目标追踪

2019-10-24

opencv视频帧.zip

c++ Opencv 对视频帧的读、处理、写源码码

2019-09-07

空空如也

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

TA关注的人

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