Geoip MaxMind DB 生成指南

目前MaxMind對MMDB的讀寫支持如下
Writer:
perl
Reader:
C
C#
Java
Perl
PHP
Python

所以本文著重介紹如何快速使用perl生成mmdb文件器联,以及查詢mmdb基本原理


工作環(huán)境:Centos 6.5

一调窍、安裝perl環(huán)境

忽略解壓、cd等基礎(chǔ)操作

二哨鸭、生成庫文件

  • 編寫perl代碼,下面為樣例粥谬,將讀local.db文件肛根,生成dt.mmdb文件
use MaxMind::DB::Writer::Tree;
use Net::Works::Network;

use strict;
use warnings;
use Path::Class;
use autodie;

my %types = (
    product => 'utf8_string',
    rack => 'utf8_string',
    administrator => 'utf8_string',
    room => 'utf8_string',
);

my $tree = MaxMind::DB::Writer::Tree->new(
    ip_version            => 4,
    record_size           => 24,
    database_type         => 'kevin_test',
    languages             => [ 'en' ],
    description           => { en => 'Used in MarkDown display' },
    map_key_type_callback => sub { $types{ $_[0] } },
);

sub tree_insert_network{
    my $network = Net::Works::Network->new_from_string( string => $_[1] );
    $_[0]->insert_network(
        $network,
        {
        product => $_[2],
        rack => $_[3],
        administrator => $_[4],
        room => $_[5]
        },
    );
}

sub build_tree{
    my $dir = dir(".");
    my $file = $dir->file($_[0]);
    my $content = $file->slurp();
    my $file_handle = $file->openr();
    binmode($file_handle, ":utf8");
    while( my $line = $file_handle->getline() ) {
        $line =~ s/^\s+|\s+$//g;
        if ($line eq "") {
            next;
        }
        my @values = split('\|', $line);
        for (my $i= 1;$i <= 4;$i++){
            if (!defined $values[$i]) {
                $values[$i] = ""
            }
        }
        my @networks = split(',', $values[0]);
        foreach my $net (@networks) {
            tree_insert_network($tree, $net, $values[1], $values[2], $values[3], $values[4]);
        }
    }
}
build_tree('local.db', $tree);
open my $fh, '>:bytes', 'dt.mmdb';
$tree->write_tree($fh);

  • 編輯local.db文件
1.1.1.1/32|Alipapa.Portal.COM.發(fā)布系統(tǒng)|西單.4-2號機(jī)房.01-21|kevin|西單

分別表示 IP/掩碼|產(chǎn)品線|機(jī)架|管理員|機(jī)房 (純屬虛構(gòu))

  • perl test.pl

MMDB查詢原理

一.簡單介紹下ipv4地址格式

我們所常見的ipv4地址如1.1.1.1均是點(diǎn)分十進(jìn)制描述,以便用戶來書寫記憶漏策,操作系統(tǒng)需要對該地址進(jìn)行轉(zhuǎn)義生成32位2進(jìn)制地址派哲,如上面的地址1.1.1.1將轉(zhuǎn)換為00000001 00000001 00000001 00000001

二.mmdb文件三部分

MMDB文件內(nèi)容為二進(jìn)制格式,其內(nèi)容分為三大塊:搜索樹掺喻、數(shù)據(jù)段和元數(shù)據(jù)
為了便于讀者理解芭届,我在此先介紹元數(shù)據(jù)
1.元數(shù)據(jù)區(qū)
(本文僅介紹對文件結(jié)構(gòu)有影響的元數(shù)據(jù),其他描述性質(zhì)的元數(shù)據(jù)不在此討論巢寡,有需要的讀者請參考文尾的官方文檔)

