 1.3 七牛如何做HTTP服务测试jg35fae526kbce`   json  '{    "a":  "hello1",  "b":  2   }'  http  Response  匹配  ret  1.3 七牛如何做HTTP服务测试jg35fae526kbce`   json  '{    "a":  "hello1",  "b":  2   }'  http  Response  匹配  ret -  header  -  -  -  …  header -  $(resp.code)  匹配(match)  • 这几乎是这套  DSL  中最核心的概念  – match  -  -  • 要求  -  必须和  -  匹配  • -  中不允许出现未绑定的变量  • - 中允许存在未绑定的变量  – 如果  -  中出现了已绑定的变量,则要求该变量必须匹配  -  中对应的值  – 如果  -  中出现了未绑定的变量,则该变量会被赋值为  -  中对应的值  – 匹配  • 对于  number/string/boolean/array  类型  – match 0 码力 | 27 页 | 422.11 KB | 1 年前3
 Go Web编程other code } sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达式不必是常量或整数,执行的过程 从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。 i := 10 switch i { case 1: fmt.Println("i is equal to 1") case 2, 3, 4: fmt Serve时候的第二个参数, 我们前面例子传递的是nil,也就是为空,那么默认获取handler = DefaultServeMux,那么这个变量用来做什么 的呢?对,这个变量就是一个路由器,它用来匹配url跳转到其相应的handle函数,那么这个我们有设置过吗?有,我 们调用的代码里面第一句不是调用了http.HandleFunc("/", sayhelloName)嘛。这个作用就是注册了请求/的 路由规则,一个string对应一个mux实体,这里的string就是注册的路由表达式 } 下面看一下muxEntry type muxEntry struct { explicit bool // 是否精确匹配 h Handler // 这个路由表达式对应哪个handler } 接着看一下Handler的定义 type Handler interface { Serv0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程other code } sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达式不必是常量或整数,执行的过程 从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。 i := 10 switch i { case 1: fmt.Println("i is equal to 1") case 2, 3, 4: fmt Serve时候的第二个参数, 我们前面例子传递的是nil,也就是为空,那么默认获取handler = DefaultServeMux,那么这个变量用来做什么 的呢?对,这个变量就是一个路由器,它用来匹配url跳转到其相应的handle函数,那么这个我们有设置过吗?有,我 们调用的代码里面第一句不是调用了http.HandleFunc("/", sayhelloName)嘛。这个作用就是注册了请求/的 路由规则,一个string对应一个mux实体,这里的string就是注册的路由表达式 } 下面看一下muxEntry type muxEntry struct { explicit bool // 是否精确匹配 h Handler // 这个路由表达式对应哪个handler } 接着看一下Handler的定义 type Handler interface { Serv0 码力 | 295 页 | 5.91 MB | 1 年前3
 2.游戏战中陪伴助手微服务架构设计与应用- 太 bug 了,限制使用 方案探索——聚类统计 模仿大多数玩家的选择 - 实现方法: - 为玩家生成 [0, 1] 特征向量 - 聚类统计,存入 Faiss - 实时 Faiss 匹配召回 - 问题: - 特征过多(600多维),无法分析 - 聚类结果趋同 方案探索——关键帧 / 路径推荐 模仿某一个玩家的选择 - 专利:《一种在实时游戏对局中,模仿历史胜利玩家打法,并对当前玩家进行打法推荐的方案》 并对当前玩家进行打法推荐的方案》 - 发明点:序列截断、偏移算法、帧前进、…… - 思考: - 学习/模仿历史已吃鸡玩家的走位 - 历史玩家的状态,也可作为策略 - 通过特征向量匹配历史玩家 - 策略举例: - 关键帧内容:目标坐标、有资源、有敌人、无开火、无车 - 话术播报:“去小地图标注的地方搜刮,注意避开敌人” 方案探索——关键帧 / 路径推荐 针对具体场景开发 - 优势: 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 方案设计和工程实现 第三部分 方案设计——Token、策略 更加具有通用性的方案 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准0 码力 | 47 页 | 11.10 MB | 1 年前3 2.游戏战中陪伴助手微服务架构设计与应用- 太 bug 了,限制使用 方案探索——聚类统计 模仿大多数玩家的选择 - 实现方法: - 为玩家生成 [0, 1] 特征向量 - 聚类统计,存入 Faiss - 实时 Faiss 匹配召回 - 问题: - 特征过多(600多维),无法分析 - 聚类结果趋同 方案探索——关键帧 / 路径推荐 模仿某一个玩家的选择 - 专利:《一种在实时游戏对局中,模仿历史胜利玩家打法,并对当前玩家进行打法推荐的方案》 并对当前玩家进行打法推荐的方案》 - 发明点:序列截断、偏移算法、帧前进、…… - 思考: - 学习/模仿历史已吃鸡玩家的走位 - 历史玩家的状态,也可作为策略 - 通过特征向量匹配历史玩家 - 策略举例: - 关键帧内容:目标坐标、有资源、有敌人、无开火、无车 - 话术播报:“去小地图标注的地方搜刮,注意避开敌人” 方案探索——关键帧 / 路径推荐 针对具体场景开发 - 优势: 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准 方案设计和工程实现 第三部分 方案设计——Token、策略 更加具有通用性的方案 - 启发: - 抽象:子状态(特征维度) - 子状态组合成状态,同时子状态也可以组合成策略 - 策略选取:特征匹配 - 解决维度爆炸:只取部分子状态 - 统一“状态”的标准0 码力 | 47 页 | 11.10 MB | 1 年前3
 Go 入门指南(The way to Go)文件来实现自定义配置的原因。 2. 可以自动保存代码,至少在每次编译前都会保存。 3. 可以显示代码所在的行数。 4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳 转到某个函数或类型的定义部分。 5. 完美的查找和替换功能,替换之前最好还能预览结果。 6. 可以注释或取消注释选中的一行或多行代码。 7. 当有编译错误时,双击错误提示可以跳转到发生错误的位置。 关键字在同一行。 您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如: case val1, val2, val3 。 每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。 一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使 用 break 语句来表示结束。 因此,程序也不会自动地去执行下一个分支的代码。如果在执行完每个分支的代码后,还希望继续执行后 funcName redeclared in this book, previous declaration at lineno Go 语言不支持这项特性的主要原因是函数重载需要进行多余的类型匹配影响性能;没有重载意味着只是 一个简单的函数调度。所以你需要给不同的函数使用不同的名字,我们通常会根据函数的特征对函数进行 命名(参考 第 11.12.5 节)。 如果需要申明一个在外部定义的0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)文件来实现自定义配置的原因。 2. 可以自动保存代码,至少在每次编译前都会保存。 3. 可以显示代码所在的行数。 4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳 转到某个函数或类型的定义部分。 5. 完美的查找和替换功能,替换之前最好还能预览结果。 6. 可以注释或取消注释选中的一行或多行代码。 7. 当有编译错误时,双击错误提示可以跳转到发生错误的位置。 关键字在同一行。 您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如: case val1, val2, val3 。 每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。 一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使 用 break 语句来表示结束。 因此,程序也不会自动地去执行下一个分支的代码。如果在执行完每个分支的代码后,还希望继续执行后 funcName redeclared in this book, previous declaration at lineno Go 语言不支持这项特性的主要原因是函数重载需要进行多余的类型匹配影响性能;没有重载意味着只是 一个简单的函数调度。所以你需要给不同的函数使用不同的名字,我们通常会根据函数的特征对函数进行 命名(参考 第 11.12.5 节)。 如果需要申明一个在外部定义的0 码力 | 380 页 | 2.97 MB | 1 年前3
 Go 入门指南(The way to Go)文件来实现自定义配置的原因。 2. 可以自动保存代码,至少在每次编译前都会保存。 3. 可以显示代码所在的行数。 4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳转到某个函 数或类型的定义部分。 5. 完美的查找和替换功能,替换之前最好还能预览结果。 6. 可以注释或取消注释选中的一行或多行代码。 7. 当有编译错误时,双击错误提示可以跳转到发生错误的位置。 case val1, val2, val3 。 每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。( Go 语言使用快速的查找算法来测试 switch 条件与 case 分支的匹配情况,直到算法匹配到某个 case 或者进入 default 条件为止。) 一旦成功地匹配到某个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用 break 1. funcName redeclared in this book, previous declaration at lineno Go 语言不支持这项特性的主要原因是函数重载需要进行多余的类型匹配影响性能;没有重载意味着只是一个简单的函 数调度。所以你需要给不同的函数使用不同的名字,我们通常会根据函数的特征对函数进行命名(参考 第 11.12.5 节)。 如果需要申明一个在外部定义的函0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)文件来实现自定义配置的原因。 2. 可以自动保存代码,至少在每次编译前都会保存。 3. 可以显示代码所在的行数。 4. 拥有较好的项目文件纵览和导航能力,可以同时编辑多个源文件并设置书签,能够匹配括号,能够跳转到某个函 数或类型的定义部分。 5. 完美的查找和替换功能,替换之前最好还能预览结果。 6. 可以注释或取消注释选中的一行或多行代码。 7. 当有编译错误时,双击错误提示可以跳转到发生错误的位置。 case val1, val2, val3 。 每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。( Go 语言使用快速的查找算法来测试 switch 条件与 case 分支的匹配情况,直到算法匹配到某个 case 或者进入 default 条件为止。) 一旦成功地匹配到某个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用 break 1. funcName redeclared in this book, previous declaration at lineno Go 语言不支持这项特性的主要原因是函数重载需要进行多余的类型匹配影响性能;没有重载意味着只是一个简单的函 数调度。所以你需要给不同的函数使用不同的名字,我们通常会根据函数的特征对函数进行命名(参考 第 11.12.5 节)。 如果需要申明一个在外部定义的函0 码力 | 466 页 | 4.44 MB | 1 年前3
 2.2.2 深入理解BFEBFE转发的主要概念 BFE的转发过程 BFE的路由转发 默认集群 基础转发表 Demo-E 匹配条件 目标集群 www.a.com/a/* Demo-A www.a.com/a/b Demo-B *.a.com/ Demo-C www.c.com ADVANCED_MODE 高级转发表 匹配条件 目标集群 req_host_in(“www.c.com”) && req_cooki0 码力 | 26 页 | 1.78 MB | 1 年前3 2.2.2 深入理解BFEBFE转发的主要概念 BFE的转发过程 BFE的路由转发 默认集群 基础转发表 Demo-E 匹配条件 目标集群 www.a.com/a/* Demo-A www.a.com/a/b Demo-B *.a.com/ Demo-C www.c.com ADVANCED_MODE 高级转发表 匹配条件 目标集群 req_host_in(“www.c.com”) && req_cooki0 码力 | 26 页 | 1.78 MB | 1 年前3
 2.2.1 深入Go Modulerequirement graph go mod init [module] 初始化一个module,创建go.mod go mod tidy [-e] [-v] 修改go.mod和go.sum以匹配实际依赖 go mod vendor [-e] [-v] 增加build&test依赖到vendor文件夹下 go mod verify 校验本地缓存的文件自下载后未曾被修改 go mod why list 使用 Go Module 第三部分 go-proxy & private modules • GOPROXY: proxy列表 • GOPRIVATE: 私有module列表,前缀模糊匹配 • GONOPROXY: 不需要proxy代理的module列表 • GONOSUMDB: 不需要使用公共checksum库(sum.golang.org)检查的module列表 • GOINSECURE:0 码力 | 46 页 | 3.85 MB | 1 年前3 2.2.1 深入Go Modulerequirement graph go mod init [module] 初始化一个module,创建go.mod go mod tidy [-e] [-v] 修改go.mod和go.sum以匹配实际依赖 go mod vendor [-e] [-v] 增加build&test依赖到vendor文件夹下 go mod verify 校验本地缓存的文件自下载后未曾被修改 go mod why list 使用 Go Module 第三部分 go-proxy & private modules • GOPROXY: proxy列表 • GOPRIVATE: 私有module列表,前缀模糊匹配 • GONOPROXY: 不需要proxy代理的module列表 • GONOSUMDB: 不需要使用公共checksum库(sum.golang.org)检查的module列表 • GOINSECURE:0 码力 | 46 页 | 3.85 MB | 1 年前3
 Go基础语法宝典的类型必须一致。Go的 switch 非常灵活,表达式不必是常量或整 数,执行的过程从上至下,直到找到匹配项;而如果 switch 没有表达式,它会匹配 true 。 在第5行中,把很多值聚合在了一个 case 里面,同时,Go里面 switch 默认相当于每个 case 最后带有 break ,匹配成功后不会自动向下执行其他case,而是跳出整个 switch , 但是可以使用 fallthrough0 码力 | 47 页 | 1020.34 KB | 1 年前3 Go基础语法宝典的类型必须一致。Go的 switch 非常灵活,表达式不必是常量或整 数,执行的过程从上至下,直到找到匹配项;而如果 switch 没有表达式,它会匹配 true 。 在第5行中,把很多值聚合在了一个 case 里面,同时,Go里面 switch 默认相当于每个 case 最后带有 break ,匹配成功后不会自动向下执行其他case,而是跳出整个 switch , 但是可以使用 fallthrough0 码力 | 47 页 | 1020.34 KB | 1 年前3
 03. Golang 在隐私计算平台建设中的实践 - 刘敬混淆电路路 可信执⾏行行环境 专 ⽤用 算 法 通 ⽤用 框 架 加解密 伪随机函数 ⽀支 撑 技 术 哈希 秘密分享 秘钥交换 不不经意传输 差分隐私 OPRF协议 ⿊黑名单匹配 ⾦金金融反欺诈 联合征信 应 ⽤用 同态加密 算法体系 隐私计算算法体系 03 构建隐私计算算 法框架的实践 趣链科技版权所有©2016 – 2021 13 隐私集合求交算法示例例 2 Context中包含本次隐私计算任务的详细信息 趣链科技版权所有©2016 – 2021 18 隐私计算算法框架 协商算法 实例例版本 检查参与⽅方 任务状态 校验多⽅方输⼊入 格式是否匹配 参与⽅方掉线 检测 算 法 管 理理 异 常 处 理理 算 法 实 例例 ADD CMP PIR PSI 优点 01.算法流程基于数据驱动异步执⾏行行 异步执⾏行行并⾏行行化,提⾼高算法性能0 码力 | 37 页 | 6.20 MB | 1 年前3 03. Golang 在隐私计算平台建设中的实践 - 刘敬混淆电路路 可信执⾏行行环境 专 ⽤用 算 法 通 ⽤用 框 架 加解密 伪随机函数 ⽀支 撑 技 术 哈希 秘密分享 秘钥交换 不不经意传输 差分隐私 OPRF协议 ⿊黑名单匹配 ⾦金金融反欺诈 联合征信 应 ⽤用 同态加密 算法体系 隐私计算算法体系 03 构建隐私计算算 法框架的实践 趣链科技版权所有©2016 – 2021 13 隐私集合求交算法示例例 2 Context中包含本次隐私计算任务的详细信息 趣链科技版权所有©2016 – 2021 18 隐私计算算法框架 协商算法 实例例版本 检查参与⽅方 任务状态 校验多⽅方输⼊入 格式是否匹配 参与⽅方掉线 检测 算 法 管 理理 异 常 处 理理 算 法 实 例例 ADD CMP PIR PSI 优点 01.算法流程基于数据驱动异步执⾏行行 异步执⾏行行并⾏行行化,提⾼高算法性能0 码力 | 37 页 | 6.20 MB | 1 年前3
 Golang 入门笔记介绍:开发过程中,我们经常需要将基本数据类型转换为 string , 或者讲 string 转换为基本数据类型 基本语法 1. fmt.Sprintf("%参数",表达式), 需要参数和表达式的类型匹配 2. strconv .. 返回转换后的字符串 测试案例 fmt.Sprintf strconv 函数 string 类型转换为基本类型 1. 使用 strconv 包的函数 转换函数如下 100 var ptr *int = a // 错误,正确方式 &a } func main() { var a int = 100 var ptr *float32 = &a // 错误,类型不匹配 } fun main { var a int = 300 // var b int = 400 // var ptr *int = *a //ok *ptr = 100 // a = 100 ptr0 码力 | 2 页 | 511.29 KB | 1 年前3 Golang 入门笔记介绍:开发过程中,我们经常需要将基本数据类型转换为 string , 或者讲 string 转换为基本数据类型 基本语法 1. fmt.Sprintf("%参数",表达式), 需要参数和表达式的类型匹配 2. strconv .. 返回转换后的字符串 测试案例 fmt.Sprintf strconv 函数 string 类型转换为基本类型 1. 使用 strconv 包的函数 转换函数如下 100 var ptr *int = a // 错误,正确方式 &a } func main() { var a int = 100 var ptr *float32 = &a // 错误,类型不匹配 } fun main { var a int = 300 // var b int = 400 // var ptr *int = *a //ok *ptr = 100 // a = 100 ptr0 码力 | 2 页 | 511.29 KB | 1 年前3
共 21 条
- 1
- 2
- 3














