自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法之动态规划

以打家劫舍例子开始其实这个题目的意思是:**给你一个数组,拿取不相邻的数组的值,求所有可能拿取的值的最大值。题目分析:就是自己调用自己,一种暴力枚举的方式。所谓暴力是没有经过任何的优化,枚举了所有的情况的方式。记忆化递归开始真正的动态规划之前,先记录下记忆化搜索的这种方式所谓记忆化搜索,就是对于会重复遍历或者重复计算的部分,直接用数组或者其他集合去存起来,这样下一次如果计算到相同的值得时候,就可以免去计算直接拿出这个想要的值了。DP自底向上。将大规模的问题转换为小规模的问题。基本上所有的动态

2022-07-09 11:08:46 134 1

原创 DFS+回溯

回溯就是对一个问题的所有可能结果进行搜索的一种方法,通过深度优先遍历的思想来实现。本质上回溯算法就是一种遍历算法,它会搜索得到一个问题的所有解,时间复杂度很高。对于所有可能的情况,我们一种一种的去尝试(一般按照顺序来枚举,这样保证每一个情况都能搜索到)如果是我们想要的结果就放到结果集中。另外,在满足某些条件的时候可以进行剪枝。一般都是将这种问题转换成一个树形结构来进行分析。既然是树形结构,就要知道1.每个节点中是什么:可以根据节点中的值来判断是否要加index,来表示下一次从哪里开始遍历2.每条路径上

2022-07-07 10:09:25 198

原创 数据结构之堆

优先级队列,又叫堆,是一个完全二叉树,其中每个节点的值总是大于(小于)或者等于子结点的值,所以就有大顶堆和小顶堆。一般树的实现都是用节点连接而成,也即是用指针,但是因为堆是一个完全二叉树,所以使用数组来标识更方便,从数组下标0开始,位置为i的节点其父节点位置一定是(i-1)/2,而它两个子结点的位置一定是2i+1,2i+2。在堆中插入元素,一般是**插入到数组的最后一个位置,**然后开始上浮调整,插入元素之前默认堆已经建好了,我们以大顶堆为例子。删除元素删除元素一般是删除堆顶的元素,可以直接将堆顶元素删

2022-07-06 11:10:37 148

原创 数据结构之链表

链表的详细介绍请参考书本,这里只是根据做题学到的我认为必须要知道的东西做了一次介绍链表:由若干个节点组成的一种在内存空间中非连续非顺序的存储结构。其中结点是由存储数据元素的数据域和存储下一个(上一个)结点地址的指针域组成。因此,链表插入和删除结点都可以达到O(1)的时间复杂度,但是查找一个结点却要遍历整个链表,O(n)的时间复杂度。结点程序表示:链表类型1.单向链表做题一般都是单向链表,所谓单向就是结点中指针域只包含指向其后继结点的指针,如图:相较于单向链表,有一个指向前驱结点的指针,如图所示首

2022-07-05 21:37:44 192

原创 Reactor和Proactor模式

1.如果让一个服务端服务多个客户,可以来了一个客户,服务端就为这个客户发起的连接创建一个线程,但是当来了很多客户,服务端就要创建很多线程,每个客户完成自己的工作就会离开,此时服务器创建的线程就要销毁,这样就会创建然后销毁很多线程,造成资源浪费。2.一个线程对应一个连接方式不可取,那是不是可以想办法让一个线程对应多个连接呢?我们可以先创建一个线程池,来复用线程池里的线程,让线程池里的每个线程都可以对应多个连接。但是这也会有一个问题:一个线程对应一个连接的时候,这个线程一般要去read数据,但是如果当前连接没

2022-07-01 11:18:06 153

原创 【虚函数】

联编:以函数重载为例,C++编译器根据传递给函数的参数和函数名决定具体要使用哪一个函数静态联编:编译器在编译过程中进行的联编,通过对象来调用函数,一定是静态联编。**动态联编:**编译器在运行中完成程序的选择,三个条件:1.必须通过指针来调用 2.指针向上转型 3.调用的虚函数 只要符合这三个条件,就会进行动态联编,也就是虚机制。通过指针或者引用来调用虚函数的话,满足这三个条件就会发生动态绑定。虚函数首先要明白什么是虚函数,函数名称前面加上virtual这个函数就称为虚函数,常用在继承关系里,子类想

2022-06-28 20:23:28 185

原创 CPP之构造函数