元數(shù)據(jù)區(qū)記錄了該mmdb文件的有關(guān)描述信息喉脖,以及對搜索數(shù)據(jù)有關(guān)的必要字段,元數(shù)據(jù)區(qū)位于文件尾部抑月,以\xab\xcd\xefMaxMind.com字串分割元數(shù)據(jù)區(qū)與數(shù)據(jù)段树叽,具體的存儲結(jié)構(gòu)與數(shù)據(jù)段類似。

  • node_count 節(jié)點(diǎn)數(shù)量
    記錄搜索樹中有多少節(jié)點(diǎn)
  • record_size 記錄位大小
    每個(gè)搜索樹節(jié)點(diǎn)有兩個(gè)record
  • ip_version ip地址版本
    IPV4 或 IPV6

2.搜索樹

搜索樹用來通過ip來索引數(shù)據(jù)谦絮,由node_count 個(gè)node節(jié)點(diǎn)組成题诵,每個(gè)節(jié)點(diǎn)有2個(gè)record洁仗,以24位size大小為例:
| <--- node --->|
| 23 .. 0 | 23 .. 0 |
record的值為node號
搜索樹位于文件首部

3.數(shù)據(jù)段

數(shù)據(jù)段的值為某ip所對應(yīng)的具體內(nèi)容,如城市性锭、坐標(biāo)(當(dāng)然也可在生成時(shí)自定義)赠潦;數(shù)據(jù)段位于文件中部,與前邊的搜索樹以16個(gè)8位的null分割草冈。

  • 字段類型:常見類型 UTF-8 string她奥、pointer、double怎棱、map
    (其他類型請參考官網(wǎng)哩俭,如首3位為0的擴(kuò)展字段)
    • pointer:指針類型,類型值為1
    • UTF-8 string: UTF字串類型拳恋,類型值為2
    • double:雙精度數(shù)字凡资,類型值為3
    • map:映射類型,類型值為7
  • 類型字段結(jié)構(gòu):
    • 8位表示谬运,前三位為字段類型隙赁,后五位為有效載荷
    • 有效載荷:通常為該字段在當(dāng)前類型下,實(shí)際存儲的數(shù)量梆暖;指針和映射類型除外伞访,指針的載荷為數(shù)據(jù)區(qū)域指針偏移地址,映射的載荷為有多少k-v對
    • 例如:
      • 映射類型 4個(gè)k-v對 -->11100100
      • UTF8類型 13個(gè)字符 -->01001101
  • 存儲結(jié)構(gòu):
    • 首位為映射字段式廷,表示該數(shù)據(jù)塊有N個(gè)k-v
    • N個(gè)字段塊咐扭,每個(gè)塊首部指出該字段類型,其后為具體的值

簡介mmdb文件查詢算法

我們以1.1.1.1這個(gè)ip地址為例:

  • 1.將該地址轉(zhuǎn)置成二進(jìn)制形式00000001 00000001 00000001 00000001
  • 2.取大端第一位滑废,在搜索樹查看起始node的recore,因?yàn)橹禐?故選擇大端的recore袜爪,判斷該值蠕趁,有如下三種情況
    • 該值大小小于node_count 則表明該值指向搜索樹中的另外一個(gè)節(jié)點(diǎn),則按照下一位的值重復(fù)此搜索
    • 若值等于node_count則表明該ip在此mmdb文件中不存在
    • 若值大于node_count則表明該指針指向了數(shù)據(jù)段
  • 3.若該值指向了數(shù)據(jù)段辛馆,則判斷該值所表示在數(shù)據(jù)段的偏移量
    $offset = value - nodecount - 16$
    16為數(shù)據(jù)段和搜索樹中的16個(gè)8位null
  • 4.取到在數(shù)據(jù)段的偏移量后,找到該偏移量指向的區(qū)域俺陋,首位為map類型指示了該段有多少個(gè)kv對,每個(gè)字段依次先指明字段類型然后緊隨值類型昙篙。

附:
MaxMind官方文檔:http://maxmind.github.io/MaxMind-DB/


若想支持查詢內(nèi)網(wǎng)IP需要修改MMDB生成腳本的pm文件
./MaxMind-DB-Writer-perl/lib/MaxMind/DB/Writer/Tree.pm
刪除307行左右關(guān)于內(nèi)網(wǎng)保留IP的內(nèi)容


