自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CSDN_dzh的博客

点滴记录

  • 博客(217)
  • 资源 (15)
  • 收藏
  • 关注

原创 C++并发编程实战

该系列文章参考自《CPP Concurrency In Action》。一、C++并发编程入门1.1 并发的概念1.2 第一个并发程序1.3 花式创建线程1.4 线程结束和分离1.5 转移线程所有权1.6 线程数和线程ID...

2020-03-16 12:33:37 594

原创 linux服务器开发杂记目录汇总

该系列是学习linux服务器开发时的一些随手笔记和练习记录。一、linux基础001 linux基础知识命令解析器常用组合建目录结构用户目录软链接和硬链接文件权限文件类型环境变量网络相关命令用户管理FTP服务器搭建(vsftpd)nfs网络共享服务器ssh服务器超级拷贝 scpvim002 linux开发经验gcc动态库和静态库gdb调试Makef...

2019-12-19 21:34:00 211

原创 实战MySQL——LeetCode数据库习题全解

文章目录1. 大的国家解题基础及解答1. 大的国家LeetCode595这里有张 World 表+-----------------+------------+------------+--------------+---------------+| name | continent | area | population | gdp ...

2019-04-23 16:49:04 1707

原创 图文实战linux常见命令

文章目录-短命令、--长命令一、目录操作命令ls 显示目录文件stat比ls更详细cd 切换所在目录/根目录下的常见目录pwd 显示当前所在目录mkdir 建立目录rmdir删除目录二、文件操作命令touch创建空文件,如果文件存在,则修改文件创建时间rm删除more按百分比显示文件内容head显示文件前面的行tail显示文件后面的行ln链接文件cp复制文件或目录mv移动文件或目录三、权限管理长...

2019-04-22 11:50:36 309

原创 排序算法——比较与代码汇总,对数器使用

排序算法效率比较不存在绝对意义上最佳的方法,这些排序方法分别适用于不同的条件下排序方法平均时间复杂度最坏情况下时间复杂度额外空间复杂度稳定性简单选择排序O(N2)O(N2)O(1)不稳定冒泡排序O(N2)O(N2)O(1)稳定直接插入排序O(N2)O(N2)O(1)稳定希尔排序O(Nd)O(N2)O(1)不稳定...

2018-12-17 12:53:01 463

原创 排序算法10——图解基数排序(次位优先法LSD和主位优先法MSD)

基数排序的概念基数排序是桶排序的一种推广。给定N个记录,每个记录的关键字为一整数,取值范围在0到M之间之前提到的桶排序是在N远大于M的情况下使用的。若如果M比N大很多,这时桶排序就需要M个桶,会造成巨大的控件浪费。而以R为基数对关键字进行分解以后,就只需要R个桶就可以了。例如:对于数字826如果根据基数10来分解,可以得到8、2、6三个关键字,其中8是最主位关键字,6是最次...

2018-12-17 12:03:36 5673 1

原创 排序算法9——图解桶排序及其实现

桶排序使用条件如果已知N个关键字的取值范围在0到M-1之间,而M比N小得多。这个时候就适合用桶排序。举个例子:对全校N个学生统计某一门课的成绩,成绩的范围在0到100之间,这个时候就适合用桶排序。额外的条件是它需要已知关键字的范围,并且关键字在此范围内是可列的,且个数不能超过内存空间承受的限度且N一定是远大于M的桶排序效率高的原因桶排序效率比一般的排序算法高:桶排序将为每...

2018-12-16 19:13:22 1313

原创 排序算法8——图解表排序

表排序用于待排元素不是一个简单的整数而已,每一个待排元素都是一个庞大的结构体,包含的元素非常复杂非常多。于是在排序的时候,移动这个结构体的时间是不能忽略不计的。而之前的7种排序算法都需要移动元素,这样移动这些结构体是非常麻烦且耗时的。那么表排序就是在排序的过程中,实际上是不需要移动这些原始数据的,要移动的只是指向它们位置的指针。间接排序:定义一个指针数组作为表(table),注...

2018-12-16 12:49:29 524 1

