Golang 101(Go语言101 中文版) v1.21.a第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 目录 2 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用0 码力 | 591 页 | 21.40 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 种其它主题 的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 其它主 题的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。0 码力 | 821 页 | 956.82 KB | 1 年前3
Go 入门指南(The way to Go)用(测试数据)表驱动测试 13.10 性能调试:分析并优化 Go 程序 第 14 章 协程(goroutine)与通道(channel) 14.1 什么是协程 14.2 协程间的信道 14.3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 select 切换协程 14.5 通道、超时和计时器(Ticker) 14.6 协程和恢复(recover) 14.7 新旧模型对比:任务和worker 使用值类型时误用指针 16.8 误用协程和通道 16.9 闭包和协程的使用 16.10 糟糕的错误处理 第 17章 模式 17.1 关于逗号ok模式 第 18章 出于性能考虑的实用代码片段 18.1 字符串 18.2 数组和切片 18.3 映射 18.4 结构体 18.5 接口 18.6 函数 18.7 文件 18.8 协程(goroutine)与通道(channel) 18.9 网络和网页应用 系统下工作 。其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 从 而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。 你可以获取以下平台上的 Go 1.4 源码和二进制文件: Linux 2.6+:amd64、386 和 arm 架构 Mac OS X(Snow Leopard + Lion):amd640 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)下工作 。其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通 过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。 你可以获取以下平台上的 Go 1.4 源码和二进制文件: Linux 2.6+:amd64、386 和 arm 架构 Mac OS X(Snow Leopard + Lion):amd64 用传递也是按值 传递。 *) 几乎在任何情况下,传递指针(一个32位或者64位的值)的消耗都比传递副本来得少。 在函数调用时,像切片(slice)、字典(map)、接口(interface)、通道(channel)这样的引用类型 都是默认使用引用传递(即使没有显示的指出指针)。 有些函数只是完成一个任务,并没有返回值。我们仅仅是利用了这种函数的副作用,就像输出文本到终 端,发送一个邮件或者是记录一个错误等。 数必须实现了 io.Writer 接口。 Fprintf() 能够写入任何类型,只要其实现了 Write 方法,包括 os.Stdout ,文件(例如 os.File),管 道,网络连接,通道等等,同样的也可以使用 bufio 包中缓冲写入。bufio 包中定义了 type Writer struct{...} bufio.Writer 实现了 Write 方法: func (b0 码力 | 380 页 | 2.97 MB | 1 年前3
如何消除程序中的数据竞争-周光远org/ref/mem): goroutine: a := 1 b := a c := b d := c print(d) → → → → channel: 开始发送 发送完成 接收完成 开始接收 无缓冲通道 • 所有通道:开始发送 → 接收完成(同一个数据); • 对于无缓冲channel:开始接收 → 发送完成(同一个数据); 开始发送 接收完成 其他的对于init函数,锁,协程,原子操作,syn 传递性来建立事件之间的happens before关系。 a b c d go1 go2 data race a b c d go1 go2 no data race 利用通道的happens before保证;建立了2 → 3 。 再结合传递性可以得到:1 → 2 → 3 → 4. 所以消除了数据竞争 实战分析 1处的代码和2处的代码没有建立任何 happens before关系,所以存在数据竞争。 race只记录最后一次的写访问,因此可能不能一次检测到所有的数据竞争,消除当前已知问题后,需 要再次检测。 race检测数据竞争 消除数据竞争实践 消除数据竞争 • 互斥锁/读写锁 • 原子操作 • 通道 可用的happens : 以map为例: • Sync包中的其他能力(sync.Map, sync.WaitGroup, sync.Cond,sync.Once) • golang.org0 码力 | 30 页 | 1.92 MB | 1 年前3
Golang 入门笔记与数组相比切片的长度是不固 定的,可以追加元素,在追加时可能使切片的容量增大。 范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。 在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。 Map(集合) Map 是一种无序的键值对的集合。Map 最重要的一点是通过 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。 goroutine 语法格式: go 函数名 (参数列表) 例子: go f(x, y, z) 通道(channel) 通道缓冲区 Go 遍历通道与关闭通道 包的基本概念 说明:Go与语言的每个文件都属于一个包,也就是说go 是以包的行是来管理文件和项目目录结构的。 作用 1. 区分相同名字的函数、变量标识符等 20 码力 | 2 页 | 511.29 KB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践400台物理机,9个独⽴立集群,国内外近10个IDC 运维管理的go语⾔言编写的常驻service服务实例接近3000个。 业务场景多样: ⽀支持聊天场景业务,稳定⽀支持多款聊天业务app 单通道多app复⽤用 上⾏行通道,回调⽀支持 对智能硬件产品,提供定制化消息推送与转发服务 性能满⾜足需要: 线上单机最⾼高160w⻓长连接 (24核 E5-2630 @ 2.30GHz 64G内存 ) Linux Web Windows Flash Iframe for ever 消息系统简要架构 单实例,单端⼝口,多协议复⽤用 全双⼯工,单客户端,多app复⽤用服务单通道 适⽤用于复杂环境下的⺴⽹网络的接⼊入策略 协议完备、简单、数据安全、可扩展、省流量 接⼊入层 ���� DES+RSA/ ECC+AES/ crossdomain.xml/ �0 码力 | 39 页 | 5.23 MB | 1 年前3
基于gRPC go实现消息发布订阅v interface{}...) { select { case sub <- v: default: // default分支为空,也就是说如果没有通道准备好接收数据,则什么也不做,程序会阻 塞在此处,直到至少有一个通道准备好为止。 } } gRPC Server启动 01. 副标题 发送端发布消息 01. 副标题 订阅端监听消息 01. 副标题0 码力 | 31 页 | 2.42 MB | 1 年前3
基于open-falcon的平安云监控Ø 团队介绍 Ø 背景 Ø 系统定位 Ø argus是什么 Ø 为什么选用Go Ø argus的前身 Ø argus的现状 Ø argus的未来 系统定位 Ø 保证基础监控,提供监控通道 Ø 要求高可用、高可扩展 Ø 分离用户、平台管理员 角色 Ø 建设用户自助平台(看性能、配告警、收告警) Ø 保证告警覆盖率,按类型初始化通用告警策略 Ø 兼顾通用的和个性的监控要求 目录0 码力 | 30 页 | 10.40 MB | 1 年前3
共 12 条
- 1
- 2













