深入理解Go 1.9 sync.Map

Go官方的faq已经提到内建的map不是线程(goroutine)安全的。在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。另外笔者在go 1.9之前通常是使用concurrent-map来解决这类问题,但是不是所有的第三方库都以此来解决问题。 我们先来看看这个...阅读全文

2017-12-19 20:01:01 终于19岁
阅读:3575 评论:2

给以后的同学攒点golang的面经

只要活着,就不算是悲剧。我们尚在途中,今后仍要继续。——《火花》戳 -> 校招-面经我主要用的还是go,虽然语言不是很重要,但投的基本上是跟go有关的公司,也有一些c++的公司,想往go发展的可以参考我的面经春招春招基本上是过完年回来开始,建议寒假开始复习然后回来就可以找实习了。我春招投的比较晚,后面投的公司不是很多,基本被刷简历,能面试的只有七牛云,然而第一次面试被各种吊打,春招后面去了深圳一家小公司实习了两个月七牛云七牛云的技术还是不错的,虽然实习不想去上海(建议实习不要看地点,实习很短不要...阅读全文

2018.12.07 13:29 牛客网
阅读:12414 评论:0

十条有用的 GoLang技术

这里是我过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践。我相信它们具有弹性的。这里的弹性是指: 某个应用需要适配一个灵活的环境。你不希望每过 3 到 4 个月就不得不将它们全部重构一遍。添加新的特性应当很容易。许多人参与开发该应用,它应当可以被理解,且维护简单。许多人使用该应用,bug 应该容易被发现并且可以快速的修复。我用了很长的时间学到了这些事情。其中的一些很微小,但对于许多事情都会有影响。所有这些都仅仅是建议,具体情况具体对待,并且如果有帮助的话务必告诉我。随时留言:) 1...阅读全文

2018年05月10日 10:59:33 x356982611
阅读:764 评论:0

Golang中的一些常用的简单算法

本文为转载,原文:Golang中的一些常用的简单算法 Golang 介绍 Golang中的一些常用的简单算法, 包括抢红包算法,洗牌算法等 1. 洗牌算法 洗牌算法,即将原来的顺序打乱,组成新的随机排序的顺序。 以下示例中以int切片为例给出一个简单算法: import ( "fmt" "math/rand" "time" ) func main() { intArr := []int{1,2,3,4,5,6,7,8,9} for i := 0; i < 10; i++{ shuffle(int...阅读全文

2018.12.13 20:28 ChainZhang
阅读:2729 评论:0

SRE: 性能分析: 一个 Go 编写的简单 HTTP Web 服务器的优化方法

​性能分析和调优是一种很强大的技术,用来验证是否满足客户关注的性能要求。性能分析常常被用来分析一个程序将大部分时间花在哪里了,并通过一个科学的方法来测试调优实践的效果。这个帖子使用一个 Go 语言编写的 HTTP 服务作为一个例子来定义一种性能分析和调优的普遍方法。go 特别适合性能分析和调优,因为它在它的标准库中提供了 [pprof](https://golang.org/pkg/runtime/pprof/) 剖析工具链。 ## 策略 我们先尝试建立一个简单的框架来构建对程序的分...阅读全文

2019-01-02 19:43:16 daliny
阅读:1894 评论:1

使用drone和gogs搭建自己的CI/CD系统

drone是一个基于容器的本地持续交付平台,和Jenkins是差不多的,然后配合轻量级的gogs来作为git管理,都是基于golang开发的很符合我的需求,我们来把它们结合作为一个完整的CI、CD平台。 首先我们要先安装docker,上次的篇幅我们已经说过了我就不赘述了。 需要的东西有:linux,docker,docker-compose,drone,gogs,git等。 安装gogs和drone 配合荣锋亮大哥的yml文件和docker-compose我们可以很容易安装他们: version...阅读全文

2019-03-11 14:34:41 壳壳
阅读:934 评论:0

Go语言 如何配制 高性能sql.DB

**文章来自微信公众号:Go语言圈** &emsp; 有很多教程是关于Go的`sql.DB`类型和如何使用它来执行SQL数据库查询的。但大多数内容都没有讲述`SetMaxOpenConns()`, `SetMaxIdleConns()` 和 `SetConnMaxLifetime()`方法, 您可以使用它们来配置`sql.DB`的行为并改变其性能。 在本文我将详细解释这些设置的作用,并说明它们所能产生的(积极和消极)影响。 &emsp; **开放和空闲连接** 一...阅读全文

阅读:1091 评论:0

用位运算为你的程序加速

![](https://tva1.sinaimg.cn/large/e6c9d24ely1h4p37zeb9aj20xc0go0tv.jpg) # 前言 最近在持续优化之前编写的 `JSON` 解析库 [xjson](https://github.com/crossoverJie/xjson),主要是两个方面的优化。 第一个是支持将一个 `JSONObject` 对象输出为 `JSON` 字符串。 这点在上个版本中只是利用自带的 `Print` 函数打印数据: ``...阅读全文

2022-07-31 22:48:01 crossoverJie
阅读:1574 评论:2