摘要:
go map map初始化 增加数据 遍历数据 判断kv是否存在 go map map是一种无序的键值对的集合,可以通过key来快速检索数据,map是无序的,我们无法决定它的返回顺序,这是因为map是使用hash表来实现的。 map中的key类型必须是comparable的,所以golang中的bo 阅读全文
摘要:
C++ 线程池 基于C++11语法实现的简易线程池: /** * 线程池(C++简单实现) * @file: ThreadPool.h * @author: rancheng <rc4work@163.com> * @date: 2020-11-23 */ #pragma once #include 阅读全文
摘要:
RAFT简介 Raft(Replication and Fault Tolerant)是一个允许网络分区(Partition Tolerant)的一致性协议,它保证了在一个由N个节点构成的系统中有$(N+1)/2$(向上取整)个节点正常工作的情况下的系统的一致性,比如在一个5个节点的系统中允许2个节 阅读全文
摘要:
最大子序列和 给定一个整数数组$A[1\cdots n]$,找到一个具有最大和的连续子数组,返回其和: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组[4,-1,2,1]的和最大,为6 动态规划解法 令$d[i]$表示以$A[i]$结尾的最大子序列和,若$d[ 阅读全文
摘要:
TCP SYN FLOOD 攻击方式: 攻击者向目标计算机发送一个TCP SYN报文。 目标计算机收到这个报文后,建立TCP连接控制结构(TCB),放入半连接的队列中,并回应一个SYN+ACK,等待发起者的回应。 而发起者则不向目标计算机回应ACK报文,这样导致目标计算机一直处于等待状态。 防御手段 阅读全文
摘要:
定义函数指针类型 using用来定义类型别名是C++11引入的新语法,相比于typedef使用起来更优雅,尤其是函数指针这块,下面是对比: // 普通函数 typedef void (*FP) (int, const std::string&); using FP = void (*) (int, 阅读全文
摘要:
typename和class 在模板类的声明中,我们有两种方式: template <class T> template <typename T> 在这里,class和typename是相同的。但是当你需要使用模板类中定义的内部类型的时候,那么就必须使用typename: template <cla 阅读全文
摘要:
noexcept函数抛出异常 原本设计函数的时候明确该函数不会抛出异常,所以给函数加上了noexcept属性,但修改代码之后需要抛出异常,比如: void func() noexcept { ... throw except(); } 即使像这种很明显的语法矛盾,有的编译器的版本并不会发出警告,于是 阅读全文
摘要:
在一次http请求中,经历的过程 浏览器从url中解析出服务器的域名; 浏览器将服务器的域名转换成服务器的的ip地址; 浏览器将端口号(如果有的话)从url中解析出来; 浏览器建立一条与web服务器的tcp连接; 浏览器向服务器发送一条http请求报文; 服务器向浏览器回送一条http响应报文; 关 阅读全文
摘要:
tcp报文结构 初始化序号(ISN)为什么要随机生成 三次握手 四次挥手 服务端listen的参数backlog TIME_WAIT状态为什么要持续2MSL tcp选项 最大段大小(MSS) 选择确认(SACK) 窗口缩放(WSOPT) 滑动窗口 拥塞控制 参考资料 tcp报文结构 Source P 阅读全文