 2.2.6 字节跳动在 Go 网络库上的实践TP99 1.0x 0.34x 2.5x 1.0x Netpoll – 业务实测表现 CPU -25% TP99 -36% 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 Go net 在 RPC 场景下的问题 1. Conn 难以探活, 维护连接池成本高 Go net 在 RPC 场景下的问题 go epoll_wait() func conns... var input buffer var output buffer go handle() 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 优化方向 优化 Buffer 设计(zerocopy) 优化调度效率(poller) 优化方向 优化 Buffer 设计(zerocopy) 优化调度效率(poller) msec 动态调参 1. LinkBuffer 2. readv/writev 优化 Buffer 设计(nocopy) 优化调度效率(poller) 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 3. Multisyscall 2. TCP ZeroCopy 4. io_uring 1. 单连接多路复用(ZeroCopy) 单连接多路复用 – 组包/拆包0 码力 | 42 页 | 3.19 MB | 1 年前3 2.2.6 字节跳动在 Go 网络库上的实践TP99 1.0x 0.34x 2.5x 1.0x Netpoll – 业务实测表现 CPU -25% TP99 -36% 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 Go net 在 RPC 场景下的问题 1. Conn 难以探活, 维护连接池成本高 Go net 在 RPC 场景下的问题 go epoll_wait() func conns... var input buffer var output buffer go handle() 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 优化方向 优化 Buffer 设计(zerocopy) 优化调度效率(poller) 优化方向 优化 Buffer 设计(zerocopy) 优化调度效率(poller) msec 动态调参 1. LinkBuffer 2. readv/writev 优化 Buffer 设计(nocopy) 优化调度效率(poller) 设计实现 01 性能亮点 02 高级特性 03 展望未来 04 3. Multisyscall 2. TCP ZeroCopy 4. io_uring 1. 单连接多路复用(ZeroCopy) 单连接多路复用 – 组包/拆包0 码力 | 42 页 | 3.19 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 自相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当 少量但准确的描述比大量但不准确的描述要好。但这确实也 给Go程序员们留下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语 言。 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活 1 ? 获取本书最新版) Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计 成员中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 自相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当 少量但准确的描述比大量但不准确的描述要好。但这确实也 给Go程序员们留下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语 言。 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活 1 ? 获取本书最新版) Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计 成员中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 821 页 | 956.82 KB | 1 年前3
 Go 入门指南(The way to Go)时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发 环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 的宗旨,就是将一切没有必要的东西都去掉,不能去掉的就无底线 地简化,同时追求最大程度的自动化。他完美地诠释了敏捷编程的 KISS 秘诀:短小精悍! Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开发者们的工作更加便利。 这里只举例其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控 制结构。同时我们也会发现 Go 语言旨在减少不必要的编码工作,这使得 Go 我们会经常涉及到一些关于 Go 语言的编码规范,了解和使用这些已经被广泛认同的规范应该是你学习阶 段最重要的实践。我会在书中尽量使用已经讲解的概念或者技巧来解释相关的代码示例,以避免你在不了 解某些高级概念的情况下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以 Go入门指南 - 2 - 本文档使用 看云 构建 下载这些代码到你的电脑上运行,从而加深对概念的理解。0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发 环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 的宗旨,就是将一切没有必要的东西都去掉,不能去掉的就无底线 地简化,同时追求最大程度的自动化。他完美地诠释了敏捷编程的 KISS 秘诀:短小精悍! Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开发者们的工作更加便利。 这里只举例其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控 制结构。同时我们也会发现 Go 语言旨在减少不必要的编码工作,这使得 Go 我们会经常涉及到一些关于 Go 语言的编码规范,了解和使用这些已经被广泛认同的规范应该是你学习阶 段最重要的实践。我会在书中尽量使用已经讲解的概念或者技巧来解释相关的代码示例,以避免你在不了 解某些高级概念的情况下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以 Go入门指南 - 2 - 本文档使用 看云 构建 下载这些代码到你的电脑上运行,从而加深对概念的理解。0 码力 | 380 页 | 2.97 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用 Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的 一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go程序员们留 下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方 面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语言。 一个持有积 极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是Go的 第2章:Go语言简介 8 Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计成员 中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用 Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的 一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go程序员们留 下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方 面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语言。 一个持有积 极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是Go的 第2章:Go语言简介 8 Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计成员 中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 591 页 | 21.40 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go 程序员们留下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语言。 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是 com/golang101/golang101 获 取本书最新版) Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计 成员中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。 Go是一门特性丰富的语言。它的语法集虽然不大,但我们也不能说它很小。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的 少量但准确的描述比大量但不准确的描述要好。但这确实也给Go 程序员们留下了一些困惑。 所以你认为简单不是Go的卖点吗? 我认为,至少简单不是Go的主要卖点。毕竟有一些其它语言确实比Go简单。 另一方面,虽然Go是一门特性丰富的语言,但是它却也不是一门复杂的语言。 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是 com/golang101/golang101 获 取本书最新版) Go语言简介 Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计 成员中包括很多有着数十年编程语言研究领域经验的研究者。 Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言: 内置并发编程支持: 使用协程(goroutine)做为基本的计算单元。轻松地创建协程。 使用通道(channel)来实现协程间的同步和通信。0 码力 | 608 页 | 1.08 MB | 1 年前3
 Go 入门指南(The way to Go)目 录 致谢 阅前必读 内容介绍 前言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 应用 goroutine 和 channel 时有多少种不同的模式, 如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来开发 Web 应 用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发环境 前言 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐 的宗旨,就是将一切没有必要的东西都去掉,不能去掉的就无底线地简化,同 时追求最大程度的自动化。他完美地诠释了敏捷编程的 KISS 秘诀:短小精悍! Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开发者们的工作更加便利。这里只举例 其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控制结构。同时我们也会 发现 Go 语言旨在减少不必要的编码工作,这使得 Go0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)目 录 致谢 阅前必读 内容介绍 前言 第1章:Go 语言的起源,发展与普及 1.1 起源与发展 1.2 语言的主要特性与发展的环境和影响因素 第2章:安装与运行环境 2.1 平台与架构 2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 应用 goroutine 和 channel 时有多少种不同的模式, 如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来开发 Web 应 用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发环境 前言 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐 的宗旨,就是将一切没有必要的东西都去掉,不能去掉的就无底线地简化,同 时追求最大程度的自动化。他完美地诠释了敏捷编程的 KISS 秘诀:短小精悍! Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开发者们的工作更加便利。这里只举例 其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控制结构。同时我们也会 发现 Go 语言旨在减少不必要的编码工作,这使得 Go0 码力 | 466 页 | 4.44 MB | 1 年前3
 3.云原生边云协同AI框架实践云原生边云协同AI框架实践 普杰 华为云边缘云创新Lab 高级工程师 KubeEdge SIG AI Tech Lead 目 录 Edge AI现状与趋势 01 Sedna:边云协同AI框架 02 Sedna-GM:K8S Operator 03 实践案例 04 Edge AI现状与趋势 第一部分 Why Edge AI? • Cloud中心化的AI计算范式不足以应对端上AI ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function ⚫ 不同特性对应不同的worker组, 可部署在边上或云 上, 进行协同 4. Lib ⚫ 面向AI开发者和应用开发者 NewRegistry() { ... f.SetDownstreamSendFunc(downstreamSendFunc) f.SetUpstreamHandler(uc.Add) ... // 启动各个特性对应controller go f.Run(stopCh) } ... ws := websocket.NewServer(addr) ... } • 初始化Sedna CRD client,Controller0 码力 | 37 页 | 2.36 MB | 1 年前3 3.云原生边云协同AI框架实践云原生边云协同AI框架实践 普杰 华为云边缘云创新Lab 高级工程师 KubeEdge SIG AI Tech Lead 目 录 Edge AI现状与趋势 01 Sedna:边云协同AI框架 02 Sedna-GM:K8S Operator 03 实践案例 04 Edge AI现状与趋势 第一部分 Why Edge AI? • Cloud中心化的AI计算范式不足以应对端上AI ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function ⚫ 不同特性对应不同的worker组, 可部署在边上或云 上, 进行协同 4. Lib ⚫ 面向AI开发者和应用开发者 NewRegistry() { ... f.SetDownstreamSendFunc(downstreamSendFunc) f.SetUpstreamHandler(uc.Add) ... // 启动各个特性对应controller go f.Run(stopCh) } ... ws := websocket.NewServer(addr) ... } • 初始化Sedna CRD client,Controller0 码力 | 37 页 | 2.36 MB | 1 年前3
 Go Web编程a int, b int),默认为离它最近的类型,同理多于2个同类型的变量或者返回值。同时我们注意到它的返 回值就是一个类型,这个就是省略写法。 多个返回值 多个返回值 Go语言比C更先进的特性,其中一点就是函数能够返回多个值。 我们直接上代码看例子 package main import "fmt" //返回 A+B 和 A*B func SumAndProduct(A, B int) HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(面对 无连接)。 从HTTP/1.1起,默认都开启了Keep-Alive保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用 于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连 接。 Keep-Aliv ado,这个代码和他是不是很像,对,没错,go就是拥有类似 python这样动态语言的特性,写web应用很方便。 如果你以前是ruby程序员,会发现和ROR的/script/server启动有点类似。 我们看到Go通过简单的几行代码就已经运行起来一个web服务了,而且这个Web服务内部有支持高并发的特性,我将会 在接下来的两个小节里面详细的讲解一下go是如何实现Web高并发的。 links0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程a int, b int),默认为离它最近的类型,同理多于2个同类型的变量或者返回值。同时我们注意到它的返 回值就是一个类型,这个就是省略写法。 多个返回值 多个返回值 Go语言比C更先进的特性,其中一点就是函数能够返回多个值。 我们直接上代码看例子 package main import "fmt" //返回 A+B 和 A*B func SumAndProduct(A, B int) HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(面对 无连接)。 从HTTP/1.1起,默认都开启了Keep-Alive保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用 于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连 接。 Keep-Aliv ado,这个代码和他是不是很像,对,没错,go就是拥有类似 python这样动态语言的特性,写web应用很方便。 如果你以前是ruby程序员,会发现和ROR的/script/server启动有点类似。 我们看到Go通过简单的几行代码就已经运行起来一个web服务了,而且这个Web服务内部有支持高并发的特性,我将会 在接下来的两个小节里面详细的讲解一下go是如何实现Web高并发的。 links0 码力 | 295 页 | 5.91 MB | 1 年前3
 Hello 算法 1.1.0 Go版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 14.3 动态规划解题思路 . . . . . ,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 新的 第 3 章 数据结构 hello‑algo.com 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。0 码力 | 383 页 | 18.48 MB | 1 年前3 Hello 算法 1.1.0 Go版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 14.3 动态规划解题思路 . . . . . ,请继续往下阅读,本书将引导你 迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 算法(algorithm)是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 新的 第 3 章 数据结构 hello‑algo.com 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。0 码力 | 383 页 | 18.48 MB | 1 年前3
 Hello 算法 1.0.0 Golang版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.3 动态规划解题思路 . . . . . 请继续往下阅读,本书将 引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 新的 第 3 章 数据结构 hello‑algo.com 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。0 码力 | 382 页 | 17.60 MB | 1 年前3 Hello 算法 1.0.0 Golang版1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.3 动态规划解题思路 . . . . . 请继续往下阅读,本书将 引导你迈入数据结构与算法的知识殿堂。 1.2 算法是什么 1.2.1 算法定义 「算法 algorithm」是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 新的 第 3 章 数据结构 hello‑algo.com 65 更大的数组,并将旧数组的内容复制到新数组中。 Q:在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢? 在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作由类内部自动完成。例如,Java 的 ArrayList 的初始容量通常为 10。另外,扩容操作也是自动实现的。详见后续的“列表”章节。0 码力 | 382 页 | 17.60 MB | 1 年前3
共 44 条
- 1
- 2
- 3
- 4
- 5