C++中的构造函数可以分为4类:默认构造函数、初始化构造函数、拷贝构造函数、移动构造函数。需要注意的是:仅当没有定义任何构造函数的时候,编译器才会提供默认的构造函数,为类定义了构造函数,程序员就必须为他提供默认构造函数。两种创建方式:1.给已有的构造函数所有参数提供默认值2.定义一个没有参数的构造函数。有了有参的构造函数,编译器就不提供默认的构造函数。构造函数默认实现的是值拷贝(浅拷贝)。**用于将其它类型的的变量,隐式转换为本类对象。**下面的转换构造函数,将int类型的r转换为student类型

2022-06-26 12:31:13 1793

原创 【STL-set与map】

set和map都是关联式容器,底层实现都是红黑树,先要了解红黑树的实现,明白了红黑树,可以更好的理解set和map。首先,红黑树插入和删除操作都是在O(logn)时间内完成的首先,一个节点中key和data加一起是value。几个优点,也是set和map要使用rb_tree来实现的原因1.利用平衡二叉树的特性,排列规则有助于search和insert,并保持适度平衡:没有一个节点过深2.提供遍历以及iterators,按照++iter遍历,能够获取排序的装填3.两种insertion:insert

2022-06-25 21:29:13 433

原创 几种特殊的树结构

也叫二叉查找树,二叉排序树,二分法的一个数据结构。特点:1.若它的左子树不为空,则左子树上所有的节点的值全部小于它的根节点的值2.若它的右子树不为空,则右子树上所有结点的值全部大于它的根节点的值3.同时它的左右子树也都是二叉搜索树1.首先要具有二叉搜索树属性2.它是一棵空树或它的左右两个字数的高度差的绝对值不超过13.它的左右两个子树都是一颗平衡二叉树1.满足二叉查找树的性质,其实就是一种特殊的二叉查找树2.根节点一定是黑色,其余每个节点是黑色或者红色3.每个叶子节点(NIL)为黑色,这里指

2022-06-23 21:40:12 303

原创 IP协议简谈

DNS(域名系统):1.是由一个分层的DNS服务器实现的分布式数据库,2,一个使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上,使用53端口实现主机名到IP地址转换的目录服务。通俗的讲,我们更习惯于记住一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如: 167.23.10.2。当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两 种方式。递归解析局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域

2022-06-22 21:48:02 250

原创 【应用层-HTTP】

HTTP:超文本传输协议。**超文本:**字面意思就是超出文本范畴,还可能是图片、文件、视频、程序等数据;传输: 传输即相互传递,就是A可以发送请求到B,B可以应答给A,是双向的,也允许有中转的链接;**协议:**就是要做的事需要遵守的某种约定和规范。非持续链接(短连接):每个请求响应对经过一个单独的TCP连接发送。缺点:1.必须为每个请求的对象建立和维护一个全新的连接,这样一台Web服务器可能同时服务于很多客户的请求,增加Web服务器的负担。2.每个对象都要经过两倍RTT交付时间延迟。**持

2022-06-22 21:38:43 68

原创 【C++This指针】

类中每个成员函数(包括构造函数和析构函数)都有一个this指针,this作为一个隐式参数传递给该成员函数,指向用来调用成员函数的对象。即所有的类方法都将this指针设置为调用它的对象的地址。(this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。...

2022-06-22 20:42:23 196

原创 【CPP内存管理】

在C++中,内存分为5个区。分别是栈区,堆区,自由存储区,全局/静态存储区,常量存储区和代码区。类中数据成员和成员函数的内存分布可以看出,对象a包含的内存包括vptr和两个数据成员占用的内存。先来看一个程序new和delete必须同时出现,如果没有delete就会出现内存泄漏。当作用域结束,p指向的堆对象仍存在,但是指针p本身已经结束了,作用域之外看不到p了。下面说下new和delete的分配内存的机制先调用析构函数将申请的内存中的东西消除,然后再释放指针本身,必须是这个顺序,不然还是会造成

2022-06-19 21:22:10 476

原创 【虚函数】

C++虚函数

2022-06-18 16:35:08 52

原创 树和二叉树知识点总结

数据结构之树和二叉树

2022-06-18 16:20:40 69

原创 【传输层基础TCP/UDP协议】

TCP/UDP相关基础知识

2022-06-18 16:15:22 352

原创 C/C++预编译指令和条件编译指令

常见预编译指令和条件编译项

2022-06-17 09:00:32 271

原创 计算机网络协议分层

网络分层其协议

2022-06-16 11:26:28 92

原创 【操作系统内存管理】

内存管理相关知识

2022-06-15 21:30:49 1368

原创 【操作系统进程线程】

操作系统进程线程相关知识

2022-06-13 22:33:25 210

原创 【Linux操作系统常见问题】

linux操作系统常见问题

2022-06-06 15:31:26 314 1

空空如也

空空如也

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

TA关注的人

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