自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

余璜的技术博客

好玩就好

  • 博客(700)
  • 资源 (3)
  • 收藏
  • 关注

原创 我写操作系统的一点经验【原创】

我的项目代码: http://code.google.com/p/maray/这两天我在写计划,完成后在此博客公布。发信人: raywill (晓楚), 信区: Linux标  题: 我写操作系统的一点经验发信站: 武汉白云黄鹤站 (2007年09月14日22:39:30 星期五)转瞬2年!Linux版上又见“有人写操作系统吗?”这样的帖子。2年前,有个叫raywill的小子不也是发过

2007-10-07 10:22:00 2580 7

原创 回眸 Databricks 历史片段

本文梳理了数据湖技术的发展脉络,重点分析了Databricks的技术演进路线。从AWS S3开启云存储时代,到Parquet格式推动数据湖概念落地,再到Delta Lake等表格式解决数据更新问题。文章对比了Hudi、Iceberg和Delta Lake的技术特性,指出Delta Lake深度绑定Spark生态但小事务支持不足的特点。随着业务发展,Databricks推出Lakebase方案,通过PostgreSQL实现10秒级延迟的实时分析能力。图表展示了Databricks从Spark起家到构建完整La

2026-08-13 10:46:29 179

原创 如果你写云数据库(7)

当你把目标用户群体定义为“数据科学家”的时候,你绝不能只提供一个数据库后端给他,提供一个 OCP 也是远远不够,ODC 也不够。你必须围绕“数据科学家”的需求,给出一整套便捷的数据交互界面,给出做数据科学分析时必须的组件库、运行时环境,同时针对该群体对“交互延迟”的一般预期,设计一整套性能解决方案。我遇到这个问题的时候,尝试回答 OceanBase 过去很多年的目标用户是谁,发现居然一时语塞。如果你写云数据库,你一定要首先定义清楚,你的目标用户是谁。定义清楚了目标用户群,也就基本确定了商业能力的边界。

2026-08-10 10:25:45 157

原创 如果你写云数据库(6)

作为 CEO,你一定要坚守,要有定力,不能见钱眼开。

2026-08-10 10:16:10 200

原创 如果你写云数据库(5)

本文提出"单元容器"方案解决云资源弹性扩展难题。核心建议是将计算资源封装为8C的标准单元容器,通过横向增加容器数量实现扩容。这种设计既能向用户呈现无限资源的假象,又能规避底层物理机规格限制。相比传统按需分配整机的方式,单元容器方案提高了资源利用率,但要求软件架构预先支持多容器管理和资源隔离。Snowflake等系统已成功采用类似8C固定规格的设计,体现了资源抽象和通用化的重要价值。该方案的关键在于平衡架构复杂性和资源灵活性。

2026-07-13 18:31:17 167

原创 如果你写云数据库(4)

BYOC(自带云)是小厂商在云数据库领域的一种过渡方案,允许客户利用大企业的云资源折扣降低成本。尽管BYOC能帮助小厂商以更优惠的价格部署数据库,但它存在信任风险(需远程运维客户环境)、长期价值有限(厂商壮大后折扣优势消失),以及难以与云平台低价服务竞争等缺陷。这种中间态既无法像私有化部署那样安全,也不如SaaS模式便捷,主要吸引价格敏感但需求复杂的客户,长远来看并非理想的产品形态。

2026-07-08 20:19:41 154

原创 如果你写云数据库(3)

一些分布式数据库在这个方面就很吃亏,多副本,为了追求高可靠,就自然要把副本放到多个 AZ 中,这样一来,计算流量就很容易在多个 AZ 之间来回蹿,费用蹭蹭涨。所以啊,云原生的数据库,还是 Snowflake 玩得溜,卡了一个非常好的位,把这些乱七八糟的需求全部绕过了,一个 AZ 管够。那么,如果你在设计产品的时候,就需要时时刻刻把网络这件事情放在心上,最好,每一次查询涉及到的机器都不要跨 AZ。甚至,你知道吧,流量费还非常贵!而且,你知道吧,发送方计费,接收方还要计费,所谓“一鱼两吃”!

2026-07-03 18:14:40 182

原创 如果你写云数据库(2)

摘要:云服务收费推荐两种模式:1)打包收费(如按CU/CREDIT计费),客户友好但需精准定价;2)成本明细收费(如CPU/磁盘单独计费),透明但增加客户理解成本。切忌将需独立调整的资源捆绑收费(如CPU+磁盘套餐),这会限制客户灵活性。错误捆绑通常源于试图隐藏复杂性(如日志盘配额),实则损害产品迭代。跨云定价差异(如AWS跨AZ流量费)进一步增加收费策略复杂性。(149字)

