Big Data - BitMap
1641 단어 interview
Use bit storing data. See links for detailed explanation.
Why BitMap?
Save much space.
Key points
1 bit.
1 byte = 8 bit.
1 kb = 1024 byte.
1 mb = 1024 kb
1 gb = 1024 mb.
In Java:
char = 2 byte, 16 bit
String = n * char
long = 8 byte = 64 bit.
int = 4 byte = 32 bit.
http://www.cnblogs.com/pangxiaodong/archive/2011/08/14/2137748.html
Java BitMap?
https://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
Example
Given an unsorted array {2, 4, 1, 5}. Find int x is in this set or not.
// Persudo code
void setBitMap(bit[] bitmap, int k)
{
bitmap[k] = 1;
}
bit checkBitMap(bit[] bitmap, int k)
{
return bitmap[k];
}
boolean contains(Iterator<Integer> aVeryBigArray, int target)
{
// Init bit map
bit[] map = initBitMap();
while (aVeryBigArray.hasNext())
{
setBitMap(map, aVeryBigArray.next());
}
return checkBitMap(map, k) == 1;
}
1 byte can represents 8 numbers.
Thus, let's say we have 1G numbers,
need 1G / 8 / 1024(kb) / 1024(mb) = 125 mb. So cool.
// Using java BitSet
boolean contains(Iterator<Integer> aVeryBigArray, int target)
{
// By default, it will create a 64bit map, which represents 64 numbers.
// Thus estimate the largest element, and allocate a good size of bitset.
BitSet bitmap = new BitSet();
while (aVeryBigArray.hasNext())
{
bitmap.set(aVeryBigArray.next());
}
return bitmap.get(target);
}
Links
http://dongxicheng.org/structure/bitmap/
http://blog.csdn.net/v_july_v/article/details/6685962
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Js 연습 면접 질문우리 회사에서는 때때로 후보자 인터뷰에 참여하는데 주로 Node.js, AWS, 서버리스 스택에 관한 것입니다. 때때로 후보자의 기술을 평가하기 위해 코드의 출력에 대해 물어볼 수 있습니다. 내 경험상 이론을 잘 아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.