原创 排序算法7——图解快速排序(两种主元选择方法)以及CUTOFF时间测试

排序算法1——图解冒泡排序及其实现(三种方法,基于模板及函数指针)排序算法2——图解简单选择排序及其实现排序算法3——图解直接插入排序以及折半(二分)插入排序及其实现排序算法4——图解希尔排序及其实现排序算法5——图解堆排序及其实现排序算法6——图解归并排序及其递归与非递归实现基本思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则...

2018-12-14 21:19:28 3420 1

原创 排序算法6——图解归并排序及其递归与非递归实现

基本思想归并排序就是利用归并的思想来实现排序。原理是:假设初始序列有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2(+1)个长度为2(或1)的有序的子序列再两两归并……如此重复,知道得到一个长度为n的有序序列为止这种排序方法称为 2路归并排序归并排序递归方法实现下面看递归的实现,思路是先将数组通过mid拆成两半,首先对左边的子序...

2018-12-14 14:57:33 1413

原创 排序算法5——图解堆排序及其实现

堆的概念和性质堆,是一种特殊的二叉树,每个子结点的值总是小于(或者大于)它的父结点,相应的分为最大堆和最小堆堆,是一个完全二叉树,一般情况下堆排序都是用数组的方式实现这里可以看到,若以0开始编号大顶堆:arr[i] >= arr[2i+1] &&am

2018-12-12 20:43:23 1278

原创 排序算法4——图解希尔排序及其实现

基本思想希尔排序对插入排序进行改进,希望通过每次交换间隔一定距离的元素,达到排序效率上的提升基本原理是:将待排序的一组元素按一定的间隔分为若干个序列,分别进行插入排序。开始时设置的间隔比较大,在每轮排序中将间隔逐步减小,直到间隔为1,也就是最后一步是简单插入排序然后,在5间隔排序的基础上,做3间隔排序和1间隔排序(即直接插入排序)可以看到,较小间隔的排序仍然保持着较大间...

2018-12-11 14:01:48 704

原创 排序算法3——图解直接插入排序以及折半(二分)插入排序及其实现

一、直接插入的基本思想将待排序的一组序列分为已排好序和未排好序的两个部分初始状态时,已排好序序列仅包含第一个元素,未排好序的序列元素为除去第一个以外的n-1个元素然后,将未排好序序列中的元素逐一插入到已排好序的序列中如此往复,经过n-1次插入后,未排序序列中的元素个数变为0,排序完成。如下图所示代码及上下界如图从代码可以看出,空间复杂度上,简单插入排序仅需要常数个额外空间在...

2018-12-10 20:06:05 3883

原创 排序算法2——图解简单选择排序及其实现

基本思想通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录作交换代码和上下界比较过程如下这样,最多经过n-1次交换,就能完成排序操作下面分析简单选择排序的时间复杂度无论最好或最坏的情况下,其比较次数都是一样多的,第i趟需要进行n-i次关键字的比较,总共需要比较∑(n-i)=n(n-1)/2次,i从1到n-1,而对于交换次数来说,当最...

2018-12-10 17:09:29 3197

原创 排序算法1——图解冒泡排序及其实现(三种方法,基于模板及函数指针)

冒泡排序是一种交换排序,基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止一、初级版首先是代码和上下界的确定初级版的思路是:让每一个关键字,都和它后面的每一个关键字作比较,反序就交换。这样,第一位置的关键字在一次循环后一定变成最小值可以看到,初级版的算法存在两个问题:首先,它并不是真正意义上的冒泡排序算法,因为它不是两两相邻做比较的,只是最简单...

2018-12-10 15:48:26 1454

原创 图解平衡二叉树(AVL树)代码实现

平衡二叉树的概念对于二叉树进行查找的时间复杂度是由查找过程中的比较次数来衡量的比较是从根结点到叶节点的路径进行的,取决于树的深度,树深在最好的情况下是O(logN)当二叉树退化成一棵单枝树的情况下,查找的复杂度将是线性的O(N)假定二叉搜索树中每个结点的查找概率都是相同的,就称查找所有结点的比较次数的平均值为“平均查找长度ASL”其中ASL = (∑深度k*该层的结点数)/总的结点...

