
数据存储
文章平均质量分 87
Polymer to C++
重视细节,但不要沉迷于细节
展开
-
海量数据去重的Hash与BloomFilter,bitmap,分布式一致性hash
布隆过滤器是由位图和k个hash函数构成的有时,我们不需要通过key查找特定的value,只是想确定某个key是否存在,又或是为了节省内存,可以使用布隆过滤器。原创 2023-04-09 16:34:36 · 537 阅读 · 0 评论 -
动态内存函数介绍:malloc、calloc、realloc、alloca
一.为什么存在动态内存分配?我们已知的开辟空间的方式有:int c=10;//申请一个四个字节的空间char arr[10]={0};//申请十个字节的空间以上申请内存的特点是:1.申请出的内存大小是固定的2.在变量或数组声明时,所占用的内存空间是固定的,不能由具体的应用灵活调整大小有时候,程序所需要的内存空间是无法确定的,需要在程序运行过程中才能得知,这时候,就要借助动态内存分配。二.动态内存函数介绍1.malloc和freemalloc函数原型:void* malloc(size原创 2021-05-25 20:56:55 · 579 阅读 · 2 评论 -
结构体的内存对齐现象
本篇主要介绍如何计算结构体的大小,这涉及到一个特别热门的考点:结构体内存对齐。为什么存在内存对齐?大部分的参考资料都是这么说的:1. 平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。总体来说:结构体的内存对齐是拿空间来换取时间的做法。下面先来了解原创 2021-04-22 14:52:51 · 314 阅读 · 2 评论 -
什么是大小端模式?如何判断当前机器是大端还是小端?
数据存储之大小端众所周知,一个变量的创建是要在内存中开辟空间的,而开辟空间的大小是由变量的类型来决定的;例如:1byte的char类型,4byte的int类型,8byte的longlong类型等。而数据在内存中的存储有着两种不同的存储模式(即大端模式与小端模式);1.定义大端(存储)模式,是指数据的低位保存在內存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。2.什么是数据的高位与低位?由定义出发,即以数据原创 2021-04-18 13:56:04 · 592 阅读 · 0 评论