Golang 101(Go语言101 中文版) v1.21.a开头的源代码文件将被Go官方工具链工具忽略掉。 更多go子命令 上面提到的三个go子命令(go run、go build和go install) 将只会输出代码 语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令可以 用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代 码。 我们可以使用go test子命令来运行单元和基准测试用例。 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这两 种状态使用两个预声明(或称为内置)的常量(false和true)来表示。 关于 常量声明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一个 字节(byte)序列。 此字节序列体现了此字符串所表示的文本的UTF-8编码形 式。 我们可以从Go中的字符串(第19章)一文中获取更多关于字符串的知识。 // Golang 如果一个字符串衔接运算中的一个操作值为类型确定的,则结果字符串是一个 类型和此操作数类型相同的类型确定值。 否则,结果字符串是一个类型不确定 值(肯定是一个常量)。 布尔(又称逻辑)运算符 Go支持两种布尔二元运算符和一种布尔一元运算符。 字面形式 名称 对操作值的要求 && 布尔与(二元) 两个操作值的类型必须为同一布尔类型。 || 布尔或(二元) ! 布尔否(一元)0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a开头的源代码文件将被Go官方工具链工具忽略掉。 更多go子命令 上面提到的三个go子命令(go run、go build和go install) 将只会输出代 码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令 可以用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go 代码。 我们可以使用go test子命令来运行单元和基准测试用例。 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这 两种状态使用两个预声明(或称为内置)的常量(false和true)来表示。 关 于常量声明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一 个字节(byte)序列。 此字节序列体现了此字符串所表示的文本的UTF-8编码 形式。 我们可以从Go中的字符串(第19章)一文中获取更多关于字符串的知 // Golang 如果一个字符串衔接运算中的一个操作值为类型确定的,则结果字符串是一个 类型和此操作数类型相同的类型确定值。 否则,结果字符串是一个类型不确 定值(肯定是一个常量)。 布尔(又称逻辑)运算符 Go支持两种布尔二元运算符和一种布尔一元运算符。 字面形式 名称 对操作值的要求 && 布尔与(二元) 两个操作值的类型必须为同一布尔类型。 || 布尔或(二元) ! 布尔否(一元)0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第3章:Go官方工具链 13 更多go子命令 上面提到的三个go子命令(go run、go build和go install) 将只会输出代 码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令可以 用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go 一个布尔值表示一个真假。在内存中,一个布尔值只有两种可能的状态。 这两种状 态使用两个预声明(或称为内置)的常量(false和true)来表示。 关于常量声 明,下一篇文章(第7章)将做详细解释。 从逻辑上说,一个字符串值表示一段文本。 在内存中,一个字符串存储为一个字节 (byte)序列。 此字节序列体现了此字符串所表示的文本的UTF-8编码形式。 我们 可以从Go中的字符串(第19章)一文中获取更多关于字符串的知识。 Golang 如果一个字符串衔接运算中的一个操作值为类型确定的,则结果字符串是一个类型 和此操作数类型相同的类型确定值。 否则,结果字符串是一个类型不确定值(肯定 是一个常量)。 布尔(又称逻辑)运算符 Go支持两种布尔二元运算符和一种布尔一元运算符。 字面形式 名称 对操作值的要求 && 布尔与(二元) 两个操作值的类型必须为同一布尔类型。 || 布尔或(二元) ! 布尔否(一元)0 码力 | 591 页 | 21.40 MB | 1 年前3
03. Golang 在隐私计算平台建设中的实践 - 刘敬计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 发起⽅方逻辑 参与⽅方逻辑 参与⽅方逻辑 趣链科技版权所有©2016 – 2021 15 嵌套调⽤用其他算法 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 ⼦子算法参与⽅方逻辑 ⼦子算法发起⽅方逻辑 创建⼦子算法任务 发送⼦子算法任务id 等待ack 调⽤用⼦子算法任务 等待接收⼦子算法任务id 加⼊入⼦子算法任务 发送ack 趣链科技版权所有©2016 – 2021 16 隐私计算算法通⽤用流程抽象 1 发起⽅方 参与⽅方1 参与⽅方n0 码力 | 37 页 | 6.20 MB | 1 年前3
GoFrame框架介绍及设计模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 在不同的软件架构层次,模块的概念会有些不太一样。 在开发框架层面,模块是某一类功能逻辑的最小封装单位。 在Golang代码层面中,我们也可以将package称作模块。 软件进行模块化设计的目的, 是为了使得软件功能逻辑尽可能的解耦和复用, 终极目标也是为了保证软件开发维护的效率和质量。 模块化设计-复用原则 CRP 共同复用原则 (Common Reuse Principle) 不要强迫一个模块依赖它不需要的东西。 模块复用原则竞争关系张力图 模块化设计-单仓包设计 痛点: • 实现相同功能逻辑的模块百花齐放,选择成本过高 • 项目依赖的模块过多,项目整体的稳定性会受到影响 • 项目依赖的模块过多,无从下手是否应当升级模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高, 开发体系难以建立,开发规范难以统一 减轻心智负担,提高模块可维护性,更容易保证各业务项目的模块版本一致性 改进: 模块化设计-常见问题 1. 模块低耦设计:文件层面的源文件下载与模块之间的逻辑耦合没有直接关系 2. 框架核心精简:功能强大且代码精简,包含测试与示例代码共8MB容量 3. 编译语言特性:编译型语言和解释型语言的模块管理逻辑不太一样 虽然框架每一个模块都按照低耦合设计,模块可以选择性引入,但在使用时也得全量下载完整框架代码。 源代码 编译 执行0 码力 | 37 页 | 8.84 MB | 1 年前3
02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力注入灵魂 2 • Multi Runtime: 从 sidecar 到机甲 • Runtime API: 解决跨云部署和厂商绑定难题 • WebAssembly in sidecar: 让业务逻辑跑在sidecar里 • Service Mesh 回顾 • 展望2022:待解决的问题 • 总结 3 Service Mesh 回顾 Service Mesh 回顾 4 由开发了 • 平滑升级 • 异构语言治理 • 异构语言治理能力弱 • SDK 版本不统一 应用 SDK 服务路由 负载均衡 通信序列化协议 sidecar 应用 SDK 通信序列化协议 业务逻辑 服务路由 熔断限流 进程通信 熔断限流 负载均衡 Service Mesh 落地实践 7 基础设施 MOSN RPC MQ Actuator Cache Config 鉴权 消息 缓存 8 事情没有那么 简单 新的挑战 1:应用跟基础设施强绑定 9 MOSN App 业务逻辑 RPC SDK port1 bolt SOFA-RPC 基础设施 RPC 新的挑战 1:应用跟基础设施强绑定 10 MOSN App 业务逻辑 RPC SDK port 1 各种各样的SDK bolt port 2 Cache SDK Redis0 码力 | 63 页 | 880.85 KB | 1 年前3
Hello 算法 1.0.0b2 Golang版本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一 。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 1.2.3. 数据结构与算法的关系 「数据结 ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的“是”与“否”,其占用空间需根据编程语言确定,通常为 1 byte 或 1 bit ; 类别 符号 占用空间 取值范围 默认值 整数 byte 1 byte −27 ~ 27 − 1 ( −1280 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.0.0b1 Golang版本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一 。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 1.2.3. 数据结构与算法的关系 「数据结 ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间与具体编程语言有关,通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的“是”与“否”,其占用空间需要具体根据编程语言确定,通常为 1 byte 或 1 bit ; 类别 符号 占用空间 取值范围 默认值 整数 byte 1 byte −27 ~ 27 − 1 (0 码力 | 190 页 | 14.71 MB | 1 年前3
Go Web编程流程和函数 2.3 流程和函数 这小节我们要介绍Go里面的流程控制以及函数操作 流程控制 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。流程控 制包含分三大类:条件判断,循环控制和无条件跳转。 if if if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事。 Go里面if条件判断语句中不需要括号,如下代码所示 10") } else { fmt.Println("x is less than 10") } Go的if还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其 他地方就不起作用了,如下所示 // 计算获取值x,然后根据x返回的大小,判断是否大于10。 if x := computedValue(); x > 10 { fmt.Println("x println(i) i++ goto Here //跳转到Here去 } 标签名是大小写敏感的。 for for Go里面最强大的一个控制逻辑就是for,它即可以用来循环读取数据,又可以当作while来控制逻辑,还能迭代操 作。它的语法如下: for expression1; expression2; expression3 { //... } 53 e0 码力 | 295 页 | 5.91 MB | 1 年前3
Hello 算法 1.1.0 Go版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 1.2.3 数据结构与算法的关系 如图 表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;图则由节点 和边构成,反映了复杂的网络关系。 如图 3‑1 所示,逻辑结构可分为“线性”和“非线性0 码力 | 383 页 | 18.48 MB | 1 年前3
共 52 条
- 1
- 2
- 3
- 4
- 5
- 6













