状态变换 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「状态模式」如何在真实业务场景中使用。 「状态模式」比较简单,就是算法的选取取决于于自己的内部状态。相较于「策略模式」算法的选取由用户决策变成内部状态决策,「策略模式」是用户(客户端)选择具体的算法,「状态模式」只是通过内...阅读全文

客户决策 | Go语言设计模式实战

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「策略模式」如何在真实业务场景中使用。 什么是「策略模式」? 「策略模式」比较简单,大家平常工作中应该经常使用到,所以本文作为复习,帮助大家温故知新。我们先来看下定义: 不同的算法按照统一的标准封装,客户端根据不同的场景,...阅读全文

Segmentfault 2020-06-02 13:32:50 TIGERB

状态变换 | Go语言设计模式实战

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「状态模式」如何在真实业务场景中使用。 「状态模式」比较简单,就是算法的选取取决于于自己的内部状态。相较于「策略模式」算法的选取由用户决策变成内部状态决策,「策略模式」是用户(客户端)选择具体的算法,「状态模式」只是通过内...阅读全文

[上海]IPO之前阶段互联网公司招聘Golang开发、爬虫职位

**公司介绍:** IPO 之前互联网公司,主要业务为互联网文娱方向,公司规模超过一千人,在北美地区、北京、上海等城市均设有办公室,招聘职位会放在商业化团队内部。(职位为猎头招聘,所以不方便透露详细公司情况在招聘信息内,希望谅解) ***资深后端开发工程师 /lead (上海) * ** 工作职责: 1 、负责后端技术的探索和技术优化及公共组件的开发; 2 、负责系统的架构设计,编码实现、重构和优化; 3 、学习和研究新技术以满足产品需求。 工作...阅读全文

Go语言中文网 2020-06-02 11:38:41 ShirleyFU

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

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

掘金 2020年06月02日 王一白

Golang基础教程——map使用篇

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法。 map这个数据结构我们经常使用,存储的是key-value的键值对。在C++/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不经相同,背后的技术支撑也不一定一样,比如说C++的map是红黑树实现的,Java中的hashmap则是通过hash表。但是使用起来的方法都差不多,除了Java是通过get方法获取键值之外,C++、Pytho...阅读全文

【译】在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-02 13:32:46 eddix

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

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

Segmentfault 2020-06-02 13:32:47 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-02 13:32:46 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-02 13:32:45 MEX

关于 Golang 错误处理的思考

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