内存数据查询
来源:互联网 发布:mac 右键菜单 编辑:程序博客网 时间:2024/05/05 15:46
海量数据查询:
由于要查询的数据较多,如果在磁盘上进行查询则速度较慢,这时可以把要查询的相关数据读到内存中,然后再进行查询。
这儿是使用的把数据按行读入到内存中,然后在内存中进行查询。
这儿需要注意的几个问题是开辟内存时的初始化工作,
比如初始化 memset(g_bh, "\0", sizeof(char *)*NUM); //初始化时这儿不小心把 '\0' 写成了 "\0",结果造成了意想不到的程序崩溃...
这样的大意造成的后果不太会查。所以一定要小心。
由于此处用了大量的分配内存 malloc,一是分配后要进行初始化工作,二是要进行分配后的判断内存分配是否成功。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<Windows.h>#include<string.h>#define NUM 2027358//#define LINE 254//一行最大长度char **g_bh;int getnum(char *path)//得到行数{int num = 0;//统计行数FILE *pfr = fopen(path, "r");if (pfr == NULL){return -1;}else{char str[256] = { 0 };while (fgets(str, 255, pfr)){num++;}}return num;}int getmax(char *path)//得到最大行数据长度{int num = 0;//统计行数FILE *pfr = fopen(path, "r");if (pfr == NULL){return -1;}else{char str[1024] = { 0 };while (fgets(str, 255, pfr)){int length = strlen(str);if (num < length)num = length;}}return num;}void getmem(char *path){//初始化printf("init start...\n");g_bh = malloc(sizeof(char *)*NUM);//分配内存//初始化时这儿不小心把 '\0' 写成了 "\0",结果造成了意想不到的程序崩溃...//memset(g_bh, "\0", sizeof(char *)*NUM);memset(g_bh, '\0', sizeof(char *)*NUM);//初始化FILE *pfr = fopen(path, "r");if (pfr == NULL){return;}else{for (int i = 0; i < NUM; i++){char str[1024] = { 0 };fgets(str,1024, pfr);int length = strlen(str);if (length >=1) {g_bh[i] = malloc(sizeof(char)*length+1);memset(g_bh[i], '\0', length+1);//初始化if (g_bh[i] != NULL)//如果内存分配成功则拷贝数据{strcpy(g_bh[i], str);}}}}fclose(pfr);printf("init end\n");}void search(char *search){//从读到内存中的数据中查询数据int num = 0;for (int i = 0; i < NUM; i++){if (g_bh[i] != NULL)//做大数据一定要严禁,否则出错就讨厌了。{if (strstr(g_bh[i], search)){printf("\n %d:%s\n", ++num, g_bh[i]);}}}}char *path = "E:\\baihe.txt";void main(){//printf("%d\n", getnum(path));d//printf("%d\n", getmax(path));//printf("开始读入数据到内存......\n");Sleep(5000);getmem(path);while (1){printf("请输入要查询的名字:");char name[30];scanf("%s", name);search(name);}system("pause");}
0 0
- 内存数据查询
- jdbc查询超大数据集内存溢出
- PHP查询MySQL大量数据的内存
- PHP查询MySQL大量数据的内存
- PHP mysql查询数据存储与内存
- 分布式内存数据技术为查询提速
- PHP查询MySQL大量数据的内存
- PHP查询MySQL大量数据的内存占用分析
- PHP查询MySQL大量数据的内存占用分析
- PreparedStatement 查询大容量数据内存溢出解决
- PHP查询MySQL大量数据的内存占用分析
- mysql查询大量数据,php内存占用溢出问题
- php查询mysql大量数据占用大量内存导致内存不足
- PreparedStatement 查询大容量数据内存溢出解决
- PreparedStatement 查询大容量数据内存溢出解决 .
- PHP查询MySQL大量数据的内存占用分析
- mysql查询大量数据,php内存占用溢…
- 如何解决PHP查询大量数据内存耗尽的问题
- Android集成微信支付之-天坑
- Git常用命令
- mysql数据库优化
- 设计模式之工厂模式
- Android设计模式源码解析之责任链模式
- 内存数据查询
- N32905 adc字符设备驱动
- jquery easyUI ajax加载数据分页功能
- loadrunner实例,具体操作步骤,需要的请留言
- android studio意外重启后 原本的import类库全部报错
- caffe下build中的tools文件消失
- SuperMap iClient for JavaScript常见问题解答集锦 (二)
- Mysql 初学基本
- static在C和C++中的用法和区别