REDIS 二月 22, 2020

Redis内置数据结构之链表

文章字数 4k 阅读约需 4 mins. 阅读次数 1000000

编写Redis的C语言没有内置链表数据结构,因此Redis构建了自己的链表实现。

应用

  1. 列表键、发布、订阅、慢查询、监视器等功能
  2. 保存多个客户端的状态信息
  3. 构建客户端输出缓冲区(output buffer...
查看全文

REDIS 二月 21, 2020

Redis内置数据结构之简单动态字符串

文章字数 3.4k 阅读约需 3 mins. 阅读次数 1000000

简单动态字符串(simple dynamic string,以下简称SDS)是Redis的一个内置数据结构。Redis默认字符串并不是C字符串,而是SDS,Redis只会使用C字符串作为字面量用在一些无需更改字符串值的地方。

作用

  1. 是Redis的默认字符串表示
  2. 保存数据库中的字符串值
  3. 用作AOF缓冲区以及客户端状态中的输入缓冲区

定义

SDS定义在sds.h中,以结构体的形式定义,每个sdshdr结构体表示一个SDS值:

1
2
3
4
5
6
7
8
struct sdshdr{
// 记录buf数...
查看全文

C/C++ 二月 14, 2020

递归下降语法分析器

文章字数 157k 阅读约需 2:23 阅读次数 1000000

自己写的递归下降语法分析器(很遗憾没能生成语法树)
测试代码的链接:https://github.com/HanJiaxing521/HanJiaxing521.github.io/blob/master/2020/02/14/rdcheck/test.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66...
查看全文

HBASE 二月 13, 2020

HBase基本操作

文章字数 8.5k 阅读约需 8 mins. 阅读次数 1000000

HBase shell的使用

HBase自带的shell是用JRuby(Java写的Ruby解释器)写的命令行的工具,是用ruby语言实现的,其shell脚本也是ruby实现的。
执行以下命令进入HBase的shell:

1
$HBASE_HOME/bin/hbase shell

用create命令建表c

1
create '表名', '列族名'

输出结果

1
0 row(s) in 操作时间
  • HBase的表都是由列族(Column Family)组成的
  • 没有列族的表是没有意义的
  • 列并不是依附于表上,而是...
查看全文

JAVA 二月 13, 2020

为什么Java的System.int/out/err值为null?

文章字数 1.8k 阅读约需 2 mins. 阅读次数 1000000

例:
System源码中这样写:

1
public final static PrintStream out = null;

System.out是PrintStream类型的变量,引用的是null,还被final修饰为不可更改,为什么在调用PrintStream中的println()方法时没有报错呢?
实际上在System类的开头有静态代码块:

1
2
3
static {
registerNatives();
}

在加载System类的时候先调用了System类中的静态方法registerNatives...

查看全文

HBASE 二月 08, 2020

HBase Meta表与Root表

文章字数 1.1k 阅读约需 1 mins. 阅读次数 1000000

Meta表的作用

记录的信息:

  1. 数据的Rowkey在哪个Region的范围
  2. Region在哪个RegionServer上

(Region是HBase中分布式存储和负载均衡的最小单元)

Meta表的Rowkey

region所在的表名+region的StartKey+时间戳

这三者的MD5值也是HBase在HDFS上存储的region名字

Meta表的列族和列

表中最主要的Family:info

info里包含三个Column:regioninfo,server,serverstartcode...

查看全文

面经 二月 02, 2020

腾讯TEG云架构后台开发实习面经

文章字数 4.2k 阅读约需 4 mins. 阅读次数 1000000

offer: 后台开发实习工程师,在TEG云架构平台组负责NoSQL存储平台的研发,base深圳。

一面

  1. 自我介绍

  2. 问项目:

    • 旅游大数据项目:
      • 项目内容以及自己负责的部分
      • 为什么采用HBase存储数据
      • 在项目中对比过HBase和MySQL的性能表现吗
      • 基于HBase的时空数据索引是怎么设计的
      • 数据获取方式
      • 数据都存了哪些字段
      • 了解MySQL吗
    • 区块链项目:
      • 项目内容以及自己负责的部分
      • 怎么实现区块的互连
      • Merkle树构建方式
      • 集群通信怎么实现
      • 怎么实现一个节点向所有节点发消息
      • 数据怎么...
查看全文

C/C++ 十一月 19, 2019

词法分析器

文章字数 41k 阅读约需 37 mins. 阅读次数 1000000

自己写的Java词法分析器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115...
查看全文

JAVA 十一月 16, 2019

Java核心技术第一章

文章字数 1.6k 阅读约需 1 mins. 阅读次数 1000000

Java“白皮书”关键术语

简单性:

  • Java语法是C++语法的一个“纯净版本“:没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等

面向对象:

  • Java的面向对象特性与C++相当
  • Java中的多重继承采用相对于C++更简单的接口概念
  • Java提供了比C++更丰富的运行时自省功能

分布式:

  • Java有丰富的例程库, 用于处理像HTTP和FTP之类的TCP/IP协议

健壮性:

  • 此方面Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可...
查看全文

PYTHON 十一月 06, 2019

python脚本自动使用labelme标注数据集

文章字数 4.7k 阅读约需 4 mins. 阅读次数 1000000

使用工具:labelme(标注mask数据集用的)

GitHub地址: https://github.com/wkentaro/labelme
windows:
python2

1
2
pip install pyqt
pip install labelme

python3

1
2
pip install pyqt5
pip install labelme

Ubuntu16.04系统下采用自带的python2.7环境:

1
2
sudo apt-get install python-qt4 pyqt4-dev-tools...
查看全文
加载更多
0%