下文為一個(gè)二進(jìn)制索引的例子:
查詢1.1.1.1加粗字體為路徑

0000000: 00000000 00000000 00000001 00000000 00000000 00101111 ...../
0000006: 00000000 00000000 00000010 00000000 00000000 00100011 .....#
000000c: 00000000 00000000 00000011 00000000 00000000 10011111 ......
0000012: 00000000 00000000 00000100 00000000 00000000 10011111 ......
0000018: 00000000 00000000 00000101 00000000 00000000 00100000 .....
000001e: 00000000 00000000 00000110 00000000 00000000 10011111 ......
0000024: 00000000 00000000 00000111 00000000 00000000 10011111 ......
000002a: 00000000 00000000 10011111 00000000 00000000 00001000 ......
0000030: 00000000 00000000 00001001 00000000 00000000 10011111 ......
0000036: 00000000 00000000 00001010 00000000 00000000 10011111 ......
000003c: 00000000 00000000 00001011 00000000 00000000 10011111 ......
0000042: 00000000 00000000 00001100 00000000 00000000 10011111 ......
0000048: 00000000 00000000 00001101 00000000 00000000 10011111 ......
000004e: 00000000 00000000 00001110 00000000 00000000 10011111 ......
0000054: 00000000 00000000 00001111 00000000 00000000 10011111 ......
000005a: 00000000 00000000 10011111 00000000 00000000 00010000 ......
0000060: 00000000 00000000 00010001 00000000 00000000 10011111 ......
0000066: 00000000 00000000 00010010 00000000 00000000 10011111 ......
000006c: 00000000 00000000 00010011 00000000 00000000 10011111 ......
0000072: 00000000 00000000 00010100 00000000 00000000 10011111 ......
0000078: 00000000 00000000 00010101 00000000 00000000 10011111 ......
000007e: 00000000 00000000 00010110 00000000 00000000 10011111 ......
0000084: 00000000 00000000 00010111 00000000 00000000 10011111 ......
000008a: 00000000 00000000 10011111 00000000 00000000 00011000 ......
0000090: 00000000 00000000 00011001 00000000 00000000 10011111 ......
0000096: 00000000 00000000 00011010 00000000 00000000 10011111 ......
000009c: 00000000 00000000 00011011 00000000 00000000 10011111 ......
00000a2: 00000000 00000000 00011100 00000000 00000000 10011111 ......
00000a8: 00000000 00000000 00011101 00000000 00000000 10011111 ......
00000ae: 00000000 00000000 00011110 00000000 00000000 10011111 ......
00000b4: 00000000 00000000 00011111 00000000 00000000 10011111 ......
00000ba: 00000000 00000000 10011111 00000000 00000000 10101111 ......
00000c0: 00000000 00000000 00100001 00000000 00000000 10011111 ..!...
00000c6: 00000000 00000000 10011111 00000000 00000000 00100010 ....."
00000cc: 00000000 00000000 10011111 00000000 00000000 10011111 ......
00000d2: 00000000 00000000 10011111 00000000 00000000 00100100 .....$
00000d8: 00000000 00000000 00100101 00000000 00000000 00101011 ..%..+
00000de: 00000000 00000000 00100110 00000000 00000000 10011111 ..&...
00000e4: 00000000 00000000 10011111 00000000 00000000 00100111 .....'
00000ea: 00000000 00000000 00101000 00000000 00000000 10011111 ..(...
00000f0: 00000000 00000000 00101001 00000000 00000000 10011111 ..)...
00000f6: 00000000 00000000 00101010 00000000 00000000 10011111 ..*...
00000fc: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000102: 00000000 00000000 10011111 00000000 00000000 00101100 .....,
0000108: 00000000 00000000 10011111 00000000 00000000 00101101 .....-
000010e: 00000000 00000000 10011111 00000000 00000000 00101110 ......
0000114: 00000000 00000000 10011111 00000000 00000000 10011111 ......
000011a: 00000000 00000000 00110000 00000000 00000000 01000100 ..0..D
0000120: 00000000 00000000 10011111 00000000 00000000 00110001 .....1
0000126: 00000000 00000000 00110010 00000000 00000000 10011111 ..2...
000012c: 00000000 00000000 10011111 00000000 00000000 00110011 .....3
0000132: 00000000 00000000 00110100 00000000 00000000 00111110 ..4..>
0000138: 00000000 00000000 00110101 00000000 00000000 10011111 ..5...
000013e: 00000000 00000000 10011111 00000000 00000000 00110110 .....6
0000144: 00000000 00000000 10011111 00000000 00000000 00110111 .....7
000014a: 00000000 00000000 10011111 00000000 00000000 00111000 .....8
0000150: 00000000 00000000 10011111 00000000 00000000 00111001 .....9
0000156: 00000000 00000000 10011111 00000000 00000000 00111010 .....:
000015c: 00000000 00000000 10011111 00000000 00000000 00111011 .....;
0000162: 00000000 00000000 10011111 00000000 00000000 00111100 .....<
0000168: 00000000 00000000 10011111 00000000 00000000 00111101 .....=
000016e: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000174: 00000000 00000000 00111111 00000000 00000000 10011111 ..?...
000017a: 00000000 00000000 01000000 00000000 00000000 10011111 ..@...
0000180: 00000000 00000000 01000001 00000000 00000000 10011111 ..A...
0000186: 00000000 00000000 01000010 00000000 00000000 10011111 ..B...
000018c: 00000000 00000000 01000011 00000000 00000000 10011111 ..C...
0000192: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000198: 00000000 00000000 01000101 00000000 00000000 10011110 ..E...
000019e: 00000000 00000000 01000110 00000000 00000000 10011111 ..F...
00001a4: 00000000 00000000 01000111 00000000 00000000 10001011 ..G...
00001aa: 00000000 00000000 01001000 00000000 00000000 01110101 ..H..u
00001b0: 00000000 00000000 01001001 00000000 00000000 10011111 ..I...
00001b6: 00000000 00000000 01001010 00000000 00000000 10011111 ..J...
00001bc: 00000000 00000000 01001011 00000000 00000000 01101110 ..K..n
00001c2: 00000000 00000000 01001100 00000000 00000000 01100000 ..L..`
00001c8: 00000000 00000000 01001101 00000000 00000000 10011111 ..M...
00001ce: 00000000 00000000 01001110 00000000 00000000 10011111 ..N...
00001d4: 00000000 00000000 01001111 00000000 00000000 10011111 ..O...
00001da: 00000000 00000000 01010000 00000000 00000000 10011111 ..P...
00001e0: 00000000 00000000 01010001 00000000 00000000 10011111 ..Q...
00001e6: 00000000 00000000 01010010 00000000 00000000 10011111 ..R...
00001ec: 00000000 00000000 01010011 00000000 00000000 10011111 ..S...
00001f2: 00000000 00000000 01010100 00000000 00000000 10011111 ..T...
00001f8: 00000000 00000000 01010101 00000000 00000000 10011111 ..U...
00001fe: 00000000 00000000 01010110 00000000 00000000 10011111 ..V...
0000204: 00000000 00000000 01010111 00000000 00000000 10011111 ..W...
000020a: 00000000 00000000 01011000 00000000 00000000 10011111 ..X...
0000210: 00000000 00000000 01011001 00000000 00000000 01011111 ..Y.._
0000216: 00000000 00000000 01011010 00000000 00000000 10011111 ..Z...
000021c: 00000000 00000000 01011011 00000000 00000000 10011111 ..[...
0000222: 00000000 00000000 01011100 00000000 00000000 10011111 .....
0000228: 00000000 00000000 01011101 00000000 00000000 10011111 ..]...
000022e: 00000000 00000000 01011110 00000000 00000000 10011111 ..^...
0000234: 00000000 00000000 10011111 00000000 00000000 10011111 ......
000023a: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000240: 00000000 00000000 01100001 00000000 00000000 10011111 ..a...
0000246: 00000000 00000000 10011111 00000000 00000000 01100010 .....b
000024c: 00000000 00000000 10011111 00000000 00000000 01100011 .....c
0000252: 00000000 00000000 01100100 00000000 00000000 10011111 ..d...
0000258: 00000000 00000000 01100101 00000000 00000000 10011111 ..e...
000025e: 00000000 00000000 01100110 00000000 00000000 10011111 ..f...
0000264: 00000000 00000000 01100111 00000000 00000000 10011111 ..g...
000026a: 00000000 00000000 10011111 00000000 00000000 01101000 .....h
0000270: 00000000 00000000 10011111 00000000 00000000 01101001 .....i
0000276: 00000000 00000000 01101010 00000000 00000000 10011111 ..j...
000027c: 00000000 00000000 01101011 00000000 00000000 10011111 ..k...
0000282: 00000000 00000000 01101100 00000000 00000000 10011111 ..l...
0000288: 00000000 00000000 10011111 00000000 00000000 01101101 .....m
000028e: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000294: 00000000 00000000 01101111 00000000 00000000 10011111 ..o...
000029a: 00000000 00000000 10011111 00000000 00000000 01110000 .....p
00002a0: 00000000 00000000 01110001 00000000 00000000 10011111 ..q...
00002a6: 00000000 00000000 10011111 00000000 00000000 01110010 .....r
00002ac: 00000000 00000000 01110011 00000000 00000000 10011111 ..s...
00002b2: 00000000 00000000 01110100 00000000 00000000 10011111 ..t...
00002b8: 00000000 00000000 10011111 00000000 00000000 10011111 ......
00002be: 00000000 00000000 10011111 00000000 00000000 01110110 .....v
00002c4: 00000000 00000000 01110111 00000000 00000000 10011111 ..w...
00002ca: 00000000 00000000 01111000 00000000 00000000 10011111 ..x...
00002d0: 00000000 00000000 01111001 00000000 00000000 10011111 ..y...
00002d6: 00000000 00000000 01111010 00000000 00000000 01111110 ..z..~
00002dc: 00000000 00000000 10011111 00000000 00000000 01111011 .....{
00002e2: 00000000 00000000 01111100 00000000 00000000 10011111 ..|...
00002e8: 00000000 00000000 01111101 00000000 00000000 10011111 ..}...
00002ee: 00000000 00000000 10011111 00000000 00000000 10011111 ......
00002f4: 00000000 00000000 10011111 00000000 00000000 01111111 ......
00002fa: 00000000 00000000 10000000 00000000 00000000 10011111 ......
0000300: 00000000 00000000 10000001 00000000 00000000 10011111 ......
0000306: 00000000 00000000 10011111 00000000 00000000 10000010 ......
000030c: 00000000 00000000 10011111 00000000 00000000 10000011 ......
0000312: 00000000 00000000 10000100 00000000 00000000 10011111 ......
0000318: 00000000 00000000 10011111 00000000 00000000 10000101 ......
000031e: 00000000 00000000 10011111 00000000 00000000 10000110 ......
0000324: 00000000 00000000 10000111 00000000 00000000 10011111 ......
000032a: 00000000 00000000 10001000 00000000 00000000 10011111 ......
0000330: 00000000 00000000 10011111 00000000 00000000 10001001 ......
0000336: 00000000 00000000 10001010 00000000 00000000 10011111 ......
000033c: 00000000 00000000 10011111 00000000 00000000 10011111 ......
0000342: 00000000 00000000 10001100 00000000 00000000 10011111 ......
0000348: 00000000 00000000 10011111 00000000 00000000 10001101 ......
000034e: 00000000 00000000 10011111 00000000 00000000 10001110 ......
0000354: 00000000 00000000 10001111 00000000 00000000 10011111 ......
000035a: 00000000 00000000 10010000 00000000 00000000 10011111 ......
0000360: 00000000 00000000 10010001 00000000 00000000 10011111 ......
0000366: 00000000 00000000 10010010 00000000 00000000 10011111 ......
000036c: 00000000 00000000 10010011 00000000 00000000 10011111 ......
0000372: 00000000 00000000 10010100 00000000 00000000 10011111 ......
0000378: 00000000 00000000 10010101 00000000 00000000 10011111 ......
000037e: 00000000 00000000 10010110 00000000 00000000 10011111 ......
0000384: 00000000 00000000 10010111 00000000 00000000 10011111 ......
000038a: 00000000 00000000 10011111 00000000 00000000 10011000 ......
0000390: 00000000 00000000 10011111 00000000 00000000 10011001 ......
0000396: 00000000 00000000 10011111 00000000 00000000 10011010 ......
000039c: 00000000 00000000 10011011 00000000 00000000 10011111 ......
00003a2: 00000000 00000000 10011100 00000000 00000000 10011111 ......
00003a8: 00000000 00000000 10011101 00000000 00000000 10011111 ......
00003ae: 00000000 00000000 10011111 00000000 00000000 10011111 ......
00003b4: 00000000 00000000 10011111 00000000 00000000 10011111 ......
00003ba: 00000000 00000000 00000000 00000000 00000000 00000000 ......
00003c0: 00000000 00000000 00000000 00000000 00000000 00000000 ......
00003c6: 00000000 00000000 00000000 00000000 11100100 01001101 .....M
00003cc: 01100001 01100100 01101101 01101001 01101110 01101001 admini
00003d2: 01110011 01110100 01110010 01100001 01110100 01101111 strato
00003d8: 01110010 01000101 01101011 01100101 01110110 01101001 rEkevi
00003de: 01101110 01000111 01110000 01110010 01101111 01100100 nGprod
00003e4: 01110101 01100011 01110100 01011101 00000010 01000001 uct].A
00003ea: 01101100 01101001 01110000 01100001 01110000 01100001 lipapa
00003f0: 00101110 01010000 01101111 01110010 01110100 01100001 .Porta
00003f6: 01101100 00101110 01000011 01001111 01001101 00101110 l.COM.
00003fc: 11100101 10001111 10010001 11100101 10111000 10000011 ......
0000402: 11100111 10110011 10111011 11100111 10111011 10011111 ......
0000408: 01000100 01110010 01100001 01100011 01101011 01011001 DrackY
000040e: 11101000 10100101 10111111 11100101 10001101 10010101 ......
0000414: 00101110 00110100 00101101 00110010 11100101 10001111 .4-2..
000041a: 10110111 11100110 10011100 10111010 11100110 10001000 ......
0000420: 10111111 00101110 00110000 00110001 00101101 00110010 ..01-2
0000426: 00110001 01000100 01110010 01101111 01101111 01101101 1Droom
000042c: 01000110 11101000 10100101 10111111 11100101 10001101 F.....
0000432: 10010101 10101011 11001101 11101111 01001101 01100001 ....Ma
0000438: 01111000 01001101 01101001 01101110 01100100 00101110 xMind.
000043e: 01100011 01101111 01101101 11101001 01011011 01100010 com.[b
0000444: 01101001 01101110 01100001 01110010 01111001 01011111 inary_
000044a: 01100110 01101111 01110010 01101101 01100001 01110100 format
0000450: 01011111 01101101 01100001 01101010 01101111 01110010 _major
0000456: 01011111 01110110 01100101 01110010 01110011 01101001 versi
000045c: 01101111 01101110 10100001 00000010 01011011 01100010 on..[b
0000462: 01101001 01101110 01100001 01110010 01111001 01011111 inary

0000468: 01100110 01101111 01110010 01101101 01100001 01110100 format
000046e: 01011111 01101101 01101001 01101110 01101111 01110010 _minor
0000474: 01011111 01110110 01100101 01110010 01110011 01101001 _versi
000047a: 01101111 01101110 10100000 01001011 01100010 01110101 on.Kbu
0000480: 01101001 01101100 01100100 01011111 01100101 01110000 ild_ep
0000486: 01101111 01100011 01101000 00000100 00000010 01011000 och..X
000048c: 01000110 10001011 10100000 01001101 01100100 01100001 F..Mda
0000492: 01110100 01100001 01100010 01100001 01110011 01100101 tabase
0000498: 01011111 01110100 01111001 01110000 01100101 01001010 typeJ
000049e: 01101011 01100101 01110110 01101001 01101110 01011111 kevin

00004a4: 01110100 01100101 01110011 01110100 01001011 01100100 testKd
00004aa: 01100101 01110011 01100011 01110010 01101001 01110000 escrip
00004b0: 01110100 01101001 01101111 01101110 11100001 01000010 tion.B
00004b6: 01100101 01101110 01011000 01010101 01110011 01100101 enXUse
00004bc: 01100100 00100000 01101001 01101110 00100000 01001101 d in M
00004c2: 01100001 01110010 01101011 01000100 01101111 01110111 arkDow
00004c8: 01101110 00100000 01100100 01101001 01110011 01110000 n disp
00004ce: 01101100 01100001 01111001 01001010 01101001 01110000 layJip
00004d4: 01011111 01110110 01100101 01110010 01110011 01101001 _versi
00004da: 01101111 01101110 10100001 00000100 01001001 01101100 on..Il
00004e0: 01100001 01101110 01100111 01110101 01100001 01100111 anguag
00004e6: 01100101 01110011 00000001 00000100 01000010 01100101 es..Be
00004ec: 01101110 01001010 01101110 01101111 01100100 01100101 nJnode
00004f2: 01011111 01100011 01101111 01110101 01101110 01110100 _count
00004f8: 11000001 10011111 01001011 01110010 01100101 01100011 ..Krec
00004fe: 01101111 01110010 01100100 01011111 01110011 01101001 ord_si
0000504: 01111010 01100101 10100001 00011000 ze..

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腊状,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子苔可,更是在濱河造成了極大的恐慌缴挖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焚辅,死亡現(xiàn)場離奇詭異映屋,居然都是意外死亡苟鸯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門棚点,熙熙樓的掌柜王于貴愁眉苦臉地迎上來早处,“玉大人,你說我怎么就攤上這事瘫析∑霭穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵贬循,是天一觀的道長么库。 經(jīng)常有香客問我,道長甘有,這世上最難降的妖魔是什么诉儒? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮亏掀,結(jié)果婚禮上忱反,老公的妹妹穿的比我還像新娘。我一直安慰自己滤愕,他們只是感情好温算,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著间影,像睡著了一般注竿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魂贬,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天巩割,我揣著相機(jī)與錄音,去河邊找鬼付燥。 笑死宣谈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的键科。 我是一名探鬼主播闻丑,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勋颖!你這毒婦竟也來了嗦嗡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饭玲,失蹤者是張志新(化名)和其女友劉穎侥祭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卑硫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年徒恋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欢伏。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡入挣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硝拧,到底是詐尸還是另有隱情径筏,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布障陶,位于F島的核電站滋恬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抱究。R本人自食惡果不足惜恢氯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鼓寺。 院中可真熱鬧勋拟,春花似錦、人聲如沸妈候。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苦银。三九已至啸胧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幔虏,已是汗流浹背纺念。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留所计,地道東北人柠辞。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像主胧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子习勤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理踪栋,服務(wù)發(fā)現(xiàn),斷路器图毕,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 名詞延伸 通俗的說冬阳,域名就相當(dāng)于一個(gè)家庭的門牌號碼,別人通過這個(gè)號碼可以很容易的找到你党饮。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,602評論 2 57
  • 個(gè)人認(rèn)為肝陪,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • 故事來源于生活刑顺,生活來自無盡的瑣碎氯窍。 他還是習(xí)慣性的掏出煙散一圈,打火機(jī)響了之后他的臉總是藏在煙霧...
    癡嗔顛閱讀 359評論 0 0
  • 東風(fēng)吹落玉池蓮蹲堂,人間天庭錦滿園狼讨。九曲橋邊如意樹,萬枝千朵祝平安柒竞。
    江南煙雨閱讀 264評論 1 13