2018-12-07 20:46:30 1080

原创 C\C++面试知识点总结(超全)

指针和数组在访问内存方面,指针和内存几乎是相同的。不同点是:指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址(可看作是指针常量 ),不能改变其值联合体union当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体union对联合体而言:1)联合体是一个结构;2)它的所有成员相对于基地址的偏移量都为0,即所有成员的首地址都是一样的3)此结构空间要大到...

2018-11-08 10:25:15 4029 1

原创 cs基础学习

文章目录一、golang1、go中的包是什么2、goroutine2.1 什么是goroutine2.2 如何停止goroutine一、golang1、go中的包是什么包是go工作区中包含go源文件或其他包的目录。源文件中每个函数、变量和类型都存储在链接包中。每个go源文件都属于一个包,该包在文件顶部使用下面的命令声明package <package name>可以用import <package name>导入和导出包来重用导出的函数或类型2、goroutine2

2022-03-29 23:46:38 478

原创 nginx1754139893

logs目录下:access.log - 访问日志error.log - 错误日志nginx.pid - nginx进程的pidnginx服务器启停1、nginx中master和worker进程nginx默认多进程的工作方式,其中一个为master进程,其他是worker进程我们作为管理员,和master进程直接交互,只需要通过给master进程发送信号就可以控制nginx获取master进程对应的pid :ps -ef | grep nginx 或者查看nginx.pid文件信号:

2021-07-03 00:07:59 235 1

原创 学会git,看这篇就够了

文章目录一、git 初始化设置一、git 初始化设置在 linux 或 windows 下安装好 git 后,便可进行初始化操作。1、设置用户名和邮箱如果在 windows 下,那么打开 git bashgit config --global user.name '你在GitHub注册的用户名'git config --global user.email '你在GitHub注册的邮箱'2、生成 ssh 公钥ssh-keygen -t rsa -C '你在GitHub注册的邮箱'3.

2020-06-19 17:40:24 484

原创 设计模式14-装饰模式

文章目录一、装饰模式二、例子一、装饰模式装饰模式可以实现功能动态扩展,把要附加的功能分别放在单独的类中,让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地使用装饰功能包装对象二、例子比如一个人,当进入装饰器以后,就变成一个新的对象,这个对象具有以前对象的功能,同时也具有新对象的功能#include <iostream>#include <list>using namespace std;class AbstractHero {public: .

2020-06-16 21:49:02 195

原创 设计模式13-观察者模式

文章目录一、观察者模式二、例子一、观察者模式观察目标的变化导致一系列观察者的变化,用于建立对象和对象之间的依赖关系,一个对象(观察目标)发生改变时将自动通知其他对象(观察者),其他对象作出相应的反应。二、例子观察目标应当有一份观察者的对象,这样才能保证通知到观察者,当发生变化时,调用 update 方法更新观察者的状态。观察目标还应同时可以增加观察者或删除观察者。#include <iostream>#include <list>using namespace.

2020-06-16 21:11:51 157

原创 设计模式12-命令模式

文章目录一、命令模式二、例子一、命令模式命令模式是一种对象行为模式,将一个请求封装成一个对象,进而可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。发送请求的对象只要知道怎么发送请求,而不用知道是如何完成请求的。二、例子在下面的例子中,由于客户端不同请求在服务端的处理方法接口均不一致,因此,需要将这些请求都使用一个接口 AbstractCmd 统一起来,这样,就能将这些请求统一放到服务器中执行。只要来了一个请求,就 new 一个这样的对象放到服务器队列中,.

2020-06-16 20:46:30 178

原创 设计模式11-策略模式

文章目录一、策略模式二、例子一、策略模式定义了一系列封装好的了算法,它们之间可相互替换。二、例子#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;// 抽象武器策略class Weapon_stgy {public: virtual void UseWeapon() = 0;};class.

2020-06-13 16:32:10 147

原创 设计模式10-模板方法模式

