自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git的基本使用总结

Git的基本使用本地仓库环境:Centos (windos下安装git后,打开gitbash类似)1.创建本地仓库。在要创建的目录下git init //此时会多出一个文件夹.git2.把文件添加到版本库中git add .git add 具体文件名3.提交到本地仓库 git commit -m "注释"远程仓库1.github上创建仓库2.将本地的ssh添加到githubssh-keygen -t rsa –C “[email protected]“ //创建完成

2020-12-30 20:42:54 169 1

原创 页面置换算法

页表如何将虚拟地址转换为物理地址分页内存管理和分段式内存管理分段内存管理内存地址的构成:段起始地址+段内偏移段表—有很多的段表项(物理段的起始地址)通过地址中的段号去段表中找到段表项,通过段表项中的物理段起始地址加上地址中的段内偏移获取到物理地址分页内存管理分页式内存管理:内存地址的构成:页号+页内偏移页表—有很多页表项通过地址中的页号去页表中找到页表项,通过页表项中的物理页号加上页内偏移获取到物理地段页式内存管理:内存地址:段号+段内页号+页内偏移段表项中又段内页表起始地址

2020-07-06 11:32:03 1079

原创 二叉树算法题

二叉树的前序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: // vector<int> .

2020-06-23 20:56:59 235

原创 WIN10+Darknet自建简单数据集训练YOLOv3识别特定物体

1.在darknet-master\build\darknet\x64 新建yolo-obj.cfg文件(可以直接复制yolov3.cfg,然后重命名为yolo-obj.cfg),然后就是修改这个文件内容了。将batch 改成64 :batch=64将subdivisions 改成8 :subdivisions=8将每个yolo下(共有3处)的classes改成你自己的类的数量 :classes = 1(我的是1类)将每个yolo上面第一个convolutional下的filters改成你自己的大

2020-05-26 17:14:24 1023

原创 网络套接字编程

