Hello 算法 1.0.0b1 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b1 2023‑03‑01 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了很多小伙伴的喜爱与支持。在此期间,我也回复 了许多读者的评论问题,遇到最多的问题是“如何入门学习算法”。我渐渐也对这个问题好奇了起来。 两眼一抹黑地刷题应该是最受欢迎的方式,简单粗暴且有效。然而,刷题就如同玩“扫雷”游戏,自学能力强 算法学习路线 总体上看,我认为可将学习数据结构与算法的过程分为三个阶段。 1. 算法入门。熟悉各种数据结构的特点、用法,学习各种算法的原理、流程、用途、效率等。 2. 刷算法题。可以先从热门题单开刷,推荐剑指 Offer、LeetCode Hot 100,先积累至少 100 道题量,熟 悉大多数的算法问题。刚开始刷题时,“遗忘”是最大的困扰点,但这是很正常的,请不要担心。学习中 有一种概念叫“周期性回顾”,同一道题隔段时间做一次,在重复 。你可能会想,这并不符合日常习惯,首个元素的 索引为什么不是 1 呢,这不是更加自然吗?我认同你的想法,但请先记住这个设定,后面讲内 存地址计算时,我会尝试解答这个问题。 数组初始化。一般会用到无初始值、给定初始值两种写法,可根据需求选取。在不给定初始值的情况下,一般 所有元素会被初始化为默认值 0 。 // === File: array.go === /* 初始化数组 */ var0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b2 2023‑03‑30 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了很多小伙伴的喜爱与支持。在此期间,我也回复 了许多读者的评论问题,遇到最多的问题是“如何入门学习算法”。我渐渐也对这个问题好奇了起来。 两眼一抹黑地刷题应该是最受欢迎的方式,简单粗暴且有效。然而,刷题就如同玩“扫雷”游戏,自学能力强 算法学习路线 总体上看,我认为可将学习数据结构与算法的过程分为三个阶段。 1. 算法入门。熟悉各种数据结构的特点、用法,学习各种算法的原理、流程、用途、效率等。 2. 刷算法题。可以先从热门题单开刷,推荐剑指 Offer、LeetCode Hot 100,先积累至少 100 道题量,熟 悉大多数的算法问题。刚开始刷题时,“遗忘”是最大的困扰点,但这是很正常的,请不要担心。学习中 有一种概念叫“周期性回顾”,同一道题隔段时间做一次,在重复 。你可能会想,这并不符合日常习惯,首个元素的 索引为什么不是 1 呢,这不是更加自然吗?我认同你的想法,但请先记住这个设定,后面讲内 存地址计算时,我会尝试解答这个问题。 数组初始化。一般会用到无初始值、给定初始值两种写法,可根据需求选取。在不给定初始值的情况下,一般 所有元素会被初始化为默认值 0 。 // === File: array.go === /* 初始化数组 */ var0 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.0.0 Golang版Hello 算法 Go 语言版 作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.0.0 2024‑02‑09 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 阶段一:算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效 率等方面的内容。 2. 阶段二:刷算法题。建议从热门题目开刷,如“剑指 Offer”和“LeetCode Hot 100”,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。 我们可以按照“艾宾浩斯遗忘曲线”来复习题目,通常在进行 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.0.0b5 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b5 2023‑09‑10 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间, 最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段。 1. 算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效率等方面 内容。 2. 刷算法题。建议从热门题目开刷,如剑指 Offer和LeetCode Hot 100,先积累至少 100 道题目,熟悉 主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按 照“艾宾浩斯遗忘曲线”来复习题目,通常在进行 置称为该元素的「索引 index」。图 4‑1 展示了数组的主要术语和概念。 图 4‑1 数组定义与存储方式 4.1.1 数组常用操作 1. 初始化数组 我们可以根据需求选用数组的两种初始化方式:无初始值、给定初始值。在未指定初始值的情况下,大多数 编程语言会将数组元素初始化为 0 。 // === File: array.go === /* 初始化数组 */ var arr [5]int0 码力 | 379 页 | 30.70 MB | 1 年前3
2.5 Go在猎豹移动的应用毛剑 Why Go? 优雅简洁,少就是多; 性能好、系统级语言; 静态语言、强类型约束; 交叉编译&部署; 网络模型&并发同步模型; 标准库、内置工具强大支持; 开源&社区活跃; 我们做了啥? 业务 猎豹移动全球passport体系; 游戏开放平台; 游戏支付体系; 平台 grpc支持http2,方便移动端app使用; Cache 模仿cpu使用多级cache; L1 cache:不经常修改,大量访问对性 能要求极致的,我们使用go map缓存信 息,使用COW保证无锁更新和访问; 使用redis作为核心的cache store; 使用hash mod region方式对cache进行 扩展; goconf xml,yaml,json,ini?0 码力 | 24 页 | 4.26 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而,刷题就如同玩“扫雷”游戏,自学能力 从总体上看,我们可以将学习数据结构与算法的过程划分为三个阶段: 1. 算法入门。我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效率等方面 内容。 2. 刷算法题。建议从热门题目开刷,如剑指 Offer和LeetCode Hot 100,先积累至少 100 道题目,熟悉 主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按 照“艾宾浩斯遗忘曲线”来复习题目,通常在进行 扩容。在列表中, 我们可以自由添加元素,而无需担心超过容量限制。 4.3.1. 列表常用操作 初始化列表。通常我们会使用“无初始值”和“有初始值”的两种初始化方法。 // === File: list_test.go === /* 初始化列表 */ // 无初始值 list1 := []int // 有初始值 list := []int{1, 3, 2, 5, 4} 访问与更新0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.1.0 Go版Hello 算法 Go 语言版 作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.1.0 2024‑04‑15 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分 位置称为该元素的索引(index)。图 4‑1 展示了数组的主要概念和存储方式。 图 4‑1 数组定义与存储方式 4.1.1 数组常用操作 1. 初始化数组 我们可以根据需求选用数组的两种初始化方式:无初始值、给定初始值。在未指定初始值的情况下,大多数 编程语言会将数组元素初始化为 0 : // === File: array.go === /* 初始化数组 */ var arr [5]int0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版Hello 算法 Go 语言版 作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.2.0 2024‑12‑06 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接 同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 www.hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 适用于简单循环任务,代码直观、可读性 好 适用于子问题分 位置称为该元素的索引(index)。图 4‑1 展示了数组的主要概念和存储方式。 图 4‑1 数组定义与存储方式 4.1.1 数组常用操作 1. 初始化数组 我们可以根据需求选用数组的两种初始化方式:无初始值、给定初始值。在未指定初始值的情况下,大多数 编程语言会将数组元素初始化为 0 : // === File: array.go === /* 初始化数组 */ var arr [5]int0 码力 | 384 页 | 18.49 MB | 10 月前3
Go Web编程tines同步变的更加的 简单,而不需要显式的lock。所谓阻塞,也就是如果读取(value := <-ch)它将会被阻塞,直到有数据接收。其 次,任何发送(ch<-5)将会被阻塞,直到数据被读出。无缓冲channel是在多个goroutine之间同步很棒的工具。 Buffered Channels Buffered Channels 上面我们介绍了默认的非缓存类型的channel,不过G 素可以无阻塞的写入。当写入第5个元素时,代码将会阻塞,直到其他goroutine从channel 中读取一些元素,腾出空 间。 ch := make(chan type, value) value == 0 ! 无缓冲(阻塞) value > 0 ! 缓冲(非阻塞,直到value 个元素) 我们看一下下面这个例子,你可以在自己本机测试一下,修改相应的value值 package main import 务器上的 网页和你之前打开这个服务器上的网页之间没有任何联系。 90 HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(面对 无连接)。 从HTTP/1.1起,默认都开启了Keep-Alive保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用 于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服0 码力 | 295 页 | 5.91 MB | 1 年前3
Build web application with Golangsites. Thanks to them! 1. golang blog 2. Russ Cox's blog 3. go book 4. golangtutorials 5. 轩脉刃de刀光剑影 6. Go Programming Language 7. Network programming with Go 8. setup-the-rails-application-for-internationalization0 码力 | 327 页 | 1.63 MB | 1 年前3
共 41 条
- 1
- 2
- 3
- 4
- 5













