自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

转载 大数据平台安全标准设计

从应用角度看,需大数据平台提供如下4项安全功能:图1 大数据平台安全功能1、边界——限制只有合法用户身份的用户访问大数据平台集群(1) 用户身份认证:关注于控制外部用户或者第三方服务对集群的访问过程中的身份鉴别,这是实施大数据平台安全架构的基础;用户在访问启用了安全认证的集群时,必须能通过服务所需要的安全认证方式。(2)网络隔离:大数据平台集群支持通过网...

2017-05-26 17:06:00 463

转载 为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊

看了下压缩算法的发展历史,根据倒排索引的数据结构特点,个人认为zstd不适合做倒排索引压缩,举例说明下:假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法***直接***采用zstd这类字典压缩算法的,因为里面没有重复数据(字典压缩通常重复数据较多,例如一个重复单词较多的txt文档适合zstd字典压缩)。但是,如果对他们做差值运算后变为[...

2017-05-25 15:25:00 140

转载 无损压缩算法历史

引言无损压缩算法可行的基本原理是,任意一个非随机文件都含有重复数据,这些重复数据可以通过用来确定字符或短语出现概率的统计建模技术来压缩。统计模型可以用来为特定的字符或者短语生成代码,基于它们出现的频率,配置最短的代码给最常用的数据。这些技术包括熵编码(entropy encoding),游程编码(run-length encoding),以及字典压缩。运用这些技术以及其它技术,一个8...

2017-05-25 15:00:00 244

转载 无损压缩算法历史——熵编码是最早出现的,后来才有Lzx这些压缩算法

LosslessEntropy typeUnaryArithmeticAsymmetric Numeral SystemsGolombHuffmanAdaptiveCanonicalModifiedRangeShannonShannon–FanoShannon–Fano–EliasT...

2017-05-25 14:57:00 279

转载 LMDB中的mmap、Copy On Write、MVCC深入理解——讲得非常好,常来看看!

LMDB基本架构lmdb的基本架构如下:lmdb的基本做法是使用mmap文件映射,不管这个文件存储实在内存上还是在持久存储上。lmdb的所有读取操作都是通过mmap将要访问的文件只读的映射到虚拟内存中,直接访问相应的地址.因为使用了read-only的mmap,同样避免了程序错误将存储结构写坏的风险。并且IO的调度由操作系统的页调度机制完成。而写操作,则是通过write...

2017-05-24 17:57:00 201

转载 golang LMDB入门例子——key range查询

如下,使用gomb库package mainimport ( "bytes" "fmt" "io/ioutil" "os" . "github.com/szferi/gomdb")// Most mdb functions/methods can return errors. This example ig...

2017-05-24 17:17:00 185

转载 golang LMDB入门例子——尼玛,LMDB的文档真的是太少了

使用的是这个库:https://github.com/szferi/gomdb安装:go get github.com/szferi/gomdb代码:package mainimport ( "fmt" "io/ioutil" "os" . "github.com/szferi/gomdb")// Mos...

2017-05-24 16:45:00 199

转载 golang import all 类似python import * 效果

import "io/ioutil"func main() { content, err = iotuil.ReadFile("somefile.txt") // etc..}=》I guess this doesn't really answer your question, but if you want, you can actua...

2017-05-24 16:37:00 93

转载 python lmdb demo 这接口和BDB一样恶心啊!

import lmdblmdb_img_name = "test.lmdb"env = lmdb.open(lmdb_img_name, map_size=1e6)with env.begin(write=True) as txn: txn.put("key", "xxxxxxxxxxxxxxxxxx") txn.put("key2", "?"...

2017-05-24 14:59:00 126

转载 ledisDB底层实现——本质上就是用leveldb这样的底层存储,和ssdb一样,meta里存的是hash、list等的元数据...

Hashhash可以算是一种两级kv,首先通过key找到一个hash对象,然后再通过field找到或者设置相应的值。 在ledisdb里面,我们需要将key跟field关联成一个key,用来存放或者获取对应的值,也就是key:field这种格式。 这样我们就将两级的kv获取转换成了一次kv操作。 另外,对于hash来说,(后面的list以及zset也一样),我们需要快速的知道它的si...

2017-05-24 13:25:00 144

转载 ssdb底层实现——ssdb底层是leveldb,leveldb根本上是skiplist(例如为存储多个list items,必然有多个item key,而非暴力string cat),用它来做red...

我已经在用ssdb的hash结构,存储了很多数据了,但是我现在的用法正确吗? 我使用hash结构合理吗?1. ssdb数据库说是类似redis,而且他们都有hash结构,但是他们的命名有点不同,ssdb 是(name,key,value) ,其实相对应的redis是(key,field,value),当然了对于使用函数上还是很像的; 那么问题来了,ssdb的hash 和...

2017-05-24 11:41:00 247

转载 golang文件读写三种方式——bufio,ioutil和os.create

package mainimport ( "bufio" "fmt" "io/ioutil" "os")func check(e error) { if e != nil { panic(e) }}func main() { d1 := []byte("hello\ngo\n"...

2017-05-23 11:51:00 280

转载 kafka备份机制——zk选举leader,leader在broker里负责备份

Kafka架构   如上图所示,一个典型的kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个Zookeeper集群。Kafka通过Zo...

2017-05-23 11:32:00 111

转载 splunk的bucket组织目录——时间序列,按照时间来组织目录

splunk的bucket组织目录:db_1481515116_1480695302_0db_1481537316_1481532688_1db_1481547598_1481539988_2db_1481617470_1481613403_3db_1481623046_1481619179_4db_1481632042_1481631975_5db_1481679220_1481679...

2017-05-23 10:14:00 144

转载 kafka的topic和分区策略——log entry和消息id索引文件

Topic在逻辑上可以被认为是一个在的queue,每条消费都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里。 为了使得Kafka的吞吐率可以水平扩展,物理上把topic分成一个或多个partition,每个partition在物理上对应一个文件夹,该文件 夹下存储这个partition的所有消息和索引文件。每个日志文件都是“log entrie...

2017-05-23 10:10:00 163

转载 csharp OverflowException——超出数值范围会抛出异常

OverflowException 會在下列情況下執行階段擲回︰算術運算會產生作業所傳回的資料型別範圍之外的結果。 下列範例說明 OverflowException 超出範圍的乘法運算所擲回 Int32 型別。C#int value = 780000000;checked {try { // Square the ori...

2017-05-22 14:49:00 278

转载 Elias-Fano编码算法——倒排索引压缩用,本质上就是桶排序数据结构思路

Elias-Fano编码过程如下:把一组整数的最低l位连接在一起,同时把高位以严格单调增的排序划分为桶。Example: 2, 3, 5, 7, 11, 13, 24Count in unary the size of upper bits “buckets” including empty ones:110=》计算最大的桶,此处是110,计算方法如下:Maximum ...

2017-05-22 12:16:00 290

转载 倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同

PForDelta算法PForDelta算法最早由Heman在2005年提出,它允许同时对整个chunk数据(例128个数)进行压缩处理。基础思想是对于一个chunk的数列(例128个),认为其中占多数的x%数据(例90%)占用较小空间,而剩余的少数1-x%(例10%)才是导致数字存储空间过大的异常值。因此,对x%的小数据统一使用较少的b个bit存储,剩下的1-x%数据单独存储。...

2017-05-20 14:27:00 256

转载 Karma和Jasmine自动化单元测试——本质上还是在要开一个浏览器来做测试

1. Karma的介绍Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma。Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透!Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工...

2017-05-20 11:10:00 112

转载 倒排列表压缩算法汇总——分区Elias-Fano编码貌似是最牛叉的啊!

来看看倒排索引压缩。压缩是拿CPU换IO的最重要手段之一,不论索引是放在硬盘还是内存中。索引压缩的算法有几十种,跟文本压缩不同,索引压缩算法不仅仅需要考虑压缩率,更要考虑压缩和解压性能,否则会解压太慢而起不到CPU换IO的作用。早期的索引设计里,在尝试了几十种编码之后,基本都确定性采用差分编码+可变长字节编码。差分的目的在于让索引的文档ID尽可能小,因为压缩小的整数总是比大整数更有效。在...

2017-05-19 17:46:00 291

转载 格伦布编码——rice编码无非是golomb编码M为2^x的特例

格伦布编码格伦布编码是一种无失真资料压缩方法,由数学家所罗门·格伦布在1960年代提出。Rice编码Robert F. Rice提出Rice 编码,是以哥伦布编码为基础做改良而更简易的前置码。Rice编码可视为适应性编码的一种或是哥伦布编码的特例之一。哥伦布编码有一个可调整参数,可以是任一正整数。而Rice编码则是此调整参数为2的次方情况时。这让Rice编码在电脑运...

2017-05-19 16:57:00 387

转载 golomb哥伦布编码——本质上就是通过0来区分商和余数

哥伦布编码是一个针对整数的变长编码方式,详细介绍可以看维基百科。这里简单介绍下:哥伦布编码使用指定的整数 M 把输入的整数分成两部分:商数 q、余数 r。 商数当做一元编码,而余数放在后面做为可缩短的二进制编码。将整数变为一元编码非常简单:q 的一元编码结果就是 q 个 1 加上 1 个 0。如下表:整数一元编码00110...

2017-05-19 16:12:00 458

转载 electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!...

Build cross platform desktop appswith JavaScript, HTML, and CSSElectron:1.6.8Node:7.4.0Chromium:56.0.2924.87V8:5.6.326.50It's easier than you thinkIf you can build a w...

2017-05-19 14:47:00 457

转载 AngularJS 1.x 国际化——Angular-translate例子

可运行代码如下:<!DOCTYPE html><html ng-app="MyApp"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://apps.b...

2017-05-18 18:02:00 178

转载 go语言笔记——map map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序...

示例 8.1make_maps.gopackage mainimport "fmt"func main() { var mapLit map[string]int //var mapCreated map[string]float32 var mapAssigned map[string]int mapLit = map[string]int{"...

2017-05-16 18:00:00 157

转载 go语言笔记——切片函数常见操作,增删改查和搜索、排序

7.6.6 搜索及排序切片和数组标准库提供了sort包来实现常见的搜索和排序操作。您可以使用sort包中的函数func Ints(a []int)来实现对 int 类型的切片排序。例如sort.Ints(arri),其中变量 arri 就是需要被升序排序的数组或切片。为了检查某个数组是否已经被排序,可以通过函数IntsAreSorted(a []int) bool来...

2017-05-16 17:48:00 288

转载 go语言笔记——append底层实现和Cpp vector无异,只是有返回值,double后返回了新的vector地址而已...

切片的复制与追加如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。下面的代码描述了从拷贝切片的 copy 函数和向切片追加新元素的 append 函数。示例 7.12copy_append_slice.gopackage mainimport "fmt"func main() { sl_from := []int{1, 2,...

2017-05-16 17:28:00 76

转载 go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针...

切片切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型)。切片是一个长度可变的数组。多个切片如果表示同一个数组的片段,它们可以共享数据;因此一个切片和相关数组的其他切片是共享存储的,相反,不同的数组总是代表不同的存储。数组实际上是切片...

2017-05-16 17:14:00 194

转载 go语言笔记——数组长度不可变,但是元素值是可变的!!!

数组声明的格式是:var identifier [len]type例如:var arr1 [5]int在内存中的结构是:对索引项为 i 的数组元素赋值可以这么操作:arr[i] = value,所以数组是可变的。由于索引的存在,遍历数组的方法自然就是使用 for 结构:IDIOM:for i:=0; i < len(arr...

2017-05-16 16:16:00 205

转载 go语言笔记——append是内置的函数!!!new是一个函数!!!调试可以使用闭包,本质上是print调试,尼玛!...

内置函数Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。以下是一个简单的列表,我们会在后面的章节中对它们进行逐个深入的讲解。名称说明close用于管道通信len、capl...

2017-05-16 16:05:00 91

转载 go语言笔记——defer作用DB资源等free或实现调试

defer 和追踪关键字 defer 允许我们推迟到函数返回之前(或任意位置执行return语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为return语句同样可以包含一些操作,而不是单纯地返回某个值)。关键字 defer 的用法类似于面向对象编程语言 Java 和 C# 的finally语句块,它一般用于释放某些已分配的资源。示例 6....

2017-05-16 15:47:00 102

转载 go语言笔记——多值函数,本质上和nodejs的回调很像,不过nodejs是回调的第一个参数是err,而golang里是第二个!...

5.2 测试多返回值函数的错误Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功;返回零值(或 nil)和 false 表示失败(第 4.4 节)。当不使用 true 或 false 的时候,也可以使用一个 error 类型的变量来代替作为第二个返回值:成功执行的话,error 的值为 nil,否则就会包含相应的错误信息(Go 语言中的错误类型为...

2017-05-16 15:13:00 147

转载 go语言笔记——指针,和C用法以及本质一样,但不支持指针的+-运算!

4.4.2 值类型和引用类型所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值。Go 语言的取地址符是&,放到一个变量前使用就会返回相应变量的内存地址。示例 4.22string_pointer.gopackage mainimport "fmt"func main() {...

2017-05-16 14:33:00 134

转载 go语言笔记——包的概念本质上和java是一样的,通过大小写来区分private,fmt的Printf不就是嘛!...

示例 4.1hello_world.gopackage mainimport "fmt"func main() { fmt.Println("hello, world")}4.2.1 包的概念、导入与可见性Go 的标准库包含了大量的包(如:fmt 和 os),但是你也可以创建自己的包(第 8 章)。如果想要构建一个程序,则包和包内的文件都...

2017-05-16 13:15:00 67

转载 go语言笔记——还是大爱的我的python,开发效果高,tornado的性能也很不错

Go 自带的工具集主要使用脚本和 Go 语言自身编写的,目前版本的 Go 实现了以下三个工具:go install是安装 Go 包的工具,类似 Ruby 中的 rubygems。主要用于安装非标准库的包文件,将源代码编译成对象文件。go fix用于将你的 Go 代码从旧的发行版迁移到最新的发行版,它主要负责简单的、重复的、枯燥无味的修改工作,如果像 API 等复杂的函数修...

2017-05-16 11:55:00 88

转载 go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带...

3.3 调试器应用程序的开发过程中调试是必不可少的一个环节,因此有一个好的调试器是非常重要的,可惜的是,Go 在这方面的发展还不是很完善。目前可用的调试器是 gdb,最新版均以内置在集成开发环境 LiteIDE 和 GoClipse 中,但是该调试器的调试方式并不灵活且操作难度较大。如果你不想使用调试器,你可以按照下面的一些有用的方法来达到基本调试的目的:在合适的位置...

2017-05-16 11:49:00 118

转载 go语言笔记——go是有虚拟机runtime的,不然谁来做GC呢,总不会让用户自己来new和delete进行内存管理吧,还有反射!Go 的 runtime 嵌入到了每一个可执行文件当中...

2.7 Go 运行时(runtime)尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 节)、栈处理、goroutine、channel、切片(slice)、map 和反射(r...

2017-05-16 11:44:00 226

转载 go语言笔记——go环境变量goroot是安装了路径和gopath是三方包路径

Go 环境变量Go 开发环境依赖于一些操作系统环境变量,你最好在安装 Go 之间就已经设置好他们。如果你使用的是 Windows 的话,你完全不用进行手动设置,Go 将被默认安装在目录c:/go下。这里列举几个最为重要的环境变量:$GOROOT表示 Go 在你的电脑上的安装位置,它的值一般都是$HOME/go,当然,你也可以安装在别的地方。$GOARCH表示目标...

2017-05-16 11:37:00 208

转载 go语言笔记——是c开发的 lex yacc进行词法和语法分析,go不支持函数和运算符重载,不支持类型继承,也不支持断言,还有泛型...

从 Go 1.0.3 版本开始,不再使用 8g,8l 之类的指令进行程序的构建,取而代之的是统一的go build和go install等命令,而这些指令会自动调用相关的编译器或链接器。如果你想获得更深层次的信息,你可以在目录$GOROOT/src/cmd下找到编译器和链接器的源代码。Go 语言本身是由 C 语言开发的,而不是 Go 语言(Go 1.5 开始自举)。词法分...

2017-05-16 11:31:00 132

转载 统计ES性能的python脚本

思路:通过http请求获取es集群中某一index的索引docs数目变化来进行ES性能统计import timefrom datetime import datetimeimport urllib2def get_docs(data_type, today): # curl '192.168.3.153:9200/_cat/indices/met...

2017-05-16 10:36:00 149

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除