2026-06-30 18:13:07 215

原创 如果你写云数据库(1)

云服务器无感替换的核心在于平衡技术架构与服务策略。需通过弹性设计实现机型迁移时连接不中断,同时定义合理的SLA标准(如为付费/免费客户设置不同可用性阈值)。技术上可采用IP漂移、热迁移或容器化方案;运营上需建立新老机型过渡机制,及时淘汰低效客户。Snowflake的架构设计值得借鉴,关键是在保证服务质量的前提下,让用户完全感知不到底层资源变更。

2026-06-30 17:47:31 236

原创 体验 Neon 产品

摘要:Neon注册流程简单快捷,支持Google登录并选择AWS/Azure云平台。用户下载客户端后完成授权,即可获取连接串对接AI工具,实现代码直连Neon数据库。整个过程仅需20分钟,最新版本还支持PostgreSQL作为后端,大幅提升开发效率。系统初始化后可直接查看所有数据,为开发者提供极大便利。

2026-01-08 10:41:04 290

原创 SeekInsight!

SeekInsight是一款创新的AI辅助数据分析平台,其核心特色包括:1)异构数据处理能力,支持TXT/CSV/Excel自动结构化并兼容中文编码;2)双引擎开发环境,提供SQL和Python工作台的无缝切换;3)智能洞察系统,基于表结构主动生成分析建议;4)可视化闭环,自动推荐图表类型并生成业务报告。平台采用React+Node.js技术栈,通过沙箱隔离实现多项目并行开发,特别注重中文友好性和非技术用户的使用体验,完成了从数据导入到决策输出的全流程自动化。

2025-12-26 10:39:32 940

原创 混合搜索中的条件下压需求

举个例子,Glean 是一个企业 AI 搜索软件,它能够非常高质量地针对用户自然查询语言搜出符合要求的文档,并且,这些文档都是用户有权限访问的文档。自然语言搜索会用到向量索引,企业会基于所有文档构建出一个统一的向量索引出来,对于用户小余来说,它实际有权限访问的,只是里面很少的一部分。查询期间,我们可以带上访问权限 ID 列表,或者带上基于这个列表生成的位图,去搜索向量索引。通过这个位图,我们可以极大地降低向量计算量,跳过不必要的计算。企业里有一个文档权限表,里面详细记录了小余有权限访问的文档 ID。

2025-12-04 12:23:15 240

原创 Chroma 的设计哲学

你将 Query 传给 Chroma 后,Chroma 内部先用 DuckDB 的 SQL 在磁盘上按 metadata(比如 source=“wiki” 且 date>2024-01-01)筛出候选 id 列表,然后只把这些候选的 embedding 读入内存并计算相似度,减少计算量。可以看到,Chroma 的核心贡献在于向量搜索,至于存储,完全委托给了 duckdb 等嵌入式存储,他们各自发挥各自的优势,将能力组合,发挥出更大的价值,同时还留给用户足够的灵活性。创建 Chroma 时,可以通过。

2025-11-26 00:10:36 510

原创 在 MacOS 场景下体验 seekdb embeded

SeekDB目前尚不支持MacOS原生运行,但可通过Docker镜像体验。该工具处于概念演示阶段,提供流畅的体验和丰富的SDK接口,但需增强AI能力(如支持更多自定义模型和嵌入函数)及多媒体数据处理功能。安装步骤包括:1)通过Docker运行SeekDB;2)在容器内安装Python3和pip3;3)安装pyseekdb及相关依赖库。整体而言,SeekDB为开发者提供了便利的开发界面,但仍需完善功能扩展。

2025-11-20 21:25:18 1354

原创 对 Transformer Position Encoding 的学习理解

我们会发现,当 x 比较小的时候,数值之间是有规律的,但是当 x 变大后,因为 sin(x) 的周期特征,它的值会被“折叠”,某种意义上,这个值就变成了和随机值差不多的东西。但是他有一个缺点,因为它在 0 到无穷大的范围内平滑地从 -1 变化到 1,可能相邻位置在高维空间的投影距离非常近,难以被机器学习出来,不容易收敛。任何特征,能学习的前提,是它具备一定的规律。(1) 一个句子中的 token,我们是可以用 0 到 N 来给它做位置编码的,但是这种编码方式不便于计算,且缺少一些很牛的性质。