/*=============================================================== * Copyright (C) . All rights reserved.")* 文件名称: * 创 建 者:zhang* 创建日期:* 描 述:封装UdpSocket类,实例化对象,向外提供简单的socket接口 * ...

2020-05-22 15:32:23 1485

原创 网络协议包格式

ARP协议当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将AR...

2020-04-25 12:49:50 1391 1

原创 C++11

1.介绍2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比C++98/03,C...

2020-04-22 21:53:14 341

原创 多线程

多线程线程概念线程是什么?在一个程序里的一个执行路线就叫做线程(thread)。线程是一个进程内部的控制序列。一切进程至少都有一个执行线程。进程和线程进程是资源竞争的基本单位线程是程序执行的最小单位线程共享进程数据,但也拥有自己的一部分数据:线程ID>一组寄存器>栈>errno>信号屏蔽字>调度优先级进程和线程的关系:线程之间的独有与共享独有:栈,...

2020-03-20 21:06:13 151

原创 高级IO

五种典型IO阻塞IO: 在内核将数据准备好之前, 系统调⽤用会⼀直等待. 所有的套接字, 默认都是阻塞⽅方式.阻塞IO是最常见的IO模型非阻塞IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK错误码.非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询. 这对CPU来说是较⼤大的浪费, 一般只有特定场景下才使用.信号驱动...

2020-03-19 13:03:21 250

原创 STL之关联式容器

1. 关联式容器STL中类如:vector、list、deque、forward_list(C++11)等,因为其底层为线性序列的数据结构,里面存储的是元素本身,被成为序列式容器。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率更高。2. 键值对用来表示具有一一对应关系的一种结构,该结构中一般只包...

2020-03-13 20:31:06 171

原创 设计模式

设计模式一部分大佬将自己的编程经验,通过一些常见的问题或者常见的场景,给出一种解决方案或者一种套路。让后续程序员在遇到相似的问题是可以快速设计自己的代码。常见的设计模式1.创建型模式:用于构建对象,将实现从系统当中分离处理。例如:单例模式2.结构性模式:用于许多不同的对象之间形成大型的对象结构。例如:适配器模式3.行为型模式:例如观察者模式单例模式1.特点:提供了一个唯一的实例,具有...

2020-03-11 18:14:07 165

原创 WIN10+VS2017编译Darknet+YOLOV3简单测试

环境:Win10,CTX1050Ti软件环境:CUDA10.2,cudnn.VS2017,OpenCV <= 3.4.0CUDA10.2检查是否支持 CUDA:https://developer.nvidia.com/cuda-gpusCUDA 的下载地址:https://developer.nvidia.com/cuda-downloads如果需要下载 CUDA 的历史版本,请移...

2020-02-25 11:51:37 3528 1

原创 链表面试题总结

2.链表的逆置typedef struct ListNode ListNode;struct ListNode* reverseList(struct ListNode* head){ if(head == NULL) return NULL; ListNode* PreNode = NULL; ListNode* CurNode = head; L...

2019-11-24 11:16:45 164

原创 智能指针

1.什么需要智能指针?malloc出来的空间,没有进行释放,存在内存泄漏的问题。异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存泄漏。这种问题就叫异常安 全。2.智能指针的使用及原理2.1 RAIIRAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句 柄、网络连接、互斥...

2019-09-11 22:29:43 174

原创 信号

信号(软中断)概念信号用于通知一个事件的发生,会打断当前操作,去处理这个事件;当然有一个前提:必须识别这个信号信号种类有很多,每个都代表不同事件信号是有生命周期:产生->注册->注销->处理kill -l //查看信号列表信号的分类​ 信号总共有62种,有两大类型​ 非可靠信号:1~31号信号​ 可靠信号:34~64号信号信号的产生​ 硬...

2019-08-18 18:17:26 186

原创 Linux进程间通信

进程间通信(IPC)命令 :ipcs 查看系统的进程间通信方式ipcs:-m 查看共享内存​ -s 查看​ -q 消息队列ipcrm -m 0操作系统为用户提供的几种进程间通信方式的学习操作系统为什么要为用户提供进程间通信方式:因为进程的独立性(都操作的是自己虚拟地址空间中的虚拟地址,无法访问别人的地址)因此无法直接通信因为进程将通信的场景不同因此提供了不同的几种进程间...

2019-08-17 15:55:19 130

原创 VS2017编译及使用DuiLib库

最近在使用DuiLib遇到很多问题,在一一解决完后作以总结。1. DuiLib库的下载使用git获取Duilib库:https://github.com/duilib/duilib2.库的编译库源码如下图,用VS2017打开红框文件打开后会提醒重定项目,点确定即可首次打开会报很多错误,如图:仔细观察会发现,BOOL类型是大写就不识别会报错,打开 调试->DuiLib属性,...

2019-08-15 11:01:58 2951

原创 Ubuntu下更改用户名和主机名

Ubuntu下更改用户名和主机名1.更改主机名(1) 修改hostname文件sudo vim /etc/hostname修改里面内容为新的主机名(2) 修改hosts文件sudo vim /etc/hosts修改原来的名字为新的主机名2. 更改用户名(1) 修改sudoer文件(建议在管理员权限下修改,不然无法修改)我们为自己要改的名字提前赋予较高的权限,防止修改下面文...

2019-07-08 10:25:26 10963 4

原创 链式二叉树

#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef char BTDataType;typedef struct BTNode{ struct BTNode* _pLeft; struct BTNode* _pRight; BTDataType _da...

2019-06-20 11:12:15 131

原创 树及二叉树的基本概念

掌握树的基本概念掌握树的相关概念掌握树的表示方式熟悉二叉树的基本概念以及特性5.熟悉完全二叉树以及满二叉树的概念熟悉二叉树的性质:1 2 3 4 5熟悉二叉树的存储方式写博客对本节内容进行总结。...

2019-06-20 11:04:51 335

原创 队列模拟栈

队列模拟栈栈的特点:先进后出队列的特点:先进先出利用栈和队列的特点进行模拟,如下图所示:主要思想:使用两个队列,第一次向其中一个压入数据,每次要出数据将存数据的队列出到另外一个队列中,留下最后一个数据,将这个数据最终出队列,从而实现队列模拟栈。(注:注定有一个队列为空,每次入数据入到有数据的队列中)实现Queue.h文件源码:https://blog.csdn.net/a331683...

2019-06-19 15:18:20 1547

原创 栈模拟队列

栈模拟队列栈的特点:先进后出队列的特点:先进先出利用栈和队列的特点进行模拟,如下图所示:主要思想:使用两个栈,第一次向其中一个压入数据,每次要出数据将存数据的栈出到另外一个栈中,留下最后一个数据,将这个数据最终出栈,从而实现栈模拟队列。(注:注定有一个栈为空,每次入数据入到有数据的栈中)实现#pragma once#include"Queue.h"typedef int Que...

2019-06-19 15:03:40 1380

原创 C++入门知识

1. 什么是C++C++是基于C语言产生的,它既可以进行C语言的过程化编程,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。可以说C++是C的扩充。C++是一门联邦式的语言分为以下部分:1.兼容C的部分2.面向对象部分3.泛型编程 类模板4.STL2. C++关键字C++98有63个关键字C++11有73个关键字新增关键字:alignas、a...

2019-06-14 17:41:05 560

原创 打包静态库、动态库及其使用

1.编写子函数add.c#include<stdio.h>int add(int left,int right){ return left + right;}sub.c#include<stdio.h>int sub(int left,int right){ return left - right;}mul.c#include<...

2019-06-13 17:54:12 609

原创 模拟实现shell

#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<string.h>#include <sys/wait.h>int main(){ while(1) { char *argv[32] = {NULL}; int argc = 0; ch...

2019-06-13 16:46:04 347

原创 文件重定向及shell(重定向)实现

文件重定向定义:将原来从标准输入读取数据的文件操作重新定向为从向其他文件读取数据;将原来要输出到标准输出的内容,从新定向输出到指定的其他文件文件重定向指令< //标准输重定向> //标准输出重定向 清空原先的内容后添加新的内容 >> //标准输出重定向 在原来内容换行下方添加新的内容dup及dup2函数int dup(int o...

2019-06-13 16:45:44 5471

原创 popen与system函数

popen与system在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信。system()、popen()给我们处理了fork、exec、waitpid等一系列的处理流程,让我们只需要关注最后的返回结果(函数的返回值)即可。popen函数函数介绍(1)popen()会调用fork()产生子进程,...

2019-06-13 11:53:48 366

原创 进程创建

进程控制1.进程创建fork—通过复制调用进程创建一个新的子进程:复制(pcb—代码共享,数据独有)—程序计数器(运行位置也一样)返回值:父进程返回子进程的pid,子进程返回0写时拷贝技术vfork—创建子进程,共用同一个虚拟地址空间,为了防止调用栈混乱,因此父进程调用vfork会阻塞,阻塞到子进程退出或者子进程程序替换,开辟内存创建自己的地址空间。 //子进程推出后,父进程才...

2019-06-13 11:21:50 239

原创 僵尸进程与孤儿进程

1、僵尸进程什么是僵尸进程?处于僵死状态的进程-----(危害)会造成资源泄漏僵尸进程的产生原因子进程先于父进程退出,因为要保留退出原因,因此操作系统不能直接释放所有资源,通知父进程获取退出原因,允许操作系统释放资源,但是父进程没有关注这个通知导致子进程退出后无法释放所有资源,处于僵死状态成为僵尸进程。解决方法1.进程等待2.结束父进程模拟实现#include<stdio....

2019-06-13 10:57:27 144

原创 排序

1.插入排序void InsertSort(int *array,int size){ for (int i = 1; i < size; i++) { int key = array[i]; //寻找key的插入位置 int end = i - 1; while(key < array[end]) { array[end + 1] = array[e...

2019-05-31 17:47:31 232

原创 进程概念

进程系统编程阶段:进程概念->进程控制->基础IO->进程间通信->进程信号->多线程1.进程概念:冯诺依曼体系—现代计算机硬件体系结构输入设备:键盘输出设备:显示器存储器:内存运算器:CPU-中央处理器控制器:输入设备—>存储器—>输出设备||CPU所有的硬件都是围绕存储器工作硬件结构决定软件行为:操作系统操作系统的目的:方...

2019-05-27 18:54:42 159

原创 Linux常用工具

Linux常用工具环境:CentOS7工具:yum,vim,GBD,Makefile,yumyum: 软件包管理工具查看软件包 yum list安装软件包 yum install package_name移除软件包 yum remove package_namevim编辑器因为vim中默认不能输用鼠标,因此为了完成能够插入,删除,复制,粘贴各个操作,vim将操作分为了很多模式:...

2019-05-27 16:29:30 290

原创 二叉树大(小)堆以及堆排序

#pragma once#include "assert.h"#include <stdio.h>#include<stdlib.h>typedef int HPDataType;typedef struct Heap{ HPDataType* _array; int _capacity; int _size;};// 用数组初始化堆 void ...

2019-05-25 23:53:32 398

原创 栈和队列的实现

1. 什么是栈,栈有什么特性?栈是一种数据结构,说通俗点有点像是一个大袋子,所以它的特性是先入后出,先放进去的数据要等上面的数据取完后才能输出。每次输出的都是最后入进去的数据,同时不能对栈进行随机中间访问和中间插入和删除。2.栈和栈区的区别是什么?栈区是内存划分的一块空间,是为存储数据的,而栈是一种数据结构格式。3. 为什么将递归程序转化成循环时需要用到栈?因为递归程序的运行过程和栈非常...

2019-05-15 20:26:09 375

原创 新博客开通

github新博客:https://cqolive.github.io/

2019-05-03 13:43:06 99

原创 C语言总结

c语言是一门静态弱类型的语言,在学习过程中一直没有进行总体性和总结和贯通,为传统已学的知识点和为将来复习便利,现总结c语言整体框架如下:...

2019-04-29 22:39:15 148

原创 不带头结点的单向链表实现

一. 什么是链表,链表的分类?链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。分类:2. 熟悉链表带头结点和不带头结点的区别? (后面解释)3. 完成单链表的以下基本操作:...

2019-04-27 17:45:09 1407

原创 动态顺序表

什么是顺序表?顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储静态顺序表一般指的是存储的个数是固定的:struct SeqList{ DataType _array[MAX_CAPACITY]; int _size;}...

2019-04-23 15:48:08 311

原创 c语言文件操作

本文介绍了c语言的文件操作,重点阐释了各个文件操作函数的作用,总结了日常使用文件操作的方法,加深对文件操作的理解。一、文件1.文件分类文件可以分为为文本文件或者二进制文件。数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。2.文件缓冲区ANSIC 标准采用“...

2019-04-21 22:34:25 210

原创 动态内存管理

一、内存管理C语言动态内存内存是非常重要的一部分,首先c的内存存储方式如下图:其中,栈的空间是我们经常使用的,但是通常栈的大小只占内存的1%,因此,当我们使用较大的数据量时,栈就不够用了,而堆的空间几乎占据了整个内存,但是使用时需要程序员自己进行手动申请和释放。还有在设置变量时,类如通讯类存储联系人的数量,如果设置成固定长的数组,在联系人存满时就会出现问题,这时如果可以在程序运行过程中进行扩...

2019-04-21 16:28:46 148

空空如也

空空如也

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

TA关注的人

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