Golang 101(Go语言101 中文版) v1.21.a
请注意,为了解释的简单性,在以后其它的《Go语言101》文章中,上图中所 示的子状态将不会再提及。 重申一下,睡眠和等待系统调用返回子状态被认 为是运行状态,而不是阻塞状态。 标准编译器采纳了一种被称为M-P-G模型 ? 的算法来实现协程调度。 其中, M表示系统线程,P表示逻辑处理器(并非上述的逻辑CPU),G表示协程。 大多数的调度工作是通过逻辑处理器(P)来完成的。 逻辑处理器像一个监工 一样通过将不同的 Go通道编程。 本文余下的内容将展示很多通道用例。 希望这篇文章能够说服你接收下面的 观点: 使用通道进行异步和并发编程是简单和惬意的; 通道同步技术比被很多其它语言采用的其它同步方案(比如角色模型 ? 和async/await模式 ? )有着更多的应用场景和更多的使用变种。 请注意,本文的目的是展示尽量多的通道用例。但是,我们应该知道通道并不 是Go支持的唯一同步技术,并且通道并不是在任何情况下都是最佳的同步技 的执行效率就越低(这是我们常常只使用不多于三个分支的select控制流程的 原因)。 reflect标准库包中也提供了模拟尝试发送和尝试接收代码块的TrySend和 TryRecv函数。 数据流操纵 本节将介绍一些使用通道进行数据流处理的用例。 一般来说,一个数据流处理程序由多个模块组成。不同的模块执行分配给它们 的不同的任务。 每个模块由一个或者数个并行工作的协程组成。实践中常见 的工作任务包括: 数据生成/搜集/加载;0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
请注意,为了解释的简单性,在以后其它的《Go语言101》文章中,上图中所 示的子状态将不会再提及。 重申一下,睡眠和等待系统调用返回子状态被认为 是运行状态,而不是阻塞状态。 标准编译器采纳了一种被称为M-P-G模型 的算法来实现协程调度。 其中,M 表示系统线程,P表示逻辑处理器(并非上述的逻辑CPU),G表示协程。 大 多数的调度工作是通过逻辑处理器(P)来完成的。 逻辑处理器像一个监工一 样通过将不同 通道编程。 本文余下的内容将展示很多通道用例。 希望这篇文章能够说服你接收下面的观 点: 使用通道进行异步和并发编程是简单和惬意的; 通道同步技术比被很多其它语言采用的其它同步方案(比如角色模型 和 async/await模式 )有着更多的应用场景和更多的使用变种。 请注意,本文的目的是展示尽量多的通道用例。但是,我们应该知道通道并不 是Go支持的唯一同步技术,并且通道并不是在任何情况下都是最佳的同步技 行效率就越低(这是我们常常只使用不多于三个分支的select控制流程的原 因)。 reflect标准库包中也提供了模拟尝试发送和尝试接收代码块的TrySend和 TryRecv函数。 数据流操纵 本节将介绍一些使用通道进行数据流处理的用例。 一般来说,一个数据流处理程序由多个模块组成。不同的模块执行分配给它们 的不同的任务。 每个模块由一个或者数个并行工作的协程组成。实践中常见的 工作任务包括: 数据生成/搜集/加载;0 码力 | 608 页 | 1.08 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
请注意,为了解释的简单性,在以后其它的《Go语言101》文章中,上图中所示的子 状态将不会再提及。 重申一下,睡眠和等待系统调用返回子状态被认为是运行状 态,而不是阻塞状态。 标准编译器采纳了一种被称为M-P-G模型 (https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqx Dv3I3XMw)的算法来实现协程调度。 其中,M表示系统线程,P表示逻辑处理器(并 读那篇文章和当前这篇文章来精通Go通道编程。 本文余下的内容将展示很多通道用例。 希望这篇文章能够说服你接收下面的观点: 使用通道进行异步和并发编程是简单和惬意的; 通道同步技术比被很多其它语言采用的其它同步方案(比如角色模型 (https://en.wikipedia.org/wiki/Actor_model)和async/await模式 (https://en.wikipedia.org/wiki/Async/await))有着更多的应用场景和 有时,一个请求可能需要比预期更长的用时才能回应,甚至永远都得不到回应。 我 们可以使用本文后面将要介绍的超时机制来应对这样的情况。 有时,回应方可能会不断地返回一系列值,这也同时属于后面将要介绍的数据流的 一个用例。 使用通道实现通知 通知可以被看作是特殊的请求/回应用例。在一个通知用例中,我们并不关心回应的 值,我们只关心回应是否已发生。 所以我们常常使用空结构体类型struct{}来做0 码力 | 591 页 | 21.40 MB | 1 年前3Go Web编程
欢迎来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Select 我们上面介绍的都是只有一个channel的情况,那么如果存在多个channel的时候,我们该如何操作呢,Go里面提供了 一个关键字select,通过select可以监听channel上的数据流动。 select默认是阻塞的,只有当监听的channel中有发送或接收可以进行时才会运行,当多个channel都准备好的时 候,select是随机的选择一个执行的。 package main 如何解析如上这个XML文件喃呢? 我们可以通过xml包的Unmarshal函数来达到我们的目的 func Unmarshal(data []byte, v interface{}) error data接收的是XML数据流,v是需要输出的结构,定义为interface,也就是可以把XML转换为任意的格式。我们这里主 要介绍struct的转换,因为struct和XML都有类似树结构的特征。 示例代码如下: package0 码力 | 295 页 | 5.91 MB | 1 年前3云原生时代分布式链路追踪实践-曲赛
责人来自Grafana,Gitlab ✓ 持续更新 OpenTelemetry 2019年,由OpenTracing和OpenCensus合并 而来。 ✓ ✓ ✓ 蓬勃发展 Trace 数据模型:Trace Context,Baggage 6 Propagation Format W3C Trace-Context W3C Baggage Zipkin B3 format Jaeger 响应 traceresponse: 00-1baad25c36c11c1e7fbd6d122bd85db6- cab70b47728a8a99-01 Trace 数据模型: Trace Detail 7 Trace 数据模型: Trace Detail 示例 8 Trace 采样策略 9 1. Head-based coherent sampling 2. Tail-based coherent 非侵入式的业务接入 otelgrpc instrumentation核心实现 利用拦截器机制的实现 接入便利,只需引入对应的拦截器 组件 trace基础属性自动采集 一次网络调用的经过的拦截器数据流 天机阁2.0 简介 12 天机阁2.0是遵循OpenTelemetry标准的,为各业务或平台提供分布式追踪,监控,日志, 多维染色,容量评估,架构治理等能力的云原生可观测性系统。 愿景:让开发一切尽在掌握0 码力 | 17 页 | 2.47 MB | 1 年前3Hello 算法 1.1.0 Go版
我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 383 页 | 18.48 MB | 1 年前3Hello 算法 1.0.0 Golang版
我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 中对其长 度进行调整。 � 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 382 页 | 17.60 MB | 1 年前3Hello 算法 1.2.0 简体中文 Go 版
我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 www.hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 384 页 | 18.49 MB | 10 月前3Go 入门指南(The way to Go)
14.3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 select 切换协程 14.5 通道、超时和计时器(Ticker) 14.6 协程和恢复(recover) 14.7 新旧模型对比:任务和worker 14.8 惰性生成器的实现 14.9 实现 Futures 模式 第 15 章 网络,模板和网页应用 15.1 tcp服务器 15.2 一个简单的网页服务器 15 语言中“头文件”的概念却导致越来越多因为依赖关系而使得 构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖关系分析系统从而能够 快速编译的编程语言。这正是 Go 语言采用包模型的根本原因,这个模型通过严格的依赖关系检查机制来加快程序构 建的速度,提供了非常好的可量测性。 整个 Go 语言标准库的编译时间一般都在 20 秒以内,其它的常规项目也只需要半秒钟的时间来完成编译工作。这种 4.2 Go 程序的基本结构和要素 4.2.1 包的概念、导入与可见性 4.2 Go 程序的基本结构和要素 - 57 - 本文档使用 书栈(BookStack.CN) 构建 Go 中的包模型采用了显式依赖关系的机制来达到快速编译的目的,编译器会从后缀名为 .o 的对象文件(需要且 只需要这个文件)中提取传递依赖类型的信息。 如果 A.go 依赖 B.go ,而 B0 码力 | 466 页 | 4.44 MB | 1 年前3Hello 算法 1.0.0b4 Golang版
我们按照说明书一步步操作,就能组装出精美的积木模型。 1. 初识算法 hello‑algo.com 11 Figure 1‑5. 拼装积木 两者的详细对应关系如下表所示。 数据结构与算法 LEGO 乐高 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得注意的是,数据结构与算法独立于编程语言 解物理结构 的含义。数组与链表是其他所有数据结构的基石,建议你投入更多时间深入了解这两种基本 数据结构。 3.2. 基本数据类型 谈及计算机中的数据,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织形式 各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用。它包括: ‧ 整数类型 byte , short Figure 7‑23. 二叉搜索树的平衡与退化 7.4.3. 二叉搜索树常见应用 ‧ 用作系统中的多级索引,实现高效的查找、插入、删除操作。 ‧ 作为某些搜索算法的底层数据结构。 ‧ 用于存储数据流,以保持其有序状态。 7. 树 hello‑algo.com 136 7.5. AVL 树 * 在二叉搜索树章节中,我们提到了在多次插入和删除操作后,二叉搜索树可能退化为链表。这种情况下,所0 码力 | 347 页 | 27.40 MB | 1 年前3
共 45 条
- 1
- 2
- 3
- 4
- 5