- 博客(45)
- 问答 (1)
- 收藏
- 关注
原创 ND——跟踪邻居状态
跟踪邻居状态1、邻居: 不是协议层面的邻居,而是ip层面的邻居(?)2、 当两个节点直连,使能了ipv6(ipv6 enable)并配置了地址以后,假如router1去ping router2,那么两个节点之间就会去维护一个邻居状态(ipv6层面)邻居状态1、incomplete 未完成 邻居关系还未完成2、reachable 可达3、stale 陈旧4、delay 延迟5、probe 探测作用1、确定同一链路上节点的2
2020-09-20 19:44:24
1286
1
原创 指针
指针的初始化声明一个指针变量并不会分配内存地址,因此在使用这个指针之前必须进行初始化,或指向现有内存,或给他分配动态内存指针的初始化是用**&操作符完成的,他用于产生操作数的内存地址**int a = 112;int *b = &a;b中存储的内容是一个地址,而不是整形或者浮点型类型,b的内容和a的存储地址一致间接访问 / 解引用指针 (*)通过一个指针访问他所指向的地址a为一个int型变量,b为一个int *类型指针,存储了a的地址,则利用单目操作符( * )可以间接
2020-08-23 17:23:05
208
原创 全排列next_permutation
next_permutation1、 对字符串或者数组进行排序sort(str.begin(), str.end());2、利用while(next_permutation(str.begin(), str.end())进行全排列vector<string> permutation(string S) { vector<string> res; sort(S.begin(), S.end()); res.push_back(S);
2020-08-14 22:16:14
155
原创 输出结果对1000000007取模
输出结果对1000000007取模经常碰到的大数相乘,大数相加会溢出,题目里会要求对1000000007取模,具体操作:int a = 1000000006;int b = 1000000012; return ((a % 1000000007) * (b % 100000007)) % 1000000007; ...
2020-07-26 11:37:51
7942
原创 滑动窗口总结
滑动窗口总结滑窗题型总结上图的求解过程展示中,窗口从左至右不断扩张/滑动,当窗口触达字符串末尾字符时,运算结束,窗口的宽度为最终结果。初始窗口的宽度为1,我们不断的通过向当前窗口覆盖的子串后面追加一个字符看是否能满足我们的要求,如果满足窗口扩张,如果不满足,窗口向右滑动。我们维护一个数组map[26]来存储当前窗口中各个字母的出现次数,left表示窗口的左边界,right表示窗口右边界窗口扩张:left不变,right++窗口滑动:left++, right++...
2020-06-28 22:58:30
170
原创 c++小知识点记录——整数
求整数假设给定了一个字符串,求整数(有可能很大,不用to_string())整数反转int reverse(int x) { long res = 0; while(x != 0) { res = res *10 + (x % 10); /// 这种写法同样适用于负数 x = x / 10 ; } return (res > max || res < min)?0:res;}*res = re
2020-06-12 11:36:40
123
原创 queue
queuequeue模板类的定义在# include < queue >头文件中。与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型。定义queue对象的示例代码如下:queue<int> q1;queue<double> q2;queue的基本操作有:入队,如例:q.push(x); 将x接到队列的末端。出队,如例:q.pop(); 弹出队列的第一个元素
2020-06-11 14:40:45
154
原创 图
图的解法1、BFS2、DFS3、并查集并查集并查集详解 【!!!包含路径压缩】朋友圈例题:交换字符串中的元素1、初始化:每个节点的祖先节点都是自己2、根据题意两两建立关系 ,在建立关系的同时,合并朋友圈【一边建立关系,一边寻找祖先】for (int i = 0; i < pairs.size(); i++) { // 根据题意 两两建立亲子关系 int a = FindRoot(pairs[i][0], pre); int b = FindRoo
2020-06-10 17:13:50
131
原创 基础类型(进制转换)
一、补码对于一个正数来说,其补码就是它本身对于一个负数来说,其补码等于它的绝对值取反+1(取反操作针对于二进制来说)代码:int a = -1;a = -a; // 1、取绝对值a = ~a; // 2、取反 (~ 取反操作符)a = a + 1; //3、 加1// 如果输出int型,依旧是-1cout << to_string(a); // "ffffffff"...
2020-06-08 17:22:22
152
原创 递归
什么是递归呢?函数在运行时调用自己,这个函数就叫递归函数,调用的过程叫做递归。比如定义函数 f(x)=x+f(x-1)若无终止条件,则这时程序会无休止地运行下去,直到崩溃。因此,递归最重要的两点:递归函数必须要有终止条件,否则会出错;递归函数先不断调用自身,直到遇到终止条件后进行回溯,最终返回答案。例:合并两个排序链表1、终止条件:当两个链表都为空时,表示我们对链表已合并完成。2、如何递归:我们判断 l1 和 l2 头结点哪个更小,然后较小结点的 next 指针指向其余结点的合并结果。
2020-06-03 10:27:14
150
原创 BFS遍历框架
BFS广度优先搜索较之深度优先搜索之不同在于,深度优先搜索旨在不管有多少条岔路,先一条路走到底,不成功就返回上一个路口然后就选择下一条岔路,而广度优先搜索旨在面临一个路口时,把所有的岔路口都记下来(需要用到队列(queue)),然后选择其中一个进入,然后将它的分路情况记录下来,然后再返回来进入另外一个岔路,并重复这样的操作bfs是用来搜索最短径路的解法是比较合适的比如求最少步数的解,最少交换次数的解,最快走出迷宫等等,因为bfs搜索过程中遇到的第一个解一定是离最初位置最近的,所以遇到第一个解,一定就是
2020-05-24 15:16:41
248
原创 DFS遍历框架
DFS遍历框架二叉树问题网格问题(岛屿)图(起点-终点)1、二叉树问题二叉树的dfs遍历可以写成void dfs(TreeNode* root){ // 判断递归退出的条件 base case if(root == NULL) return; /* 中间根据题意,增加累加或者判断代码 */ dfs(root->left); //递归左子树 dfs(root->right); //递归右 子树}可以看到,二叉树的 DFS 有两个要素:「判断
2020-05-15 11:02:46
434
原创 图的拓扑结构
图的拓扑排序 , 判断是否有环 step 1 : 构建元素的入度 (入度:有向图的某个顶点作为终点的次数和。 出度:起点) step 2 : 找到入度为0的元素, 压入栈中 step 3 : 若栈不为空,将其pop,并找到与其相连接的元素,入度减1,若相连接元素此时入度为0,入栈例题:课程表class Solution {public: // 图的拓扑排序 , 判断是否有环 // step 1 : 构建元素的入度 (入度:有向图的某个顶点作为终点的次数和。
2020-05-14 10:09:03
1305
原创 set —— multiset(有序,可重复)
multisetmultiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。#include<set>multiset<int> ms;ms.begin()返回一个迭代器,指向首元素ms.end()返回一个迭代器,指向尾元素ms.rbegin()返回一个迭代器,指向逆向首元素ms.rend()返回一个迭代器,指向
2020-05-13 21:56:55
1318
原创 库函数
sortsort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数包含在头文件为#include的c++标准库中vector<string>vec;sort(v.begin(), v.end(), cmp); //修改排序方式sort(v.begin(), v.end(), cmp); //cmp函数可以自己定义static ...
2020-05-01 13:40:08
351
原创 STL中的map
定义unordered_map< 类型, 类型> mapname;头文件:#include<unordered_map>unordered_map<string,vector<string>> map;//遍历这个mapunordered_map<string,vector<string>>::itera...
2020-04-28 10:04:34
158
原创 当需要函数的返回值有多个时……
普通的函数只有一个返回值,但是,当碰到需要函数的返回值有多个时,可以有几种方法:形参传递引用(推荐!)void culculate(vector<char>& tasks,int &maxcount,int &maxtype)culculate(tasks,maxcount,maxtype);全局变量传递指针或者数组(仅适用于相同类型)传递...
2020-04-27 09:02:07
837
原创 int string相互转化
一、int转string (to_string)int a = 123;string b = to_string(a);//在vs2010中可能不可以会有多个重载函数的报错,此时可以用string b = to_ string(static_cast<_Longlong>(a));在vector或者deque中转成stringvector<int>vec(1...
2020-04-26 09:15:37
614
原创 c++小知识点记录——vector(含pair的用法)
一维vector初始化.可以利用数组来初始化vector int a[] = {9,2,3,5,6,8}; vector<int>vec(begin(a),end(a));二维vector初始化方式一:定义的同时初始化 vector<vector<int>>dp(m,vector<int>(n,1)); // 将dp初始化为m行...
2020-01-16 14:40:50
4078
原创 c++小知识点记录——string
@c++小知识点记录string 数组?链表?string可以直接在前面加字符串。string a = "123";a = "0" + a;cout << a; // a 输出为 0123,同时可以用下标索引两个vector拼接vector<int> vec1,vec2;vec1.insert(vec1.end(), vec2.begin(),...
2020-01-14 15:17:02
144
原创 socket端口复用问题、接收缓冲区、发送缓冲区-- SetSockOpt
默认情况下,一个网络应用程序的一个socket绑定了一个端口,这时候其他socket就无法使用这个端口了。端口复用端口复用允许在一个应用程序中把多个socket绑定在一个端口上。设置socket的SO_REUSEADDR选项,即可实现端口复用。...
2019-09-23 20:05:21
1144
原创 c++ 解决多线程高并发的问题
线程池线程池的概念:管理一个任务队列,一个线程队列,然后每次取一个任务分配给一个线程取执行,循环往复问题:线程池一般都要复用线程,若取一个task分配给某一个thread,执行完这个固定的task函数,执行完线程也就结束了解决:因此,让每一个thread去执行调度函数,循环获取task来执行调度函数:主要作用是:从就绪进程中选择一个优先级最高的进程来代替当前进程运行。idea:1...
2019-09-23 19:25:07
2649
原创 滑动窗口与拥塞控制
流量控制1、 流量控制的目标是接收端:怕接收端来不及处理数据2、 流量控制的机制是丢包3、 接收端抑制发送端的机制:接收端缓冲区的大小滑动窗口滑动窗口是用来告诉发送端可以发送数据的大小窗口大小接收端向发送端主机通知自己可以接受数据的大小,这个大小限制即为窗口大小(通过TCP首部中的2个字节)最大窗口大小为64k,在早期是够用的。窗口字段指出了现在允许对方发送的数据量,窗口值是动...
2019-09-23 15:18:03
302
原创 socket编程
Windows下的socket编程代码参考:https://blog.youkuaiyun.com/lindamtd/article/details/79832835 https://blog.youkuaiyun.com/ckzhb/article/details/81632562服务器端:功能:1、 监控端口,等待客户端的请求;(此socket用于监听)2、 建立连接成功后,用于数据传输;(次socket...
2019-09-22 22:13:56
115
原创 const和宏
constconst的主要作用1、 欲阻止一个变量被改变,可以用const关键字,初始化以后就不能改变了2、 用const修饰形参,可以防止函数调用过程中对参数产生意外的修改3、 用const修饰指针来规定什么不可变( 指针常量、常量指针)const和宏的区别constdefine在编译阶段展开在预处理阶段展开在编译阶段会进行类型检查不做类型检...
2019-09-18 21:21:09
249
原创 哈夫曼树
哈夫曼树的基本概念带权路径长度:在树形结构中,我们把从树根到某一节点的路径长度与该节点的权的乘积,叫做该节点的带权路径长度树的带权路径长度:树中所有叶子结点的带权路径长度之和哈夫曼树又叫最优二叉树,由n个带权叶子节点构成的所有二叉树中带权路径长度最短的二叉树哈夫曼树的构建1、 将所有数从小到大排序,从下往上构建哈夫曼树2、 最小的两个数作为叶子节点,和作为一个数再进行n-1个数排...
2019-09-18 20:51:45
525
原创 session和cookie
HTTP1、无状态的HTTP HTTP协议是一种无状态的协议(无状态:指的是 当网页一旦关闭,服务端和浏览器端的连接就会断开,下一次打开网页需要重新连接,从打开的连接无法回到上一次的会话)cookiecookie的建立过程:1、 浏览器发送一个HTTP请求到服务器端2、 服务器端通过HTTP response向客户端发送一个cookie,客户端会把cookie保存下来(如...
2019-09-18 20:21:10
103
原创 构造函数、析构函数,静态成员函数、内联函数-- 虚函数
虚函数的实现如果一个类的内部有虚函数,那么编译器会在类的内部添加一个虚拟函数表指针(vptr),这个vptr指向一个虚拟函数表,表中存放着该类所有虚拟函数的入口地址,在每一次虚函数调用时,会去这个表中查找地址。构造函数为什么不能是虚函数① vptr存放在对象的内部空间,需要构造函数来完成初始化。但如果构造函数是虚函数,那么调用构造函数则需要去寻找vptr,但此时vptr还未初始化,无法调用...
2019-09-18 10:53:34
512
原创 路由器、交换机工作原理
路由器工作原理工作在网络层;主要任务:接收来自一个网络接口的数据包,根据这个数据包的目的地址,决定转发到下一个目的地址(根据路由表来决定下一跳)。过程:路由器的一个端口接收到一个报文,解除以太网首部,网络层通过报文的ip首部中的目的地址判断:① 目的地址为自身,解除ip首部并向上传输② 目的地址不为自身,根据目的地址查找路由表,找到,将报文转发给相应端口,找不到,丢弃交换机工作...
2019-09-18 09:17:04
218
原创 多继承(危害)、多重继承
多继承多继承是指一个子类继承多个父类,多继承对父类的个数没有限制,继承方式可以为:public、protect、private若不写继承方式,则默认为private继承多重继承1、B类从A类派生,C类从B类派生2、实例化时,会从上至下先调用父类的构造函数,再调用子类的构造函数,销毁该类时,会调用子类的析构函数,再调用父类的析构函数3、可以通过父类指针对直接子类或间接子类进行相应操作,...
2019-09-17 22:39:48
515
原创 TCP连接关闭时的状态time-wait、close-wait
TCP连接关闭时的状态time-wait、close-wait1、msl(报文最大生存时间)任何报文在网络上生存的最长时间,超过这个时间,报文将被丢弃。close-wait过多的原因: 服务器端接收到客户端的断开连接请求FIN(close)并回复ack之后,进入close-wait状态,直至服务器端回复断开请求FIN。 而close-wait过多则表明服务器端一直没有发送F...
2019-09-17 21:40:54
882
原创 i++和++i
i++和++i速度i++ 相当于i = i + 1;++i 相当于int j = i;j = j + 1;return j;++i自增后直接返回引用而i++要先定义一个临时变量,把值赋给临时变量,然后自增,返回临时变量...
2019-09-17 18:33:53
1265
原创 HTTP和HTTPS
HTTPS建立连接的过程1、客户端发送请求到服务器端2、服务器端返回证书和公钥3、客户端验证公钥和证书的有效性,若通过,则生成一个共享密钥,并用公钥对其加密,发送到服务器端4、服务器端利用私钥解密,得到公共密钥,再用这个公共密钥加密待发送的数据,发送到客户端5、客户端使用公共密钥解密数据6、ssl加密建立...
2019-09-15 18:06:30
504
原创 八大排序
八大排序快速排序https://blog.youkuaiyun.com/vayne_xiao/article/details/53508973
2019-09-15 14:51:41
116
原创 STL中 -- 容器
vector和list区别vectorlistvector相当于数组list相当于(双向)链表vector随机访问速度快不能进行随机访问,即不支持下标索引在内部插入删除效率低在内部插入删除操作方便stack,queue和deque区别stack(堆栈)queue(队列)deque(双端队列)存储结构顺序和链式顺序和...
2019-09-12 16:06:45
112
原创 URL和域名的区别
URL和域名的区别域名域名是由一串用“.”分隔的名字组成的Internet上某一台计算机或计算机组的名称。作用:用来将主机名和域名转换为IP地址的工作。URLURL以字符串的抽象形式来描述一个资源在万维网上的地址。一个URL唯一标识一个Web资源,通过与之对应的URL即可获得该资源。可以用来定位网页,多媒体文件等常用的URL格式如下:协议类型://服务器地址[:端口号]/路径/文件名[...
2019-09-12 10:23:52
24778
3
原创 动态规划题型总结 (三)
类型五 (自底向上)① 地下城游戏: link一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若...
2019-09-11 21:49:25
170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人