Dingding's Blog

希望多年后我依然能坚持在这里...

Goroutine 内存泄漏 - 被遗弃的接收者

首发于:https://studygolang.com/articles/22898 Goroutine 内存泄漏 - 被遗弃的接收者 介绍 Goroutine 内存泄漏是产生 Go 程序内存泄漏的常见原因。在我之前的文章中,我介绍了 Goroutine 内存泄漏,并展示了许多 Go 开发人员容易犯错的例子。继续前面的内容,这篇文章提出了另一个关于 Goroutines 如何出现内存泄...

Stop Writing Broken Go Libraries

首发于:https://studygolang.com/articles/22835 不久前我和朋友们想出一个主意,准备合并我们的 IRC bots,并用 Go 重写它们。为了防止重写大部分现有功能,我们试图找到支持 bots 程序中使用的 Web API 的现有库。我们的项目需要一个 Reddit API 的库。这篇文章启发于我找到的前三个库,我不打算说出它们的名字,以免羞辱它们的作者。...

Go: Concurrency Access with Maps

Part III

首发于:https://studygolang.com/articles/22773 Go: Concurrency Access with Maps — Part III 在上一篇文章 “Go: Map Design by Code” 中,我们讲述了 map 的内部实现。 Go blog 中专门讲解 map 的文章明确地表明: map 是非并发安全的:并发读写 map 时...

Go 最小硬件编程(第一部分)

首发于:https://studygolang.com/articles/22742 Go 最小硬件编程(第一部分) 我们能够让 Go 在多低的配置下运行并做一些实用的事情呢? 最近我购买了这个特别便宜的开发板: 购买它,我基于以下三个理由:第一,我(作为一个程序员)从未搞过 STM32F0 系列的开发板;第二,STM32F10x 系列的板子已经很陈旧了,STM32F0 系列的 ...

经典设计模式(Golang)

模板模式

概述 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 何时使用:有一些通用的方法。 如何解决:将这些通用算法抽象出来。 关键代码:通用逻辑在抽象类实现,其他步骤在子类实现。 注意事项:由于 Golang 语言本身的限制,模...

经典设计模式(Golang)

状态模式

概述 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 优点 封装了转换规则 枚举可能的状态,在枚举状态之前需要确定状态种类。 ...

经典设计模式(Golang)

访问者模式

概述 意图:主要将数据结构与数据操作分离。 主要解决:稳定的数据结构和易变的操作耦合问题。 何时使用:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,使用访问者模式将这些封装到类中。 如何解决:在被访问的类里面加一个对外提供接待访问者的接口。 关键代码:在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。 ...

经典设计模式(Golang)

迭代器模式

概述 意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 主要解决:不同的方式来遍历整个整合对象。 何时使用:遍历一个聚合对象。 如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。 注意:由于golang没有内部类的概念,经典的迭代器模式用golang实现代码稍显丑陋,这里展示的是利用闭包的实现。 实现 pa...

在 Go 中的 ORM 和查询构建

首发于:https://studygolang.com/articles/22296 在 Go 中的 ORM 和查询构建 2019.07.13 星期六 发表于 Programming 最近,我一直在研究 Go 中与数据库交互的各种解决方案。在 Go 中与数据库交互我使用的底层库是 sqlx。你只需要写出 SQL,并使用 db tag 标记结构,之后让 sqlx 处理其余工作。但是,我遇...

Business Buzzwords

Part 1

Business Buzzwords 处理 deal with handle address attend to 粘性 stickness create brand stickness make customers stick to their products 沉浸式体验 immersive experience immersive use...