【译】在BigCache缓存中存储空接口

前言断断续续用Golang开发项目已经有1年时间了,一直还没有做到精通。近期关于自己的职业生涯有一些思考,首要任务就是要有精通的领域。结合工作需要,还有自己的兴趣爱好,所以选择首先从Golang下手,先从翻译Golang文档开始吧。原文地址:Storing Empty Interfaces in BigCachehttps://dev.to/calebschoepp/storing-empty-interfaces-in-bigcache-1b33译文本文也发表在我的个人博客博客https://...阅读全文

Go语言中文网 2020-06-02 10:34:42 LucusXu

[Go] 写一个守护协程的通用套路是什么?

背景 根据一个 Goroutine 是否直接依赖用户交互,我们可以将 Goroutine 分为两大类,一类是直接依赖用户交互的前台协程,比如 HTTP Server Handler等;另一类是不直接依赖用户交互的后台协程,比如 HTTP Server,定时任务协程等。前台协程随用户的交互开始执行,随交互结束而结束,比较容易设计。本文主要讨论后台协程设计的一些通用套路。 一个良好的后台协程需要至少满足以下两个诉求: 容易控制,尤其是启动、停止、重启等操作。 状态容易被观察,比如是否正在运行中。 针...阅读全文

Segmentfault 2020-06-03 12:32:37 eddix

25. 学习 Go 协程:详解信道/通道

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 go...阅读全文

Segmentfault 2020-06-03 13:32:34 Python编程时光

Golang读取文件和处理超大文件方案

Golang 操作文件的读取的方法很多,适用的场景也是各不相同,在此我们将文件的读取分为如下几种 : 文件整体读取 文件分片读取(块级读取) 文件行级读取 系统的配置不同,执行的耗时也不相同,此处给出一参考 系统配置 : OS : Windows10 Memory : 16G CPU (英特尔)Intel(R) Core(TM) i3-4370 CPU @ 3.80GHz(3800 MHz) 1. 文件整体读取 文件整体读取就是将文件一次性读取到,理解上是将文件的内容第一次就读取完了 使用场景 ...阅读全文

简书 2020-06-02 07:32:45 captain89

dapr实战(2):使用go和java来实现dapr 官方的Hello world和对其过程的研究

引言 在前面上一次的实战中,我们搭建了dapr的本地开发环境,并且部署了dapr官方的Hello World示例代码,为了加深对Dapr的理解,在本文中使用go 和 java语言重写Dapr的官方示例代码 Dapr的官方示例代码Hello World的分析 dapr示例 在服务端中提供了三个对Order的处理逻辑:增加订单,查询订单和删除订单,这三个业务处理都是以REST的方式对外提供服务,而这三个业务处理都会通过Dapr Runtime与Redis交互来完成数据的存放,读取和删除;而pytho...阅读全文

简书 2020-06-02 07:32:45 narry

Windows10+golang+gRPC环境搭建

1、安装protoc 下载地址:https://github.com/protocolbu...(注:https://github.com/protocolbu... 是其源码库,可以学习,如果源码库下载过慢,可以到码云上搜,很多同步的库,是国内的源,下载速度比较快,当然也可以自己在码云上创建个同步的库) 当前最新版本3.12.2我的是windows10 64位操作系统,所以选择版本:protoc-3.12.2-win64.zip直接用浏览器即可下载如果网速不行,还可以用迅雷下载:https:/...阅读全文

Segmentfault 2020-06-03 13:32:34 laughbug

Golang 在 Mac、Linux、Windows 下如何交叉编译

golang-gopher.png Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。 Golang支持的平台和版本 $ go tool dist list 其实 Golang 的交叉编译非常简单,只需要在编译前指定系统和 CPU 架构,基本不会有任何问题,编译出来讲文件拷贝到对应平台就能跑。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_E...阅读全文

简书 2020-06-01 17:32:57 chengchaos

Docker镜像:第一部分-减小镜像大小

原文地址:Docker Images : Part I - Reducing Image Size 介绍 在开始使用容器时,我们很容易对生成的镜像大小感到震惊。在不牺牲开发人员和操作人员的便利性的前提下,我们将回顾多种减少镜像大小的技术。在第一部分中,我们将讨论多阶段构建,因为任何人想要减小镜像大小,都应该从这里开始。我们还将说明静态链接和动态链接之间的区别,以及我们为什么要关注这些。这也是介绍Alpine的机会。 在第二部分中,我们将看到与各种流行语言相关的一些特殊性。我们将讨论Go,以及Ja...阅读全文