文章目录一、模板方法模式二、例子一、模板方法模式模板方法模式是一种代码复用的技术,它定义一个操作中算法的框架,将一些步骤延迟到子类中,使得子类可不改变一个算法的执行顺序结构而重定义该算法的某些步骤。二、例子例如,泡茶和泡咖啡的步骤是一样的,因此可以在抽象类中将步骤定好,到子类再实现即可#include <iostream>#include <string>#include <vector>#include <algorithm>usin.

2020-06-13 16:16:53 157

原创 设计模式09-适配器模式

文章目录一、适配器模式二、例子一、适配器模式将一个类的接口转换成客户希望的另一个接口,使得原本因接口不兼容而不能一起工作的 那些类可以一起工作。比如 stl 中一个算法需要两个参数,但调用时需要一个参数,中间就需要一个适配器去把两个参数的算法适配成一个参数的。二、例子...

2020-06-12 21:59:38 145

原创 设计模式08-外观模式

文章目录一、外观模式二、例子一、外观模式外观模式是一组具有类似功能的类群,提供一个一致的简单的界面,这个界面就叫外观。在下面的例子中,外观模式将具有类似功能的子系统抽象到同一个接口来管理,外界仅需要通过这个接口来和子系统进行交互,而不是直接和子系统来交互#include <iostream>#include <string>using namespace std;class Sys1 {public: void run() { cout <<.

2020-06-12 21:41:03 148

原创 设计模式07-代理模式

文章目录一、代理模式一、代理模式代理模式:为其他对象提供一种方式控制这个对象的访问,起到中介的作用。

2020-06-12 18:18:30 195

原创 设计模式06-单例模式C++实现

文章目录一、单例模式一、单例模式只能有一个类的对象,例如windows中的任务管理器,OS只需要维护这样一个对象即可,不需要每次都创建。使用单例模式来限制某个类创建实例对象的个数为1。C++单例模式饿汉和懒汉...

2020-06-12 15:58:48 167

原创 设计模式05-工厂模式

文章目录一、简单工厂模式二、工厂方法模式三、抽象工厂模式一、简单工厂模式创建一个工厂类(水果工厂),根据我们的传入参数来决定生产何种类型的产品(水果),这样,就不用我们自己去new了,不用关心对象是怎么创建的,我们只需要对象适合工厂类负责创建的对象比较少的情况#include <iostream>using namespace std;class AbstractFruit {public: virtual void Name() = 0;};class App.

2020-06-11 22:37:55 162

原创 设计模式04-依赖倒转原则

文章目录传统的面向过程的程序设计使高层次的模块自顶向下逐级依赖于低层次的模块,中间层和高层模块之间存在较高的耦合度,这样如果其中一个模块发生变化,整个业务就会受影响。例如下面的例子#include <iostream>using namespace std;// 高层class BankWorker {public: void saveService() { cout << "save service\n"; } void payService() {.

2020-06-11 20:35:10 128

原创 设计模式03-合成复用原则

文章目录一、合成复用原则一、合成复用原则合成复用原则:继承和组合,优先使用组合

2020-06-11 18:38:53 156

原创 设计模式02-迪米特原则

文章目录一、迪米特原则概念二、例子一、迪米特原则概念迪米特原则:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解举个例子,你要租房,如果深圳有很多房子,你一个一个地去看,那么就会很累,从程序的角度上看耦合性会很强。反之,如果通过中介,告诉他你的要求,他会帮你筛选出符合你要求的房子,这样你不用知道各种房子的信息就能获得你想要的结果。二、例子...

2020-06-11 16:20:36 206

原创 设计模式01-减少修改代码的开闭原则

文章目录一、开闭原则概念二、例子一、开闭原则概念开闭原则:对扩展开放,对修改关闭增加功能应该是增加代码而不应该是修改代码二、例子#include <iostream>#include <string>using namespace std;class Calculator {public: Calculator(int a, int b, string how2operator) { this->_a = a; this->_b =.

2020-06-11 16:03:16 204

原创 C++设计模式

文章目录01

2020-06-11 15:35:52 160

原创 超全的C++11新特性汇总及实验

