Go Web编程// io.ReadWriter type ReadWriter interface { Reader Writer } 反射 反射 Go语言实现了反射,所谓反射就是动态运行时的状态。我们一般用到的包是reflect包。如何运用reflect包,官方的 这篇文章详细的讲解了reflect包的实现原理,laws of reflection 使用reflect一般分成三步,下面 DNS(Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它 用于TCP/IP网络,它从事将主机名或域名转换为实际IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作 原理可用下图来表示。 图3.2 DNS工作原理 更详细的DNS解析的过程如下,这个过程有助于我们理解DNS的工作模式 1. 在浏览器中输入www.qq.com域 文件时,你可以通过点击“停止”键来中 断文件的下载,关闭与服务器的HTTP连接。 HTTP协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对HTTP服务器来说,它并不知道这两个 请求是否来自同一个客户端。为了解决这个问题, Web程序引入了Cookie机制来维护连接的可持续状态。 HTTP协议是建立在TCP协议之上的,因此TCP攻击一样会影响HTTP的通讯,例如比较常见的一些攻击:SYN0 码力 | 295 页 | 5.91 MB | 1 年前3
Go 入门指南(The way to Go)内群体,本人在完成阅读这本名叫 《The Way to Go》 之后,决定每天抽出一点时间来进行翻译的工作,并且以 开源的形式免费分享给有需要的 Go 语言爱好者。 尽管该书对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,相关内容已获得作者同意根 据当前 Go 语言版本进行修改而不作出特别声明。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 14.9 实现 Futures 模式 如果你喜欢本书 《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,具体请联系【无闻 E-mail: u#gogs.io】,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。 参见 Go 语言学习资料与社区索引。 2012 年 3 月 28 日以前的博文中的内容基本过时,不要再看 符合等式 百度+思考+失败+翻墙+谷歌+尝试=解决 百度+思考+失败+翻墙+谷歌+尝试=解决 的问题最好不要发问 本书原作者:Ivo Balbaert 参与翻译人员: @zhanming themorecolor @everyx @chidouhu @spawnris 《Go入门指南》 翻译进度 支持本书 交流社区 新人守则 致谢 阅前必读 - 8 - 本文档使用 书栈(BookStack.CN) 构建 @domainname @leisore0 码力 | 466 页 | 4.44 MB | 1 年前3
2.游戏战中陪伴助手微服务架构设计与应用专利:《一种在实时游戏对局中,模仿历史胜利玩家打法,并对当前玩家进行打法推荐的方案》 - 发明点:序列截断、偏移算法、帧前进、…… - 思考: - 学习/模仿历史已吃鸡玩家的走位 - 历史玩家的状态,也可作为策略 - 通过特征向量匹配历史玩家 - 策略举例: - 关键帧内容:目标坐标、有资源、有敌人、无开火、无车 - 话术播报:“去小地图标注的地方搜刮,注意避开敌人” 方案探索——关键帧 特征维度增加后,维度爆炸 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 方案设计和工程实现 第三部分 方案设计——Token、策略 更加具有通用性的方案 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 - 方案设计 - 子状态:token - 状态:token 的组合(所有符合条件的) - 策略:token 的组合(提取部分) - 匹配:策略是状态的子集 - Token 数量 - 大类:30+ - 小类:150+ - 总数:2000+ - 专利:《一种基于Token化内容的游戏策略播报方案 》 运营迭代0 码力 | 47 页 | 11.10 MB | 1 年前3
Hello 算法 1.0.0b1 Golang版2.2. 行文风格约定 标题后标注 * 的是选读章节,内容相对较难。如果你的时间有限,建议可以先跳过。 文章中的重要名词会用「括号」 标注,例如「数组 Array」 。建议记住这些名词,包括英文翻译,以便后续阅 读文献时使用。 重点内容、总起句、总结句会被 加粗,此类文字值得特别关注。 专有名词和有特指含义的词句会使用“双引号” 标注,以避免歧义。 0. 写在前面 hello‑algo = tmp count += 3 // 元素交换包含 3 个单元操作 } } } return count } 指数阶 ?(2?) � 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 二叉树的退化 当二叉树的每层的结点都被填满时,达到「完美二叉树」;而当所有结点都偏向一边时,二叉树退化为「链 表」。 7. 树 hello‑algo.com 95 ‧ 完美二叉树是一个二叉树的“最佳状态”,可以完全发挥出二叉树“分治”的优势; ‧ 链表则是另一个极端,各项操作都变为线性操作,时间复杂度退化至 ?(?) ; Figure 7‑8. 二叉树的最佳与最二叉树的最佳和最差结构差情况0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,建议可以先跳过。 ‧ 文章中的重要名词会用「」 括号标注,例如「数组 Array」 。请务必记住这些名词,包括英文翻译,以 便后续阅读文献时使用。 ‧ 加粗的文字 表示重点内容或总结性语句,这类文字值得特别关注。 ‧ 专有名词和有特指含义的词句会使用“双引号” 标注,以避免歧义。 ‧ 涉及到编程语言之间不一致的名词,本书均以 以将上述查字典的一系列操作看作是「二分查找」算法。 例二:整理扑克。我们在打牌时,每局都需要整理扑克牌,使其从小到大排列,实现流程如下: 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序区间抽出一张扑克牌,插入至有序区间的正确位置;完成后最左 2 张扑克已经有序。 3. 在无序区间抽出一张扑克牌,插入至有序区间的正确位置;完成后最左 3 tmp count += 3 // 元素交换包含 3 个单元操作 } } } return count } 指数阶 ?(2?) � 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 指数阶增长非常迅速,在实际应用中通常是不可接受的。若一个问题使用「暴力枚举」求解的时间复杂度为0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版2.2. 行文风格约定 标题后标注 * 的是选读章节,内容相对较难。如果你的时间有限,建议可以先跳过。 文章中的重要名词会用「括号」 标注,例如「数组 Array」 。建议记住这些名词,包括英文翻译,以便后续阅 读文献时使用。 重点内容、总起句、总结句会被 加粗,此类文字值得特别关注。 专有名词和有特指含义的词句会使用“双引号” 标注,以避免歧义。 0. 写在前面 hello‑algo = tmp count += 3 // 元素交换包含 3 个单元操作 } } } return count } 指数阶 ?(2?) � 生物学科中的“细胞分裂”即是指数阶增长:初始状态为 1 个细胞,分裂一轮后为 2 个,分裂 两轮后为 4 个,⋯⋯,分裂 ? 轮后有 2? 个细胞。 指数阶增长得非常快,在实际应用中一般是不能被接受的。若一个问题使用「暴力枚举」求解的时间复杂度是 二叉树的退化 当二叉树的每层的结点都被填满时,达到「完美二叉树」;而当所有结点都偏向一边时,二叉树退化为「链 表」。 7. 树 hello‑algo.com 98 ‧ 完美二叉树是一个二叉树的“最佳状态”,可以完全发挥出二叉树“分治”的优势; ‧ 链表则是另一个极端,各项操作都变为线性操作,时间复杂度退化至 ?(?) ; Figure 7‑8. 二叉树的最佳与最二叉树的最佳和最差结构差情况0 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.0.0 Golang版如何使用本书 � 为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 重要专有名词及其英文翻译会用「」 括号标注,例如「数组 array」 。建议记住它们,以便阅读文献。 ‧ 专有名词和有特指含义的词句会使用“引号” 标注,以避免歧义。 ‧ 重要名词、重点内容和总结性语句会 加粗,这类文字值得特别关注。 例二:整理扑克。我们在打牌时,每局都需要整理手中的扑克牌,使其从小到大排列,实现流程如图 1‑2 所 示。 第 1 章 初识算法 hello‑algo.com 12 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 tmp count += 3 // 元素交换包含 3 个单元操作 } } } return count } 4. 指数阶 ?(2?) 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后 变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 图 2‑11 和以下代码模拟了细胞分裂的过程,时间复杂度为 ?(2?) : 第 20 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.0.0b5 Golang版1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,建议可以先跳过。 ‧ 专有名词和有特指含义的词句会使用“双引号” 标注,以避免歧义。 ‧ 重要专有名词及其英文翻译会用「」 括号标注,例如「数组 array」 。建议记住它们,以便阅读文献。 ‧ 加粗的文字 表示重点内容或总结性语句,这类文字值得特别关注。 ‧ 当涉及到编程语言之间不一致的名词时,本书均以 Python 字典的一系列操作看作是“二分查找”。 例二:整理扑克。我们在打牌时,每局都需要整理扑克牌,使其从小到大排列,实现流程如图 1‑2 所示。 1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 tmp count += 3 // 元素交换包含 3 个单元操作 } } } return count } 4. 指数阶 ?(2?) 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 1 个细胞,分裂一轮后变为 2 个,分裂两轮后 变为 4 个,以此类推,分裂 ? 轮后有 2? 个细胞。 第 2 章 复杂度分析 hello‑algo.com 34 图 2‑11 和以下代码模拟了细胞分裂的过程,时间复杂度为0 码力 | 379 页 | 30.70 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aAleksandr Shalimov、 Wu ZhaoYan、 Li ShuMin、 Bai Kai、 modood、 xmwilldo、 TheChalice和zonesan等。 特别感谢白凯同学帮助我翻译了《细节101》、《问答101》和《技巧101》三 篇文章。 我很抱歉如果上述列表遗漏了某个曾经给予我帮助的成员。 Go社区有如此多 友善和富有创造性的成员,以至于上述列表肯定遗漏了某些成员。 感谢所有 一个complex128 复数值的实部和虚部都是float64类型的值。 在内存中,所有的浮点数都使用IEEE-754格式 ? 存储。 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这 两种状态使用两个预声明(或称为内置)的常量(false和true)来表示。 关 于常量声明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一 运行这个修改后的程序,我们将会发现所有的20条问候语都将在程序退出之前 打印出来。 协程的状态 从上面这个的例子,我们可以看到一个活动中的协程可以处于两个状态:运行 状态和阻塞状态。一个协程可以在这两个状态之间切换。 比如上例中的主协 程在调用wg.Wait方法的时候,将从运行状态切换到阻塞状态;当两个新协程 完成各自的任务后,主协程将从阻塞状态切换回运行状态。 下面的图片显示了一个协程的生命周期。 注意,一个处于睡眠中的(通过调用time0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aAleksandr Shalimov、 Wu ZhaoYan、 Li ShuMin、 Bai Kai、 modood、 xmwilldo、 TheChalice和zonesan等。 特别感谢白凯同学帮助我翻译了《细节101》、《问答101》和《技巧101》三篇 文章。 我很抱歉如果上述列表遗漏了某个曾经给予我帮助的成员。 Go社区有如此多友 善和富有创造性的成员,以至于上述列表肯定遗漏了某些成员。 感谢所有曾经 一个complex128复 数值的实部和虚部都是float64类型的值。 在内存中,所有的浮点数都使用IEEE-754格式 存储。 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这两 种状态使用两个预声明(或称为内置)的常量(false和true)来表示。 关于 常量声明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一个 运行这个修改后的程序,我们将会发现所有的20条问候语都将在程序退出之前 打印出来。 协程的状态 从上面这个的例子,我们可以看到一个活动中的协程可以处于两个状态:运行 状态和阻塞状态。一个协程可以在这两个状态之间切换。 比如上例中的主协程 在调用wg.Wait方法的时候,将从运行状态切换到阻塞状态;当两个新协程完成 各自的任务后,主协程将从阻塞状态切换回运行状态。 下面的图片显示了一个协程的生命周期。 注意,一个处于睡眠中的(通过调用time0 码力 | 608 页 | 1.08 MB | 1 年前3
共 49 条
- 1
- 2
- 3
- 4
- 5













