 Go 1.18 中的泛型Go 1.18 中的泛型 欧长坤 changkun.de/s/generics118 2022/03/30 1 语法和使用 2 什么时候需要泛型? 3 当使用接口作为函数的形参类型时,函数调用方传递的实际参数可以是完全不同的 类型: type T interface { Add(T) T } func Sum(elems ...T) (sum T) { // T 可以是任何实现 (sum S) { // S 的底层类型必须底层类型为 int 约束的类型 for i := range elems { sum += elems[i] } return } 使用泛型的根本目的是: 类型安全的参数传递,以及对实现的类型进行抽象 具有类型参数 (Type Parameter) 的签名 4 func F[T C](v T) (T, error) 普通参数列表 返回值列表 interface contains type constraints func bar(T Ib[int]) {} // OK 为什么第二个 bar 不会报错? 13 抽象能力 泛型没有任何运行时的机制,所以关于泛型的组件只发生在编译时期 对于下面的接口而言,无法作为普通参数使用: func Foo[T any]() {} x := Foo // ERROR: cannot use0 码力 | 45 页 | 501.50 KB | 1 年前3 Go 1.18 中的泛型Go 1.18 中的泛型 欧长坤 changkun.de/s/generics118 2022/03/30 1 语法和使用 2 什么时候需要泛型? 3 当使用接口作为函数的形参类型时,函数调用方传递的实际参数可以是完全不同的 类型: type T interface { Add(T) T } func Sum(elems ...T) (sum T) { // T 可以是任何实现 (sum S) { // S 的底层类型必须底层类型为 int 约束的类型 for i := range elems { sum += elems[i] } return } 使用泛型的根本目的是: 类型安全的参数传递,以及对实现的类型进行抽象 具有类型参数 (Type Parameter) 的签名 4 func F[T C](v T) (T, error) 普通参数列表 返回值列表 interface contains type constraints func bar(T Ib[int]) {} // OK 为什么第二个 bar 不会报错? 13 抽象能力 泛型没有任何运行时的机制,所以关于泛型的组件只发生在编译时期 对于下面的接口而言,无法作为普通参数使用: func Foo[T any]() {} x := Foo // ERROR: cannot use0 码力 | 45 页 | 501.50 KB | 1 年前3
 JAVA 应用与开发 - 泛型应用与开发 泛 型 让我们愉快的 Coding 起来吧... ��� �������������� October 5, 2018 ���� 理��型的��,������� ▶ �合���的�型 ▶ �型的����� ������型类��型�法 ▶ 理�类型参数 ▶ 理�����������的�型类��型�法 ▶ 受��的类型参数 ��处理�型类型,����������型�器����作 作 1 19 �� 1 �型�� 2 �型类��型�法 3 处理�型类型 2 19 �型�� ���泛型 �型�Generics� �型��� JDK 5.0 ����,��������������� 型���� 作为��� Java 类型体�的��,���型���� Java ��� �的类型������������ 3 19 ���泛型 O 集合框架中的数据造型问题 � ��合�取�的元素��������型�为���的类型� 无泛型机制的集合容器 1 Vector v = new Vector(); 2 v.addElement(new Person("Tom", 18)); 3 Person p = (Person) v.elementAt(0); 4 p.showInfo(); 4 19 ���泛型 O 集合框架中的数据造型问题 ��0 码力 | 35 页 | 587.40 KB | 1 年前3 JAVA 应用与开发 - 泛型应用与开发 泛 型 让我们愉快的 Coding 起来吧... ��� �������������� October 5, 2018 ���� 理��型的��,������� ▶ �合���的�型 ▶ �型的����� ������型类��型�法 ▶ 理�类型参数 ▶ 理�����������的�型类��型�法 ▶ 受��的类型参数 ��处理�型类型,����������型�器����作 作 1 19 �� 1 �型�� 2 �型类��型�法 3 处理�型类型 2 19 �型�� ���泛型 �型�Generics� �型��� JDK 5.0 ����,��������������� 型���� 作为��� Java 类型体�的��,���型���� Java ��� �的类型������������ 3 19 ���泛型 O 集合框架中的数据造型问题 � ��合�取�的元素��������型�为���的类型� 无泛型机制的集合容器 1 Vector v = new Vector(); 2 v.addElement(new Person("Tom", 18)); 3 Person p = (Person) v.elementAt(0); 4 p.showInfo(); 4 19 ���泛型 O 集合框架中的数据造型问题 ��0 码力 | 35 页 | 587.40 KB | 1 年前3
 联想-贺钢架构工作在国际化项目中的应用实例架构工作在国际化项目中 的应用实例 贺钢 2016-12-17 个人简介 • 深信服科技 • 腾讯 • 联想深圳中国开发实验室 前言 • 国际化项目的一些不同点导致架构工作的一些不同 • 应用实例体现这些不同点 广告 • 联想电脑管家(PC): guanjia.lenovo.com.cn 国际化项目的一些不同点 • 目标客户不同: 文化习俗, 客户需求, 用户体验… 安全性和隐私… • 地域不同: 服务器的部署, 用户的访问, 组织架构, 团队沟通… 项目实例 -- XA项目背景及需求 • 多设备协作 PC, Mobile, Pad, Cloud… • 跨设备及云智能搜索 • 语音等多种输入方式 用例示意图 用户输入支持举例 3D Camera 项目实例 -- 项目开发团队 项目 备注 项目名称 XA 支持国家 160 多语言支持 27种语言 端到端的安全设计IV 端到端的安全设计 • 只Admin可以写(避免提升权限) • 验证配置文件(如xml)的签名 • 专业工具扫描 总结 • 国际化项目的特点导致架构工作的不同 • 一些应用实例 一句话分享 • 不要用战术上的勤奋来弥补战略上的懒惰0 码力 | 53 页 | 2.36 MB | 1 年前3 联想-贺钢架构工作在国际化项目中的应用实例架构工作在国际化项目中 的应用实例 贺钢 2016-12-17 个人简介 • 深信服科技 • 腾讯 • 联想深圳中国开发实验室 前言 • 国际化项目的一些不同点导致架构工作的一些不同 • 应用实例体现这些不同点 广告 • 联想电脑管家(PC): guanjia.lenovo.com.cn 国际化项目的一些不同点 • 目标客户不同: 文化习俗, 客户需求, 用户体验… 安全性和隐私… • 地域不同: 服务器的部署, 用户的访问, 组织架构, 团队沟通… 项目实例 -- XA项目背景及需求 • 多设备协作 PC, Mobile, Pad, Cloud… • 跨设备及云智能搜索 • 语音等多种输入方式 用例示意图 用户输入支持举例 3D Camera 项目实例 -- 项目开发团队 项目 备注 项目名称 XA 支持国家 160 多语言支持 27种语言 端到端的安全设计IV 端到端的安全设计 • 只Admin可以写(避免提升权限) • 验证配置文件(如xml)的签名 • 专业工具扫描 总结 • 国际化项目的特点导致架构工作的不同 • 一些应用实例 一句话分享 • 不要用战术上的勤奋来弥补战略上的懒惰0 码力 | 53 页 | 2.36 MB | 1 年前3
 分布式 KV 存储系统 Cellar 演进之路分布式KV存储Cellar演进之路 美团点评·基础架构 齐泽斌 美团点评基础架构部,存储研发团队负责人 • Cellar:分布式KV存储服务 • Databus:数据库变更实时传输服务 • Venus:图片服务 11年毕业于天津大学 11 年到 14 年任职于百度,负责分布式文件系统和 KV 存储系统研发 有多年分布式存储研发经验 个人简介 • Cellar起源 • 中心节点架构演进 • 美团引入阿里Tair作为NoSQL存储 • 14年底 大范围应用,并对Tair修修补补,积累领域问题 • 16年初 基于开源版本研发新一代KV存储系统Cellar • Now Cellar日请求量达万亿级,美团点评最大NoSQL存储 Cellar起源 Cellar起源—Tair架构 路由表 Cellar起源—Tair架构 HASH Key 桶号 存储节点 固定HASH算 法 法 固定数目 数据分片 桶->存储节点 对照表 Cellar起源—Tair架构 服务层 请求 mdb 响应 ldb fdb rdb 引擎层 迁移 复制 • 中心化集群问题 • 可用性问题 • 性能问题 • 运维问题 Cellar起源—Tair问题 Cellar起源 架构升级 性能优化 可用性优 化 可运维性 Cellar 开源 Tair • Cellar起源0 码力 | 34 页 | 1.66 MB | 1 年前3 分布式 KV 存储系统 Cellar 演进之路分布式KV存储Cellar演进之路 美团点评·基础架构 齐泽斌 美团点评基础架构部,存储研发团队负责人 • Cellar:分布式KV存储服务 • Databus:数据库变更实时传输服务 • Venus:图片服务 11年毕业于天津大学 11 年到 14 年任职于百度,负责分布式文件系统和 KV 存储系统研发 有多年分布式存储研发经验 个人简介 • Cellar起源 • 中心节点架构演进 • 美团引入阿里Tair作为NoSQL存储 • 14年底 大范围应用,并对Tair修修补补,积累领域问题 • 16年初 基于开源版本研发新一代KV存储系统Cellar • Now Cellar日请求量达万亿级,美团点评最大NoSQL存储 Cellar起源 Cellar起源—Tair架构 路由表 Cellar起源—Tair架构 HASH Key 桶号 存储节点 固定HASH算 法 法 固定数目 数据分片 桶->存储节点 对照表 Cellar起源—Tair架构 服务层 请求 mdb 响应 ldb fdb rdb 引擎层 迁移 复制 • 中心化集群问题 • 可用性问题 • 性能问题 • 运维问题 Cellar起源—Tair问题 Cellar起源 架构升级 性能优化 可用性优 化 可运维性 Cellar 开源 Tair • Cellar起源0 码力 | 34 页 | 1.66 MB | 1 年前3
 高可用分布式流数据存储设计-李玥⾼高可⽤用分布式流数据存储设计 李玥 京东集团 技术架构部 架构师 ⾃自我介绍 ⾃自我介绍 李李玥 京东集团 技术架构部 架构师 负责主导设计新⼀一代京东消息中间件系统,专注于流数据的⼀一致性分发和可靠存储、分布式实时计算和⾼高可⽤用分 布式系统架构等技术领域。 从事互联⽹网研发、架构10余年年,曾在浪潮集团、当当⽹网等公司从事架构相关⼯工作。2017年年加⼊入京东,期间提升京 如何定位?如何融入生态系统? How 如何实现?如何优化? WHY 为什什么需要流数据存储? 单体应⽤用 烟筒式 SOA 微服务 那些年年的服务 MySQL ES HDFS KV HBase Hive 这些年年的数据 Services Data MySQL ES HDFS KV HBase Hive 统⼀一的流数据存储平台 我们的愿景 Services Streaming Storage Storage Data 有序 Append only:尾部写入,不变 顺序读取 分布式 高性能 可靠性 顺序一致性 (近乎)无限容量 我们需要什什么样的存储? WHAT Pub/Sub Powered by United Stream Store Streaming Connector Distributed Application Coordinating Service0 码力 | 36 页 | 6.02 MB | 1 年前3 高可用分布式流数据存储设计-李玥⾼高可⽤用分布式流数据存储设计 李玥 京东集团 技术架构部 架构师 ⾃自我介绍 ⾃自我介绍 李李玥 京东集团 技术架构部 架构师 负责主导设计新⼀一代京东消息中间件系统,专注于流数据的⼀一致性分发和可靠存储、分布式实时计算和⾼高可⽤用分 布式系统架构等技术领域。 从事互联⽹网研发、架构10余年年,曾在浪潮集团、当当⽹网等公司从事架构相关⼯工作。2017年年加⼊入京东,期间提升京 如何定位?如何融入生态系统? How 如何实现?如何优化? WHY 为什什么需要流数据存储? 单体应⽤用 烟筒式 SOA 微服务 那些年年的服务 MySQL ES HDFS KV HBase Hive 这些年年的数据 Services Data MySQL ES HDFS KV HBase Hive 统⼀一的流数据存储平台 我们的愿景 Services Streaming Storage Storage Data 有序 Append only:尾部写入,不变 顺序读取 分布式 高性能 可靠性 顺序一致性 (近乎)无限容量 我们需要什什么样的存储? WHAT Pub/Sub Powered by United Stream Store Streaming Connector Distributed Application Coordinating Service0 码力 | 36 页 | 6.02 MB | 1 年前3
 康彬-基于微服务的混合云和同城双活实践微服务体系下的混合云&同城双活 实践探索 康彬(robinkang) 乐信/架构总监 康彬(robinkang) 乐信/架构总监 14年研发及管理经验,从0到1组建了乐信架构团队, 主导并推动了乐信集团业务系统从单体应用架构向微服 务架构的演变、从 php 技术栈向 java 技术栈的无缝转 型,从私有云向混合云的进化,及新一代的同城双活技 术架构的研发与落地工作 信用成长成就品质生活 信用成长成就品质生活 • 大促的痛及混合云实践 • 单元化&双活的应用场景 • 同城双活的探索之路 • 未来的规划 大促的痛及混合云实践 业务服务层 资源层 分期乐 前端业务服务 桔子理财 鼎盛资管 …… mq管理系统 job管理系统 中台服务层 核心交易平台 风控审核平台 计算资源 (CPU) 存储资源 (内存|磁盘) 网络资源 (ip|端口|带宽) 中间件层 微服务框架 发布系统 服务注册 中心 服务治理 系统 api-gateway 获客 授信 下单 还款 大促的痛 机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大 混合云需求分析 机器资源按需 申请 01 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰0 码力 | 47 页 | 6.09 MB | 1 年前3 康彬-基于微服务的混合云和同城双活实践微服务体系下的混合云&同城双活 实践探索 康彬(robinkang) 乐信/架构总监 康彬(robinkang) 乐信/架构总监 14年研发及管理经验,从0到1组建了乐信架构团队, 主导并推动了乐信集团业务系统从单体应用架构向微服 务架构的演变、从 php 技术栈向 java 技术栈的无缝转 型,从私有云向混合云的进化,及新一代的同城双活技 术架构的研发与落地工作 信用成长成就品质生活 信用成长成就品质生活 • 大促的痛及混合云实践 • 单元化&双活的应用场景 • 同城双活的探索之路 • 未来的规划 大促的痛及混合云实践 业务服务层 资源层 分期乐 前端业务服务 桔子理财 鼎盛资管 …… mq管理系统 job管理系统 中台服务层 核心交易平台 风控审核平台 计算资源 (CPU) 存储资源 (内存|磁盘) 网络资源 (ip|端口|带宽) 中间件层 微服务框架 发布系统 服务注册 中心 服务治理 系统 api-gateway 获客 授信 下单 还款 大促的痛 机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大 混合云需求分析 机器资源按需 申请 01 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰0 码力 | 47 页 | 6.09 MB | 1 年前3
 Service Mesh微服务化和传统框架微服务化混合部署协同实践分享0 码力 | 11 页 | 11.76 MB | 1 年前3 Service Mesh微服务化和传统框架微服务化混合部署协同实践分享0 码力 | 11 页 | 11.76 MB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) Out) 4 堆栈 我们定义以下操作,以存储整数的堆栈 IntStack 为例 1. empty: () -> IntStack // 创建新的堆栈 2. push : (Int, IntStack) -> IntStack // 将新的元素加⼊栈顶 3. pop: IntStack -> (Option[Int], IntStack) // 从堆栈取出元素 5 整数堆栈 我们实现整数堆栈的定义 10. NonEmpty(top, rest) => (Some(top), rest) 11. } 12. } 事实上,⽉兔中的列表就是⼀个堆栈 6 字符串堆栈 除了存储整数,我们也会希望存储字符串 1. enum StringStack { 2. Empty 3. NonEmpty(String, StringStack) 4. } 5. fn StringStack::empty()0 码力 | 27 页 | 2.56 MB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) Out) 4 堆栈 我们定义以下操作,以存储整数的堆栈 IntStack 为例 1. empty: () -> IntStack // 创建新的堆栈 2. push : (Int, IntStack) -> IntStack // 将新的元素加⼊栈顶 3. pop: IntStack -> (Option[Int], IntStack) // 从堆栈取出元素 5 整数堆栈 我们实现整数堆栈的定义 10. NonEmpty(top, rest) => (Some(top), rest) 11. } 12. } 事实上,⽉兔中的列表就是⼀个堆栈 6 字符串堆栈 除了存储整数,我们也会希望存储字符串 1. enum StringStack { 2. Empty 3. NonEmpty(String, StringStack) 4. } 5. fn StringStack::empty()0 码力 | 27 页 | 2.56 MB | 1 年前3
 2022年美团技术年货 合辑Style 结构是一种在训练时具有多分支拓扑,而在实际部署时可以等效融 合为单个 3x3 卷积的一种可重参数化的结构(融合过程如下图 3 所示)。通过融合成 的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可 获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的 帮助。 算法 < 5 实验表明,通过上述策略,YOLOv6 的融合策略,导致了很多算子无法融合,从而影响了最终量化引擎 的性能。在这一节中,我们以 YOLOv6s_repopt 为例,展示一种定位具体瓶颈的图 优化方法。在量化实践中,图优化是一个很实用的手段,我们可以依法炮制,提升模 型的 QPS。 算法 < 27 表 5 PTQ 和 QAT 模型的 QPS 对比 3.1.1 性能分析 首先,我们利用 nsys 工具 [5] 对 QAT INT8 的模型和 PTQ INT8 模型进行了性能分 PTQ 的 556,而且 mAP 依然保持优化前的 42.1%。 表 8 图优化后 QPS 对比 3.2 线上服务优化 我们在 NVIDIA T4 服务器上进行了端到端的吞吐测试,利用“多实例”并发处理的 技术,YOLOv6s_repopt INT8 QPS 达到了 552,相较 FP16 提升了~ 40%。我 们对服务器的各项指标进行了监测,发现此时 T4 GPU 的利用率只有 95%,还有压0 码力 | 1356 页 | 45.90 MB | 1 年前3 2022年美团技术年货 合辑Style 结构是一种在训练时具有多分支拓扑,而在实际部署时可以等效融 合为单个 3x3 卷积的一种可重参数化的结构(融合过程如下图 3 所示)。通过融合成 的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可 获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的 帮助。 算法 < 5 实验表明,通过上述策略,YOLOv6 的融合策略,导致了很多算子无法融合,从而影响了最终量化引擎 的性能。在这一节中,我们以 YOLOv6s_repopt 为例,展示一种定位具体瓶颈的图 优化方法。在量化实践中,图优化是一个很实用的手段,我们可以依法炮制,提升模 型的 QPS。 算法 < 27 表 5 PTQ 和 QAT 模型的 QPS 对比 3.1.1 性能分析 首先,我们利用 nsys 工具 [5] 对 QAT INT8 的模型和 PTQ INT8 模型进行了性能分 PTQ 的 556,而且 mAP 依然保持优化前的 42.1%。 表 8 图优化后 QPS 对比 3.2 线上服务优化 我们在 NVIDIA T4 服务器上进行了端到端的吞吐测试,利用“多实例”并发处理的 技术,YOLOv6s_repopt INT8 QPS 达到了 552,相较 FP16 提升了~ 40%。我 们对服务器的各项指标进行了监测,发现此时 T4 GPU 的利用率只有 95%,还有压0 码力 | 1356 页 | 45.90 MB | 1 年前3
 Go 入门指南(The way to Go)语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口 (interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级 之说。因此可以说这是一门混合型的语言。 在传统的面向对象语言中,使用面向对象编程技术显得非常的臃肿,它们总是通过复杂的模式来构建庞大 的类型层级,这违背了编程语言应该提升生产力的宗旨。 函数是 Go 语言中的基本构件,它们 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就 连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! 1.2.6 语言的用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并 行的支持,这对于游戏服务端的开发而言是再好不过了。 如果你想知道一些其它组织使用Go语言开发的实际应用项目,你可以到 使用 Go 的组织 页面进行查看。 出于隐私保护的考虑,许多公司的项目都没有展示在这个页面。我们将会在第 21 章讨论到一个使用 Go 语言开发的大型存储区域网络(SAN)案例。 在 Chrome 浏览器中内置了一款 Go 语言的编译器用于本地客户端(NaCl),这很可能会被用于在 Go入门指南 - 10 - 本文档使用 看云 构建 Chrome0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口 (interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级 之说。因此可以说这是一门混合型的语言。 在传统的面向对象语言中,使用面向对象编程技术显得非常的臃肿,它们总是通过复杂的模式来构建庞大 的类型层级,这违背了编程语言应该提升生产力的宗旨。 函数是 Go 语言中的基本构件,它们 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就 连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! 1.2.6 语言的用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并 行的支持,这对于游戏服务端的开发而言是再好不过了。 如果你想知道一些其它组织使用Go语言开发的实际应用项目,你可以到 使用 Go 的组织 页面进行查看。 出于隐私保护的考虑,许多公司的项目都没有展示在这个页面。我们将会在第 21 章讨论到一个使用 Go 语言开发的大型存储区域网络(SAN)案例。 在 Chrome 浏览器中内置了一款 Go 语言的编译器用于本地客户端(NaCl),这很可能会被用于在 Go入门指南 - 10 - 本文档使用 看云 构建 Chrome0 码力 | 380 页 | 2.97 MB | 1 年前3
共 554 条
- 1
- 2
- 3
- 4
- 5
- 6
- 56














 
  
 