 MoonBit月兔编程语言 现代编程思想 第九课 接口aux(tl) 9. } 10. } 11. } 12. 13. aux(map.0) // 利⽤ .0 取出实际的值 14. } 13 ⾃定义运算符 ⽉兔允许⾃定义部分运算符:⽐较、加减乘除、取值、设值 通过定义特定名称、类型的⽅法即可实现 1. fn BoxedInt::op_equal(i: BoxedInt, j: BoxedInt) -> Bool { // false 10. let _ = { value: 10 } + { value: 100 } // { value: 110 } 11. } 14 ⾃定义运算符 ⽉兔允许⾃定义部分运算符:⽐较、加减乘除、取值、设值 通过定义特定名称、类型的⽅法即可实现 1. // 使⽤:map [ key ] 2. fn Map::op_get[Key: Eq, Value](map: Map[Key0 码力 | 16 页 | 346.04 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第九课 接口aux(tl) 9. } 10. } 11. } 12. 13. aux(map.0) // 利⽤ .0 取出实际的值 14. } 13 ⾃定义运算符 ⽉兔允许⾃定义部分运算符:⽐较、加减乘除、取值、设值 通过定义特定名称、类型的⽅法即可实现 1. fn BoxedInt::op_equal(i: BoxedInt, j: BoxedInt) -> Bool { // false 10. let _ = { value: 10 } + { value: 100 } // { value: 110 } 11. } 14 ⾃定义运算符 ⽉兔允许⾃定义部分运算符:⽐较、加减乘除、取值、设值 通过定义特定名称、类型的⽅法即可实现 1. // 使⽤:map [ key ] 2. fn Map::op_get[Key: Eq, Value](map: Map[Key0 码力 | 16 页 | 346.04 KB | 1 年前3
 Object Pascal 参考手册(Ver 0.1) 编译。 Borland 开发工具帮助我们设置工程和源文件的许多细节,比如维护单元的依赖信息。并且,使用这些工 具在程序的组织上还有一些限制,严格说来,这不是 Object Pascal 语言规范的一部分。比如,Borland 开发工具遵循某些文件和程序的命名约定,若你在 IDE 以外编写代码并使用命令行来编译,你可以避开 这些限制。 这些帮助主题假设你在 IDE 环境下工作,并且使用 VCL(可视化组件库)和/或 Pascal 源代码: • 单元源文件 (文件扩展名为 .pas) • 工程文件 (文件扩展名为 .dpr) • 包源文件 (文件扩展名为 .dpk) 单元源文件包含程序代码的主要部分,每个程序包含一个工程文件和多个单元文件。工程文件相当 Overview - 2 - 于传统 Pascal 语言的‘主’程序文件,它把各单元文件组织成一个程序。Borland 开发工具自动为每一 uses { 下面这些单元是 VCL 的一部分 } Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; { 在 Linux 下,uses 子句看起来像这样: uses { 下面这些单元是 CLX 的一部分 } SysUtils, Types, Classes0 码力 | 168 页 | 868.25 KB | 1 年前3 Object Pascal 参考手册(Ver 0.1) 编译。 Borland 开发工具帮助我们设置工程和源文件的许多细节,比如维护单元的依赖信息。并且,使用这些工 具在程序的组织上还有一些限制,严格说来,这不是 Object Pascal 语言规范的一部分。比如,Borland 开发工具遵循某些文件和程序的命名约定,若你在 IDE 以外编写代码并使用命令行来编译,你可以避开 这些限制。 这些帮助主题假设你在 IDE 环境下工作,并且使用 VCL(可视化组件库)和/或 Pascal 源代码: • 单元源文件 (文件扩展名为 .pas) • 工程文件 (文件扩展名为 .dpr) • 包源文件 (文件扩展名为 .dpk) 单元源文件包含程序代码的主要部分,每个程序包含一个工程文件和多个单元文件。工程文件相当 Overview - 2 - 于传统 Pascal 语言的‘主’程序文件,它把各单元文件组织成一个程序。Borland 开发工具自动为每一 uses { 下面这些单元是 VCL 的一部分 } Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; { 在 Linux 下,uses 子句看起来像这样: uses { 下面这些单元是 CLX 的一部分 } SysUtils, Types, Classes0 码力 | 168 页 | 868.25 KB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 于各种其它主 题的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 自相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当 的Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编 程带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装 隐藏了这些类型的内部结构, 从而对我们更深入地理解这些类型的值的行为0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 于各种其它主 题的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和 使用Go。 持有这种态度阻止了我更深刻地理解Go。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至 自相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当 的Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编 程带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装 隐藏了这些类型的内部结构, 从而对我们更深入地理解这些类型的值的行为0 码力 | 821 页 | 956.82 KB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 关于各种其它主题 的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的 Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程 带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏 了这些类型的内部结构, 从0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 关于各种其它主题 的文章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的 值,主要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使 用Go。 持有这种态度阻止了我更深刻地理解Go。 Go中的一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自 相矛盾。 Go语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的 Go编程经验和感悟才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运 行时在实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程 带来了许多便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏 了这些类型的内部结构, 从0 码力 | 608 页 | 1.08 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a- Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 关于各种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用 一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运行时在 实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程带来了许多 便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏了这些类型的内 部结构,0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a- Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 关于各种其它主题的文 章。 所以现在《Go语言101》大约有50篇文章。 你曾经的困惑主要包括哪些方面? 一些困惑是关于一些Go语法和语义设计细节的。 一些困惑涉及到某些类型的值,主 要是切片,接口和通道类型。 另外一些涉及到标准包API的使用细节。 你认为造成你曾经的困惑的主要原因是什么? 第0章:关于《Go语言101》 4 我觉得最主要的原因是我当时抱着Go是一门非常简单的语言的态度去学习和使用 一些语法和语义设计很简单明了,但也有一些设计略微反直觉,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运行时在 实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程带来了许多 便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏了这些类型的内 部结构,0 码力 | 591 页 | 21.40 MB | 1 年前3
 统一建模语言 UML 参考手册 - 基本概念可以与所有的开发方法 生命阶段 应用领域和媒介一同使 用 它意图统一过去建模技术的经验 将当前软件最佳实践合并至标准的方法 ��� 包括 语义概念 标记符号和指南 具有静态 动态 环境上的和组织性的部分 它可以被具有 代码产生和报表生成的交互式可视建模工具所支持 ��� 规范没有定义标准过程 但可用 于迭代的开发过程 并支持现有的大多数面向对象的开发过程 � ��� 捕捉系统静态结构和动态行为的信息 包括抽象层次的转移 模板参数的绑定 许可的授予和元素对其它元素的使用 其它关系包括用例和流的合并 静态视图显示为类图 静态视图可以用于产生大多数程序中的数据结构声明 ��� 类图中 有许多种元素 如接口 数据类型 用例和信号 它们合在一起被称为分类 它们的举止 如同具有某种限制的类 � 动态行为 动态行为 动态行为 动态行为 有两种方式来建模行为 一种是通过与外界交互的对象的生命史 另一种是使 用一系列对象的通信模式 和交互在顺序图和协作图中表达 指导所有行为视图的是一系列用例 用例展示了活动者 系统的外部使用者所见的一部分系统功能 � 实现构造 实现构造 实现构造 实现构造 ��� 模型对逻辑分析和物理实现均可以表达 一定的构造代表了实现单元 构 件是与一系列接口一致和为其提供实现的物理 可替换的系统组成部分 它可以作为满足 相同说明的其它构件替代品 结点是定义了位置的运行时段的运算资源 它可以容纳构件 和对象0 码力 | 123 页 | 2.61 MB | 1 年前3 统一建模语言 UML 参考手册 - 基本概念可以与所有的开发方法 生命阶段 应用领域和媒介一同使 用 它意图统一过去建模技术的经验 将当前软件最佳实践合并至标准的方法 ��� 包括 语义概念 标记符号和指南 具有静态 动态 环境上的和组织性的部分 它可以被具有 代码产生和报表生成的交互式可视建模工具所支持 ��� 规范没有定义标准过程 但可用 于迭代的开发过程 并支持现有的大多数面向对象的开发过程 � ��� 捕捉系统静态结构和动态行为的信息 包括抽象层次的转移 模板参数的绑定 许可的授予和元素对其它元素的使用 其它关系包括用例和流的合并 静态视图显示为类图 静态视图可以用于产生大多数程序中的数据结构声明 ��� 类图中 有许多种元素 如接口 数据类型 用例和信号 它们合在一起被称为分类 它们的举止 如同具有某种限制的类 � 动态行为 动态行为 动态行为 动态行为 有两种方式来建模行为 一种是通过与外界交互的对象的生命史 另一种是使 用一系列对象的通信模式 和交互在顺序图和协作图中表达 指导所有行为视图的是一系列用例 用例展示了活动者 系统的外部使用者所见的一部分系统功能 � 实现构造 实现构造 实现构造 实现构造 ��� 模型对逻辑分析和物理实现均可以表达 一定的构造代表了实现单元 构 件是与一系列接口一致和为其提供实现的物理 可替换的系统组成部分 它可以作为满足 相同说明的其它构件替代品 结点是定义了位置的运行时段的运算资源 它可以容纳构件 和对象0 码力 | 123 页 | 2.61 MB | 1 年前3
 Go 入门指南(The way to Go)语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 在学习 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发 环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 4、7、8 章), 控制结构(第 5 章),函数(第 6 章),结构与方法(第 10 章)和接口(第 11 章)。我们会对 Go 语 言的函数 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 章)和如何在 Go 语言中巧妙地使用 错误处理机制(第 13 章)。然后我们会对 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发 和多核应用的基本技巧的讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 Web 应用 中的相关网络技巧(第 15 章)。 我们会在本书的第四部分向你展示许多0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 在学习 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发 环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 4、7、8 章), 控制结构(第 5 章),函数(第 6 章),结构与方法(第 10 章)和接口(第 11 章)。我们会对 Go 语 言的函数 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 章)和如何在 Go 语言中巧妙地使用 错误处理机制(第 13 章)。然后我们会对 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发 和多核应用的基本技巧的讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 Web 应用 中的相关网络技巧(第 15 章)。 我们会在本书的第四部分向你展示许多0 码力 | 380 页 | 2.97 MB | 1 年前3
 Nacos架构&原理
