带入gRPC:gRPC Deadlines

2018-10-16
阅读 3 分钟
15.3k
Deadlines 意指截止时间,在 gRPC 中强调 TL;DR(Too long, Don't read)并建议始终设定截止日期,为什么呢?

带入gRPC:对 RPC 方法做自定义认证

2018-10-14
阅读 4 分钟
15.1k
原文地址:带入gRPC:对 RPC 方法做自定义认证项目地址:[链接] 前言 在前面的章节中,我们介绍了两种(证书算一种)可全局认证的方法: TLS 证书认证 基于 CA 的 TLS 证书认证 Unary and Stream interceptor 而在实际需求中,常常会对某些模块的 RPC 方法做特殊认证或校验。今天将会讲解、实现这块的功能点 课前知识 {...

带入gRPC:让你的服务同时提供 HTTP 接口

2018-10-12
阅读 4 分钟
37.2k
原文地址:带入gRPC:让你的服务同时提供 HTTP 接口项目地址:[链接] 前言 接口需要提供给其他业务组访问,但是 RPC 协议不同无法内调,对方问能否走 HTTP 接口,怎么办? 微信(公众号、小程序)等第三方回调接口只支持 HTTP 接口,怎么办 我相信你在实际工作中都会遇到如上问题,在 gRPC 中都是有解决方案的,本章节将...

带入gRPC:Unary and Stream interceptor

2018-10-10
阅读 4 分钟
20k
原文地址:带入gRPC:Unary and Stream interceptor项目地址:[链接] 前言 我想在每个 RPC 方法的前或后做某些事情,怎么做? 本章节将要介绍的拦截器(interceptor),就能帮你在合适的地方实现这些功能 🤫 有几种方法 在 gRPC 中,大类可分为两种 RPC 方法,与拦截器的对应关系是: 普通方法:一元拦截器(grpc.UnaryIn...

带入gRPC:基于 CA 的 TLS 证书认证

2018-10-08
阅读 6 分钟
20.6k
根证书(root certificate)是属于根证书颁发机构(CA)的公钥证书。我们可以通过验证 CA 的签名从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书(客户端、服务端)

带入gRPC:TLS 证书认证

2018-10-07
阅读 6 分钟
33.7k
原文地址:带入gRPC:TLS 证书认证项目地址:[链接] 前言 在前面的章节里,我们介绍了 gRPC 的四种 API 使用方式。是不是很简单呢 😀 此时存在一个安全问题,先前的例子中 gRPC Client/Server 都是明文传输的,会不会有被窃听的风险呢? 从结论上来讲,是有的。在明文通讯的情况下,你的请求就是裸奔的,有可能被第三方恶...

Golang 源码剖析:log 标准库

2018-09-28
阅读 5 分钟
4.8k
(1) mu:互斥锁,用于确保原子的写入(2) prefix:每行需写入的日志前缀内容(3) flag:设置日志辅助信息(时间、文件名、行号)的写入。可选如下标识位:

带入gRPC:gRPC Streaming, Client and Server

2018-09-24
阅读 10 分钟
38.9k
原文地址:带入gRPC:gRPC Streaming, Client and Server 项目地址:go-grpc-example 前言 本章节将介绍 gRPC 的流式,分为三种类型: Server-side streaming RPC:服务器端流式 RPC Client-side streaming RPC:客户端流式 RPC Bidirectional streaming RPC:双向流式 RPC 流 任何技术,因为有痛点,所以才有了存在的必...

带入gRPC:gRPC Client and Server

2018-09-23
阅读 6 分钟
23.1k
原文地址:带入gRPC:gRPC Client and Server 项目地址:go-grpc-example 前言 本章节将使用 Go 来编写 gRPC Server 和 Client,让其互相通讯。在此之上会使用到如下库: google.golang.org/grpc github.com/golang/protobuf/protoc-gen-go 安装 gRPC {代码...} Protocol Buffers v3 {代码...} 检查是否安装成功 {代码.....

带入gRPC:gRPC及相关介绍

2018-09-23
阅读 4 分钟
14.8k
作为开篇章,将会介绍 gRPC 相关的一些知识。简单来讲 gRPC 是一个 基于 HTTP/2 协议设计的 RPC 框架,它采用了 Protobuf 作为 IDL

Golang 大杀器之性能剖析 PProf

2018-09-15
阅读 6 分钟
159.9k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。最新版本的 PProf 分析,推荐阅读:Golang 大杀器之性能剖析 PProf前言写了几吨代码,实现了几百个接口。功能测试也通过了,终于成功的部署上线了结果,性能不佳,什么鬼?😭想做性能分析...

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用

2018-09-01
阅读 5 分钟
34.4k
原文地址:Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 前言 如果已经看过前面 “十六部连载,两部番外”,相信您的能力已经有所提升 那么,现在今天来说说简单部署后端服务的事儿 🤓 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能 Nginx...

Golang Gin实践 番外 请入门 Makefile

2018-08-26
阅读 2 分钟
9.4k
原文地址:Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C...,最后才执行构建 如果每次都人为编排,又或是每新来一个同事就问你项目 D 怎么构建、重新构建需要注意什么...等等情况,岂不是要崩溃? 我们常常会在开源项目中发现 Makefile,你是否有过疑问?...

Golang Gin实践 连载十六 在图片上绘制文字

2018-07-07
阅读 4 分钟
10.1k
原文地址:Golang Gin实践 连载十六 在图片上绘制文字项目地址:go-gin-example 前言 本章节是 连载十五 的补充内容,建议一同食用。主要实现合并后的海报上绘制文字的功能(这个需求也是常见的很了),内容比较简单 实现 这里使用的是 微软雅黑 的字体,请点击进行下载并存放到 runtime/fonts 目录下(字体文件占 16 MB...

Golang Gin实践 连载十五 生成二维码、合并海报

2018-07-05
阅读 8 分钟
13.1k
原文地址:Golang Gin实践 连载十五 生成二维码、合并海报项目地址:[链接] 如果对你有所帮助,欢迎点个 Star 👍 前言 在本章节,将实现如下功能细项: 1、生成二维码 2、合并海报(背景图 + 二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrcode/...

Golang Gin实践 连载十四 实现导出、导入 Excel

2018-06-14
阅读 6 分钟
17.9k
另外在本文我们使用了 2 个 Excel 的包,excelize 最初的 XML 格式文件的一些结构,是通过 tealeg/xlsx 格式文件结构演化而来的,因此特意在此都展示了,你可以根据自己的场景和喜爱去使用

用 Go 来了解一下 Redis 通讯协议

2018-06-07
阅读 4 分钟
4.9k
原文地址:用 Go 来了解一下 Redis 通讯协议 Go、PHP、Java... 都有那么多包来支撑你使用 Redis,那你是否有想过 有了服务端,有了客户端,他们俩是怎样通讯,又是基于什么通讯协议做出交互的呢? 介绍 基于我们的目的,本文主要讲解和实践 Redis 的通讯协议 Redis 的客户端和服务端是通过 TCP 连接来进行数据交互, 服...

Golang Gin实践 连载十三 优化你的应用结构和实现Redis缓存

2018-06-02
阅读 8 分钟
21k
原文地址:优化你的应用结构和实现Redis缓存项目地址:[链接] 如果对你有所帮助,欢迎点个 Star 👍 前言 之前就在想,不少教程或示例的代码设计都是一步到位的(也没问题) 但实际操作的读者真的能够理解透彻为什么吗?左思右想,有了今天这一章的内容,我认为实际经历过一遍印象会更加深刻 规划 在本章节,将介绍以下功...

Golang Gin实践 连载十二 优化配置结构及实现图片上传

2018-05-27
阅读 15 分钟
17.3k
原文地址:优化配置结构及实现图片上传项目地址:[链接] 如果对你有所帮助,欢迎点个 Star 👍 前言 一天,产品经理突然跟你说文章列表,没有封面图,不够美观,!)&¥!&)#&¥!加一个吧,几分钟的事 你打开你的程序,分析了一波写了个清单: 优化配置结构(因为配置项越来越多) 抽离 原 logging 的 File ...

panic: time: missing Location in call to Time.In

2018-05-22
阅读 2 分钟
16.1k
前提 1、docker 空镜像(或类似环境) 2、Go 应用中 使用了 loc, _ := time.LoadLocation("Asia/Chongqing") 问题 {代码...} 原因 时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是取决于当前系统。具体的配置存储路径: {代码...} 进入该目录就可以看到各时区的配置信息 {代码...} 但在空镜像(或...

Go 的 fake-useragent 了解一下

2018-05-21
阅读 4 分钟
12.7k
有的网站会根据 User-Agent 的不同,跳转到不同(PC、M)的站点,也有根据版本的不同给出不一样的提示等等,而 User-Agent 的变化更是爬虫里的基础姿势

Gin实践 连载十一 Cron定时任务

2018-04-29
阅读 5 分钟
31.5k
原文地址:Cron定时任务项目地址:[链接] 如果对你有所帮助,欢迎点个 Star 或赞 😄 在实际的应用项目中,定时任务的使用是很常见的。你是否有过 Golang 如何做定时任务的疑问,莫非是轮询? 在本文中我们将结合我们的项目讲述 Cron 介绍 我们将使用 cron 这个包,它实现了 cron 规范解析器和任务运行器,简单来讲就是包...

爬虫带你了解一下Golang的市场行情

2018-04-28
阅读 6 分钟
16.3k
原文地址:了解一下Golang的市场行情项目地址:[链接] 如果对你有所帮助,欢迎 Star,给文章来波赞,这样可以让更多的人看见 :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别...

Gin实践 连载十 定制 GORM Callbacks

2018-04-15
阅读 6 分钟
24k
GORM itself is powered by Callbacks, so you could fully customize GORM as you want

Golang爬虫 爬取汽车之家 二手车产品库

2018-04-01
阅读 3 分钟
8.2k
原文地址:爬取汽车之家 二手车产品库项目地址:[链接] 目标 最近经常有人在耳边提起汽车之家,也好奇二手车在国内的价格是怎么样的,因此本次的目标站点是 汽车之家 的二手车产品库 分析目标源: 一页共24条 含分页,但这个老产品库,在100页后会存在问题,因此我们爬取99页 可以获取全部城市 共可爬取 19w+ 数据 开始 ...

Gin实践 番外 Golang交叉编译

2018-03-26
阅读 4 分钟
18.3k
项目地址:[链接] (快上车,支持一波) 原文地址:Golang交叉编译 前言 在 连载九 讲解构建Scratch镜像时,我们编译可执行文件用了另外一个形式的命令,不知道你有没有疑问? {代码...} 说明 我们将讲解命令各个参数的作用,希望你在阅读时,将每一项串联起来,你会发现这就是交叉编译相关的小知识 也就是 Golang 令人...

Gin实践 连载九 将Golang应用部署到Docker

2018-03-24
阅读 8 分钟
40.6k
项目地址:[链接] (快上车,支持一波)原文地址:将Golang应用部署到Docker 注: 开始前你需要安装好 docker,配好镜像源 本章节源码在 f-20180324-docker 分支上 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动) 介绍 在这里简单介绍下Docker,建议深入学习 Docker 是一个开源的轻量...

Golang爬虫 爬取最简单的豆瓣电影 Top250

2018-03-21
阅读 2 分钟
7.7k
爬虫是标配了,看数据那一刻很有趣。第一个就从最最最简单最基础的爬虫开始写起吧! 原文地址:爬取最简单的豆瓣电影 Top250项目地址:[链接] 目标 我们的目标站点是 豆瓣电影 Top250,估计大家都很眼熟了 本次爬取8个字段,用于简单的概括分析。具体的字段如下: 简单的分析一下目标源 一页共25条 含分页(共10页)且分...

Gin实践 连载八 为它加上Swagger

2018-03-18
阅读 3 分钟
44.2k
一个好的 API's,必然离不开一个好的API文档 要开发纯手写 API 文档,不存在的 :=) 原文地址:为它加上Swagger项目地址:[链接] 安装 swag 1、go get {代码...} 若 $GOPATH/bin 没有加入$PATH中,你需要执行将其可执行文件移动到$GOBIN下 {代码...} 2、gopm get 该包有引用golang.org上的包,若无科学上网,你可以使用 g...

Gin实践 连载七 Golang优雅重启HTTP服务

2018-03-15
阅读 6 分钟
29.8k
优雅的重启服务 在前面编写案例代码时,我相信你会想到 每次更新完代码,更新完配置文件后就直接这么 ctrl+c 真的没问题吗,ctrl+c到底做了些什么事情呢? 在这一节中我们简单讲述 ctrl+c 背后的信号以及如何在Gin中优雅的重启服务,也就是对 HTTP 服务进行热更新 原文地址:Golang优雅重启HTTP服务项目地址:[链接] ctr...