0%

实现c++函数库中atoi()函数,要考虑到各种特殊情况:

  • 空字符串。
  • +和-号。
  • 字符串前中后n个空格。
  • 溢出。
  • 非数字字符。
阅读全文 »

C++实现实现memcpy、memmove函数.

memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。但当源内存和目标内存存在重叠时,memcpy不保证拷贝结果的正确,而memmove能正确地实施拷贝,但这也增加了一点点开销。

memcpy的实现:

  • 当源内存的首地址等于目标内存的首地址时,不进行任何拷贝
  • 当源内存的首地址不等于目标内存的首地址时,实行正向拷贝

memmove的实现:

  • 当源内存的首地址等于目标内存的首地址时,不进行任何拷贝
  • 当源内存的首地址大于目标内存的首地址时,实行正向拷贝
  • 当源内存的首地址小于目标内存的首地址时,实行反向拷贝
阅读全文 »

RoaringBitMap原理

Roaring Bitmap实现的主要思路是将32位无符号整数(0~4294967295)分成高16位和低16位两部分。通过高 16 位找到该数据存储在哪个桶中(高 16 位可以划分 216个桶),把剩余的低 16 位放入该桶对应的 Container 中。

每个桶都有对应的 Container,不同的 Container 存储方式不同。依据不同的场景,主要有 2 种不同的 Container,分别是 Array Container 和 Bitmap Container。Array Container 存放稀疏的数据,Bitmap Container 存放稠密的数据。若一个 Container 里面的元素数量小于 4096,使用 Array Container 来存储。当 Array Container 超过最大容量 4096 时,会转换为 Bitmap Container。

阅读全文 »

HBase API操作

1、环境准备

新建项目后在pom.xml中添加依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.1</version>
</dependency>

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.1</version>
</dependency>

<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

阅读全文 »