Go module 模式下解决“墙”问题

由于众所周知的原因,在下载一些库的时候会下载不了,比如 `golang.org/x/...` 相关的库。为此,网上出现了很多解决方案。今天,我们也来聊聊这个问题。 从 Go1.11 开始,Go 引入了 module,对包进行管理,通过 `go mod` 命令来进行相关操作。这里,我们基于 Go 目前最新版本 Go1.12,通过 module 来搭建 Goland 开发环境。 ## 创建 Project 打开 Goland,创建 project,左侧选择 `Go Modules(...阅读全文

2019-04-08 22:56:33

爬虫准备知识 Colly 学习之二:Colly 的设计

[上一节](/topics/8724),我们了解了 Colly,并学习了一个简单的示例,Colly 的使用,大体上分为三大块: - 实例化一个 Collector - 注册各个回调函数 - 调用 `Visit()` 方法启动爬取工作 虽然是简单的三大块,但其中的一些设计思想值得我们学习借鉴。本节,我们就一起来学习 Colly 的设计。 ## 梳理 Colly 的类图 为了方便梳理,我们采用面向对象中的 UML 图来描述,把 Go 中的 struct 用类图来表示。 ...阅读全文

2019-04-21 18:10:02

做 Go 开发,月薪想达到 3 万以上,都需要会哪些内容,达到什么水平?

这个问题,需要假定一些前提条件。首先,我们假定工作地点是北京。然后,我们分大公司和创业公司两个维度来看。 ## 大公司 我们先来看一个滴滴的『Golang开发工程师(20k-50k)』的要求: **岗位职责**: 1. 参与滴滴基础服务平台的设计、研发工作,提升滴滴产品稳定性; 2. 与产品经理尝试沟通产品需求; 3. 进行相关产品的技术文档编写,方案设计; 4. 学习研究业界先进技术,保持技术进步; **任职要求**: 1. 本科及以上学历,计算机相关专业,两年以上服务端研发经验;...阅读全文

2019-06-07 22:26:24

付费用户「每日一学」2019-06-26:database/sql 包中的 Query 返回的结果 Rows 不 Close 行吗?

该问题来自知识星球《Go项目实战》球友的一个帖子:一定要记得 Close,否则数据库连接会有问题。 真的是这样吗?我们一起详细探讨一下。 ## 官方文档的说明 关于这个问题,我们先看看官方 Rows 的 Close 方法文档的说法。 > Close closes the Rows, preventing further enumeration. If Next is called and returns false and there are no further res...阅读全文

2019-06-26 20:46:06

Goland 常见问题解决:GOPATH 和 Go Modules 编译不成功

自从 Go1.11 开始,官方开始支持依赖管理,这就是 Go Modules。如果你对 Go Modules 还不熟悉,请一定要掌握,Go 1.13 默认会使用它。推荐阅读 Go 官方博文,GCTT 译文:[Go Modules 的使用方法](https://studygolang.com/articles/19334)。 新手学习的时候,对于 GOPATH 和 Go Modules 可能容易搞混,特别是,很多资料,依然是 GOPATH 的,而最新版本的一些 IDE 或编辑器可能默认使用 ...阅读全文

2019-07-07 18:03:40

用Go实现一个简书1:总体规划

这是知识星球《Go项目实战》的第二个实战项目:一步步教你使用 Go 语言实现一个简书网站。 ## 目标 1. 掌握较大型项目的设计开发方法和流程 2. 掌握Go语言常用库的使用 3. 掌握一种Go语言Web框架 4. 掌握Go语言操作常用数据库的方法 5. 掌握Websocket的使用 6. 掌握缓存技术的使用 7. 掌握从单体应用到微服务的改造 ## 大纲 ### 需求分析和系统设计 1. [拆解需要实现哪些功能](https://studygolan...阅读全文

2019-07-22 23:01:47

付费用户「每日一学」2019-08-12:Go 有 GC 还会内存泄露吗?

虽然有 GC,但 Go 依然会存在内存泄露的场景 ## 1、子字符串造成的暂时性内存泄露 字符串可以看成是 byte 的切片,因此子字符串会和基础字符串共用底层的字节系列(目前是这么实现的,可以节省内存和 CPU 消耗)。 但如果基础字符串很大,当我们在此基础上得到子字符串时,基础字符串不再使用了,但内存却不会被回收,因为子字符串还在使用,这样就造成了暂时性的内存泄露。 推荐的解决方案是,从 Go 1.12 开始,使用 `strings.Repeat`,此函数将利用`st...阅读全文

2019-08-12 16:20:07