摘要: sql2rel的过程是将SqlNode 转化成RelNode的过程 在 `SqlToRelConverterTest`中添加样例测试 ```java @Test void testScan() { String sql = "SELECT * FROM EMP WHERE empno When va 阅读全文
posted @ 2023-06-17 17:43 血染河山 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Rust很适合写命令行工具,特别是使用`clap` crate 更加方便,这篇文章介绍使用rust写一个jar包class冲突检测的工具。项目地址: [https://github.com/Aitozi/jar_conflict_detector](https://github.com/Aitozi 阅读全文
posted @ 2023-05-23 23:27 血染河山 阅读(361) 评论(0) 推荐(1) 编辑
摘要: String String 类型的数据和基本类型不同,基本类型的长度是固定的,所以可以在栈上分配,而String类型是变长的,所以需要在堆上分配,所以String 类型实际上是一个指向堆的指针。他的结构和Vec很类似。从他的声明看也是一个u8的Vec pub struct String { vec: 阅读全文
posted @ 2023-05-16 21:35 血染河山 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 2023 第三本书,之前下决心每次读完书就要写一篇读后感,加深认识。结果下决心后的第一本 《乡土中国》就写不下来读后感,感觉读后感太多太密,还不如想起来的时候回头浏览一遍书。 但是最近听路障的视频,发现他也建议写读后感来增加对书的认识,这样能更好的帮助记忆,加上这本书好奇心里面的观点,创造力来源于知 阅读全文
posted @ 2023-05-07 22:23 血染河山 阅读(70) 评论(0) 推荐(0) 编辑
摘要: Hudi 文中部分代码对应 0.14.0 版本 发展背景 初始的需求是Uber公司会有很多记录级别的更新场景,Hudi 在Uber 内部主要的一个场景,就是乘客打车下单和司机接单的匹配,乘客和司机分别是两条数据流,通过 Hudi 的 Upsert 能力和增量读取功能,可以分钟级地将这两条数据流进行拼 阅读全文
posted @ 2023-05-05 11:13 血染河山 阅读(429) 评论(0) 推荐(1) 编辑
摘要: 一层嵌套,但是flatten的要求需要List内部类型都一样, 例如都为List scala> List(List(1), List(2), List(3)).flatten res4: List[Int] = List(1, 2, 3) scala> List(List(List(1)), Lis 阅读全文
posted @ 2023-03-10 23:10 血染河山 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 设想以下这个计算 def eval(i: Int): Option[Int] = { println(s"invoke with $i") if (i % 2 == 0) { None } else { Some(i + 1) } } @Test def test(): Unit = { // 3 阅读全文
posted @ 2023-03-10 22:57 血染河山 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 静态链接库在程序编译阶段就完成了链接工作,完成链接后,依赖的库就都打入了可执行文件中,所以文件大小一般会比较大。 而动态库链接库是在程序运行时才被链接的,所以磁盘上只要保留一份副本,因此节约了磁盘空间。如果发现了bug或要升级也很简单,只要用新的库把原来的替换掉就行了。Linux环境下的动态链接对象 阅读全文
posted @ 2023-02-05 20:10 血染河山 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 现代操作系统如何装载可执行文件? 给进程分配独立的虚拟地址空间 建立虚拟地址空间和可执行文件的映射关系 把CPU指令寄存器设置成可执行文件的入口地址,启动执行 可执行文件在装载的过程中实际上是映射的虚拟地址空间,所以可执行文件通常被叫做映像文件(或者Image文件). ELF文件的两种视角 Sect 阅读全文
posted @ 2023-02-05 13:34 血染河山 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 看以下例子 main.c extern int x; int main() { int y = 100; swap(&x,&y); return 0; } int x = 1; void swap(int* x, int* y) { int temp = *x; *x = *y; *y = temp 阅读全文
posted @ 2023-02-04 22:19 血染河山 阅读(179) 评论(0) 推荐(0) 编辑