简书 2020-06-01 17:32:57 豆腐匠

[斗鱼]没人比我更懂微服务--Go微服务框架Jupiter

作者:aerox@斗鱼项目开源地址:https://github.com/douyu/jupiterJupiter 是斗鱼开源的,面向服务治理的Golang微服务框架,以开发效率和治理效率为核心目标,从统一开发规范、完善监控埋点、降低开发难度等多个维度来帮助Gopher开发高性能、高可靠性的微服务框架。Jupiter在斗鱼内部经过三年打磨、几百个服务的线上验证,在多种应用场景中适配、历经多次基础架构迭代,有效地保障了服务应用的快速迭代、精确监控,并在异地多活、容器云、混沌工程等基础建设中,支撑服...阅读全文

Segmentfault 2020-06-03 12:32:37 MEX

关于 Golang 错误处理的思考

关于 Golang 错误处理的思考 Golang有很多优点,这也是它如此流行的主要原因。但是 Go 1 对错误处理的支持过于简单了,以至于日常开发中会有诸多不便利,遭到很多开发者的吐槽。 这些不足催生了一些开源解决方案。与此同时, Go 官方也在从语言和标准库层面作出改进。 这篇文章将给出几种常见创建错误的方式并分析一些常见问题,对比各种解决方案,并展示了迄今为止(go 1.13)的最佳实践。 几种创建错误的方式 首先介绍几种常见的创建错误的方法 基于字符串的错误 err1 := errors....阅读全文

掘金 2020年06月01日 hantmac

golang之channel使用简述

Channel golang CSP 模型中的C, 主要用于goroutine之间消息的传递,我们知道在写代码的过程中,解偶是非常重要的一环,而使用channel则可以很好的隔离goroutine,使得goroutne之间的交互,只需要将重心关注在如何从channel中消费或者生产消息。 声明和使用 阻塞场景 关闭Channel select & range 使用channel模拟生产消费模型 声明和使用 使用make声明一个channel ch := make(chan int) ch <- ...阅读全文

Segmentfault 2020-06-03 12:32:36 pojol

docker学习笔记

# docker * docker容器和宿主os共享一个kernel。 * docker容器使用统一文件系统技术, 在宿主机kernel的基础之上叠加整合了一个单独隔离的文件系统(包含vfs), 因为容器/proc目录和宿主机的/proc目录互相隔离所以, 容器中的进程与宿主机的进程互相隔离。 * docker容器具有虚拟网卡, daemon为docker容器提供了虚拟网络 (支持nat模式), docker容器中的网络可以隔离也可以通过nat和宿主os对外共享ip。 * docke...阅读全文

Go语言中文网 2020-06-01 12:38:34 loop_0

24. 理解 Go 语言中的协程:goroutine

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 说到Go语言,很多没接触过它的人,对它的第一印象,一定是它从语言层面天生支持并发,非常方便,让...阅读全文

掘金 2020年06月01日 王一白

用golang写一个简单的游戏(四)

上回分析到了炸弹的数量与位置问题,得出了随机位置的最多炸弹数量,但炸弹数量看起来并不多,这使得路径十分随意,因此,炸弹数量我不想太少,直接自己手动定义了。其实还有个思路的,就是按照区域随机分配炸弹,比如每个5×5区域就随机分配一个炸弹,实现方式还有其他形式,不在这个问题上纠结了。我今天想实现一个功能,自动打印出从起点到终点的最短路径,以便在炸弹数量足够多的时候,很快得出一个答案。 一个m×n的地图,我们很容易知道最短路径是m+n-1。不过炸弹的设定,让这个最短路径发生了变化,炸弹的周围不能经过,...阅读全文

51CTO博客 2020-05-31 13:07:46 wx5e1abbbb0a5e5

golang面试题:拷贝大切片一定比小切片代价大吗?

默认文件1590972322350.png 问题 拷贝大切片一定比小切片代价大吗? 怎么答 并不是,所有切片的大小相同;三个字段(一个 uintptr,两个int)。切片中的第一个字是指向切片底层数组的指针,这是切片的存储空间,第二个字段是切片的长度,第三个字段是容量。将一个 slice 变量分配给另一个变量只会复制三个机器字。所以 拷贝大切片跟小切片的代价应该是一样的。 解释 SliceHeader 是切片在go的底层结构。 type SliceHeader struct { Data uin...阅读全文

简书 2020-06-01 11:32:50 9號