计算机

Golang 内存模型

1 指令顺序调整 对于单goroutine程序代码,编译器和处理器有时会调整源码中的指令顺序来做一些优化。当然,此类调整在当前gorouine程序来看并不会改变其源码指令所指定的行为。但在多个线程共享内存的情形下,某个goroutine内部 …

阅读更多

Go 1.3 Release Notes 研读

1 Go 1.3简介 Go 1.3在Go 1.2发布6个月后如约而至。本版没有语言级变化,重点放在了实现工作上。提供更精确的垃圾回收、编译器工具链重构等以实现对特别是对大项目的加速构建及全局性能提升,此外还支持了DragonFly …

阅读更多

Golang vendor文件夹使用

1 提出问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包。而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本。而不同的依赖包由各自的版本工具独立管理,所以当所依赖的包在新版本发生接口变更或删除时,会面临很多问题。 为避免 …

阅读更多

LeetCode 413 等差数列切片

1 题目描述 若一个数列至少有三个元素,且任意相邻两元素的差相等,则该数列为一个等差数列。 例如,如下三个数列即为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 如下数列不是等差数列:

阅读更多

Golang 正则表达式使用小结

golang Regexp主要提供如下正则所表示的16个方法: Find(All)?(String)?(Submatch)?(Index)? 若带All,该方法返回一个所有递进匹配结果的slice;该方法需要额外传一个整数n,若 …

阅读更多

Golang worker pool 实现

worker pool 的设计常用来加速处理执行较耗时的重任务,且为了避免 goroutine 的过度创建,需要指定工作池的大小。使用 golang 的 goroutine 与 chan,数行代码即可实现一个简单的工作池。

阅读更多