模拟实现memcpy,memmove,atoi,itoa
来源:互联网 发布:尚观云计算课程 编辑:程序博客网 时间:2024/06/06 04:34
void* Memcpy(void* dest,const void* src,size_t count){void* ret=dest;char* str1=(char*)dest;char* str2=(char*)src;assert(dest);assert(src);while(count--){*str1++=*str2++;}return ret;}void Memmove(void* dest,const void* src,size_t count){void* ret=dest;char* str1=(char*)dest;char* str2=(char*)src;assert(dest);assert(src);while(count--){*(str1+count)=*(str2+count);}}
int my_atoi(const char* str){assert(str);int flag=1;int sum=0;while(isspace(*str))str++;if(*str=='-'){flag=0;str++;}else if(*str=='+'){str++;}while(*str){if(isdigit(*str)){sum=sum*10+*str-'0';}elsebreak;str++;}if(flag==0)num=-num;return sum;}char* my_itoa(int value,char* buff){assert(buff);char* left=buff;char* right=NULL;int leftif(value<0)value=-value;while(value){*buff++=value%10+'0';value/=10;}if(value<0)*buff++='-';*buff='\0';right=buff-1;while(left<right){char* temp=right;*right=*left;*left=*temp;}return buff;}
给一个超过100G的log file, log中存着IP地址, 设计算法找到出现次数最多的K个IP地址。 1、将100G的文件进行切分,分为100个小文件。利用字符串转整数的函数(如 BKDRHash)将IP地址转换为整数key,再利用index=key%100就可将相同IP分到同一个文件。
2、依次将这100个文件读入内存,统计ip的次数。降序排列,前K个即为该文件中出现次数最多的ip.
3、将第一个文件中出现次数的最多的前K个ip建小堆,然后读入第二个文件,
将其出现次数最多的前K个ip的出现次数与堆中数据进行对比,如果有大于堆中的ip出现次数,则更新小堆,替换原堆中堆顶元素。再读入第三个文件,以此类推……
给两个文件,分别有100亿个URL,我们只有1G内存,找到两个文件交集。分别给出精确算法
和近似算法。精确算法:哈希切分
1、将每个文件切分为1000份,利用字符串转整数的函数(BKDRHash)将query转换为整数key,再利用index=key%1000就可将相同query分到同一个文件。
2、依次将编号相同的两个小文件加载到内存中进行比较。比如对于A0 && B0,我们可以遍历A0 ,将其中的url存储到hash_map当中。然后遍历B0,如果url在hash_map中,则说明此url在A和B中同时存在,保存到文件中即可。
近似算法:布隆过滤器
1、利用不同的字符串转整数的函数将query转换为整数key,再利用位图映射多个位实现。在判断时,必须每个位都有效。但是每一位都重叠映射,可以准确判断不存在的情况,判断存在时有误判。
阅读全文
0 0
- 模拟实现memcpy,memmove,atoi,itoa
- atoi()/itoa()/memcpy()实现
- 模拟实现atoi、itoa
- atoi、itoa,strcpy,strcmp,memcpy等实现
- atoi,itoa,strcpy,strcp,memcpy的实现
- itoa、atoi、memcpy等函数实现
- 模拟实现memcpy/memmove/memset
- 模拟实现memcpy memmove 函数
- 模拟实现memcpy,memmove,memset
- 模拟实现strstr,memcpy,memmove
- 模拟实现memcpy,memmove,memset
- 模拟实现 memcpy memmove 函数
- 【字符串】模拟实现atoi和itoa
- 模拟实现atoi和itoa函数
- C语言模拟实现memcpy,memmove函数
- 模拟实现memcpy和memmove函数
- 【c语言】模拟实现memcpy()、memmove()函数
- 动态内存管理:模拟实现memcpy,memmove
- 机器人操作系统ros ———一个月的学习历程
- 2015ccpc——H
- 你能获得的数据量越大,你能挖掘到的价值就越多。
- 初写定时压缩日志任务总结
- android 自带日历控件datePicker
- 模拟实现memcpy,memmove,atoi,itoa
- MapReduce 如何输出多个文件:MultipleOutputs 运用可行
- 序列化form表单元素为对象
- Java编程思想之数组
- Vs2008制作WinCE Cab安装包
- JUnit4-Result.java 源代码 解读与分析
- 运用MQTT-JMeter插件测试MQTT服务器性能
- 线上应用SQL执行次数异常飙高100倍的排查过程
- json和javascript对象区别及小应用