笔试选择题
DDos分布式拒绝服务
解决:
- 高防服务器,贵
- 黑名单,封锁正常流量,影响到正常业务。
- DDos清洗,及时发现DOS攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。
- CDN加速:CDN 服务将网站访问流量分配到了各个节点中,这样一方面隐藏网站的真实 IP,另一方面即使遭遇 DDoS 攻击,也可以将流量分散到各个节点中,防止源站崩溃。
- 又拍云安全防护是针对容易遭受大流量 DDoS 攻击的电商、金融、游戏等类型的客户专门推出的付费增值服务。
数组初始化效率
//1.
char arr[maxSize] = {0};
//2.
char arr[maxSize];
memset(arr, 0, sizeof arr);
//3.
char arr[maxSize];
bzero(arr, sizeof(arr));
- 编译是先arrayA[0]赋值为0, 再调用memset初始化其他的数组元素.
- 直接初始化
- 已经慢慢被弃用 在数组较小的情况下,bzero的效率比memset高;当数组超过一定大小之后,bzero的效率开始比memset低;数组越 大,memset的性能优势越明显。而在数组较小的情况下,memset的性能甚至不如直接for循环对数组中的每一个字节置零的方法。
DHCPv6 Pv6动态主机配置协议
为主机分配IPv6地址/前缀和其他网络配置参数。
优点:
- 更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。
- DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。
- 除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数。
差异:
- DHCPv4基于IPv4包传输,DHCPv6基于IPv6包传输
- DHCPv6使用ICMPv6 Router Advertisement (RA)和IPv6多播消息,DHCPv4使用广播的IPv4消息
- DHCPv6中client与relay/server(RFC 6939)通信时使用link-local地址, DHCPv4使用unsolicited广播地址
- 监听的UDP端口不同, DHCPv4 relay/server监听udp端口67 client监听udp端口68, relay/server监听udp端口547 client监听udp端口546
- DHCPv6 servers提供随机的接口标识符 (避免攻击者侦查), DHCPv4提供scope/pool中的下一个IPv4地址
- DHCPv4可以在路由器上配置, stateful DHCPv6一般不能在路由器上配置
- DHCPv6 servers提供随机的接口标识符 (避免攻击者侦查), DHCPv4提供scope/pool中的下一个IPv4地址
- DHCPv4可以在路由器上配置, stateful DHCPv6一般不能在路由器上配置
- DHCPv4为客户端提供默认网关地址,DHCPv6不包含这个option,IPv6节点通过ICMPv6 RA消息学习到first hop路由器地址
- DHCPv4地址池可能耗尽; DHCPv6网段通常为64位耗尽可能性接近0
数组地址
数组类型 | 存储地址的计算(a是数组首地址,len是每个数组元素所占长度) |
---|---|
a[n] |
a[i] 的存储地址:a+i*len |
a[m-1][n-1],m行n列 |
按行存储:a+(i*n+j)*len ;按列存储:a+(j*m+i)*len |
a[n][m][k] 首地址a |
A[x][y][z] = a + (x*m*k + y*k + z)* len |
大根堆
- 堆是一种特殊的完全二叉树
- 任意非叶子节点不小于其左右孩子节点
arr[i] >= arr[2i+1] && arr[i] >=arr[2i+2]
memcpy、strcpy、strncpy
- memcpy
void *memcpy(void *s1, const void *s2, size_t n);
函数memcpy从s2指向的对象中复制n个字符到s1指向的对象中。如果复制发生在两个重叠的对象中,则这种行为未定义。
返回值:函数memcpy返回s1的值。 2. strcpy
char *strcpy(char *s2, const char *s1);
函数strcpy把s1指向的串(包括空字符)复制到s2指向的数组中。如果复制发生在两个重叠的对象中,则这种行为未定义。
返回值:函数strcpy返回s2的值。 3、strncpy
char *strncpy(char *s2, const char *s1, size_t n);
函数strncpy从s1指向的数组中最多复制n个字符(不复制空字符后面的字符)到s2指向的数组中。如果复制发生在两个重叠的对象中,则这种行为未定义。
如果s1指向的数组是一个比n短的字符串,则在s2定义的数组后面补空字符,直到写入了n个字符。
返回值:函数strncpy返回s2的值。