Lock-Free Atomic Shared Pointers Without a Split Reference Count? It Can Be Done!0 码力 | 45 页 | 5.12 MB | 1 年前3
Doris的数据导入机制以及原子性保证## Doris 的数据导入事务及原子性保证 杨政国 百度资深研发工程师 Doris Committer  ## 01 ## Doris简介 ## 系统定位 • 基于MPP(大规模并行处理)架构的分析型数据库 • 性能卓越,PB级别数据毫秒/秒级响应 /1/5/2/01525fea83a74444259958fe4de89db4/p23_2.jpg) ## 总结 多版本机制解决读写冲突 • 写入带版本 · 查询带版本 两阶段导入保证多表原子生效 - 支持并行导入 - 有冲突时按导入顺序生效,无冲突导入时并行生效 事务能力保证  = \text{sizeof}(\text{uintptr\_t})$ ## size_t :表示大小的整数类型,其实等价于 uintptr_t • 除了指针需要随系统位数变化之外,数组的长度也是需要随系统位数变化的。 • 如果 64 位系统上 size_t 还是 uint32_t,那就无法表示超过 4GB 大小的数组了。 - 今日乳 ja 笑话:java 序。 ## int 类型对应的指针类型:int* - 指针,顾名思义,就是“指向”一个内存中的变量。 - 语法规定:任何类型 T 所对应的指针类型是 T*。 - 可以通过 & 运算符获取一个变量的指针(地址)。 - 可以通过 * 运算符访问指针指向的变量(左值)。 - 因此指针指向了变量,通过指针的 * 运算符写入的值,会造成原变量 x = 1 指针的用法。 $$ \begin{array}{r}0 码力 | 128 页 | 2.95 MB | 2 年前3
Back to Basics: Pointers0 码力 | 152 页 | 5.61 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a- 第12章:基本流程控制语法 - 第13章:协程、延迟函数调用、以及恐慌和恢复 - Go类型系统 - 第14章:Go类型系统概述 - 精通Go编程必读 - 第15章:指针 - 第16章:结构体 - 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 - 第18章:数组、切片和映射 - Go中的首要容器类型 - 第19章:字符串 - 第22章:方法 - 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 - 第24章:类型内嵌 - 不同于继承的类型扩展方式 - 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 。第27章:反射 - reflect 标准库包中提供的反射支持 ## • 一些专题 第28章:代码断行规则 。第29章:更多关于延迟函数调用的知识点 。第35章:边界检查消除 ## • 并发编程 。第36章:并发同步概述 第37章:通道用例大全 。第38章:如何优雅地关闭通道 。第39章:其它并发同步技术 - 如何使用sync标准库包 。第40章:原子操作 - 如何使用sync/atomic标准库包 。第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 ## • 内存相关 。第43章:内存块 。第44章:关于Go值的内存布局0 码力 | 608 页 | 1.08 MB | 2 年前3
Golang 101(Go语言101 中文版) v1.21.a第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 • Go类型系统 第14章:Go类型系统概述-精通Go编程必读 。第15章:指针 。第16章:结构体 。第17章:值部-为了更容易和更深刻地理解Go中的各种值 。第18章:数组、切片和映射 - Go中的首要容器类型 。第19章:字符串 。第20章:函数 - 函数类型和函数值,以及变长参数个数函数 。第21章:通道 - Go特色的并发同步方式 第22章:方法 。第23章:接口-通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌-不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型-如何使用和解读组合类型 。第27章:反射 - reflect 标准库包中提供的反射支持 ## • 一些专题 第28章:代码断行规则 。第29章:更多关于延迟函数调用的知识点 。第35章:边界检查消除 ## · 并发编程 。第36章:并发同步概述 。第37章:通道用例大全 第38章:如何优雅地关闭通道 。第39章:其它并发同步技术-如何使用sync标准库包 。第40章:原子操作-如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 ## • 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景0 码力 | 591 页 | 21.40 MB | 2 年前3
Golang 101(Go语言101 中文版) v1.21.a- 第12章:基本流程控制语法 - 第13章:协程、延迟函数调用、以及恐慌和恢复 - Go类型系统 - 第14章:Go类型系统概述 - 精通Go编程必读 - 第15章:指针 - 第16章:结构体 - 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 - 第18章:数组、切片和映射 - Go中的首要容器类型 - 第19章:字符串 - 第22章:方法 - 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 - 第24章:类型内嵌 - 不同于继承的类型扩展方式 - 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 。第27章:反射 - reflect 标准库包中提供的反射支持 ## • 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第35章:边界检查消除 ## • 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 。第39章:其它并发同步技术 - 如何使用sync标准库包 。第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 ## • 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景0 码力 | 821 页 | 956.82 KB | 2 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程ebda53c2593beaa/p40_1.jpg) ## 试图解决:通过指针传递 - 那你可能会想,既然不能返回,那作为指针传入局部变量的引用,不就好了。 - 这样,在 cudaDeviceSynchronize() 以后,应该可以获取数据了吧? - 结果令人失望,尽管给 kernel 传了指向 ret 的指针,但 ret 的值并没有被改写成功。  ## 反之亦然,CPU 即可,释放时也是通过cudaFree。这样分配出来的地址,不论在CPU还是GPU上都是一模一样的,都可以访问。而且拷贝也会自动按需进行(当从CPU访问时),无需手动调用cudaMemcpy,大大方便了编程人员,特别是含有指针的一些数据结构。  ## 注意不要混淆0 码力 | 142 页 | 13.52 MB | 2 年前3
Rust 语言学习笔记函数式编程 ..... 61 6.1.1 闭包 ..... 61 6.1.2 闭包捕获周围环境的方式 ..... 62 6.1.3 函数指针 ..... 64 6.2 unsafe 与原始指针 ..... 65 6.2.1 裸指针 ..... 65 6.2.2 unsafe ..... 66 6.2.3 Safe!= no bug ..... 67 6.3 FFI (Foreign 6.3.2 将 rust 编译成库 ..... 71 6.4 堆,栈,BOX ..... 74 6.4.1 堆和栈 ..... 74 6.4.2 BOX ..... 75 6.5 智能指针 ..... 77 6.5.1 Rc 与 Arc ..... 77 6.5.2 Mutex 与 RwLock ..... 81 6.5.3 Cell 与 RefCell ..... 84 和 sync 需要加上 unsafe ..... 101 7.4 共享内存 ..... 101 7.4.1 static ..... 101 7.4.2 堆 ..... 102 7.5 同步 ..... 102 7.5.1 控制访问顺序--等待与通知 ..... 103 7.5.2 控制访问顺序的机制-原子类型与锁 ..... 104 7.6 并行 ..... 1060 码力 | 117 页 | 2.24 MB | 2 年前3
共 985 条
- 1
- 2
- 3
- 4
- 5
- 6
- 99













