如何消除程序中的数据竞争-周光远
如何消除程序中的数据竞争 周光远 华为 从一些问题说起 1 2 3 什么是数据竞争 Go语言中的数据竞争(data race): data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write. 数据竞争(data html 消除数据竞争的原理 消除数据竞争,实质就是利用go提供的保证和传递性来建立事件之间的happens before关系。 a b c d go1 go2 data race a b c d go1 go2 no data race 利用通道的happens before保证;建立了2 → 3 。 再结合传递性可以得到:1 → 2 → 3 → 4. 所以消除了数据竞争 ector race检测数据竞争 race检测数据竞争 race检测数据竞争 race只记录最后一次的写访问,因此可能不能一次检测到所有的数据竞争,消除当前已知问题后,需 要再次检测。 race检测数据竞争 消除数据竞争实践 消除数据竞争 • 互斥锁/读写锁 • 原子操作 • 通道 可用的happens : 以map为例: • Sync包中的其他能力(sync.Map, sync0 码力 | 30 页 | 1.92 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 目录 2 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 放弃那本书的写作计划后,我通过阅 读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪列表和一些 Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于Go编程细节中的 困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主题的 困惑,我就以该主题写一篇博客文章。 最后,我写了大约20篇Go文章。 与此同 时,我收集到了比以前更多的Go编程中的细节。 此时到了重启编写一本新的Go编程 5 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个卖 点。 《Go语言101》做了什么来消除Go编程中可能出现 的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念和术语的解释。如果不理解或者不熟悉这些基本概念和术语, 就很难完全理解Go中的很多规则和高层次的概念。0 码力 | 591 页 | 21.40 MB | 1 年前3Pivotal Greenplum 5: 新一代数据平台
中,这种不受限于基础架构的方法的大部分优势都 具有同样强大的作用。在 Greenplum Database 上部署分析系统时,用户还可获得一些额外的优势: • Greenplum Database 可消除平台 / 供应商制约。用户可通过不同供应商获得针对 Greenplum 的服务和支持。 • Greenplum Database 在开发时采用的是以社区 / 客户为焦点的开发模式。客户可通过多种开放可用的方法对总 计划的速度比传统规划器优化器平 均要快 7 倍。6 要整理大型表中的数据,一种常见方法就是使用分区。Greenplum 5 采用 GPORCA 作为默认查询优化器,可确定消除与结 果无关的分区的经济方式,从而改进动态分区消除。这是通过引入以下三个新的查询操作符实现的,这三个操作符在生成 者 / 使用者模式下配合使用以便对分区表执行扫描:PartitionSelector、DynamicScan 和 和 Sequence。通过在查询计划中放置 这些 PartitionSelector,GPORCA 可以支持更复杂的模式,例如基于相等和范围谓词的分区选择,以及动态分区消除。7 Greenplum 5 中的 ANALYZE 命令使用更快速的 PostgreSQL 实施来收集表统计数据,从而针对堆积优化表和附加优化表提 高其性能。系统会在单个查询中收集行示例,并在内存中执行每列统计数据的计算。而在过去,则会针对每列运行单独的0 码力 | 9 页 | 690.33 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于 Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主 题的困惑,我就以该主题写一篇博客文章。 最后,我写了大约20篇Go文章。 与此同时,我收集到了比以前更多的Go编程中的细节。 此时到了重启编写一本 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一个 卖点。 《Go语言101》做了什么来消除Go编程中可能出现的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念和术语的解释。如果不理解或者不熟悉这些基本概念和术 语,就很难完全理解Go中的很多规则和高层次的概念。0 码力 | 608 页 | 1.08 MB | 1 年前3对 Go 程序进行可靠的性能测试
Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 benchstat 10 benchstat 的功能非常简单,作用只是对性能测试结果进行统计分析,对测量结果进行假设检验,从而消除结果的观测误差 (observational error)。 $ go get golang.org/x/perf/cmd/benchstat $ benchstat --help usage: benchstat [-]delta, [-]name, none (默认值 none) 2020 © Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 benchstat 的原理:异常值消除+假设检验 11 type Metrics struct { Unit string // 性能测试的名称 Values []float64 // 某个性能测试的度量值 bm'。 一个稳定的基准测试,结果倾向于在某个值附 近波动,于是通过通用的计算 1.5 倍四分位距 法则(1.5 x InterQuartile Range Rule)的方法 来消除异常值。 benchstat 的本质就是在消除异常值之后的 两组浮点数之间进行假设检验(Hypothesis Testing)。 我们之后再来讨论假设检验。 例子与实践 2020 © Changkun Ou · Go0 码力 | 37 页 | 1.23 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关 于Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个 主题的困惑,我就以该主题写一篇博客文章。 最后,我写了大约20篇Go文 章。 与此同时,我收集到了比以前更多的Go编程中的细节。 此时到了重启编 考虑的最重要的一个因素。 良好的跨平台支持也应该算是Go的一个卖点,尽管如今这个卖点并不是很新 鲜。 一个稳定的Go核心设计和开发团队以及一个活跃的社区也可以被视为Go的一 个卖点。 《Go语言101》做了什么来消除Go编程中可能 出现的困惑? 《Go语言101》做了以下这些方面来试图清除很多Go编程中可能遇到的困惑。 1. 着重于基本概念和术语的解释。如果不理解或者不熟悉这些基本概念和术 语,就很难完全理解Go中的很多规则和高层次的概念。0 码力 | 821 页 | 956.82 KB | 1 年前3为何选择VMware?
� 依赖于 Windows 2008 加强型驱动程序 � 针对硬件供应商进行了优化 � 通用 Windows 驱动程序 高级内存管理 � 能够回收不再使用的内存,消除重复内存页 � 不能回收不再使用的物理内存 高级存储管理 � VMware vStorage VMFS � 缺少集成的群集文件系统 高 I/O 扩展性 � 直接驱动程序模型 x86/x64 虚拟化体系结构,无需依赖通用操作系统。VMware ESXi 仅仅占用 32 MB 的磁盘空间,这是任何其他虚拟化平台都无法比拟的。它省去了通用服务器操作系统通常需要应 用的所有补丁程序,同时也消除了与此类通用操作系统相关的风险。Microsoft Hyper-V、Xen 和 KVM 采用的体系结构都依赖于通用服务器操作系统,其虚拟化管理程序的可靠性与相应的通用服务器操作 系统密切相关。 Windows Server 2008 安装的替代宿主分区。不过,用于 虚拟化用途的 Server Core 仍然占用了大约 2.6 GB 的磁盘空间。除非 Microsoft 更改虚拟化体系结 构,消除对 Windows 的依赖,否则其虚拟化产品仍然会很大,很容易受到 Windows 补丁程序、更新 和安全漏洞的困扰。所有基于 Xen 的专用产品(如 Citrix、Oracle、Red Hat、Novell0 码力 | 34 页 | 862.76 KB | 1 年前3QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+
istio spring-gateway、linkerd、zuul 移动服务C 接入层 服务A 服务B 措施:合冗余[消除链路.裁剪节点] 冗余链路消除40多条 减少系统间交互80多次 裁剪冗余系统节点4个,消除接口200多个 减少对接成本,目的就是快 "� "� before� after before� after C 接入层/GW 分布式事务,补偿、撤销机制 接口缓存,热数据尽可能前置 DB跟随服务 代码、逻辑、结构等都要适时重构 最终架构[简版] 移动后台打散,界限趋于不明显 极大消除冗余,三级两层划分 底层服务有序汇总直面前端 流量统一出口 积分系统 优惠券 基金服务 保险服务 理财服务 支付中心 电子签章 第三方系统 营销支持 基础服务 数据支持0 码力 | 42 页 | 19.96 MB | 1 年前3现代C++ 教程:高速上手C++11/14/17/20
std::endl; } 在上面的代码中,我们可以看到 itr 这一变量是定义在整个 main() 的作用域内的,这导致当我们 需要再次遍历整个 std::vector 时,需要重新命名另一个变量。C++17 消除了这一限制,使得我们可 以在 if(或 switch)中完成这一操作: // 将临时变量放到 if 语句内 if (const std::vector::iterator itr = 注意:typename 和 class 在模板参数列表中没有区别,在 typename 这个关键字出现之前,都 是使用 class 来定义模板参数的。但在模板中定义有嵌套依赖类型的变量时,需要用 typename 消除歧义 这样的代码其实变得很丑陋,因为程序员在使用这个模板函数的时候,必须明确指出返回类型。但 事实上我们并不知道 add() 这个函数会做什么样的操作,以及获得一个什么样的返回类型。 在 C++11 却可以通过 auto 的使用来规避这一问题的出现。 3.3 右值引用 右值引用是 C++11 引入的与 Lambda 表达式齐名的重要特性之一。它的引入解决了 C++ 中大 量的历史遗留问题,消除了诸如 std::vector、std::string 之类的额外开销,也才使得函数对象容器 std::function 成为了可能。 左值、右值的纯右值、将亡值、右值 要弄明白右值引用到底是 0 码力 | 83 页 | 2.42 MB | 1 年前32020美团技术年货 算法篇
可认为是不相关样本。针对上述问题,我们利用 POI 的品 牌信息对样本进行了重点优化。 ● POI 名映射到品牌:在品牌搜 Query 不包含地标词的时候,将 POI 名映射到 品牌(非品牌 POI 不进行映射),从而消除品牌 POI 分店名中地标词引入的噪 声。如 Query 是“香格里拉酒店”,召回的“香格里拉大酒店”和“北京香格 里拉饭店”统一映射为品牌名“香格里拉酒店”。Query 是“品牌 + 地标”形 Recall 赛道中获得了季军(3/1433)。 在广告系统中,如何对数据偏差进行消除是最具挑战性的问题之一,也是近年来学术 界的研究热点。随着产品形态与算法技术的持续演进,系统会不断积累偏差。搜索广 告算法团队在数据偏差问题取得了突破,带来了较显著的业务效果提升。特别是在 Debiasing 赛题中,团队基于偏差消除问题的技术积累,从全球 1895 支队伍的激烈 角逐中取得第 1 名,并在最终评测指标(ndcg_half)领先第 6.0%。下面我们 将介绍 Debiasing 赛题的技术方案,以及团队在广告业务中偏差消除的应用与研究, 希望对从事相关研究的同学能够有所帮助或者启发。 技术方案开源代码 图 2 KDD Cup 2020 Debiasing 比赛 TOP 10 榜单 算法 < 115 赛题介绍与问题分析 偏差消除问题概述 大多数电子商务和零售公司利用海量数据在其网站上实现搜索和推荐系统,从而来促0 码力 | 317 页 | 16.57 MB | 1 年前3
共 393 条
- 1
- 2
- 3
- 4
- 5
- 6
- 40