- 博客(20)
- 收藏
- 关注
原创 C++:共享指针(shared_ptr)详解
所有weak_ptr都会变成nullptr。所以,有时会出现weak_ptr还指向着对象,但是该对象已经被销毁了的情况。
2024-08-28 17:17:43
2417
1
原创 C++:独占指针(unique_ptr)的理解
.....模板的参数,第一个为unique_ptr关联的原始指针类型,后者为删除器,默认值为default_delete、删除器是unique_ptr类型的组成部分,可以是普通函数指针、函数对象或者lambda表达式。当需要自定义删除器时,我们需要指定其类型,即__Dp不可省略,我们可以通过decltype来获得其类型。//1.函数指针delete p;//2.函数对象public:delete[] p;//3.lambda表达式});
2024-08-27 14:17:18
839
原创 图--拓扑排序
一种对(DAG)的所有顶点进行线性排序的方法,使得图中任意一点 u 和 v,如果存在有向边<u,v>,则 u 必须在 v 之前出现。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑排序。图的拓扑排序是针对有向无环图来说的,无向图和有向有环图不存在拓扑排序。针对以上有向无环图,1→2→3→4→5是该图的一个拓扑序列,1→3→2→4→5也是该图的拓扑序列。1→2→4→3→5不是该图的拓扑序列,因为4依赖于3.对于一个有向无环图来说,拓扑序列可能不止一个。
2024-08-26 18:22:30
592
原创 计算机网络模型
应用层的作用是。该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如域名系统DNS、支持万维网应用的HTTP协议,电子邮件系统采用的SMTP协议等。
2024-08-26 11:11:42
499
原创 图--最短路径算法(Dijkska)
Dijkstra(迪杰斯特拉)算法是典型的算法,用于计算一个节点到其他所有节点的最短路径。主要特点是。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述: 在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。(单源最短路径)
2024-08-16 11:29:25
597
原创 图--最小生成树(Prim&&Kruskal)
如果无向连通图 G 的一个子图是一棵包含图 G 所有顶点的树,则称该子图为 G 的生成树。一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点,但只有足以构成一棵树的n-1条边。如果生成树中再添加一条边,则必定成环。图的生成树不唯一。从不同的顶点出发进行遍历,可以得到不同的生成树。最小生成树:在无向连通图的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。为了找到无向图的最小生成树,常用的算法有【Prim算法】和【Kruskal算法】。
2024-08-15 16:07:03
571
原创 并查集详解
并查集(Disjoint Set),又称为不相交集合或并查集合并数据结构。它是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。
2024-08-08 18:00:48
843
原创 关于TCP的详解
MSL是报文的最大生存时间。它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。将time_wait时间设定为2MSL,可以保证「被动关闭连接」的一方,能被正确的关闭;按照常理,在网络正常的情况下,四个报文段发送完后,双方就可以关闭连接进入 CLOSED 状态了,但是网络并不总是可靠的,如果客户端发送的 ACK 报文段丢失,服务器在接收不到 ACK 的情况下会一直重发 FIN 报文段,这显然不是我们想要的。
2024-07-10 16:13:57
1807
原创 关于协程的详解
用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责 (包括进程切换)。在用户级线程中,线程的切换可以再用户态下完成,无需操作系统的干预。用户感受得到用户级线程,但是操作系统却意识不到他们的存在。当操作系统不支持线程时,为了研究线程的可行性,研究人员编写了一个线程的函数库,用函数库来实现线程。这个线程库包含了创建线程、终止线程等,开发者可以通过调用这些函数来实现所需的功能。
2024-07-08 14:55:38
972
原创 字典树(Trie)详解
字典树 (Trie),又称单词查找树、前缀树,是一种树形结构,是一种哈希树的变种。在统计、排序和保存大量的字符串(但不仅限于字符串)是具有更小的时间复杂度,因此可以应用于统计、排序和保存大量的字符串,经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
2024-07-02 15:13:03
1252
原创 进程与线程
需要通信的进程将各自的内存映射区和同一个磁盘文件进程映射,磁盘文件数据可以完全或部分加载到进程的内存映射区,当进程A中的内存映射区数据被修改了,数据就会被自动同步到磁盘文件,同时和磁盘文件建立映射关系的其他进程内存映射区中的数据也会和磁盘文件进行数据的实时同步,这个同步机制保障了各个进程之间的数据共享。进程切换开销比较大,线程比较小。进程退出的时候,进程的用户区可以自己释放,但是进程内核区的PCB资源自己无法释放,必须要由父进程来释放子进程的PCB资源,孤儿进程被领养之后,可以避免了系统资源的浪费。
2024-07-01 11:51:59
1224
原创 二叉搜索树
比如:要删除节点20,则18为前驱节点,23为后继节点,采用18的值来覆盖节点20的值,在删除左子树的节点18,将双子节点的情况转换为无子节点或只有一个子节点的情况。3、目标节点存在两个子节点,则查找中序遍历中的目标节点的前驱或后继节点对应的元素来覆盖目标节点的值,在删除前驱节点或者后序节点即可。2、目标节点存在一个子节点,将目标节点的父节点的指针指向目标节点的子节点。target小于当前节点的值,则查询左子树,左子树为空,则在此插入。target大于当前节点的值,则查询右子树,右子树为空,则在此插入。
2024-06-28 17:57:26
471
原创 数据结构之二叉树
每一个节点在保存自身数据的同时,拥有指向左右子树的指针public:int val;每棵树都会有一个根节点rootpublic:private:if (p!
2024-06-27 22:06:32
785
原创 数据结构之链表
双向链表与单链表基本相似,但是最大的区别在于双向链表在节点中除了指向下一节点的next指针外,还有指向前一节点的prev指针,这使得双向链表在可以在任意节点从头尾两个方向进行遍历,是“双向”的。因为数组的内存是连续的,想要访问那个元素,直接从数组的首地址向后偏移就可以访问到了,所以,数组的。但是,向数组插入数据时,待插入位置的元素和他后面的所有元素都需要向后搬移,删除数据时,待删除位置后面的所有元素都需要向前搬移,所以。它是在双向链表的基础上,将双向链表的首节点指向尾节点,尾节点指向首节点。
2024-06-24 23:55:05
579
原创 IP地址和MAC地址
如果ARP缓存表中不存在对应的目标网络,源计算机就会发出ARP请求,ARP请求就是将自己的IP地址和希望得到的MAC地址的目标计算机的IP地址包装成数据包通过广播发出去,当目标计算机接收到这个数据包后会将源IP地址取出来,将自己的MAC地址包装成数据包发送回去。将数据包通过对应的接口转发到对应的网关IP。ARP 协议的全称是 Address Resolution Protocol(地址解析协议),它是一个通过用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。
2024-06-22 16:20:12
1232
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人