自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个金牛座 的程序员

生活中那些闪闪发光的东西,美好精致的人生,不会是一蹴而就的,都要靠自己一步步走出来!

  • 博客(85)
  • 收藏
  • 关注

转载 Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法【实测有效】

关于/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.28’ not found`出现报错,建议不要使用源码包去编译并升级。在下文有分享一个使用官方的Debian软件包去升级使用的方法。仅供参考!

2023-03-22 10:21:56 9437 2

原创 目标检测算法综述

一、目标检测 所谓目标检测就是讲图片或视频中的目标与其他不感兴趣的事务进行区分,从而判断目标是否存在二、目标检测的发展 注:2013年以前的主要是传统的目标检测算法,2013年以后主要是基于深度学习的目标检测算法。三、传统目标检测算法1、Viola-Jones分类器算法:算法要点:1.1、使用类Haar输入特征:...

2020-03-05 16:33:00 1258

原创 Mysql知识点总结(一)

概念及特点:Mysql数据库是一种关系型数据库,将数据保存在不同的表中,而不是将所有数据放在一个仓库内,增加了速度、提高了灵活性字符集(5.0版本以上):>>1、一个汉字占多少长度与编码有关:UTF-8:一个汉字=3个字节GBK:一个汉字=2个字节>>2、varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字...

2019-08-27 21:58:48 708

原创 基于Linux/C/C+的网络爬虫系统

基于Linux/C/C++的网络爬虫

2019-08-21 11:39:33 1143

原创 C++类型转换

要提到C++的类型转换那就不得不先回顾一下C语言中的类型转换,C语言中的类型转换分为隐式类型转换和显示类型转换,具体代码体现如下:// C语言中的类型转换:可读性差,一旦出错难以追踪错误类型void Test1() { int a = 10; double b = 3.14; a = b; // 在C语言中d会被隐式转为int型,虽然编译会通过,但是会有警告:精度丢失 ...

2019-08-16 21:18:58 164

原创 在线点餐系统设计文档

开发环境:centos7系统 编程语言:服务器使用C/C++ 前端使用HTML/CSS/JavaScript 项目功能:顾客通过扫描二维码进入顾客客户端进行在线点餐,提交订单后,订单通过服务器传给商家客户端进行订单处理,另外商家可以通过商家客户端进行菜品管理和订单管理 模块划分:服务器:负责将商家客户端和顾客客户端提交的数据交给数据库处理,然后再将数据库处理后的数据交给客户端数据库...

2019-08-14 11:47:01 2521

原创 红黑树浅析

1、红黑树概念:红黑树是一种特殊的二叉搜索树,它在二叉搜索树的基础上对每一个节点进行着色,通过对着色的限制来保证树的近似平衡。红黑树的搜索最坏时间为O(logN),2、红黑树性质:①每个节点非黑即红②根结点比为红③每条路径的黑节点树相同(保证最长路径不会比最短路径长两倍)④两个红节点不能连续⑤每个叶子节点(空节点)为黑色3、红黑树结构:4、红黑树的插入步骤...

2019-08-10 22:53:48 157

原创 AVL树的特性分析及插入中旋转的实现

在上一篇中我们谈到了二叉搜索树,虽然锁二叉搜索树能够大大提高查找效率,但是如果数据有效或者当二叉搜索树退化为单支树时,此时查找效率就会根树的高度成正比,导致效率极低,显然这种情况不是我们所期待的。因此就有了一种新的策略,就是在插入或删除元素后,如果能保证二叉搜索树的左右高度差的绝对值不超过1,就可以降低树的高度,从而保证二叉搜索树的查找效率保持在O(logN),我们把具有这种结构的树就称为AVl树...

2019-08-09 11:52:04 152

原创 二叉搜索树模拟实现及性能分析

在上一篇文章中我们已经将二叉搜索树的基本性质看了,本片文章将介绍二叉树的模拟实现与性能分析,下面给出二叉树的模拟实现:#include <iostream>using namespace std;// 定义二叉搜索树结点template<class T>struct BSTNode { BSTNode(const T& data = T())...

2019-08-09 10:34:52 250

原创 STL之树形结构关联容器

1、关联式容器:关联式容器相对于序列式容器来说,序列式容器存储的是元素本身,而关联式容器存储的是<key, valuse>这样的键值对,因此相对于序列式容器来说检索速度就更快。2、树形关联式容器:本文看的是树形结构的关联容器,主要有map, multimap, set, multiset;下面为四种容器的对比以及常见操作的使用:容器名称 底层结构 查询元素效率...

2019-08-02 12:15:06 833

原创 线程安全的单例模式的几种实现方法

单例模式分为饿汉模式:在单例类定义时就会进行实例化* 和懒汉模式:只要到需要用到类的时候才会进行实例化** 特点:访问量较少时使用懒汉模式,以时间换空间;访问量较大时* 或者访问的线程较多时需要使用饿汉模式,以空间换时间** 实现单例模式的key point:* 1、线程安全* 2、构造函数声明为private 或者 protected防止被外部函数实例化*...

2019-08-01 16:02:54 397

原创 C++智能指针总结及模拟实现

1、为什么需要智能指针?智能指针是一种预防型的内存泄漏的解决方案。智能指针在C++没 有垃圾回收器环境下,可以很好的解决异常安全等带来的内存泄漏问题。2、什么是智能指针?简单的来说就是设计一个类,让它能够具有指针的行为(重载 * 和 -> ),同时能够自主管理资源的申请与释放(体现在构造函数与析构函数);以下为一个简单的只能指针的代码实现:template<cla...

2019-07-17 20:03:18 335

原创 C++中的异常处理

1、C语言中处理错误的方式:①assert,当程序发生错误时终止程序,如内存错误等②打印错误状态信息,perro、errno③C标准库中的setjmp和longjmp的组合使用首先设置一个跳转点(setjmp() 函数可以实现这一功能),然后在其后的代码中任意地方调用 longjmp() 跳转回这个跳转点上,以此来实现当发生异常时,转到处理异常的程序上,在其后的介绍中将介绍如何实现。...

2019-07-13 21:35:49 374

原创 Linux下的五中典型IO详解(下)

IO多路复用技术原理:对大量描述符进行事件(可读/可写/异常)监控作用:替进程监控大量描述符,告诉进程什么时候发生了什么事件,进程可以轮询针对发生了某个相应的事件描述符进行相应的操作。适用场景:对大量描述符进行监控,但是同一时间只有少数描述符活跃的场景IO多路转接(服务端高并发)三种模型:select模型函数原型:int select(int nfds, fd_set *readfd...

2019-07-12 22:20:57 154

原创 Linux下的五中典型IO详解(上)

IO模型的引出:由于进程无法对IO设备直接进行操作,所以需要发起系统调用来完成IO操作,内核会为每一个设备维护一个缓冲区用于进行数据拷贝。阻塞IO:进程为了完成IO操作发起系统调用,若当前不具备IO操作条件,则进程一直等待直到具备操作条件,操作完成之后返回调用非阻塞IO:进程为了完成IO操作发起系统调用,若当前不具备操作条件则立即保存返回,然后进程去进行其它操作,过一段之间之后回来轮询判断条...

2019-07-12 16:58:59 181

原创 TCP/IP四层模型——网络层与链路层详解

网络层:负责地址管理与路由转换IP协议首部校验和的计算:将首部中每两个字节作为一个数,用反码运算对这些数字求和,该和的反码存放在检验和字段,被称为因特网检验和。如果数据报首部中携带的检验和与计算所得不一致,则认为检测出现差错。地址划分:相邻的网络不能使用相同的网络号子网掩码的作用:①由连续的二进制1组成的数字与IP相与得到网络号②自身取反网络中主机号返回两种特殊的IP主机...

2019-07-11 14:18:14 655

转载 数据链路层详解

一、定义借助于物理层,为网络层提供服务。定义一个合适的传输差错率。对传输的数据流进行管理,以免快速的发送淹没了慢速的接收端。传输单元是帧。二、功能任务:把网络层的数据组合成帧,加上一定的校验,交给物理层用比特流传输到目的计算机。为网络层提供了一条可靠的数据链路。相连:物理介质 的连接。当采用多路复用技术时,也可以是信道的连接,特征是传输的数据是顺序的。物理链路:无源的点到点的物理...

2019-07-11 13:42:31 439

原创 C++三大特性之继承

1、继承的概念及定义>>继承是面向对象程序设计语言实现代码复用的一种手段,它允许你定义一个新类(派生类)对基类进行功能的拓展,类似于人类的遗传,派生类拥有基类的一部分(或全部)特性,也拥有自己的特性。继承的定义格式:class 派生类名称 : 继承权限(public、protected、private) 基类名称>>单继承:class <派生类名&gt...

2019-07-10 18:40:59 230

原创 C++三大特性之多态

1、多态的概念①多态的字面意思就是同种事物的不同形态②多态的分类:静态绑定(编译期间确定的多态)和动态绑定(程序运行时确定的多态)③动态多态的实现条件:前提必须是在继承体系中>>基类中必须包含有虚函数,在派生类中必须对基类中的虚函数进行重写>> 在调用虚函数必须通过基类的指针或引用④表现形式>>在程序运行时基类的指针或引用指向不同的类...

2019-07-09 21:34:52 199

原创 TCP/IP四层模型——应用层与传输层详解

应用层:负责应用程序之间的数据交流http协议:超文本传输协议url:统一资源定位符,在网络中唯一定义一份资源。完整url组成:协议方案名称://用户名:密码@服务器地址:端口号/请求资源路径?查询字符串#片段标识符url编码:在浏览器进行地址解析时,将用户提交给服务器的查询字符串中的特殊符号每一个字节按照十六进制进行转义,并且为了表示这个字符是经过url编码后的字符需要在转换后的字符前加...

2019-07-08 17:48:27 6612

原创 网络基础1

应用层协议http协议:超文本传输协议url:统一资源定位符,在网络中唯一定义一份资源。完整url组成:协议方案名称://用户信息@服务器地址:端口号/请求资源路径?查询字符串#片段标识符传输层协议:网络层协议:链路层协议:...

2019-07-07 21:24:36 136

原创 C++初阶思维导图

2019-07-02 17:20:41 310

转载 史上最全VS2013常用快捷键

VS2013常用快捷键:1.回到上一个光标位置/前进到下一个光标位置1)回到上一个光标位置:使用组合键“Ctrl+-”;2)前进到下一个光标位置:“Ctrl+Shift+-”。2.复制/剪切/删除整行代码1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完成复制操作,而无需选择整行。2)如果你想剪切一整行代码,只需将光标移至该行,再...

2019-06-04 20:10:37 284

原创 生产者消费者模型

生产者消费者模型:一个场景,两种角色(生产者、消费者),三种关系(生产者与消费者同步互斥,生产者与生产者互斥,消费者与消费者互斥)功能:解耦(耦合度:数据之间的依赖度)、支持忙闲不均、支持并发实现:1、实现线程安全的队列,对外提供线程安全的数据入队、出队操作 2、创建线程,分别为生产者与消费者数据入队或数据出队。/********************...

2019-05-31 20:57:24 280

原创 Linux线程总结

1、线程的概念:传统操作系统下,进程是一个pcb,操作系统通过控制pcb控制程序的运行,并没有线程概念;但是在Linux下,线程是通过pcb来模拟实现的,所以此时可以说线程是一个pcb,又称为轻量级进程,此时进程是线程组。进程是资源分配的基本单位,线程是CPU调度的基本单位2、多线程与多进程任务处理优缺点对比注:对主程序稳定性要求更高时优先选择多线程任务处理方式。3、线程进程的共享与独...

2019-05-31 20:18:13 296

原创 Linux进程的总结

1、信号概念:通知进程发生了某件事情,打断当前操作(属于软中断),去处理这个事件 信号种类很多,每一个信号代表一个事件软中断:由软件产生的中断操作/模拟硬中断的一种方式/由操作系统中一些命令产生的中断信号硬中断:由外部硬件产生的中断操作软中断与硬中断的区别:软中断是执行中断指令产生的,而硬中断是由外设引发的。硬中断的中断号是由中断控制器提供的,软中断的中断号由指...

2019-05-26 22:40:29 167

转载 VIM常用命令大全

1.vim#在命令行中输入vim,进入vim编辑器2.i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行其它命令使用4.:r filename#读入一个文件内容,并写入到当前编辑器中5.:w newfilename#将该编辑器中的内容写入到一个新文件中6.:w#在编辑的过程中保存文件,相当于...

2019-05-19 14:23:58 155

原创 C++基础知识002【类和对象的定义和使用】

1、类的定义:C++中用户自定义的一种数据类型,与C语言中的结构体相比,类能够更好的反应被描述的类型,勒种既可以包含成员变量,也可以包含成员函数。2、类的声明形式:class class_name {public: 公有成员变量或者成员函数private: 私有成员变量或者成员函数protected: 受保护的成员变量或者成员函数};3、类声明的内容:...

2019-05-16 21:42:28 425 1

转载 操作系统中各种重要概念的详解

简介 进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。临界资源 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一...

2019-05-16 15:26:05 1541

原创 Linux进程间通信

1、pipe/msgqueue/sems/shm相关代码的实现及总结管道:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h> // 用于创建匿名管道int main(){ int fds[2]; char ...

2019-05-16 15:20:33 201

原创 C++基础知识001

1、C++简介C++是在C语言的基础上进一步优化而来的,它既可以进行C语 言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。2、命名空间:用来避免标识符命名污染与命名重复的。命名空间的定义及使用// 命名空间:用来避免C语言中的命名冲突// :: 作用域限定符// 命名空间的定义// 命名空间的使用:// N::a...

2019-05-09 21:44:09 243

原创 Linux基础IO

1、文件相关系统调用接口open/read/write/close的实现,fd与FILE结构体 的纵向对比1.1、open函数介绍:用于打开一个指定文件1.1.2、函数原型:int open(const char *pathname, int flags); 1.1.3、参数及返回值说明:pathname 文件名 * flags ...

2019-04-29 22:11:50 149

原创 数据结构与算法初阶思维导图

数据结构初阶相关知识点总结:

2019-04-25 17:19:57 437

原创 minishell的实现

minishell的实现步骤: 1、获取标准输入,解析字符串得到命令+运行参数 2、判断命令是否内建 3、创建子进程,让子进程“背锅”(进行程序替换) 4、父进程,进行进程等待 重定向:改变文件描述符所对应的描述信息(改变了数据流行,数据从原本要写入的文件流向了...

2019-04-25 12:34:03 591 1

原创 Linux进程

1、进程的概念:简单来说就是进行中的程序,操作系统通过PCB来控制一个进程的运行,这个PCB也叫进程描述符,描述了一个运行中的程序,在操作系统角度,进程就是PCB。 一个PCB相当于一个内存指针,存储着指定程序的位置信息 CPU的分时机制:切换调度进程,每个进程只运行很短的时间,这个时间被称为时间片 进程标识符...

2019-04-25 12:00:58 140

转载 Linux——系统、命令、shell、编译

操作系统的功能:  存储管理、进程和处理机管理、文件管理、设备管理、用户接口[mengqc@localhost ~]$ 是shell主提示符。其中“mengqc”表示当前用户名 “localhost”是默认的主机名 “~” 表示默认用户主目录 “$ ” 表示当前用户是普通用户。对于超级用户来说,该位置出现的标示是“# ”。linux操作系统常用命令ls:查看当前目录下...

2019-04-23 20:27:49 334

转载 数据结构八大算法详细总结及实现

八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。常见的八大排序算法,他们之间关系如下:排序算法.png他们的性能比较:性能比较.png下面,利用Python分别将他们进行实现。直接插入排序算法思想:直接插入排序.gif直接插入排序的核心思想就是:将数组中的所...

2019-04-23 16:04:33 304

原创 数据结构之八大排序总结

1、排序的概念:排序就是将一组数据按照一定的顺序,递增或递减排列起来。2、排序的稳定性:对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。3、内部排序与外部排序:内部排序指的是排序时需要将全部数据加载到内存中;外部排序是指所要排序的数据太大了不能同时在内存中进行。4、八大排序:插入排序、希尔排序、选择排序、快速排序、冒泡排序、堆排序、归并排序、计数排...

2019-04-23 15:59:31 8568 2

原创 Linux常用工具总结

1、VIM介绍及配置 VIM是Linux下一款非常强大的字符界面编辑器,它可以通过安装一系列的插件从而配置成为一款可以和IDE相媲美的编辑器,它可以通过以下命令来实现安装: yum install VIM使用最最原始的VIM虽然能够完成代码的编辑但是效率总归是很低,所以我们就需要将其配置成为下面这种高逼格的界面这是通过vimplus(vim的超级安装程序)完成的,...

2019-04-19 19:48:26 167

原创 数据结构之堆相关操作

**1、堆的概念:**堆是一种特殊的完全二叉树,下面所示的就是一个最大堆,它的每一个父节点都大于其子节点,还有最小堆,它的每一个父节点都小于它的所有子节点。堆的特性:a)、堆中某个节点的值总是不大于或不小于其父节点的值;b)、堆总是一棵完全二叉树。2、数据结构中堆与内存堆区的区别:1)数据结构中的堆*:**是一种特殊的完全二叉树,堆是一种经过排序的树形数据结构,每个结点都有一个值,存取...

2019-04-19 16:32:56 120

空空如也

空空如也

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

TA关注的人

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