- 博客(11)
- 资源 (14)
- 收藏
- 关注
原创 realloc引发的内存泄漏
int main() { char *p = (char *)malloc(10); char *newp = (char *)realloc(p, 20); // realloc不能保证newp与p指向同一块内存 if (newp) { p = newp; } free(p); return 0;}上述代码,如果注释4~6行将引发内存泄漏,free只释放了p生成的内存空间,而realloc生成的内存没有释放。...
2021-11-29 19:47:47 586
原创 指针数组参数传递不当导致安全问题
#define ROW 2#define COL 3void fun(int **p) { int i = 0; int j = 0; for (;i < ROW;i++) { for (j = 0;j < COL;j++) { printf("%d\n", p[i][j]); } }}int main() { int a[ROW][COL] = { { 1, 2, 3}, { 4, 5, .
2021-11-17 11:07:45 326
原创 两种创建二维动态数组效率对比
#include <stdio.h>#include <stdlib.h>#include <string.h>// fun1使用方式1创建n行m列动态二维整数数组void fun1(int n, int m) { int **array1 = (int **)malloc(n * sizeof(int *)); int i = 0; int j = 0; for (;i < n;i++) { array1[.
2021-11-15 15:03:24 228
原创 令人混淆的数组指针加法运算
int a[3] = { 1, 2, 3 };int (*p)[3] = &a; // 赋值正确,p保存指向a的指针,是一个二维指针p++; // 指针跑飞*((*p) + 1) = 10; // stack smashingint b[2][3] = { { 1, 2, 3 }, { 1, 2, 3 } };int (*p1)[3] = b; // 赋值正确,p1保存指向b的指针,.
2021-11-11 11:14:59 119
原创 snort检测插件初始化流程
一 检测插件概述1.代码位置:snort源码src/detection-plugins2.作用:snort规则体可定义关键词,如对于ICMP协议的itype,icode等,这些关键词及其参数都会被检测插件解析,并调用检测插件相关函数进行处理。如在规则体定义itype:3,那么检测插件会根据输入分组packet结构的icmp协议的type和规则里itype进行比较操作。二 检测插件Setup每个检测插件都有Setup函数,例如sp_icmp_type_check.c中的SetupIcmpTyp
2021-11-11 10:30:01 234
原创 ICMP增强型snort规则
一 ICMP协议简介ICMP(internet control message protocol)是面向无连接、不可靠的、基于网络层的消息控制协议,它可以传输数据报错信息、网络状况信息、主机状况信息等。1.ICMP数据封装ICMP报文是使用IP数据报来封装和发送的,携带ICMP报文的IP数据报完全像其他类型数据的数据报那样在网络中被转发,没有额外的可靠性和优先级,由于IP数据报本身被放在底层物理数据帧中进行发送,因此,ICMP报文本身也可能丢失或者出现传输错误。2.ICMP报文类型.
2021-11-10 15:41:51 1821
原创 redis集群moved重定向与redis集群ask重定向
1.redis集群一共有16384个虚拟slot,被均匀分配到集群里所有redis机器node上;2.每个node之间可以互相meet操作,都知道彼此slot范围;3.客户端向redis集群任意node发送命令,相应node使用CRC16加hash算法算出slot,如果slot命中,则返回成功影响,否则返回moved命令和正确的node号;4.客户端收到moved命令,去目标node读写。[root@mysql ~]# redis-cli -p 9002127.0.0.1:9002>
2021-11-09 15:06:09 2176
原创 一致性Hash算法
所有数据被组织成Token环里,环由若干个node组成,每个node都保存一定范围的值。一个key按照hash取余加顺时针方式落到Token环中最接近hash值的node上,如下所示:Token环伸缩只会影响到相邻结点,会有少量数据迁移。...
2021-11-09 15:04:36 84
原创 boost::thread_group简单使用
类似线程池,demo如下:#include <boost/thread.hpp>#include <boost/bind.hpp>#include <iostream>void fun(int i) { std::cout << "fun:" << i << std::endl;}int main() { boost::thread_group threads; for (auto i = 0;i
2021-11-05 16:55:45 450
原创 Kafka的rebalance
rebalance是一种协议,它规定了消费组consumer group下所有的consumer如何使用topic相关的分区。1.触发rebalance条件:(1)组内成员发生变更;(2)订阅topic发生变更;(3)topic关联的分区数发生变更。2.rebalance决策者coordinator,按照一定算法产生的broker。3.五种协议(1)Heartbeat请求:consumer需要定期给coordinator发送心跳来表明自己还活着;(2)LeaveGroup
2021-11-04 11:17:00 1261
原创 snort的mSplit函数
一 函数接口以功能// 将一个字符串按照分割字符串进行分割处理后返回字符串指针数组char **mSplit(const char *str, // 原始字符串 如"XXX\t\n122\n222,YY\\UUTY\t111\n\n\\1" const char *sep_chars, // 分割字符串 如" \t,\n" 即按照Tab或逗号或换行进行分割 const int max_toks, // 最多获
2021-11-03 14:13:11 555
多边形游戏
2012-01-22
字符串匹配程序
2012-01-21
计算机集群
2012-01-19
大规模并行处理机系统 MPP
2012-01-18
对称多处理机
2012-01-18
Interconnection Network
2012-01-18
Communication in Multiprocessor Systems
2012-01-18
高级计算机测试
2012-01-18
高级体系结构课程纲要
2012-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人