04.gRPC流式传输
前文的示例是 gRPC 的 Unary RPC , 即客户端发起一次 Request、服务端响应一次 Response ,这种方式适合传输结构化数据很小的场景,当数据量大或者需要不断传输数据时候,应用应该使用流式RPC( Stream RPC ) ,它允许应用边传输数据边处理。
前文的示例是 gRPC 的 Unary RPC , 即客户端发起一次 Request、服务端响应一次 Response ,这种方式适合传输结构化数据很小的场景,当数据量大或者需要不断传输数据时候,应用应该使用流式RPC( Stream RPC ) ,它允许应用边传输数据边处理。
Linux shell 中截取字符串的方式有以下几种,可以跟据 shell 的场景自行使用。
Go 语言编译后的可执行程序中,一般包含源码的一些信息,当panic的时候,会暴露出编译时的源码路径,做为一个强迫症晚期患者,这是不可容忍的。Go语言编译器提供了选项 -trimpath
用于解决这个问题。
Go语言的 container/ring
包实现了环形链表的操作。
Golang是静态编译型语言,在编译时就将所有引用的库全部加载打包到最终的可执行程序中(CGO除外),在运行时不需要动态加载其他共享库。这样设计的好处很多,但是如果某些场景下需要实现功能的可插拔则非常不方便。 在Go 1.8更新中,Go语言提供了Go Plugin机制,可以在运行时动态加载外部功能。
在日常开发过程中,如果不小心将一个敏感文件,或者一个不必要的文件提交到git仓库时,可能会引起不良的后果。一般情况下可以使用 git rm
删除这个文件,但是 git 历史中依然保存了这个文件的历史版本。如果要彻底删除它,可以使用 命令来彻底删除。
screenfetch
是一个获取和显示系统软硬件,主题信息的命令。它可以在 Linux,OS X,FreeBSD 以及其它的类Unix系统上使用。
本文以极简的方式构建一个三个节点的 etcd 集群
本文主要介绍为 gin 框架实现的服务添加 swagger 文档支持的过程
本文记录一些 Go Module 私有库引用中遇到的问题及解决方案