煎鱼换公众号啦。

大家周末好呀,我是煎鱼,由于现在这个公众号(煎鱼说)并没有留言功能,在互动交流方面总感觉缺了一块,一直觉得比较遗憾。 因此从今天起我将正式换到我的新号(我要煎鱼说)去开更了,欢迎大家再次关注我,新号的二维码如下: 感谢你的再次关注,如果你身边也有朋友关注了我,欢迎周知一下。 又要重新开始了,想想就激动。阅读全文

Segmentfault 2019-09-22 15:32:40 煎鱼

看看这篇拯救发际线的干货吧--警惕 Go 编程陷阱

在2019年08月17日举办的 Gopher Meetup(深圳站)活动上,来自 Bindo Labs 公司的李雄飞进行了 《Go 编程陷阱》的演讲。李雄飞,Bindo Labs 后端技术负责人,全栈工程师。从事POS/支付业务架构以及通用Web系统建设工作,主要关注New SQL/ETL/Kubernetes等领域技术发展。以下为演讲实录。前言我大概是从 2015 年开始写下第一行 Go 代码,今天主要给大家分享我这几年以来所积累的一些让我非常难受地方以及感到崩溃的一些 BUG,我希望我的这些...阅读全文

微信公众平台 2019-09-21 22:57:41 Go中国

Go语言包管理简史

包管理是Go一直被诟病做得不好的功能之一。先前版本(go 1.11之前)的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案,如glide,dep以及一些辅助工具等。 “我在生产构建中使用go get。” – 没有人这么说过。 Go语言的包管理实现可追溯到Google公司内的代码依赖管理(Google将内部所有源代码都存放在一个巨大的单体存储库中)。我们来分析一下在...阅读全文

Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如何在应用程序内部传递ID; 第二,当你需要调用另一个微服务时,如何通过网络传递ID。 什么是OpenTracing? 现在有许多开源的分布式跟踪库可供选择,其中最受欢迎的库可能是Zipkin²和Ja...阅读全文

Segmentfault 2019-09-22 15:32:39 倚天码农

Go Modules笔记

Go Modules笔记 介绍 module是go官方推出的模块管理工具,每个模块就相当于java中的一个包。 每个 module 中都包含一个 go.mod 文件,反之:没有go.mod文件,就不是一个module。 go.mod文件定义了该模块自身的 module path,同时也记录了该模块的依赖包;看下面的一个简单的 go.mod 的例码: $ cat go.mod module example.com/hello # 自己 module 的 “module path” go 1.12 ...阅读全文

Segmentfault 2019-09-22 15:32:37 大爬虫

分享一门非常好的新手入门课程《Go语言从入门到实战——简明高效的Go语言实战指南》——推荐分享

​课程亮点1. 讲师蔡超,曾任亚马逊(中国)和惠普的首席软件架构师,精通 Go 语言和多门编程语言,具有丰富的项目实战经验。2. 独特的学习方法:着重对比 Go 语言语法和其他其他编程语言的不同,带你快速入门 Go 语言,高效掌握 Go 语言的编程方法。3. 学以致用,注重实战:带你对 Go 语言在开发中的常见问题进行拆解分析,比如并发编程模式,常见并发任务,高可用服务设计,性能调优等难题,让你可以从入门走向实战。讲师简介蔡超目前在 Mobvista 担任技术副总裁兼首席架构师,之前的 9 年,...阅读全文

Go语言中文网 2019-09-21 01:05:42 ghgj

Go Modules 和 Go Proxy

Go Modules 简介 Go 在 1.11 版本引入了新的依赖管理模式 Go Modules,旨在解决一直广为诟病的依赖管理问题。 使用下列命令启用 Go Modules go env -w GO111MODULE=on # 不建议设为 auto 这是持久性设定,环境变量 GOENV 指示配置文件位置。 Go Modules 采用语义化版本,详见 https://semver.org/lang/zh-CN/ 。 Go Modules 的使用方法详见: https://github.com/g...阅读全文

Segmentfault 2019-09-22 15:32:38 Zack

使用 Go 连接数据库

简介 安装 gorm 启动数据库 初始化数据库连接 服务器启动时连接数据库 总结 当前部分的代码 简介 在 Go 中连接数据库的方式有很多, 这里我们选择使用 ORM 的方式,也就不用写原生的 SQL 语句了. Go 的 ORM 库也有很多, 这里选择了 gorm. 安装 gorm go get -u github.com/jinzhu/gorm 启动数据库 数据库选择了最主流的 mysql. 创建数据库的方式有很多, 为了便于清理, 选择使用 docker 创建数据库. 新建一个 docker...阅读全文

Segmentfault 2019-09-22 15:32:38 帅气猫咪

如何灵活地进行 Go 版本管理

本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能并不是很明白它的价值。 简单说下我写这篇文章的背景吧。 最近几周,Go 最重要的一则消息应该莫过 9月份 Go 1.13 的正式发布。它的相关升级可查看 Go 1.13 正式发布,看看都有哪些值得关注的特性 或官方 Go 1.13 Relase Notes。 对于一名 ...阅读全文

掘金 2019年09月20日 波罗学

如何灵活地进行 Go 版本管理

本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能并不是很明白它的价值。 简单说下我写这篇文章的背景吧。 最近几周,Go 最重要的一则消息应该莫过 9月份 Go 1.13 的正式发布。它的相关升级可查看 Go 1.13 正式发布,看看都有哪些值得关注的特性 或官方 Go 1.13 Relase Notes。 对于一名 ...阅读全文

Segmentfault 2019-09-22 15:32:37 波罗学

在Golang中使用Protobuf

