理解 LSM Tree : 是什么让数据库这么能写?

2021-02-24
阅读 3 分钟
10k
log-structured merge-tree (LSM tree) 是一种被精心设计的数据结构,常用于处理大量写入的场景。通过对写入操作进行顺序写入优化实现性能提升。LSM tree 是很多数据库内部的核心数据结构,包括BigTable, Cassandra, Scylla,和 RocksDB。
封面图

你不知道的go channel

2018-06-28
阅读 2 分钟
6.6k
开发过程当中有遇到这样的一种情况,需要检查channel是否关闭,如果关闭则不进行相应操作,否则会panic等现象。在golang的select语法当中,default分支可以解决上述问题,请看如下例子:

运行以太坊私有网络

2018-03-27
阅读 2 分钟
3.5k
以太坊以 netWorkID的形式来标识一个网络,推荐使用--networkid的形式去指定,主网络的networkid是1(默认的),如果你想要建立私有网络,你可以指定一个新的网络id。

与你的团队分享git hooks的两种方式

2018-03-18
阅读 1 分钟
10.7k
Git hooks 是git非常好用的一个特性,在我自己的项目中,我需要保证我的所有go源文件都能够被正确地格式化,然后才能够被commit。因此,我用了一个很简单的git hook完成这项工作,你可以把这个文件的内容保存到.git/hooks/pre-commit来实现这个功能。

你不知道的Ethereum(1)Peer to Peer

2018-01-05
阅读 4 分钟
5.2k
以太坊的peer to peer (go-ethereum/p2p)模块能够让你便捷地在p2p网络上开发任何应用。这个p2p 包采用现代化的模块设计,能够很容易地在其之上扩展自己的额外通信协议。

Lodash 源码分析(三)Array

2017-09-21
阅读 7 分钟
4.3k
这是Lodash源码分析系列文章的第三篇,前面两篇文章(Lodash 源码分析(一)“Function” Methods、Lodash 源码分析(二)“Function” Methods)分别分析了Lodash "Function" 中的一些重要函数,也给出了简化的实现,为理解其内部机理和执行方式提供了便利。这篇文章将专注于Array,Array是Lodash中非常重要的内容,我们将分...

Lodash 源码分析(二)“Function” Methods

2017-08-29
阅读 7 分钟
3.6k
这是Lodash源码分析的第二篇文章,我们在第一篇Lodash 源码分析(一)“Function” Methods中介绍了基本的_.after,_.map,以及复杂的_.ary函数的实现以及我们自己的自定义轻量级版本。大概清楚了Lodash的整个代码脉络。这次我们继续分析,这次我们讲讲_.reduce和_.curry。

Go 1.9 新特性

2017-08-25
阅读 2 分钟
5.4k
Go1.9于2017年8月24日正式发布,新版本的Go有一些新变化:标准库,运行时,以及新的工具。在这个版本中,Go团队主要的工作都是在运行时的改进以及一些工具链的开发中。这些变化虽然不够令人激动,但是这的确是一个很棒的更新。

Lodash 源码分析(一)“Function” Methods

2017-08-21
阅读 13 分钟
9.9k
Lodash一直是我很喜欢用的一个库,代码也十分简洁优美,一直想抽时间好好分析一下Lodash的源代码。最近抽出早上的一些时间来分析一下Lodash的一些我觉得比较好的源码。因为函数之间可能会有相互依赖,所以不会按照文档顺序进行分析,而是根据依赖关系和简易程度由浅入深地进行分析。因为个人能力有限,如果理解有偏差,...

Go语言的实时GC——理论与实践

2017-08-20
阅读 7 分钟
16.4k
Go语言能够支持实时的,高并发的消息系统,在高达百万级别的消息系统中能够将延迟降低到100ms以下,这一切很大一部分需要归功于Go的高效的垃圾回收系统。

从Haskell、JavaScript、Go看函数式编程

2017-08-13
阅读 7 分钟
8.1k
本文就是我在学习函数式编程的过程当中自己体悟到的一些东西,这里将用go,JavaScript以及Haskell三种语言来分析函数式编程的一些奥秘。JavaScript由于具有的一些优势能够让我们可以实现函数式编程,而go作为一种强类型语言,虽然灵活性又稍有欠缺,但是也能够完成一些高阶函数的实现,Haskell语言作为正统的函数式编程语...

用gomock进行mock测试

2017-06-22
阅读 4 分钟
19.1k
在开发过程中往往需要配合单元测试,但是很多时候,单元测试需要依赖一些比较复杂的准备工作,比如需要依赖数据库环境,需要依赖网络环境,单元测试就变成了一件非常麻烦的事情。举例来说,比如我们需要请求一个网页,并将请求回来的数据进行处理。在刚开始的时候,我通常都会先启动一个简单的http服务,然后再运行我的...