Spring-cloud 的崛起,微服务多个模块逐步被划分,包括注册中心、配置中心,如果从 产品定位上,期望定位简单清晰,利于传播,我们需要分别开源我们内部产品,这样又会分散我们 品牌和运营资源。另外大部分客户没有阿里这么大的体量,模块拆分过细,部署和运维成本都会成 倍上涨,而且阿里巴巴也是从最早⼀个产品逐步演化成 3 个产品的,因此我们最终决定将内部三个 产品合并统⼀开源。定位为:⼀个更易于构建 极简原则,简单才好用,简单才稳定,简单才易协作。  架构⼀致性,⼀套架构要能适应开源、内部、商业化(公有云及专有云)3 个场景。  扩展性,以开源为内核,商业化做基础,充分扩展,方便用户扩展。  模块化,将通用部分抽象下沉,提升代码复用和健壮性。  长期主义,不是要⼀个能支撑未来 3 年的架构,而是要能够支撑 10 年的架构。  开放性,设计和讨论保持社区互动和透明,方便大家协作。 架构图 整体架 要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题, 插件解决扩展性问题。 Nacos 架构 < 18 用户层  OpenAPI:暴露标准 Rest 风格 HTTP 接口,简单易用,方便多语言集成。  Console:易用控制台,做服务管理、配置管理等操作。  SDK:多语言 SDK,目前几乎支持所有主流编程语言。  Agent:Sidecar 模式运行,通过标准0 码力 | 326 页 | 12.83 MB | 9 月前3 Nacos架构&原理
Spring-cloud 的崛起,微服务多个模块逐步被划分,包括注册中心、配置中心,如果从 产品定位上,期望定位简单清晰,利于传播,我们需要分别开源我们内部产品,这样又会分散我们 品牌和运营资源。另外大部分客户没有阿里这么大的体量,模块拆分过细,部署和运维成本都会成 倍上涨,而且阿里巴巴也是从最早⼀个产品逐步演化成 3 个产品的,因此我们最终决定将内部三个 产品合并统⼀开源。定位为:⼀个更易于构建 极简原则,简单才好用,简单才稳定,简单才易协作。  架构⼀致性,⼀套架构要能适应开源、内部、商业化(公有云及专有云)3 个场景。  扩展性,以开源为内核,商业化做基础,充分扩展,方便用户扩展。  模块化,将通用部分抽象下沉,提升代码复用和健壮性。  长期主义,不是要⼀个能支撑未来 3 年的架构,而是要能够支撑 10 年的架构。  开放性,设计和讨论保持社区互动和透明,方便大家协作。 架构图 整体架 要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题, 插件解决扩展性问题。 Nacos 架构 < 18 用户层  OpenAPI:暴露标准 Rest 风格 HTTP 接口,简单易用,方便多语言集成。  Console:易用控制台,做服务管理、配置管理等操作。  SDK:多语言 SDK,目前几乎支持所有主流编程语言。  Agent:Sidecar 模式运行,通过标准0 码力 | 326 页 | 12.83 MB | 9 月前3
 美团点评2018技术年货不到预期等问题。 其次,在流程阶段,引入审核机制,通过视觉和内容两方面的审核,保证投放数据的准确性。 最后,在运营配置上线后,如果发现问题,可以通过快速回滚,最大限度地实现“止损”。 接口SDK化 接口SDK化 对于运营数据,无论是通过数据库的落地方案、还是通过分布式缓存的方案,都无法彻底解决服务中心化 和服务抖动的问题。通过接入的SDK化,可以做到数据的本地缓存更新机制,解除对中心化服务的依赖, 数据模型往往与业务相关。业务越复杂,设计需要越简单,这样方能满足复杂业务的各种变化。因为数据 模型太过于抽象,如果直接进行述说会有些乏味,我们可以先从一个具体的业务实例入手。下面是大众点 评App顶部金刚位的截图,对于这部分数据,如何做到运营可配? 首先,我们对运营数据做需求拆解。对于这块数据,每个 “节点”(对应每个位置:如美食,技术上我们 称之为 “节点”),其基本的运营诉求如下: 1. 节点内容信息:标题、图片、跳转链接、排序。 ntent)-树(Tree)模型,简称为N- C-T模型。如下图所示:左边为抽象的数据模型,右边为以上实例的实现。 N-C-T数据模型设计的非常简单,其中C和T部分都是可选择的,这样使得其灵活性比较强,可以应对业 务变化的大部分需求。注意,这里我们只是对业务需求的宏观表现形式进行建模,对于具体Node和 Content里的有哪些字段(标题、副标题、图片、跳转链接),这些都是JSON化的存储格式,可以满足0 码力 | 229 页 | 61.61 MB | 1 年前3 美团点评2018技术年货不到预期等问题。 其次,在流程阶段,引入审核机制,通过视觉和内容两方面的审核,保证投放数据的准确性。 最后,在运营配置上线后,如果发现问题,可以通过快速回滚,最大限度地实现“止损”。 接口SDK化 接口SDK化 对于运营数据,无论是通过数据库的落地方案、还是通过分布式缓存的方案,都无法彻底解决服务中心化 和服务抖动的问题。通过接入的SDK化,可以做到数据的本地缓存更新机制,解除对中心化服务的依赖, 数据模型往往与业务相关。业务越复杂,设计需要越简单,这样方能满足复杂业务的各种变化。因为数据 模型太过于抽象,如果直接进行述说会有些乏味,我们可以先从一个具体的业务实例入手。下面是大众点 评App顶部金刚位的截图,对于这部分数据,如何做到运营可配? 首先,我们对运营数据做需求拆解。对于这块数据,每个 “节点”(对应每个位置:如美食,技术上我们 称之为 “节点”),其基本的运营诉求如下: 1. 节点内容信息:标题、图片、跳转链接、排序。 ntent)-树(Tree)模型,简称为N- C-T模型。如下图所示:左边为抽象的数据模型,右边为以上实例的实现。 N-C-T数据模型设计的非常简单,其中C和T部分都是可选择的,这样使得其灵活性比较强,可以应对业 务变化的大部分需求。注意,这里我们只是对业务需求的宏观表现形式进行建模,对于具体Node和 Content里的有哪些字段(标题、副标题、图片、跳转链接),这些都是JSON化的存储格式,可以满足0 码力 | 229 页 | 61.61 MB | 1 年前3
 Go 入门指南(The way to Go)第11章:接口(interface)与反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 类型断言:如何检测和转换接口变量的类型 11.4 类型判断:type-switch 11.5 测试一个值是否实现了某个接口 11.6 使用方法集与接口 11.7 第一个例子:使用 Sorter 接口排序 11.8 第二个例子:读和写 11.9 空接口 11.10 10 反射包 11.11 Printf 和反射 11.12 接口与动态类型 11.13 总结:Go 中的面向对象 11.14 结构体、集合和高阶函数 第12章:读写数据 12.1 读取用户的输入 12.2 文件读写 12.3 文件拷贝 12.4 从命令行读取参数 12.5 用 buffer 读取文件 - 4 - 本文档使用 书栈(BookStack.CN) 构建 12.6 用切片读写文件 用切片读写文件 12.7 用 defer 关闭文件 12.8 使用接口的实际例子:fmt.Fprintf 12.9 格式化 JSON 数据 12.10 XML 数据格式 12.11 用 Gob 传输数据 12.12 Go 中的密码学 第13章:错误处理与测试 13.1 错误处理 13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)第11章:接口(interface)与反射(reflection) 11.1 接口是什么 11.2 接口嵌套接口 11.3 类型断言:如何检测和转换接口变量的类型 11.4 类型判断:type-switch 11.5 测试一个值是否实现了某个接口 11.6 使用方法集与接口 11.7 第一个例子:使用 Sorter 接口排序 11.8 第二个例子:读和写 11.9 空接口 11.10 10 反射包 11.11 Printf 和反射 11.12 接口与动态类型 11.13 总结:Go 中的面向对象 11.14 结构体、集合和高阶函数 第12章:读写数据 12.1 读取用户的输入 12.2 文件读写 12.3 文件拷贝 12.4 从命令行读取参数 12.5 用 buffer 读取文件 - 4 - 本文档使用 书栈(BookStack.CN) 构建 12.6 用切片读写文件 用切片读写文件 12.7 用 defer 关闭文件 12.8 使用接口的实际例子:fmt.Fprintf 12.9 格式化 JSON 数据 12.10 XML 数据格式 12.11 用 Gob 传输数据 12.12 Go 中的密码学 第13章:错误处理与测试 13.1 错误处理 13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和0 码力 | 466 页 | 4.44 MB | 1 年前3
共 547 条
- 1
- 2
- 3
- 4
- 5
- 6
- 55














 
  
 