「连载十七」用Nginx部署Go应用

知识点 Nginx。 反向代理。 本文目标 简单部署后端服务。 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能。 Nginx 是什么 Nginx 是一个 Web Server,可以用作反向代理、负载均衡、邮件代理、TCP / UDP、HTTP 服务器等等,它拥有很多吸引人的特性,……

阅读全文

「番外」请入门 Makefile

知识点 写一个 Makefile 本文目标 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C…,最后才执行构建。如果每次都人为编排,又或是每新来一个同事就问你项目 D 怎么构建、重新构建需要注意什么…等等情况,岂不是要崩溃? 我们常常会在开源项目中发现 Makefil……

阅读全文

「连载十六」在图片上绘制文字

知识点 字体库使用 图片合成 本文目标 主要实现合并后的海报上绘制文字的功能(这个需求也是常见的很了),内容比较简单。 实现 这里使用的是 微软雅黑 的字体,请点击进行下载并存放到 runtime/fonts 目录下(字体文件占 16 MB 大小) 安装 $ go get -u github.com/golang/freetype 绘制文字 打开 service/article_service/article_poster.go 文件,增加绘制文字的业务逻辑,如下: 1 2 3 4 5 6 7 8 9 10 11……

阅读全文

「连载十五」生成二维码、合并海报

知识点 图片生成 二维码生成 本文目标 在文章的详情页中,我们常常会需要去宣传它,而目前最常见的就是发海报了,今天我们将实现如下功能: 生成二维码 合并海报(背景图 + 二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrc……

阅读全文

「连载十四」实现导出、导入 Excel

知识点 导出功能的实现 本文目标 在本节,我们将实现对标签信息的导出、导入功能,这是很标配功能了,希望你掌握基础的使用方式。 另外在本文我们使用了 2 个 Excel 的包,excelize 最初的 XML 格式文件的一些结构,是通过 tealeg/xlsx 格式文件结构演化而来的,因此特意在此都展示了,你可以根据自己的场景和喜爱去使用……

阅读全文

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

Go、PHP、Java… 都有那么多包来支撑你使用 Redis,那你是否有想过 有了服务端,有了客户端,他们俩是怎样通讯,又是基于什么通讯协议做出交互的呢? 介绍 基于我们的目的,本文主要讲解和实践 Redis 的通讯协议 Redis 的客户端和服务端是通过 TCP 连接来进行数据交互, 服务器默认的端口号为……

阅读全文

「连载十三」优化你的应用结构和实现Redis缓存

前言 之前就在想,不少教程或示例的代码设计都是一步到位的(也没问题) 但实际操作的读者真的能够理解透彻为什么吗?左思右想,有了今天这一章的内容,我认为实际经历过一遍印象会更加深刻 本文目标 在本章节,将介绍以下功能的整理: 抽离、分层业务逻辑:减轻 routers.go 内的 api 方法的逻辑(但本文暂不分层 repo……

阅读全文

「连载十二」优化配置结构及实现图片上传

知识点 重构、调整结构 本文目标 这个应用程序跑了那么久了,越来越大,越来越壮,仿佛我们的产品一样,现在它需要进行小范围重构了,以便于后续的使用,这非常重要。 前言 一天,产品经理突然跟你说文章列表,没有封面图,不够美观,!)&¥*!&)#&¥*!加一个吧,几分钟的……

阅读全文

Go 的 fake-useragent 了解一下

有的网站会根据 User-Agent 的不同,跳转到不同(PC、M)的站点,也有根据版本的不同给出不一样的提示等等,而 User-Agent 的变化更是爬虫里的基础姿势 使用 Go 编写网络爬虫或需要模拟浏览器头(User-Agent)的时候,你是否会觉得很麻烦,获取请求头(Request Headers)的 User-Agent 还得找来找去,挺繁琐。……

阅读全文

「连载十一」Cron定时任务

知识点 完成定时任务的功能 本文目标 在实际的应用项目中,定时任务的使用是很常见的。你是否有过 Golang 如何做定时任务的疑问,莫非是轮询,在本文中我们将结合我们的项目讲述 Cron。 介绍 我们将使用 cron 这个包,它实现了 cron 规范解析器和任务运行器,简单来讲就是包含了定时任务所需的功能 Cron 表达式格式 字段名 是……

阅读全文