本教程使用proto3版本的protocol buffer语言,提供了一个基本的在Go程序中使用protocol buffer的介绍。通过创建一个简单的示例应用程序,向你展示如何 在.proto文件中定义消息格式。 使用protoc编译器编译生成Go代码。 使用Go的protocol buffer API读写消息。 它不是一个全面的在Go中使用protocol buffer的指南,更详细的参考信息请查看前面的两个教程。 Protobuf语言指南 Protobuf生成Go代码指南 为什么使用pro...阅读全文

Segmentfault 2019-09-22 15:32:36 KevinYan

以太坊源码机制:挖矿

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 miner.start()miner即矿工的意思,矿工要做的工作就是“挖矿”,挖矿就是将一系列最新未封装到块中的交易封装到一个新的区块的过程。学习以太坊挖矿之前,我们要先搞清楚几个概念: 拜占庭将军问题分布式系统的状态同步问题。 拜占庭帝国繁荣富饶,周边的几个小国家的将军对其垂涎已久但又各自心怀鬼胎。他们必须有超过一半以上的将军同意进攻拜占庭并且不能在战场上做出背叛的动作(达成共识),否则就会进攻失败,引火烧身。而将...阅读全文

Segmentfault 2019-09-22 15:32:36 链客

以太坊智能合约Demo

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。 维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方...阅读全文

Segmentfault 2019-09-22 15:32:35 链客

以太坊的数据结构

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊被描述为为一个交易驱动的状态机,它在某个状态下接受一些输入后,会确定的转移到一个新的状态。具体来说,在一个以太坊的状态下,每个账户上有确定的余额和存储信息,当接收到一组交易,被影响账户上的余额和存储信息会发生变动。从第一个创世块开始,不断的收到交易,由此能进入一连串新的状态。 1.jpg 以太坊每隔一段时间把交易数据和验证信息打包在一个块里,依次串接起来,就成为一个链。块越新,块号(BlockNumber,或叫...阅读全文

Segmentfault 2019-09-22 15:32:35 链客

以太坊私链入门

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 目录 背景 软件安装与配置 2.1. Ubuntu2.1.1. 安装 geth2.1.2. 安装 solc2.2. Windows2.3. Mac OS2.4. 编译安装 创世区块 3.1. 初始化创世区块3.2. 启动节点3.2.1. rpcaddr3.3. 使用节点进行挖矿3.3.1. 启动矿工开始挖矿3.3.2. 停止挖矿3.3.3. 查看所挖金额 管理 4.1. 控制台4.2. 连接控制台4.3. 账号管理4...阅读全文

Segmentfault 2019-09-22 15:32:34 链客

Go内存模型

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go的内存管理话题很大,一边学习,一边记录,持续更新。 提纲挈领和C、C++不同,一般来说,Go程序员无需关心变量是在堆上还是在栈上。 Go语言中内存分配大致有3种模式:Stack、Heap、Fixed Size Segment。 栈栈的概念类似传统Linux下C、C++的概念,即通过栈顶指针移动来分配内存。一般用来存储局部变量、函数参数等。每个Goroutine都有自己的执行栈,互相独立,无需加锁。Goroutin...阅读全文

Segmentfault 2019-09-22 15:32:34 链客

Go实现双向链表

本文介绍什么是链表,常见的链表有哪些,然后介绍链表这种数据结构会在哪些地方可以用到,以及 Redis 队列是底层的实现,通过一个小实例来演示 Redis 队列有哪些功能,最后通过 Go 实现一个双向链表。 目录 1、链表 1.1 说明 1.2 单向链表 1.3 循环链表 1.4 双向链表 2、redis队列 2.1 说明 2.2 应用场景 2.3 演示 3、Go双向链表 3.1 说明 3.2 实现 4、总结 5、参考文献 1、链表 1.1 说明 链表(Linked list)是一种常见的基础数据...阅读全文

掘金 2019年09月20日 link1st

Go小课:第一次Say Hello

一、Say Hello请求 1、环境配置 安装Go的包依赖管理命令行工具govendor go get -u github.com/kardianos/govendor 复制代码 创建项目文件夹 mkdir -p $GOPATH/src/github.com/yourusername/project && cd "$_" 复制代码 govendor初始化 govendor init 复制代码 获取go的web框架gin govendor fetch github.com/gin-gonic/gi...阅读全文

掘金 2019年09月19日 南华Coder

Go实现双向链表

本文介绍什么是链表,常见的链表有哪些,然后介绍链表这种数据结构会在哪些地方可以用到,以及 Redis 队列是底层的实现,通过一个小实例来演示 Redis 队列有哪些功能,最后通过 Go 实现一个双向链表。 目录 1、链表 1.1 说明 1.2 单向链表 1.3 循环链表 1.4 双向链表 2、redis队列 2.1 说明 2.2 应用场景 2.3 演示 3、Go双向链表 3.1 说明 3.2 实现 4、总结 5、参考文献 1、链表 1.1 说明 链表(Linked list)是一种常见的基础数据...阅读全文

Segmentfault 2019-09-22 15:32:33 link1st

Go实现双向链表

本文介绍什么是链表,常见的链表有哪些,然后介绍链表这种数据结构会在哪些地方可以用到,以及 Redis 队列是底层的实现,通过一个小实例来演示 Redis 队列有哪些功能,最后通过 Go 实现一个双向链表。 ![链表](https://img.mukewang.com/5d820e2100014a2d20360992.png) ## 目录 - 1、链表 - 1.1 说明 - 1.2 单向链表 - 1.3 循环链表 - 1.4 双向链表 -...阅读全文

Go语言中文网 2019-09-20 09:40:11 link1st