一周 Go World 新鲜事[Asta 优选]

来源:互联网 发布:广联达计价软件多少钱 编辑:程序博客网 时间:2024/04/29 08:31
 

许式伟:我与 Go 语言的这十年

2007 年 9 月 20 日,关于设计一门全新语言的讨论正式开始,这门全新的语言,就是后来的 Go。时至今日,Go 语言已经发布到 1.9 版本,走过了整整十年的历程。在这十年间,Go 语言两夺 TIOBE 年度语言大奖(2009/2016),许多初创公司在早期使用 Go 进行开发,包括现在的云计算巨头 Docker,也由此催生出了 Kubernetes 这样的项目。


Go 语言刚刚度过了它的十周年纪念日。而要说我与 Go 的缘分,也同样始于十年前(2007 年)。这十年,是 Go 成长的十年,同样也是我成长的十年。

               ——许式伟

在公众号中回复(非评论)关键词“ xushiwei ”即可阅读全文


 用 Golang 开发以太坊去中心化应用

以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生。以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。

本文是作者一系列连载中的第一篇,这一系列文章会介绍:

  1. 什么是以太坊,查询余额等。

  2. go-ethereum转出以太坊、如何对接token、如何查询token余额、如何转出token。

  3. 交易平台对接以太坊的一些经验和总结。

连接以太坊代码示例如下:

在公众号中回复(非评论)关键词“ 以太坊 ”即可阅读全文


 

golang 标准库间依赖的可视化展示

本文数据源自真实环境的 golang 1.9 版本的标准库。所以,本文不仅是一篇可视化相关的讨论文章,更是提供了一个可以直接探究 golang 标准库间依赖关系的快速梳理工具。本文结构如下:

  1. 数据准备

  2. 可视化原理

  3. 数据整理
  4. 效果与源码

在公众号中回复(非评论)关键词“可视化依赖 ”即可阅读全文


 

微服务:从设计到部署

本书为 Chris Richardson 和 Floyd Smith 联合编写的微服务电子书 Designing and Deploying Microservices 中文版,其从不同角度全面介绍了微服务:微服务的优点与缺点、API 网关、进程间通信(IPC)、服务发现、事件驱动数据管理、微服务部署策略、重构单体。


在公众号中回复(非评论)关键词“ 微服务图书 ”即可阅读全文


 

深入理解 channel 笔记

本文将按照以下大纲进行讲解:

  1. 视频信息

  2. Go 的并发特性

    一个简单的事务处理的例子

    channels 的特性

  3. 解析

    构造 channel

    发送、接收

    阻塞和恢复

    总结

  4. 其它 channel 的操作

    无缓冲 channel

    select

  5. 为什么 Go 会这样设计?

    Simplicity

    Performance


在公众号中回复(非评论)关键词“ channel笔记 ”即可阅读全文


 

基于 Linux bcc/BPF 实现 Go 程序动态追踪

在这篇文章中,作者将迅速调研一种跟踪的 Go 程序的新方法:基于 Linux 4.x eBPF 实现动态跟踪。如果你去搜索 Go 和 BPF,你会发现使用 BPF 接口的 Go 语言接口(例如,gobpf)。这不是本文所要探索的东西:文中将使用 BPF 工具实现 Go 应用程序的性能分析和调试。

目前已经有多种调试和追踪 Go 程序的方法,包括但不限于:

  • gdb

  • go execution tracer :用于高层异常和阻塞事件

  • GODEBUG (一个跨平台的Go程序调试工具)、 gctrace 和 schedtrace

BPF 追踪以做很多事,但都有自己的优点和缺点,接下来将详细说明。首先从一个简单的 Go 程序开始( hello.go)


在公众号中回复(非评论)关键词“ BPF ”即可阅读全文


 

 Go 奇葩点

在Go语言中,函数被看做是第一类值:(first-class values):函数和其他值一样,可以被赋值,可以传递给函数,可以从函数返回。也可以被当做是一种“函数类型”。例如:有函数func square(n int) int { return n * n },那么就可以赋值f := square,而且还可以fmt.Println(f(3))(将打印出“9”)。

Go语言函数有两点很特别:

  • 函数值类型不能作为map的key

  • 函数值之间不可以比较,函数值只可以和nil作比较,函数类型的零值是nil


在公众号中回复(非评论)关键词“奇葩点 ”即可阅读全文



开源项目hack CCTV视频库在公众号中回复(非评论)关键词“ cctv ”即可阅读全文快速开发基于 pg 的 API 原型工具在公众号中回复(非评论)关键词“ pg ”即可阅读全文Go 实现的 FaaS 在公众号中回复(非评论)关键词“ faas ”即可阅读全文活动推荐10.21 gohack 2017点击“阅读原文”即可报名