2025-11-09 16:19:15 705

原创 使用 GPT + Manim 生成动画的体验非常好

应该是提示词还不够详细,生成的内容还需要人工微调一下,但是大体结构是非常好的,只需要稍微花费一点力气就可以调整好。最终,通过稍微的调整,输入了如下代码,效果非常棒。使用 GPT + Manim 生成动画的体验非常好。

2025-11-02 04:55:52 327

原创 循环展开与GCC

做了循环展开,但是并没有做指令重拍以适应 CPU 流水执行,但 10.2 就已经解决了这个问题。但从 10.2、11.2 这些版本,二者生成的汇编代码一模一样,性能也完全相同。在 8.2、9.2 这两个 GCC compiler 中,所以,对于小整数的循环,要相信编译器的循环展开能力。下面两个函数,哪个更快?虽然 8.2 中已经对。

2025-10-22 05:10:28 186

原创 大模型的角色

摘要:大模型本质是无状态的,其连续会话能力由外部Agent维护上下文实现。Agent负责编排流程、调用工具和管理交互状态,而大模型仅返回决策结果(文本或工具调用指令)。上下文工程是核心挑战,涉及短期/长期记忆管理、向量检索等技术,以解决对话爆炸问题。数据库领域的AI需求(如embedding)主要服务于高效上下文检索。

2025-10-18 10:49:02 403

原创 表达最大值最小值的新方法

表达最大值、最小值,传统方法是 MAX_INT64 这样的宏。

2025-10-18 09:17:49 272

原创 学习小智 AI 生态

小智AI是一款由硬件、开源固件和服务端组成的聊天玩具,其台湾腔陪聊功能广受欢迎。最初闭源的服务端被团队复刻并开源,用户无需订阅即可永久使用。该系统整合了国内多家云服务商的免费AI方案,包括智谱的LLM和视觉模块。开发者可通过修改开源固件扩展硬件功能,或通过MCP扩展后端能力。小智的核心交互依赖于液晶显示和语音输入/输出模块,而后端服务则提供了丰富的扩展可能性。

2025-10-16 07:30:09 1823

原创 各种数据库的过滤物化

缺点:算子实现复杂,需要“带掩码”处理,某些 SIMD 优化较难。ClickHouse 每次 filter 都会生成新 column(物理拷贝),下游算子只处理“干净”的数据块。以前没怎么考虑过这个问题,实际写了一些带 selector 的代码,才知道每一步都物化的话,代码写起来有多爽。这些系统经常使用掩码(mask)或者 selection vector来表示哪些行有效,而不是立即拷贝数据。通常还是“逐行遍历+逐行判断”,不进行大规模批量拷贝,也不专门维护 selection vector。

2025-10-12 06:20:56 372

原创 一个循环的编译优化

实战中还是应该通过去看汇编代码来确认,然后通过一些相关技术来提示编译器做优化。本文的目的是让你理解,在部分情况下即使有数据依赖,编译器依然还有优化的思路。通过这种改写,虽然减少了乘法,但是我们也注意到,增加 temp 后,会让每次循环迭代都依赖上一次循环迭代完成,这无疑是不利于 CPU 流水执行的呀!不过,这里还有一个问题:如果循环次数不是 100,而是一个未知的变量 n 呢?可以做循环展开,然后做 SIMD。只能说,现代编译器是真的有点聪明!

2025-10-11 03:44:12 232

原创 一个循环的优化

本文对比了三种从1024字节数组中选取n(1-8)个字节组合成uint64_t的方法。方法1使用简单循环,方法2采用Duff's Device技术进行循环展开,方法3则完全暴力展开所有情况。测试结果表明:方法3性能最优,方法2次之,方法1最慢。这种性能差异源于分支预测和指令级并行优化,完全展开的代码能最大化利用CPU流水线。对于小规模循环(n≤8),暴力展开是最高效的实现方式。

2025-10-10 03:31:38 444

原创 论 AI Database

摘要:文章提出将数据库作为AI开发的核心控制平面,通过声明式API统一管理数据、特征和模型元数据。关键设计包括:1)SQL扩展支持AI原语 2)集中式元数据管理 3)强制治理策略 4)可插拔执行后端。MVP建议从向量查询、推理API和模型注册入手。该方案面临的主要挑战包括开发者习惯改变、性能优化、生态兼容性以及组织变革阻力。(149字)

