C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器- 与 Python 和 C++ 不同,Java 放弃了花里胡哨的运算符重载,索性都采用成员函数 get put 来表示,非常明确。主要是为了把 get 和 put 作为接口函数,可以对应多个具体实现。 Mapitems = new HashMap (); put("hello", 1); put("world" 容器中的类型通过模板来指定:set - set 容器又可以分为 set、multiset、unordered_set、unordered_multiset 四类。 - set 容器和 map 的相似之处在于他的底层实现都是二叉排序树,现在让我们来鞋习一下他吧。 ## vector 查找为什么低效 • vector 又称线性数组。在 vector 中查找元素可以用头文件里的 std::find。 vector a = { 1, 4, 2, 8, 5, 7 }; • std::find(a.begin(), a.end(), 5); - 这个 std::find 就是标准库帮我们实现的线性数组中查找元素的算法,让我们用动画演示一下他的工作原理吧。 |内存|1|4|2|8|5|7| |---|---|---|---|---|---|---| |地址|a|$ a+1 $|$ a+2 0 码力 | 90 页 | 8.76 MB | 2 年前3
实现PostgreSQL逻辑复制实战## 实现PostgreSQL逻辑复制实战 王青松 神州飞象(北京)数据科技有限公司 ## 简介 PG WAL Other DB 逻辑复制的功能是从PG的WAL日志中,读取数据库更新信息,然后“翻译”(Decode)成逻辑的形式,可发送到远程从库做数据同步。 ## 为什么要选择逻辑复制?  背景 • 方案调研 • Chubaofs • Juicefs • 方案实现 • 方案一:chubaofs • 方案二:事务方案 • 方案三:利用 KV 自带的分布式事务 • Q&A • 1. 是否需要实现跨文件系统的 rename 操作? • 2. 在多客户端情况下,是否需要加锁来保证其原子性? • 3. rename A→C(A 存在,而 C 存在) • 4. 当 2 个操作的 dentry 属于同一个 copyset 有什么不一样? ## 背景 当前 curvefs 并没有实现 rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename /dir1/file1 /dir2/file2,主要有 2 个步骤:(1)删除 file1 等同 file1 的 inode id)。关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 ## 方案调研 ## Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通用创建源文件的硬连接,然后删除源文件的方式来实现的,主要有以下 4 步: 1. 将源文件的 nlink 加一 20 码力 | 15 页 | 555.93 KB | 1 年前3
基于gRPC go实现消息发布订阅## 使用gRPC go实现 基于Topic的高效消息订阅发布模型  姓名:___ 张凯 中国电子云 实现后台执⾏⻓任务tags: electron, node ## description: 通过 Electron 托盘(tray)实现后台执行长任务。 Electron 应用在执行一些长时间任务(比如上传、下载),我们想关闭界面后任务依旧执行。再次打开界面,依旧可以看到正在执行的任务以及任务进度。托盘可以帮我们实现这个功能。 ## 创建托盘和菜单示例 • 实例化 Tray 并传入图标路径; • 创建菜单并配置到托盘中。 label: 'Item4', type: 'radio' } ]) tray.setContextMenu(contextMenu)) ## 基于托盘功能实现后台运行应用 ## 关闭应用前唤醒对话框二次确认 关闭应用时,触发对话框,可支持 3 种场景: 点击「取消」取消关闭操作; 点击「退出」,「后台运行」选中时,界面关闭,托盘不关闭,任务继续执行; setImage(getTrayIcon()); ## 托盘其他场景 显示未读消息数 tray.setTitle('6'); - 有未读消息时图标闪动:通过 setImage 定时轮询切换图标实现 ## 注意事项 MacOS 全屏退出界面是会出现黑屏问题,解决方案 判断如果全屏,在关闭全屏时,先退出全屏再隐藏界面 // 修复全屏 hide 黑屏问题 // https://github0 码力 | 6 页 | 1.19 MB | 2 年前3
基于amqp实现的golang消息队列MaxQ# 基于amqp实现的golang消息队列 MaxQ 2017-07-01 张培培 饿了么-基础框架组 ## 内容 1. 队列 2. IPC消息队列 3. AMQP协议 4. MaxQ架构模型 5. MaxQ相关特性 6. 使用场景和案例 ### 1. 队列  跟消息队列相比,有哪些共性? ### 3. AMQP(Advanced Message Queuing Protocol)协议 • 七层应用协议 • 定义Broker实现 • 生产消费轻耦合 • 生产消费状态记录 • Push/Pull消费模型 • 消费者流控 • 事务支持  - 按照协议spec自动生成frame encode/decode • Exchange接口化 • Queue接口化——MaxQ集群 ## MaxQ - 生产实现架构 ) - 使用 “go” 命令创建goroutine go sockstore0 码力 | 25 页 | 260.04 KB | 2 年前3
基于Rust-vmm实现Kubernetes运行时0 码力 | 27 页 | 34.17 MB | 2 年前3
02 TiDB Operator 架构与实现 付业成## Go 夜读 & 云原生社区 TiDB Operator 架构与实现 扫描下方二维码 填写你的问题  ## TiDB Operator: Design & Implementation Presented by Yecheng fcdf2647d94c085d4/p2_1.jpg) ## Agenda • TiDB Operator 简介 ● 扩展 Kubernetes 的几种方式 • TiDB Operator 实现 ## TiDB Operator 是什么 ## Cloud Native Era: Portable, Scalable, Automated ## Full lifecycle management 7d94c085d4/p17_1.jpg) Able to intercept API requests and may change or deny it. ## TiDB Operator 实现 ## TiDB Operator Implementation - The tidb-controller-manager - Initialization - Watch objects (Tidb0 码力 | 47 页 | 1.73 MB | 1 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100
相关搜索词
map容器set容器map函数遍历修改底层实现PostgreSQL逻辑复制WAL日志复制槽自定义输出插件rename接口ChubaofsJuicefs事务方案分布式事务gRPC goTopic消息订阅发布模型protoPublisherSubscriberElectron托盘后台运行菜单系统主题MaxQAMQP协议消息队列GolangZookeeperTiDBHBaseSQLOLTP推送服务器高并发goroutineRedis水平扩展Rust-vmmKubernetes运行时虚拟机监控程序云原生内存安全TiDB OperatorKubernetesController ManagerCustom ResourceReconciliation













