由于老板突然给我一个IBM的区块链课程网站,让我自学完IBM提供的区块链的两节课程,并完成fabric框架下的compose-playground这个区块链组件的单机搭建。这个单机搭建比较简单,IBM的课程有课后的这个组件相关的练习与文档,所以花了2天左右就完成了。然后老板就让我再次搭建多机集群的fabric,于是又折腾了半个月左右才完工。 我要晨读
Ioc的思想就是解耦,只依赖容器而不依赖具体的类,当你的类有修改时,最多需要改动一下容器相关代码,业务代码并不受影响。 我要晨读
Golang一些有趣的特性 我要晨读
Derek解读Bytom源码-启动与停止 我要晨读
golang处理系统调用的包为syscall,具体系统调用时通过汇编来实现 在类Unix系统中,使用以下4个方法进行系统调用(syscall_unix.go)。 我要晨读
windows Go微服务环境搭建(GO+Protobuf+gRPC+gRPC-Gateway 我要晨读
Consul是一个注册与发现的服务, 并且支持健康检查 我要晨读
Docker 17.05版本以后,新增了Dockerfile多阶段构建。所谓多阶段构建,实际上是允许一个Dockerfile 中出现多个 FROM 指令。这样做有什么意义呢? 我要晨读
如果这两种修改一起做,就必须让 w.WriteHeader 在所有的 w.Header.Set 之后,因为 w.WriteHeader 后 Set Header 是无效的。 而且必须是在 w.Write([]byte("HelloWorld")) 之前,否则会报 http: multiple response.WriteHeader calls 因为其实调用w.Write的时候也会调用WriteHeader()方法,然后将w.wroteHeader置为true,再次调WriteHeader()则会判 我要晨读
获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): 我要晨读
map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫bmap(a bucket for a Go map,通常叫其bucket)。这两种结构的样子分别如下所示: 我要晨读
"Go语言的面向对象机制与一般语言不同。 它没有类层次结构, 甚至可以说没有类; 仅仅通过组合( 而不是继承) 简单的对象来构建复杂的对象。" -- 《Go语言圣经》 我要晨读
长久以来,我一直抓狂于 Go 标准库中的 Time 包,我的抓狂来自于两个功能,一是捕获两个不同时间段之间间隔的毫秒数,二是将一个用毫秒表示的连续时间段与预先定义的时间段进行比较。这听起来很简单,没错,确实如此,但它的确让我抓狂了。 我要晨读
在 Go 编程语言中,值语义和指针语义的思想无处不在。如前面的文章所述,语义一致性对于完整性和可读性至关重要。它允许开发人员在代码持续不断增长时保持强大的代码库心理模型。它还有助于最大限度地减少错误,副作用和未知行为。 我要晨读
Go语言的 net/http/pprof 包是令人难以置信的强大的,调试正在运行的生产服务器的这个功能微不足道,而在这个调试过程,就很容易不经意间将调试信息暴露给世界。在这篇文章中,我们用 zmap project 作为例子,展示一个现实中真正的问题,并且说明你可以采取的预防措施。 我要晨读
我相信你有过调用 API 接口需要使用退避算法的时候。在 Go 语言现有技术中,有 github.com/cenkalti/backoff,github.com/jpillora/backoff,和其它库可以使用。 我要晨读
本系列文章总共包括 4 篇,主要帮助大家理解 Go 语言中一些语言机制和其背后的设计原则,包括指针、栈、堆、逃逸分析和值传递/地址传递。这一篇是本系列的第一篇,主要介绍栈和指针。 我要晨读
你或许想在 Docker 中使用 Go,原因有: 如果你想在 Kubernetes 上运行,打包为镜像是必须的(就像我一样) 你不得不在同一台机器上运行不同的 Go 版本 开发和生产都需要精确的、可复制的、可共享的和确定的环境 你需要快速和简单的方式来构建和部署编译好的二进制文件 你想快速开始(任何安装了 Docker 的人都可以直接开始编写代码而不需要设置其他依赖或 GOPATH 环境变量) 我要晨读
在之前的文章中,我提到了一个关于 accept interfaces, return structs 的参考指南,在查看同事代码的时候经常会被问“为什么”。特别是这不是一个必须遵守的规则。这个想法的关键点以及理解什么时候妥协,在于维护项目灵活性和避免抢占抽象(译者注:“Preemptive abstractions” 并发系统中连续组件的轻量级验证方案的一种抽象技术)之间的平衡。 我要晨读
Go 语言没有内置 abs() 标准函数来计算整数的绝对值,这里的绝对值是指负数、正数的非负表示。 我最近为了解决 Advent of Code 2017 上边的 Day 20 难题,自己实现了一个 abs() 函数。如果你想学点新东西或试试身手,可以去一探究竟。 我要晨读