分类:科技

架构不是设计出来的

75 阅读 0 2681 字 · 约 9 分钟

架构不是设计出来的,是在每个阶段做了正确的决策才长出来的。四阶段框架:能跑→跑得准→跑得稳→跑得快,每个阶段的核心矛盾不同,三条原则的权重随场景变化。

【FFI】 内存管理——跨语言边界最难的问题

50 阅读 0 1232 字 · 约 5 分钟

跨语言调用的核心矛盾只有三个:数据类型怎么传、函数怎么调、内存怎么管。前两个靠 ABI 和绑定工具解决,第三个是最难的——GC 语言和手动管理语言各有自己的内存世界观,边界上谁说了算? 两个世界,一个边界 Rust 说:每个值有且仅有一个 owner,owner 离开作用域就 drop。Python

【FFI】 Java 侧演化——从 JNI 到 Panama

54 阅读 0 1796 字 · 约 6 分钟

Java 从 JDK 1.1 就能调 C,但这条路走了二十多年,一直在"方便"和"快"之间做取舍。四个方案串起来看,就是 Java FFI 的演化史。 JNI:最底层,也最麻烦 JNI(Java Native Interface)是 Java 调 C 的标准姿势。Java 侧写 native 方法,

【FFI】 Python 侧——用 Rust 扩展 Python 的三种方式

61 阅读 0 1512 字 · 约 6 分钟

Python 是数据科学最顺手的语言,但纯 Python 跑计算密集型任务慢得离谱。一个斐波那契递归,纯 Python 算 fib(40) 要几十秒。Rust 算同样的东西,毫秒级。问题是怎么让 Python 用上 Rust 的速度?FFI 提供了三条路。 一个例子看清三道门 先用 PyO3 写个最

【FFI】 C FFI 与 libffi——事实标准的工作原理

54 阅读 0 1382 字 · 约 5 分钟

FFI 的底层逻辑很简单:两个语言之间要互相调用,总得有个共同的"语言"做桥梁。这个桥梁不是 C 语言本身,而是 C 的调用约定——C ABI。 为什么是 C ABI,不是别的 操作系统内核用什么语言写的不重要。Linux 是纯 C,macOS 的 XNU 混了大量 C++,Windows 内核也是

【FFI】 FFI 为什么存在——跨语言调用的根本问题

49 阅读 0 1027 字 · 约 4 分钟

写代码几十年了,没有哪个语言能统一所有场景。C/C++ 统治系统编程,Java 统治企业后端,Python 统治数据科学。每种语言都有它擅长的生态,也有它够不着的角落。 FFI(Foreign Function Interface)的存在,本质上是为了两件事: 借用性能。 Python 写数据管道很

参加完一场智能眼镜黑客松,我开始重新理解这个行业

56 阅读 0 7059 字 · 约 24 分钟

智能眼镜在互联网上已经赢麻了 能力早就不是问题 如果你最近刷过一点智能眼镜相关内容,大概率会看到一套很熟悉的叙事:它是下一代计算平台,是第一视角 AI 助手,可以导航、翻译、语音问答、记录生活,甚至能在你走路、开会、旅行的时候一直陪着你。 这些东西也不全是吹的。至少导航、翻译、问答这类能力,今天确实

实时数据湖技术选型:Hudi、Iceberg、Delta Lake、Paimon 怎么选

71 阅读 0 2370 字 · 约 8 分钟

实时数据湖技术选型:Hudi、Iceberg、Delta Lake、Paimon 怎么选 为什么需要数据湖格式? 传统数仓的痛点很明显:数据先入 Kafka 或 MySQL,再通过离线 ETL 写入 HDFS/Hive。这个链路里,更新和删除是老大难问题——Hive 不支持行级 UPDATE,只能全