文章目录autodecltypeauto 和 decltype 配合左值、左值引用右值、右值引用深浅拷贝和移动语义完美转发可调用对象包装器 std::functionstd::bindlambda 表达式using本文参考自该处,并加上自己的练习auto编译期推导出变量的类型注意事项:1、使用 auto 时要马上初始化2、auto 不能用作函数的参数3、在不声明为引用或指针时,auto 会忽略等号右边的引用类型和 const、volatile 属性4、在声明为引用或指针时,a.

2020-05-19 23:14:01 498

转载 基于UDP的简单聊天室

聊天室功能: 1.其他用户上线通知。 2.其他用户下线通知。 3.获取在线列表。 4.用户之间点对点聊天。实现思想: 1.服务器端主要是解析客户端发送过来的各种指令,并作出相应的处理和回应。 2.客户端采用select管理套接口IO和标准输入IO,当有事件发生,做出相应的处理。 3.采用链表存储每个客户端的网络信息,登录对应聊表...

2020-05-08 10:56:33 352

转载 select模型跨平台服务端/客户端

最近跟着刘远东老师的《C++百万并发网络通信引擎架...

2020-05-08 10:44:50 418

原创 epoll反应堆代码

#include <stdio.h>#include <sys/socket.h>#include <sys/epoll.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include &l...

2020-04-01 23:08:58 225

原创 4.2 常见的 atomic

文章目录std::atomic_flagstd::atomic_flag 实现自旋互斥锁std::atomic< bool >std::atomic_flagstd::atomic_flag 是最简单的 bool 原子类型。std::atomic_flag 类型的对象必须被 ATOMIC_FLAG_INIT 初始化,初始化为 “清除” 状态,此时互斥量处于解锁状态。不能...

2020-03-23 17:25:03 258

OpenCV3 + contrib + ippicv

OpenCV3 + contrib + ippicv OpenCV3 + contrib + ippicv

2018-11-12

数据库系统概念(原书第六版)——原整版带书签

数据库系统概念(原书第六版)——原整版带书签

2018-11-12

图解HTTP\TCPIP

图解HTTP,图解TCPIP

2018-11-12

effective_C++、STL源码剖析(中文完整版)、深度探索C++对象模型

effective_C++、STL源码剖析(中文完整版)、深度探索C++对象模型 effective_C++、STL源码剖析(中文完整版)、深度探索C++对象模型

2018-11-12

directshow

directshow+opencv双摄像头directshow+opencv双摄像头

2018-07-22

opencv相机标定程序

opencv相机标定opencv相机标定opencv相机标定opencv相机标定

2018-05-04

opencv调用摄像头并截图保存

opencv调用摄像头并截图保存opencv调用摄像头并截图保存opencv调用摄像头并截图保存

2018-05-04

cmake-3.4.0-rc3-win32-x86.exe

cmake-3.4.0-rc3-win32-x86.exe cmake-3.4.0-rc3-win32-x86.exe ) cmake-3.4.0-rc3-win32-x86.exe ) cmake-3.4.0-rc3-win32-x86.exe )

2018-05-03

基于opencv的SVM分类,三类

基于opencv的SVM分类,三类。基于opencv的SVM分类,三类。

2018-01-05

利用面积或周长进行轮廓筛选

opencv利用面积或周长进行轮廓筛选利用面积或周长进行轮廓筛选

2017-12-03

opencv_findcontours函数测试

opencv_findcontours函数父子,层级测试,opencv_findcontours函数父子,层级测试

2017-12-03

opencv3.1 ubuntu下安装包

opencv3.1 ubuntu下安装包opencv3.1 ubuntu下安装包opencv3.1 ubuntu下安装包

2017-12-02

ubuntu下opencv安装包

linux下opencv安装包安装包安装包安装包安装包安装包安装包安装包

2017-12-02

32x32的icon图标

32x32的icon图标,用于MFC按钮美化,包含灯泡\方向好多等等icon图标

2017-12-01

CButtonST类 按钮美化需要的BCMenu和BtnST

CButtonST类 按钮美化需要的BCMenu和BtnST,按钮美化需要的BCMenu和BtnST,帮助你美化你的MFC程序

2017-12-01

空空如也

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

TA关注的人

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