Golang及其项目管理
文章平均质量分 60
villare
https://github.com/Aavon
展开
-
Golang代码笔记--netpoller
netpoller背景介绍I/O多路复用模型(I/O Multiplexing):select阻塞,直到有FD准备好,FD数量有FD_SETSIZE限制int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);// readfds,write...原创 2019-10-17 22:42:10 · 887 阅读 · 0 评论 -
golang代码笔记 --sync包
syncsync包实现了一些基础的同步原语;更高级的同步机制官方建议使用channel来实现;同时包含atomic包,实现数据的原子操作;以下原语对象在参数传递时,切忌不可被拷贝:XXX must not be copied after first use.Mutex锁是sync包的核心概念,其他原语的实现到多都是基于Mutex的封装,golang在Mutex之前抽象了Locker接...原创 2019-07-18 19:26:01 · 369 阅读 · 0 评论 -
golang代码笔记 -- 基础库归纳(持续更新)
主要内容主要根据自己在开发过程中的使用经验,总结一下常用的基础包的使用方式;可能会有疏漏和错误,主要是强迫自己来进行总结;归纳列表1.string & strconvstrconv – 数字转换strconv包最常用的是整型,浮点型,布尔等类型和字符串的转换;FormatBool -- "true"/"false"FormatFloatFormatIntForma...原创 2019-07-07 21:48:49 · 457 阅读 · 0 评论 -
golang代码笔记 -- timer
Timer案例分析func FailureCase() { i := 0 go func() { for { i = i + 1 time.Sleep(time.Second) if i > 5 { break } } }() for { exit := false select { // 避免使用for...原创 2019-05-22 11:23:58 · 416 阅读 · 0 评论 -
golang代码笔记 --pprof的基本使用和程序性能分析
背景由于最近线上服务业务量正大暴露出一些性能问题(CPU比日常翻倍、内存释放过程不如预期),所有,不得不借助golang提供的系列工具来分析,帮助快速定位问题代码段,进而优化代码逻辑的(加深对语言特性的理解);主要内容pprof工具的使用trace日志信息1. pprof工具的使用主要package:// 性能分析基础包"runtime/pprof"// web封装“net...原创 2019-03-31 21:52:14 · 503 阅读 · 0 评论 -
golang代码笔记 -- 使用pid文件控制程序多实例运行
主要包含golang对pid操作的封装和程序状态判断package mainimport ( "fmt" "io/ioutil" "os" "os/signal" "strconv" "syscall")func main() { pid, exist := PidfileExit("./test_pid") if exist { i原创 2018-12-31 11:19:27 · 1914 阅读 · 4 评论 -
golang代码笔记 -- 优雅退出的程序(服务)
主要内容1. 程序为什么需要优雅退出2. 实现办法(举例)3. 总结1. 程序为什么需要优雅退出原因很简单,我们都不希望自己的程序被异常关闭或者ctrl+c给直接干掉,或许我们这回正在写数据库,或许正在完成一个复杂的计算流程;我们希望程序能在完成手头的工作之后才关闭,就好比编辑器退出是自动保存一样,防止之前的工作白费,更糟糕的是,导致异常或者不一致的数据;2.实现办法(举例)其实实...原创 2018-12-17 22:46:27 · 3960 阅读 · 0 评论 -
编写地道的Go代码
如题,很有参考价值的文章:http://colobu.com/2017/02/07/write-idiomatic-golang-codes/#%E4%B8%80%E4%BA%9B%E5%90%8D%E7%A7%B0转载 2018-07-07 16:22:10 · 228 阅读 · 0 评论 -
Golang学习笔记1-组合和接口
主要内容1.组合2.接口3.常见问题4.总结1.组合Golang中没有OOP中继承的概念,取而代之的是组合,同样起到属性和方法继承 的作用,特别是匿名组合,其表现形式和继承的行为类似,但是却有很多不同的地方,相对于继承、多态这些典型的OOP思想,组合显得更加简洁灵活。1.1.一般组合type Wifi struct { Name string}ty...原创 2018-03-01 21:42:34 · 610 阅读 · 0 评论 -
Golang项目管理实践一--Golang包管理特点以及Glide工具的使用
文章内容Golang包管理的特点Golang包管理的注意点结合Glide工具进行包管理实践总结 由于Golang特殊的包管理策略,同时,目前并没有成熟的包管理工具,因此需要我们在管理Golang项目时,需要首先考虑适合项目的一种包管理策略,已达到“ReproducibleBuild”的最终目的; 注:文章基于Golang 1.7+1.Golang包管理的特点原创 2018-01-10 18:35:43 · 8786 阅读 · 0 评论