- 博客(212)
- 资源 (10)
- 收藏
- 关注

原创 golang 数据库开发神器 sqlx使用指南
sqlx使用指南这边文章主要基于Illustrated guide to SQLX翻译而成。 sqlx是一个go语言包,在内置database/sql包之上增加了很多扩展,简化数据库操作代码的书写。资源 如果对于go语言的sql用法不熟悉,可以到下面网站学习: database/sql documentation go-database-sql tutorial如果对于golang语言不熟悉,
2017-10-17 17:03:30
38403
3

原创 golang web开发 Handler测试利器httptest
test是golang语言的一部分,golang提供了非常强大的测试方法。单元测试,压力测试可以参见 golang 1.7之后高级测试方法之子测试,子基准测试(subtest sub-benchmarks)我们用go开发一个Web Server后,打算单元测试写的handler函数,在不知道httptest之前,使用比较笨的方法 就是编译运行该Web Server后,再用go编写一个客户端程...
2017-10-16 11:43:23
7968

翻译 LFS(the Log-structured File System)系统详解
There was a large and growing gap between random I/O performance and sequential I/O performance:Existing file systems perform poorly on many common workloads:LFS文件系统的设计木主要是为了解决上面这以前文件系统所存在的两个问题:随机输入输出...
2015-01-20 22:19:22
12053
1
原创 uber zap logger使用指南
zap logger项目地址 go.uber.org/zapNewDevelopment和NewProduction区别zap.NewDevelopment() 包含代码中文件信息2018-01-18T15:40:05.991+0800 INFO tool/zaplog.go:83 to sugar failed to fetch URLurlhttp://example.c
2018-03-08 09:08:31
13222
原创 基于golang从头开始构建基于docker的微服务实战笔记
参考博文part 1 利用gRPC protobuf定义服务part 2 - Docker and go-microGo-micropart 3 - docker-compose and datastoresPart 4 - Authentication with JWTJWTUser-serviceconsignment-cliconsignment-server
2018-01-17 15:11:57
8793
原创 gRPC
gRPC入门SIMPLE RPC客户端server apiSERVER-to-client streaming RPC定义接口客户端server apiA CLIENT-to-server streaming RPC定义接口客户端server apiA Bidirectional streaming RPC定义接口客户端server api遇到问题gRPC入门刚学习
2018-01-10 10:54:34
1672
转载 golang中job队列实现方法
THE NO-JOB-QUEUE JOB QUEUETHE SIMPLEST JOB QUEUEPRODUCER THROTTLINGENQUEUEING WITHOUT BLOCKINGSTOPPING THE WORKERWAITING FOR THE WORKERWAITING WITH A TIMEOUTCANCELLING WORKERSCANCELLING WORKERS WITHOUT
2018-01-03 18:38:48
6670
1
翻译 go语言常见陷阱
go语言常见陷阱(英文原文)[https://deadbeef.me/2018/01/go-gotchas]Range在golang中我们经常用range来遍历slice或chan,如果要更改slice中的成员应该怎么做?下面代码要把动物园中所有动物的腿变为999type Animal struct { name string legs int}func main() { zo
2018-01-03 15:09:45
1390
原创 Rust和golang之结构体
Rust创建元祖结构体类单元结构体方法写入方法关联函数golang结构体声明匿名结构体嵌套匿名域方法空结构体Rust创建Rust 定义结构体也是以struct关键字开头#[derive(Debug)]struct Rectangle { length:u32, width:u32, user:String,}上面我们定义了结构体Rectangle,
2017-12-22 14:02:25
1677
原创 golang bolt库操作手册
打开数据库TransactionsRead-write transactionsRead-Only transactionsBatch read-write transactions手动控制transaction使用 buckets使用keyvaluebucket自动递增整数迭代便利keysprefix scans范围搜索ForEach嵌套 buckets今天介绍的库bo
2017-11-24 13:52:10
8004
原创 go-kit 上手之example stringsvc3 通过代理实现分布式处理
使用的包main运行结果代理中间件stringsvc3没有完全按照官网中stringsvc3的写法,而是在stringsvc2的基础上增加了proxy.go 主要就是给uppercase增加了代理中间件,主要步骤分三步: 1)向特定地址代理服务器发送请求的client的编码和解码函数。 2)生成向特定地址代理服务器发送请求的client。 3)用client配合load
2017-10-30 08:52:16
3609
原创 go-kit 上手之example stringsvc1 函数即服务
使用包服务模型定义接口实现定义RPC输入输出参数endpoint封装从Request解码输入参数编码输出到ResponseWriter服务启动测试结果 增加loggo-kit stringsvc1动手笔记 go-kit官网 go-kit官方示例代码使用包package mainimport "context"import "errors"import "strings"im
2017-10-20 13:21:53
4127
原创 go-kit 上手之example stringsvc2 添加日志和监控
日志添加instrument对于Histograms和Summary的区别主函数错误总结用logMiddleware和instrumentingMiddleware对svc进行封装label misss errorinconsistent label cardinality查看metrics结果结果分析thread数count接口返回结果的统计接口uppercase 和cou
2017-10-20 13:07:30
3134
1
原创 golang学习笔记
基于下面两个视频课程的笔记 「课程」使用Go建立Web应用程序(Creating Web Applications with Go) 「教程」Go语言基础 (O’Reilly)除此之外 【课程】Go编程经典设计模式入门 web开发中支持gzip压缩返回自定义类型支持fmtPrintfsfmtPrintf qinterface类型推断
2017-10-18 14:02:31
673
原创 golang 1.7之后高级测试方法之子测试,子基准测试(subtest sub-benchmarks)
介绍在go1.7之后,testing包T和B的引入了一个Run方法,用于创建subtests 和 sub-benchmarks. subtests 和 sub-benchmarks可以让开发者更好的处理测试中的失败,更好的控制运行哪个测试用例,控制并行测试操作,测试代码更加简洁和可维护性更强。Table-driven tests 基础首先我们先讨论下Go中常见的测试代码编写方式。一系列相关的测试校验
2017-10-12 08:57:47
4167
原创 golang 正则匹配regexp接口实战学习
总览如果不熟悉正则表达式的语法的话,可以执行下面命令:go doc regexp/syntax联系代码package mainimport ( "fmt" "regexp")func expandTest() { pat := `(((abc.)def.)ghi)` reg := regexp.MustCompile(pat) fmt.Println(reg
2017-10-12 08:55:09
8512
原创 你可能不知道的关于golang 的10件事情
匿名结构体命令行 go doc在同一个channel上进行读写操作利用close来向其他goroutine广播利用nil通道的特性后记
2017-07-06 15:05:17
1444
原创 golang通道中 nil通道 close通道的特性点
C1 以下操作会引起panicC2 作为接受者的goroutine不要关闭channel否则 发送者未来往这个channel发送数据时会panicC3 如果一个channel有多个发送者发送者就不要关闭通道或者最后一个发送数据的goroutine来关闭通道C4 对于不再使用的通道不必显示关闭如果没有goroutine引用这个通道这个通道就会被垃圾回收C5 通道和select搭配最佳C6 如
2017-07-06 15:03:50
4292
原创 gRPC golang开发指南
为什么使用gRPC样例代码和环境的建立样例测试服务定义生成客户端和服务端代码创建服务端实现RouteGuideSimple RPCServer-side streaming RPCClient-side streaming RPCBidirectional streaming RPCStarting the serverCreating the client创建客户端Ca
2017-07-03 16:02:21
4829
原创 服务器开发利器golang context用法详解
背景Context结构继承的ContextBackGroundWithCancelwithDeadline withTimeout搜索测试程序WithValuego doc中的信息后记
2017-06-29 17:12:52
3928
原创 golang.org/x/time/rate 使用说明
type Limiterfunc NewLimiterfunc Limiter Allowfunc Limiter AllowNfunc Limiter Reservefunc Limiter ReserveNfunc Limiter Waitfunc Limiter WaitN测试 AllowN
2017-06-28 16:39:03
6649
1
原创 《Go in Action 2015.11.pdf》之6.4.1 Atomic functions
利用atomic递增ChannelsUnbuffered channels
2017-03-29 18:13:18
663
翻译 gorilla/securecookie /gorilla/sessions
var store = sessions.NewCookieStore([]byte("something-very-secret"))func MyHandler(w http.ResponseWriter, r *http.Request) { session, err := store.Get(r, "s1") if err != nil { http.Error
2017-03-28 18:34:10
1267
原创 《Packt.Mastering.Go.Web.Services.2015.4.pdf》之Handling our API versions
利用gorillamux区分数据类型利用jas特性路径中添加id获取请求的值利用gorilla/mux区分数据类型"github.com/gorilla/mux"func handleVersion(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "hi, this is an http verison")
2017-03-27 14:13:23
727
原创 《Packt.Mastering.Go.Web.Services.2015.4.pdf》之Using Gorilla for JSON-RPC
官网 http://www.gorillatoolkit.org/pkg/rpc#subdirs测试代码 为了更好的说明使用方法,对原文的代码有所修改。type RPCAPIArguments struct { Message string Msg string}type RPCAPIResponse struct { Message string
2017-03-24 14:26:57
529
原创 《Manning.Go.Web.Programming.2016.7.pdf》之form
HTML forms and GoPOST请求发送的键值对数据的格式是由HMTL form的content type指定的。在html中通过enctype指定如下:<form action="/process" method="post" enctype="application/x-www-form-urlencoded"><input type="text" name="first_name
2017-03-20 14:36:24
662
原创 《Manning.Go.Web.Programming.2016.7》之gob
具体参见 https://golang.org/pkg/encoding/gob/#Decoder.DecodeValue基本用法结构体中的成员要时可导出的,也就是说首字母时大写。编码的时候gob.NewEncoder定义一个编码器,然后使用.Encode方法对数据进行编码,传入Encode的参数为结构体的值或地址。解码的时候,gob.NewDecoder得到解码器,然后调用.Decode对数据进行
2017-03-18 15:33:49
1009
原创 《Manning.Go.Web.Programming.2016.7》笔记之文件服务器FileServer和cookie
CookieFileServer
2017-03-15 10:11:34
610
原创 golang cache 源码学习
github源码地址func newCacheWithJanitor(de time.Duration, ci time.Duration, m map[string]*Item) *Cache { c := newCache(de, m) // This trick ensures that the janitor goroutine (which--granted it
2017-03-03 14:43:24
1023
算法导论第三版英文原版 带书签Introduction to Algorithms, Third Edition
2013-06-18
书店设计 频率设计 频率测量的重要手段之一
2009-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人