2025-09-29 23:51:54 854

原创 一个 AP 题目引发的学习过程

自然界中,不连续的情况很少,但是人为定义的系统中,不连续很常见。大家最能理解的,就是税务问题,多发一块钱年终奖,结果多缴纳几百块的税,有了 GPT 后,在学习这个内容,一下子就 reasonable 了。接近0的时候,值为1,等于0的时候值为-1,这不是要天下大乱了吗?数学总是太抽象,真实生活中怎么会遇到这样的场景呢?上面这些例子,都是很有道理的。下面是一个美国高二学生的 AP 题目,要求理解这个式子。数学,还是很有用的。

2025-09-12 00:45:50 1096

原创 GPT 生成一个打字练习页面

女儿最近对键盘打字展现出浓厚兴趣,于是用 GPT 生成一个比较适合小朋友的打字练习页面。

2025-07-27 12:53:14 8999

原创 如何优化遍历向量元素的循环?

在这个基础上,我们还可以进一步定制 forEach,比如添加循环展开的模板参数,指导 forEach 做编译期循环展开,可以进一步提升循环遍历性能。isConstantArray 这个条件,是在 Vector 初始化阶段就定好了的,但它又不是一个模板参数,所以很难用模板特化的方式解决。循环里有大量的分支跳转,流水线早就被打得四分五裂了,forEach 已经带来不了什么好处,更不用提应用循环展开。但这个需要一定的设计来配合,比如,在 OceanBase 中,就不太容易应用这个技术。

2025-07-15 01:40:38 525

原创 分布式顺序数据发生器

本文提出了一种分布式顺序数据发生器的实现算法。该方案通过预先约定各worker节点的数值分配规则,实现无锁并行生成有序稠密的序列值。该算法能更好地避免数据倾斜问题,适用于分布式环境下高效生成连续序列值的场景。

2025-06-18 22:55:07 619

原创 计算血缘 ---- 一个天马星空的想法速记

在处理千亿级别大表的分组求和计算时,计算机通常采用全量扫描的方法,而人类则会根据更新的数据特征,智能地调整计算结果。为了提升计算机的智能性,可以引入“计算血缘”概念,记录每行数据与源文件的对应关系,从而在数据更新时仅重新计算相关文件,提高效率。然而,这种方法的效果取决于数据分布的集中程度。相比之下,人类基于增量计算的算法更为高效,如GIC算法和OceanBase中的“增量物化视图”技术,它们支持聚合和简单连接操作,但存在一定限制。总体而言,结合人类智能的计算方法在优化大数据处理效率方面更具潜力。

2025-05-20 03:46:30 239

原创 对 Lambda 架构问题的深入理解

答:因为 Flink 的计算有时间窗口的概念,比如:每个整点,计算上一个小时的销售额。因为队列延迟、网络出错、重试导致数据重复等原因,会让 Kafka 等队列中的数据不能完全被信任,上一个小时的数据不一定真的全了,可能有一些数据要等几分钟才到,也有可能永远不到。原因如下,特别是第一条,会让业务运营存在不确定性,为了应对这种不确定性,可能需要预留出业务余量,造成浪费。简而言之:因为实时数据不准确,那么 Serving 的到的数据肯定也不准确。• 结果第二天离线数据跑完,真实注册是 1100,实际早就达成了。

2025-05-20 00:28:18 713

原创 基于 std::visit 和 std::variant 的请求分发

在数据库实现中,消息处理通常通过为每个消息设计一个code,并使用switch-case进行分发。这种方式逻辑清晰,便于理解和问题定位,但存在管理code复杂、新增消息类型需多处修改等缺点。文章介绍了一种基于std::visit和std::variant的请求分发方法,通过将请求封装为variant类型,利用std::visit根据请求类型自动调用相应的处理函数。这种方法在面向对象的角度更为干净,且std::visit内部通过索引自动生成类似switch-case的代码,简化了消息分发的实现。

2025-05-17 03:44:30 289

原创 ETL 学习

【Draft】本文未完成。

2025-05-14 04:58:42 455

原创 无意看到一个我20年前的帖子

http://forum.osdev.org/viewtopic.php?p=77313

2025-05-14 03:13:49 136

原创 数据库领域的 Data Analytics 与 Data Engineering 分别是什么概念?

