自定义博客皮肤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)
  • 收藏
  • 关注

原创 cyber atomic hash map

整体结构cyber atomic hash map是用一个数组存储桶(bucket),桶是一个链表的形式存储值,每一个结点是个entry,哈希冲突的解决方法是链地址法。整体结构 --- entryentry为bucket链表的结点单位,代码:struct Entry { Entry() {} explicit Entry(K key) : key(key) { value_ptr.store(new V(), std::memory_order_release); }

2022-02-09 19:04:19 257 1

原创 计算机网络 --- 应用层

应用层概述应用层对应用程序的通信提供服务。应用层协议定义:应用进程交换的报文类型,请求还是响应 各种报文类型的语法,如报文中的各个字段及其详细描述 字段的语义,即包含在字段中的信息的含义 进程何时,如何发送报文,以及对报文进行响应的规划应用层的功能:文件传输,访问和管理 电子邮件 虚拟终端 查询服务和远程作业登录应用层的重要协议:FTP SMTP,POP3 HTTP DNS网络应用模型客户/服务器模型(Client/Server) P2P模型(Peer -

2021-11-28 10:28:49 1975

原创 计算机网络 --- 传输层TCP协议

TCP协议的特点TCP是面向连接(虚连接)的传输层协议。 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。 TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重。 TCP提供全双工通信。因为TCP提供全双工通信,所以发送接收方分别要准备发送缓存和接收缓存。发送缓存里面为准备发送的数据 & 已发送但尚未收到确认的数据,接收缓存里面为按序到达但尚未被接受应用程序读取的数据 & 不按序到达的数据。TCP面向字节流(流:流入到进程或从进程

2021-11-21 21:21:09 573

原创 计算机网络 --- 传输层UDP协议

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。UDP的主要特点UDP是无连接的,减少开销和发送数据之前的时延。 UDP使用最大努力交付,即不保证可靠交付。 UDP是面向报文的,适合一次性传输少量数据的网络应用。应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整的报文。 UDP没有拥塞控制,适合实时的网络应用。 UDP首部开销小,8B(TCP首部20B)UDP首部格式分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错

2021-11-20 10:55:45 235

原创 计算机网络 --- 传输层

传输层概述传输层是只有主机才有的层次(路由器没有),为应用层提供通信服务,使用网络层的服务传输层的功能传输层提供进程与进程之间的逻辑通信(网络层提供主机之间的逻辑通信)。 复用和分用 传输层对收到的报文进行差错检测 传输层的两种协议传输层的两个协议面向连接的传输控制协议TCP传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认,流量控制,计时器及连接管理等。可靠,面向连接,时延大,

2021-11-20 10:29:43 196

原创 计算机网络 --- 网络层

2311

2021-11-15 01:38:37 2857

原创 计算机网络 --- 网络层重要协议

动态IP分配协议 --- DHCP协议主机如何获得IP地址:静态配置包括IP地址,子网掩码,默认网关动态配置由DHCP服务器来分配DHCP协议:动态主机配置协议DHCP是应用层协议,使用客户、服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。DHCP过程主机广播DHCP发现报文试图找到网络中的..

2021-11-15 01:36:18 1771

原创 计算机网络 --- 网络层IP地址

全世界唯一的32位/4字节标识符,标识路由器主机的接口。IP地址::= {<网络号><主机号>}IP编址的历史阶段分类的IP地址 子网的划分 构成超网(无分类编址方法)分类的IP地址特殊IP地址私有IP地址网络地址转换(NAT)路由器对目的地址是私有IP地址的数据报一律不进行转发。网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NA

2021-11-13 21:04:00 3332 1

原创 计算机网络 --- 网络层IP数据报

IP数据报格式首部版本:IPv4/IPv6 首部长度:单位是4B,最小为5。也就是说如果首部长度的四个bit的出来的数是8,那么首部长度就是8 * 4B = 32B也就是32字节 区分服务:指示期望获得哪种类型的服务 总长度:首部+数据,单位是Byte 生存时间(TTL):IP分组的保质期。经过一个路由器-1,变成0则丢弃。 协议:数据部分的协议首部检验和:只检验首部 源IP地址和目的IP地址:32位 可选字段:0~40B,用来支持排错,测量以及安全等措施。 填充:全0

2021-10-30 12:04:31 592

原创 计算机网络 --- 网络层路由算法与路由协议

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。路由算法的分类静态路由算法(非自适应路由算法) 管理员手工配置路由信息。简便,可靠,在负荷稳定,拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。但是路由更新慢,不适用大型网络。 动态路由算法(自适应路由算法) 路由器间彼此交换信息,按照路由算法优化出路由表项。路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。但是算法复杂,增加网络负担。通常被使用。动态路由算法分类全局性 链路状

2021-10-30 10:29:53 385

原创 计算机网络 --- 数据交换方式

电路交换电话网络就是一种电路交换电路交换的阶段建立连接(呼叫/电路建立) 通信 释放连接电路交换的优点通信时延小 有序传输 没有冲突 实时性强电路交换的缺点建立连接时间长 线路独占,使用效率低 灵活性差 无差错控制能力报文交换报文:源应用发送的信息整体。报文交换的优点无需建立连接 存储转发,动态分配线路 线路可靠性较高 线路利用率较高 多目标服务报文交换的缺点有存储转发时延 报文大小不定,需要网络节点有较大缓存空间分组交换分组:

2021-10-26 19:20:18 403

原创 计算机网络 --- 局域网中的以太网

以太网概述以太网是应用最广泛的局域网,包括标准以太网(10Mbps),快速以太网(1000Mbps),千兆以太网(1000Mbps)和10G以太网,他们都符合IEEE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型和拓展星型。使用CSMA/CD。以太网(Ethernet)指的是由Xerox公司创建并由Xerox,Intel和DEC公司联合开发的基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术。以太网在局域网各种技术

2021-10-23 11:42:37 1637

原创 计算机网络 --- 数据链路层中局域网和广域网

局域网简称LAN(Local Area Network):是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。局域网的特点覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。 使用专门铺设的传输介质(双绞线,同轴电缆)进行联网,数据传输速率高(10Mb/s ~ 10Gb/s)。 通信延迟时间短,误码率低,可靠性较高。 各站为平等关系,共享传输信道。 多采用分布式控制和广播式信道,能进行广播和组播。决定局域网的主要要素网络拓扑,传输介质与介质访问控制方

2021-10-06 10:38:55 1135 1

原创 计算机网络 --- 数据链路层CSMA/CA协议

CSMA/CA全称载波监听多点接入/碰撞避免CSMA/CA(carrier sense multiple access with collision avoidence)CSMA/CA协议与CSMA/CD协议的主要区别在应用场景不同。为什么要有CSMA/CA协议CSMA/CA协议主要应用于无线局域网,CSMA/CD协议主要应用于总线型。CSMA/CD协议无法应用与无线局域网的原因时其无法做到360度全面检测冲突。其次是隐蔽站,当A和C都检测不到信号,认为信道空闲时,同时向B发送数据,就会导致

2021-10-04 17:32:02 2084

原创 计算机网络 --- 数据链路层CSMA/CD协议

CSMA/CD协议全称为载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection)CSMA/CD协议 - CS:CS指的是载波侦听/监听,每一个站点再发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。CSMA/CD协议 - MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络。CSMA/CD协议 - CD:碰撞检测(冲突检测),“边发送边监听”

2021-10-04 16:52:12 1652

原创 计算机网络 --- 数据链路层CSMA协议

阿斯顿

2021-09-25 13:29:42 569

原创 计算机网络 --- 数据链路层aloha协议

纯aloha协议纯aloha协议思想不监听信道,不按时间发送,随机重发。冲突:如果信道上如果只有一对节点在通信,那么可以顺利完成该次通信。方式如果发送完成之前又有一次不同方之间的通信发生,这样就会造成信道冲突。冲突如何检测:这个冲突在通信的各方之间是不知道已经发生了的,但是接收方在收到数据帧之后会对数据帧进行检错,如果发现数据帧错误,就不回复ACK。发送方在一定时间内收不到就判断发生冲突。冲突如何解决:超时后等一随机时间再重传。时隙aloha协议时隙aloha协议的思

2021-09-21 15:42:40 947

原创 计算机网络 --- 数据链路层介质访问控制

引言传输数据使用的两种链路:点对点链路:两个相邻的节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网。 广播式链路:所有主机共享通信介质。应用:早期的总线以太网,无线局域网,常用于局域网。典型拓扑结构:总线型,星型(逻辑总线型)。点对点的链路因为没有第三者,所以不会有通信互相干扰的情况,但是广播式链路,如果通信双方想要通信通常会被互相干扰,所以需要设置一定的访问控制。介质访问控制:介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。介质

2021-09-21 13:51:05 610

原创 计算机网络 --- 数据链路层的功能

数据链路层在物理层提供服务的基础上向网络层提供服务, 其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的目标机网络层, 其主要作用是加强物理层传输原始比特流的功能, 将物理层提供的可能出错的物理链接改造成为逻辑上无差错的数据链路, 使之对网络层表现出一条无差错的链路, 具体如下:为网络层提供服务. 包括无确认无连接服务, 有确认无连接服务, 有确认面向连接服务. 链路管理, 即连接的建立, 维持, 释放(用于面向连接的服务). 组帧 流量控制, 限制发送方 差错控制(帧错/位错)封装成

2021-09-21 13:39:05 1052

原创 计算机网络数据链路层 --- 选择重传协议(SR)

引言GBN协议的弊端累计确认,从而导致某一帧错误后会批量重传。可行的解决方案可以只重传出错的帧,设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。这也就是选择重传协议SR。SR中的滑动窗口如图所示为SR中的发送窗口,假设此时3的确认帧已经收到:可分为以下部分:发送完被确认的:01发送完等待确认的:24目前可发送:5不可发送的:其余的再看接收方(假设此时5号帧没有收到):希望收到还未收到:5号帧收到且确认的:6号帧等待接收的:7

2021-09-19 20:19:51 7576 4

原创 计算机网络数据链路层 --- 后退n帧协议(GBN)

滑动窗口发送窗口发送方维持一组连续的允许发送的帧的序号接收窗口接收方维持一组连续的允许接收帧的序号发送过程如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失,然后发送0号帧,发送1号帧,一直到5号帧:接收方收到了0号帧之后,回复发送方ACK0:发送方收到了ACK0之后,发送窗口往后移动一个,并把6号帧放到链路上:接收方收到1之后,就回复ACK1,发送方收到ACK1之后,窗口移动,7号帧进入发送窗口,并发送2号:...

2021-09-19 16:44:05 3934

原创 计算机网络数据链路层 --- 停止等待协议

停止等待协议的意义除了比特出差错,底层信道还会出现丢包问题。为了实现流量控制。停止等待协议的前提虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。停止等待协议的实际应用情况分为无差错情况&有差错情况:无差错情况没有帧错或者丢帧情况。有差错情况1. 数

2021-09-13 21:15:18 2218

原创 C++内存对齐

内存对齐编译器将程序中的每个“数据单元”安排在字的整数倍的地址指向的内存之中对齐原则结构体变量的首地址能够被其最宽基本类型成员大小与对齐基数中的较小者所整除。 结构体每个成员相对于结构体首地址的偏移量 (offset) 都是该成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在成员之间加上填充字节 (internal padding)。 结构体的总大小为结构体最宽基本类型成员大小与对齐基数中的较小者的整数倍,如有需要编译器会在最末一个成员之后加上填充字节 (trailing pa

2021-09-08 15:48:31 98

原创 C++内存分类

1 栈存放的数据:局部变量,函数参数,返回地址等。默认初始值:无默认初始值,为随机值。分配者:有编译器自动分配。分配大小:在程序开始后分配固定大小的栈空间,如果申请空间大于剩余栈空间,那么分配失败。生长方向:栈空间的生长方向是从高地址向低地址生长,即后申请的变量的地址小于先申请的变量的地址。溢出:如果新申请的变量小于剩余栈空间(因为分配是固定的栈大小),就会溢出。特点:系统自动分配,申请效率高,但程序员无法控制。是否连续:连续。分配过程:

2021-09-08 15:40:42 228

原创 C++内存管理

C++内存分区主要为:堆,栈,全局/静态存储区,常量存储区,代码区。栈:存放函数的局部变量,函数参数,返回地址等,由编译器自动分配和释放。 堆:动态申请的内存空间,就是由malloc分配的内存块(C++中可用new),由程序员控制其分配和释放,如果程序执行结束之后还没有释放,那么操作系统会自动将其回收。 全局/静态存储区:存放全局变量和静态变量,程序结束之后操作系统自动将其释放,在C语言中,该存储区分为.bss段和.data段,未初始化的放在.bss段中,初始化的放在.data段,在C++中不再区分

2021-09-01 16:48:10 57

原创 C++指针注意事项

指针占用空间32位操作系统下指针占用四个字节的空间. 64位下占用8个字节.const 指针组合const修饰指针 --- 常量指针声明const T *p = xxx;特点指针指向可以修改, 但是指针指向的值不可以修改.比如:int a = 10;int b = 20;const int *p = &a;*p = 20; // 非法, 指针指向的值不可以修改p = &b; // 合法

2021-08-20 15:03:28 168

原创 C++数据的一些注意事项

1常量1.1 宏常量通常定义在文件头部语法#define 加常量名加常量值 (不可修改)1.2 const语法const 常量类型 常量名 = 常量值; (不可更改)1.3 const和define的区别编译器处理方式不同对于#define, 编译器会在预处理阶段把所有宏替换成所定义的东西, 并不是给其分配内存.类型和安全检查不同#define仅仅作替换, 不会做类型检查. 而const定义的常量有具体的数据类型, 编译阶段也会进行类型检查.存储方式...

2021-08-20 14:53:46 108

原创 C++的一些关键字

volatile用volatile声明的变量, 是通知编译器, 该变量为时刻变化的变量, 编译时不要对其进行优化, 每次使用该变量的时候必须从其地址进行读取. (以下是个人理解)一般在多线程中的状态变量会被该关键字声明.而标准使用场景是:并行设备的硬件寄存器(如:状态寄存器) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 多线程应用中被几个任务共享的变量externextern在变量或者函数前声明如果在一个变量或者函数声明前加上了ext

2021-08-20 14:49:22 81

原创 排序算法 --- 快速排序

1. 原理首先, 在一个待排序序列中, 以第一个元素为基准, 让序列中所有的基准小的元素在该元素左边, 比其大的元素在其右边. 算法是一种原地算法, 首先把序列里面从基准开始的下一个元素一直到序列尾, 分成左右部分, 左边的都是小的, 右边的都是大的, 最后把基准跟中点交换一下, 再递归对左右部分进行同样的方法排序, 直到所有有序. 那么怎么实现基准后的元素左小右大呢, 可以用双指针的方法.2. 算法实现void quikSort(vector<int>& nums, in

2021-08-06 15:55:33 59

原创 B+树操作方式

1 简介B+树与B树相似, 也存在不同. 可以理解为把所有元素都放在叶子节点, 索引B树化的树.B+树的一些性质:1. B+树的节点分类: 内部节点(索引节点), 叶子节点.如果只有根节点有元素, 那么其可以是内部节点也可以是叶子节点.2. B+树与B树最大的不同是内部节点不保存数据, 只用与索引, 所有数据都放在叶子节点3. 跟B树相同的性质: m阶B+树每个节点(包括叶子节点和内部节点)最多有m-1个关键字4. 节点内部的key同B树相同, 也是从小到大排列, 对于内部节点的每.

2021-08-06 15:04:48 510

原创 多路平衡查找树 --- B(B-)树

1 简介可以用阶数来描述B树, 一棵M阶B树代表着该B树最多有M个孩子节点. 如果M为2, 那么该B树就是一棵二叉搜索树. 一棵M阶B树具有以下性质:1. 每个节点最多有M - 1个关键字.跟普通的树不同, B树的关键字有多个.2. 根节点最少可以只有一个关键字.3. 非根节点至少有k个关键字, 这里的k是指ceil(M / 2) - 1.(这里面的ceil是指大于等于参数的最小整数, 从下面插入操作分析可知, 叶子节点都是由父节点分裂而来, 而分裂的条件就是分裂前节点总数已经达到了M).

2021-07-28 17:29:07 573

原创 排序算法 --- 希尔排序

希尔排序可以看作是对直接插入

2021-07-27 14:56:57 481

原创 哈夫曼树(最优二叉树)

1 用途现在假如有一个需求, 把一个很长的字符串用二进制编码的形式存储, 要尽可能的占用较小空间, 那么应该怎么存储呢. 肯定是要确定每个字母的编码方法, 比如 001是A, 010是B等. 那么要怎么确定每个字符编成什么二进制码从而使得总长度最短? 一个根本思想是, 出现频率高的字母尽量编码短一些, 出现频率少的字符长一些. 这样就需要有一种方法去确定每个字符的二进制编码的方法, 需要构建一棵树 --- 哈夫曼树.2 方法举个例子, 现有一个字符串, 其中所有字符出现频率如下:A: 60,

2021-07-23 16:43:00 426

原创 二叉树的线索化

1 简介深度优先的二叉树遍历方法有先序, 中序和后序. 那么一棵有n个节点的树, 其一共会存储2n个指针, 但是因为只有n - 1条边, 所以只有n - 1个指针会被存储, 剩下的n + 1都会存为nullptr, 那么可以把所有的空指针利用起来. 其中如果某个节点的左子节点为空的话, 可以按照当前遍历方式(先序, 中序, 后序)存储其前驱结点, 右子节点为空的话, 可以存储后继节点.2 结构普通的二叉树节点的结构为:struct TreeNode { int val; T

2021-07-23 15:26:20 80

原创 数据结构中的树 --- 红黑树

1.

2021-07-21 20:09:30 80

原创 排序算法 --- 堆排序

1.

2021-07-16 14:49:54 175

原创 数据结构中的树

1. 树即是以层次化方式组织和存放数据的特定数据结构边:根节点:叶子节点:树高:节点深度:2. 二叉树每个节点最多有两个子节点, 即左孩子和右孩子2.1 二叉树遍历方式2.1.1 深度优先(DFS)2.1.2 广度优先(BFS)2.2 二叉搜索树...

2021-07-13 20:06:31 105

原创 leetcode37 --- solveSudoku(解数独)

1 题目编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.'表示。2 解法起始是9*9的格子, 大部分的格子的值是没有确定的, 所以把所有的未确定值的格子放到一个数组里面, 具体可见代码:...

2021-06-29 17:09:51 177

原创 计算机网络中的数据链路层

1 概述1.1 数据链路层的基本概念结点:主机, 路由器链路:网络中两个结点之间的物理通道, 链路的传输介质主要有双绞线, 光纤和微波, 分为有线链路和无线链路.数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路.帧:链路层的协议数据单元, 封装网络层数据报.主要职责:数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报(网络层数据传送单元, 在链路层会封装成帧).1.2 功能概述..

2021-06-29 16:53:43 166

原创 二叉树的遍历方式

主要分为前序, 中序, 后序, 层序, 深度优先, 广度优先.

2021-06-23 15:11:37 74

空空如也

空空如也

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

TA关注的人

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