在Golang中如何使用并发
原文地址:这里,省略了一些非重点片段。
本文的主要目标是展示在哪些场景下使用并发更加合适。因此本文中不会讲述并发相关的基本术语,比如goroutines、wait groups、channels、数据竞争等。 我打算创建一系列文章,详细解释最常用的并发相关示例。
原文地址:这里,省略了一些非重点片段。
本文的主要目标是展示在哪些场景下使用并发更加合适。因此本文中不会讲述并发相关的基本术语,比如goroutines、wait groups、channels、数据竞争等。 我打算创建一系列文章,详细解释最常用的并发相关示例。
原文地址:这里,省略了一些非重点片段。
尽管目前大多数系统都是通过gRPC或HTTP进行通信的,但仍有相当多的应用程序使用自定义协议。而且这些自定义协议中的许多都没有类似net/http
这样方便的包来管理TCP连接。
这篇文章是为了那些直接和TCP连接打交道的人准备的。本文将讨论如何长期维护健康的TCP会话,以及如何对操持长链接的系统进行调优。
原文地址:这里,省略了一些非重点片段。
Open/Closed Principle(OCP,开闭原则)也不过多介绍了,一句话“对扩展开放,对修改封闭”。策略模式就是这一原则的一种实现。
原文地址:这里,省略了一些非重点片段。
The Single Responsibility Principle (SRP,单一职责原则)的文字定义这里我就不再次说明了,直接开始重点。
原文地址:这里,省略了一些非重点片段。
先定义一个结构体Pubsub
,客户端可以使用它来订阅、发布主题:
type Pubsub struct {
mu sync.RWMutex
subs map[string][]chan string
}
大多数情况下,下划线_
都用于忽略函数返回值的情况。最近查看authboss
这个开源库的代码时,发现这样一种用法:
struct User {
...
}
var (
assertUser = &User{}
assertStorer = &MemStorer{}
_ authboss.User = assertUser
_ authboss.AuthableUser = assertUser
)