在 Snowflake 和 Databricks 的语境中,"Data Analytics revenue" 和 "Data Engineering revenue" 虽然并非官方财报中的标准分类,但在业务拓展和市场细分中具有重要意义。Data Analytics 收入主要来源于客户将平台用于数据分析、BI 报表、探索性分析等场景,而 Data Engineering 收入则来自数据管道开发、ETL/ELT 工作流、数据清洗等工程类任务。尽管数据分析和数据工程在数据生

2025-05-14 02:49:21 1102

原创 局部和整体的关系

这是一个非常本质的问题,其实你已经接近数学和物理中“几何本质”的核心了。如果你愿意,我可以给你举几个现实中的例子(比如地球地图拼贴、天气预测、物理场)来加深这个理念。👉 比如我们站在地球上,只能看到脚下那一小块平面(局部),但整个地球是球体(整体)。🧩「如果我们知道每个局部是怎样的,它们又是如何连接的,那整个空间会是什么样?• 局部都像欧几里得空间(我们熟悉的直角坐标系、平面等)🧠 例子 3:人脑的理解方式(局部推理构建整体认知)• 构建出完整的空间认知(比如你能“想象”你的家)

2025-04-29 22:26:32 950

原创 GPU 架构入门笔记

引文位置:https://www.trainy.ai/blog/gpu-utilization-misleading。相关概念是通过 ChatGPT 迅速学习总结而成。

2025-04-28 23:48:00 741

原创 std::vector 自定义分配器

在 std::vector<T, Alloc> 的实现中,会通过 allocator_traits<Alloc>::rebind_alloc<U>(或直接用 Alloc::rebind<U>::other)来为不同用途分配内存。在 C++17 及以前需要自定义,但从 C++20 起 allocator_traits 会使用 std::allocator_traits::construct,你可以省略这两个方法,让 allocator_traits 使用完美转发到 ::new。

2025-04-22 23:22:32 1036

原创 std::move

如果写一个相关的教程,完全不应该从 std::move 入手,而是应该从如何降低对象拷贝代价入手。所以,std::move 的确什么事情都不做,它只是提示编译器,去调用支持 move 语义的函数而已,具体做事情的,是这些函数。Note:STL 中,vector 的 emplace_back、push_back 等也实现了支持 move 语义等版本。对于这种情况,就算用了 std::move,也没有什么用。有些时候,我们不希望做深拷贝。此时,下面的逻辑取决于 A 的拷贝构造函数实现,一般来说,会把。

2025-03-19 22:20:47 426

原创 DailyNotes 增加提醒功能

TODO:准备给 DailyNotes 增加一个提醒功能,准备接入 AI 来做一些事情。试了一下,非常靠谱。具体 DailyNotes 和 Ollama 的交互方式,可以直接调用命令行,也可以走网络API。

2025-03-05 23:40:24 390

原创 深入理解 Clang-Tidy 的窄整形转换警告(Narrowing Conversion)及其配置方法

窄整形转换是指将一个较大范围的数据类型转换为一个较小范围的数据类型,可能导致数据丢失或溢出。常见的转换包括将 int 转换为 short 或将 size_t 转换为 int。如果目标类型的范围比源类型小,则可能丢失数据,尤其是在数值超出目标类型的表示范围时。例子 1:窄整形转换假设我们在 64 位系统中工作,size_t 和 ptrdiff_t 是 8 字节类型,而 int 和 short 是 4 字节和 2 字节类型。如果将一个大范围的类型转换为较小范围的类型,就可能发生溢出或数据丢失。

2025-02-28 03:48:31 2296

排队论---我收集的

排队论---我收集的 排队论---我收集的 排队论---我收集的

2008-09-08

FASS简介-抗锯齿原理

FSAA 是 full scene anti-alias 的缩写,有些人将其译为全景反锯齿,还算是合理。不过,倒底 FSAA 是什么呢?为什么要「全景」(full scene)?「半景」不行吗?(其实相对于 FSAA 的是 edge AA,「边缘反锯齿」)反锯齿(anti-alias)又是怎么回事呢?

2009-01-18

同义词词林(扩展版)

《同义词词林(扩展版)》每个词的类编码就应该包含了他全部的信息。 对于原版同义词词林,编码的第一个字母代表该词所属的大类,第二个字母代表中类,后两位字母代表小类。 同义词词林原版是梅家驹先生人工构造的,同义的原则应该是他老人家对这些词的理解吧。同义的原则没有明确的说明,这也是目前一个研究方向--复述(paraphrasing)--关心的一个问题。

2010-05-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除