Zadig 面向开发者的云原生 DevOps 平台
Helm Chart 版本 工具链: • GitLab (源码 + 服务 Chart 配 置) • Rancher 部署 分支策略: • feature -> develop/release -> master 环境策略: • 三套环境( dev 、 qa 、 prod ) 现状:基于 GitLab + Helm Chart 模版 + 多套 values 飞书场景一:主干开发主干发布 工具链: 飞书 + Gerrit + Zadig + 内部发布平台 技术栈: Go +git ( yml ) + 多集群 K8s 分支策略: 单分支 master 开发 环境策略: 4 套同构环境动态分配 测试管理: 500 API+E2E cases 字节跳动 - 飞书场景二: Gerrit + Zadig 方案 工程师体验 现状0 码力 | 59 页 | 81.43 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector
noexcept; vector 容器: resize 的优化策略 • 注意这里 resize(7) 之后容量实际上扩充到了 10 而不是刚好 7 ,为什么 ? • 因为标准库的设计者非常聪明,他料想到了你 resize(7) 以后可能还会来 个 resize(8) 甚至 resize(9) 之类的。为了减少重复分配的次数,他有一 个策略:当 resize 后的新尺寸变化较小时,则自动扩容至原尺寸的两倍 尺寸总是小于等于容量。 • 尺寸范围内都是已初始化的内存 ( 零 ) 。 • 尺寸到容量之间的范围是未初始化的。 • size_t resize(size_t n); vector 容器: resize 的优化策略 • 不过如果 resize 后的尺寸还超过了原先尺寸的两倍,就没 有这个效果了。 • 也就是说 resize(n) 的逻辑是扩容至 max(n, capacity * 2) 。 • size_t0 码力 | 90 页 | 4.93 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅
比较高效 AMD 的 wrap 大小 64 ,尹伟达的 wrap 大小 32 高性能计算既然要高性能,必须针对不同硬 件优化,而优化策略都不一样,何谈统一? 黄仁勋回应称:单机上 CPU 的并行,多机上的 CPU 并行,单机单卡 GPU ,单机 多卡 GPU ,每一种要采用的策略都完全不同,表示不看好 oneapi 能统一异构计算 …… 现在流行改名运动? Facebook 改名 Meta ? TBB0 码力 | 116 页 | 15.85 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 05 C++11 开始的多线程编程
如果是这种顺序,最后 t1 的写入就被 t2 覆盖了,从而 counter 只增加了 1 ,而没有像预期的那样增加 2 。 • 更不用说现代 CPU 还有高速缓存,乱序执行,指令级并行等 优化策略,你根本不知道每条指令实际的先后顺序。 暴力解决:用 mutex 上锁 • 这样的确可以防止多个线程同时修改 counter 变量,从而不会冲突。 • 问题: mutex 太过重量级,他会让线程被 atomic :有专门的硬件指令加持 • 因此可以用更轻量级的 atomic ,对他的 += 等 操作,会被编译器转换成专门的指令。 • CPU 识别到该指令时,会锁住内存总线,放弃 乱序执行等优化策略(将该指令视为一个同步点 ,强制同步掉之前所有的内存操作),从而向你 保证该操作是原子 (atomic) 的(取其不可分割 之意),不会加法加到一半另一个线程插一脚进 来。 • 对于程序员,只需把0 码力 | 79 页 | 14.11 MB | 1 年前3Go读书会第二期
• 并发原语的原理与应用模式 • 低级同步原语 (sync 和 atomic) 并发:优先考虑并发设计 Part7 – 错误处理 践行哲学,遵循惯例,认清本质,理解原理 • 错误处理的几种策略 • 优化 if err != nil • Panic 不是错误处理 错误处理:保守与创新 Part8 – 编程实践:测试、调试与性能剖析 践行哲学,遵循惯例,认清本质,理解原理 • Go0 码力 | 26 页 | 4.55 MB | 1 年前3Zadig 产品使用手册
产品特性:开源 Zadig 的一切 云原生 CI/CD 、产研高效工程化协作、快速应对业务迭代 Zadig 产品特性:发布中心 编排组织、流程、内外部系统,管理代码、配置、数据变更流程,支持灰度组合策略 Zadig 产品特性:客户交付 面向大客户全天候响应、全地域升级部署,提供自运维和专用服务通道,实现稳定高效交付和服务保障 成 立 于 2 0 1 8 年 , K o d e R o v0 码力 | 52 页 | 22.95 MB | 1 年前3谈谈MYSQL那点事
上面。比如月统计报表,比如首页推荐商品 业务实时性要求不是很高,完全可以采用这种弱一致性的设 计架构模式。 中间一致性 如果既不是很强的一致性又不是很弱的一致性,那 么我们就采取中间的策略,就是在同机房再部署一个 S1(R) ,作为备库,提供读取服务,减少 M1(WR) 的 压力,而另外一个 idc 机房的 M2 只做 standby 容灾方 式的用途。 当然这里会用到0 码力 | 38 页 | 2.04 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming
:如果上一次 cmp 的结果为小于等于,则把 al 设为 1 ,否则设为 0 add eax, 1 :给 eax 加 1 ,也就是 eax=eax+1 的意思 归纳得出编译器对 if-else 的优化策略 • if ( 条件 > 0) { // jle • return 1; • } else { // jmp • return 2; • } • return0 码力 | 47 页 | 8.45 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化
的数据。这样等 a[0], a[1] 处理完以后,缓存也刚好读取完 a[2] 了,从而 CPU 不用等待,就可以直接开始处理 a[2] ,避免等待数据的 时候 CPU 空转浪费时间。 • 这种策略称之为预取( prefetch ),由硬件自动识别你程序的访存规律 ,决定要预取的地址。一般来说只有线性的地址访问规律(包括顺序、 逆序;连续、跨步)能被识别出来,而如果你的访存是随机的,那就没0 码力 | 147 页 | 18.88 MB | 1 年前3
共 9 条
- 1