Go持续集成
每次集成会经过自动构建(包括自动测试) 的 检验,以尽快发现集成错误。 — Martin Fowler 简单 激情 速度快 聚焦 极致 可信赖 持续集成的好处 1. 快速发现修复错误 2. 降低风险 3. 持续发布 4. 减少代码审核时间 5. 减少对个体依赖 简单 激情 速度快 聚焦 极致 可信赖 石器时代 简单 激情 速度快 聚焦 极致 可信赖 分享惨案经历 1. 无单元测试,手工集成测试0 码力 | 39 页 | 10.74 MB | 1 年前32.2.2 深入理解BFE
HAProxy,Nginx,Envoy,Traefik, BFE,… BFE为什么基于Go语言 • 研发效率 • 远高于C语言 • 稳定性 • 内存方面错误降低 • 可以捕捉异常 • 安全性 • 缓存区溢出风险降低 • 代码可维护性 • 可读性好 • 易于编写高并发逻辑 • 网络协议栈支持 BFE的短板 • 没有在内存拷贝上做极致优化 • 使用Go系统协议栈 • 无法利用CPU亲和性(CPU Affinity)0 码力 | 26 页 | 1.78 MB | 1 年前3GoFrame框架介绍及设计
路由注册具体业务领域对象的方法 对象封装设计-对象封装示例3 model数据结构命名 service调用dao对象示例 对象封装设计-对象访问安全 各分层中的封装对象都是以“可变变量”的形式对外暴露使用,存在被修改的安全风险。 DAO封装设计 第六部分 DAO封装设计-痛点举例 1. 必须定义tag关联表结构与struct属性 2. 不支持通过返回对象指定需要查询的字段 3. 无法对输入对象属性名称进行自动字段过滤0 码力 | 37 页 | 8.84 MB | 1 年前3Go Web编程
ionID的时间。通过判断每次请求是否过期(这里设置了60秒) 定期生成新的ID,这样使得攻击者获取有效sessionID的机会大大降低。 上面两个手段的组合可以在实践中消除session劫持的风险,一方面, 由于sessionID频繁改变,使攻击者难有机会 获取有效的sessionID;另一方面,因为sessionID只能在cookie中传递,然后设置了httponly,所以基于URL攻击的 信息,一旦他们拿到了,数据库就存在泄露的危险。如果你在用开放源代码的软件包来访问数据库,比如论坛程序, 攻击者就很容易得到相关的代码。如果这些代码设计不良的话,风险就更大了。目前Discuz、phpwind、phpcms等这 209 攻击者就很容易得到相关的代码。如果这些代码设计不良的话,风险就更大了。目前Discuz、phpwind、phpcms等这 些流行的开源程序都有被SQL注入攻击的先例。 这些攻击总是发生在0 码力 | 295 页 | 5.91 MB | 1 年前3Hello 算法 1.0.0b4 Golang版
用数组或链表实现,那么通常比哈希表更快。这是因为哈希函数计算需要开销,时间复杂度的 常数项更大。 最后,哈希表的时间复杂度可能发生劣化。例如在链式地址中,我们采取在链表或红黑树中执 行查找操作,仍然有退化至 ?(?) 时间的风险。 � 多次哈希有不能直接删除元素的缺陷吗?对于标记已删除的空间,这个空间还能再次使用吗? 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。 被标记为已删除的 适合对查询性能要求很高的场景,平均时间复杂度为 ?(1) 。 ‧ 不适合需要有序数据或范围查找的场景,因为哈希表无法维护数据的有序性。 ‧ 对哈希函数和哈希冲突处理策略的依赖性较高,具有较大的性能劣化风险。 ‧ 不适合数据量过大的情况,因为哈希表需要额外空间来最大程度地减少冲突,从而提供良好的查询性 能。 树查找 ‧ 适用于海量数据,因为树节点在内存中是离散存储的。 ‧ 适合需要维护有序数据或范围查找的场景。0 码力 | 347 页 | 27.40 MB | 1 年前3Hello 算法 1.1.0 Go版
现,那么通常比哈希表更快。这是因为哈希函数计算需要开销,时间复杂度的常数项更大。 最后,哈希表的时间复杂度可能发生劣化。例如在链式地址中,我们采取在链表或红黑树中执行查找操作, 仍然有退化至 ?(?) 时间的风险。 Q:多次哈希有不能直接删除元素的缺陷吗?标记为已删除的空间还能再次使用吗? 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使 适合对查询性能要求很高的场景,平均时间复杂度为 ?(1) 。 ‧ 不适合需要有序数据或范围查找的场景,因为哈希表无法维护数据的有序性。 ‧ 对哈希函数和哈希冲突处理策略的依赖性较高,具有较大的性能劣化风险。 ‧ 不适合数据量过大的情况,因为哈希表需要额外空间来最大程度地减少冲突,从而提供良好的查询性 能。 树查找 ‧ 适用于海量数据,因为树节点在内存中是分散存储的。 ‧ 适合需要维护有序数据或范围查找的场景。0 码力 | 383 页 | 18.48 MB | 1 年前3Hello 算法 1.0.0 Golang版
现,那么通常比哈希表更快。这是因为哈希函数计算需要开销,时间复杂度的常数项更大。 最后,哈希表的时间复杂度可能发生劣化。例如在链式地址中,我们采取在链表或红黑树中执行查找操作, 仍然有退化至 ?(?) 时间的风险。 Q:多次哈希有不能直接删除元素的缺陷吗?标记为已删除的空间还能再次使用吗? 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使 适合对查询性能要求很高的场景,平均时间复杂度为 ?(1) 。 ‧ 不适合需要有序数据或范围查找的场景,因为哈希表无法维护数据的有序性。 ‧ 对哈希函数和哈希冲突处理策略的依赖性较高,具有较大的性能劣化风险。 ‧ 不适合数据量过大的情况,因为哈希表需要额外空间来最大程度地减少冲突,从而提供良好的查询性 能。 树查找 ‧ 适用于海量数据,因为树节点在内存中是分散存储的。 ‧ 适合需要维护有序数据或范围查找的场景。0 码力 | 382 页 | 17.60 MB | 1 年前3Hello 算法 1.0.0b5 Golang版
用数组或链表实现,那么通常比哈希表更快。这是因为哈希函数计算需要开销,时间复杂度的 常数项更大。 最后,哈希表的时间复杂度可能发生劣化。例如在链式地址中,我们采取在链表或红黑树中执 行查找操作,仍然有退化至 ?(?) 时间的风险。 � 多次哈希有不能直接删除元素的缺陷吗?对于标记已删除的空间,这个空间还能再次使用吗? 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。 被标记为已删除的 适合对查询性能要求很高的场景,平均时间复杂度为 ?(1) 。 ‧ 不适合需要有序数据或范围查找的场景,因为哈希表无法维护数据的有序性。 ‧ 对哈希函数和哈希冲突处理策略的依赖性较高,具有较大的性能劣化风险。 ‧ 不适合数据量过大的情况,因为哈希表需要额外空间来最大程度地减少冲突,从而提供良好的查询性 能。 树查找 ‧ 适用于海量数据,因为树节点在内存中是离散存储的。 ‧ 适合需要维护有序数据或范围查找的场景。0 码力 | 379 页 | 30.70 MB | 1 年前3Hello 算法 1.2.0 简体中文 Go 版
现,那么通常比哈希表更快。这是因为哈希函数计算需要开销,时间复杂度的常数项更大。 最后,哈希表的时间复杂度可能发生劣化。例如在链式地址中,我们采取在链表或红黑树中执行查找操作, 仍然有退化至 ?(?) 时间的风险。 Q:多次哈希有不能直接删除元素的缺陷吗?标记为已删除的空间还能再次使用吗? 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使 适合对查询性能要求很高的场景,平均时间复杂度为 ?(1) 。 ‧ 不适合需要有序数据或范围查找的场景,因为哈希表无法维护数据的有序性。 ‧ 对哈希函数和哈希冲突处理策略的依赖性较高,具有较大的性能劣化风险。 ‧ 不适合数据量过大的情况,因为哈希表需要额外空间来最大程度地减少冲突,从而提供良好的查询性 能。 树查找 ‧ 适用于海量数据,因为树节点在内存中是分散存储的。 ‧ 适合需要维护有序数据或范围查找的场景。0 码力 | 384 页 | 18.49 MB | 10 月前3Golang 101(Go语言101 中文版) v1.21.a
在它们产生危害之前被及时发现。 使用非类型安全指针的另外一个较大的风险是Go中目前提供的非类型安全指 针机制并不受到Go 1 兼容性保证 ? 的保护。 使用了非类型安全指针的代码可 能从今后的某个Go版本开始将不再能编译通过,或者运行行为发生了变化。 如果出于种种原因,你确实希望在你的代码中使用非类型安全指针,你不仅需 要提防上述风险,你还需遵守Go官方文档中列出的非类型安全指针使用模 式,并清 reflect标准库包中SliceHeader和StringHeader类型的文档 ? 提到这两个结 构体类型的定义不保证在以后的版本中不发生改变。 这也可以看作是使用非 类型安全指针的另一个(较低的)潜在风险。 好在目前(Go 1.21)的两个主 流Go编译器(标准编译器和gccgo编译器)都认可当前版本中的定义。 Go核心开发团队也意识到了这两个类型的使用不方便并且容易出错,因此, 这两个类型从Go0 码力 | 821 页 | 956.82 KB | 1 年前3
共 12 条
- 1
- 2