<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[大模型大数据攻城狮的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/linweidong</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; linweidong]]></copyright><item><title><![CDATA[CRC 校验全解：从原理到查表法实战]]></title><link>https://blog.csdn.net/linweidong/article/details/168346379</link><guid>https://blog.csdn.net/linweidong/article/details/168346379</guid><author>linweidong</author><pubDate>Wed, 04 Nov 2026 07:32:50 +0800</pubDate><description><![CDATA[* crc.h —— CRC 计算库，C99，无第三方依赖 *//* ---- 参考实现：逐位算法，慢，但用作自检基准 ---- *//* 0xF4 *//* ---- 表驱动实现 ---- *//* 运行时建表，上电调用一次 *//* 半字节表，16 项 *//* ---- 分段计算：算到一半停下来，接着算 ---- */头文件本身就是一份小型契约文档。每个函数后面的注释是它对 “123456789” 的标准结果，也就是第二章表格里的 check 列。]]></description><category></category></item><item><title><![CDATA[Iceberg / Hudi / Paimon：三份账单与一张决策树]]></title><link>https://blog.csdn.net/linweidong/article/details/169269555</link><guid>https://blog.csdn.net/linweidong/article/details/169269555</guid><author>linweidong</author><pubDate>Wed, 04 Nov 2026 07:30:55 +0800</pubDate><description><![CDATA[从引擎收到 SQL 到 scan 规划完成、拿到所有待读 split 的墙钟时间。不含数据读取。元数据对象数（M）：planning 期间需要独立 GET 或 LIST 的对象个数。这个指标比时间更本质，因为它能跨存储介质换算。元数据字节数（B）：planning 期间真正下载的字节数。对象存储的计费和延迟都跟它走。：Iceberg 的会作为 Spark 的自定义指标上报，直接读。也可以在 driver 侧用触发规划并计时——注意 Spark 是惰性的，只写不触发任何规划，必须访问执行计划或者。]]></description><category></category></item><item><title><![CDATA[USB 设备开发实战：枚举、描述符与类驱动]]></title><link>https://blog.csdn.net/linweidong/article/details/168346351</link><guid>https://blog.csdn.net/linweidong/article/details/168346351</guid><author>linweidong</author><pubDate>Mon, 02 Nov 2026 12:33:10 +0800</pubDate><description><![CDATA[很多项目其实不需要真的鼠标键盘，只是想用一个免驱的双向通道。0x95, 0x40, /* Report Count (64) ← 64 字节 */这是一个 64 字节 IN + 64 字节 OUT 的自定义 HID。上位机用hidapi（跨平台）或者 Windows 的WriteFile就能收发。全速 HID 的最大吞吐估算：64 字节 × 1000 次/秒（）= 64 KB/s。这就是为什么很多人抱怨 HID 太慢。用高速（512 或 1024 字节包）→ 理论可以到几百 KB/s；]]></description><category></category></item><item><title><![CDATA[实时入湖架构：Kafka + Paimon 分层落盘设计实战]]></title><link>https://blog.csdn.net/linweidong/article/details/169744603</link><guid>https://blog.csdn.net/linweidong/article/details/169744603</guid><author>linweidong</author><pubDate>Mon, 02 Nov 2026 12:30:34 +0800</pubDate><description><![CDATA['write-buffer-size' = '256mb', -- 排序缓冲，默认 256MB'write-buffer-for-partition-table' = '128mb', -- 分区表的辅助缓冲（部分版本有）'local-sort.max-num-file-handles' = '256', -- 本地排序时同时打开的文件句柄'committers' = '2' -- 部分版本支持多个 committer 分摊压力决定单个 writer 在内存里能攒多少数据再排序落盘。它同时是。]]></description><category></category></item><item><title><![CDATA[Spark 小文件治理实战：从成因量化到合并策略与效果验证]]></title><link>https://blog.csdn.net/linweidong/article/details/169269705</link><guid>https://blog.csdn.net/linweidong/article/details/169269705</guid><author>linweidong</author><pubDate>Wed, 28 Oct 2026 06:45:39 +0800</pubDate><description><![CDATA[很多团队把小文件当成一个玄学问题，出了问题就怪"HDFS 不行"“Spark 不行”。我当年也这么想过，直到我们把一张表的写入链路从头到尾埋点统计了一遍，才发现小文件的数量是可以精确算出来的，而且误差在 5% 以内。核心公式其实很简单：
这个公式我后面会反复用到。它告诉我们一件事：只要你能控制"task 数"和"分区数"两个变量，你就能预测文件数。反过来，小文件失控，一定是这两个变量里至少有一个失控了。下面我把三个最常见的失控来源一个一个拆开，每个都给实测。我们最初定位问题，是从一个最不起眼的 Spark ]]></description><category></category></item><item><title><![CDATA[DMA 用了总出错？从配置到缓存一致性避坑]]></title><link>https://blog.csdn.net/linweidong/article/details/168346327</link><guid>https://blog.csdn.net/linweidong/article/details/168346327</guid><author>linweidong</author><pubDate>Mon, 26 Oct 2026 06:23:28 +0800</pubDate><description><![CDATA[我把这份清单贴在工位上，每次新写一个 DMA 通道就过一遍。它不是最佳实践的集合，是十五条我用故障换来的检查项。检查项判据1选对 DMA 控制器了吗？MDMA / DMA1 / DMA2 / BDMA，能访问目标内存吗？2RCC 时钟开了吗？DMA 时钟 + DMAMUX 时钟 + 外设时钟，三者都要3缓冲区在哪里？不能是栈（DTCM），不能超出该 DMA 的可访问域4缓冲区对齐了吗？]]></description><category></category></item><item><title><![CDATA[Flink 端到端 Exactly-Once 落地指南：从 Source 位点到 Sink 提交的全链路一致性]]></title><link>https://blog.csdn.net/linweidong/article/details/169069039</link><guid>https://blog.csdn.net/linweidong/article/details/169069039</guid><author>linweidong</author><pubDate>Mon, 26 Oct 2026 06:21:59 +0800</pubDate><description><![CDATA[内置 KafkaSink 覆盖了大多数场景，但总有对接内部系统的需求。我接过一个需求：结果要写进内部的一套 KV 存储，存储方提供了 begin/commit/rollback 三个 HTTP 接口，按批提交，批维度是一个事务。这就必须自己写 2PC。基于的实现骨架（1.x 经典 API；@Override// 恢复时，上次遗留的悬挂事务由基类调用 recoverAndAbort 清理@Override/** 把缓冲区写入当前事务（不提交） */return;]]></description><category></category></item><item><title><![CDATA[Flink CDC 实战：MySQL 数据秒级进实时数仓的完整工程链路]]></title><link>https://blog.csdn.net/linweidong/article/details/169069412</link><guid>https://blog.csdn.net/linweidong/article/details/169069412</guid><author>linweidong</author><pubDate>Sun, 25 Oct 2026 22:40:24 +0800</pubDate><description><![CDATA[有些业务字段 CDC 默认解析不对，比如用JSON类型存的字段、或者GEOMETRY空间类型。这时候要写自定义反序列化器，把 binlog 里的原始值转成你要的格式。下面是个处理JSON// CustomJsonDeserialization.java —— 把 binlog 里的 JSON 字段解析为 Flink Map 类型@Override// 拿到原始 JSON 字符串列if (raw!= null) {// 转成 GenericMap 塞回 RowData。]]></description><category></category></item><item><title><![CDATA[储能电站 SCADA 数据采集：IEC 61850 MMS、GOOSE、SV 三大协议深度对比与工程实现方案]]></title><link>https://blog.csdn.net/linweidong/article/details/168731418</link><guid>https://blog.csdn.net/linweidong/article/details/168731418</guid><author>linweidong</author><pubDate>Thu, 22 Oct 2026 08:43:12 +0800</pubDate><description><![CDATA[针对储能电站的 SCADA 数据采集软件开发，首先需要建立一个关键认知：MMS、GOOSE、SV 并不是三种可以互相替代的数据采集协议，而是分别服务于设备监控与控制、快速事件传递、连续采样值传输的三种通信机制。MMS：解决“设备现在是什么状态、发生过什么事件、能否执行控制命令”的问题。GOOSE：解决“某个保护或控制状态发生变化时，如何快速通知其他设备”的问题。SV（Sampled Values，采样值）：解决“如何连续、快速地传输电流和电压等原始采样数据”的问题。]]></description><category></category></item><item><title><![CDATA[mbedTLS 移植实战：给设备加把安全锁]]></title><link>https://blog.csdn.net/linweidong/article/details/168343164</link><guid>https://blog.csdn.net/linweidong/article/details/168343164</guid><author>linweidong</author><pubDate>Mon, 19 Oct 2026 07:01:48 +0800</pubDate><description><![CDATA[移植完成不等于安全落地。项目建议说明认证模式只允许OPTIONAL是中间人直通车；4.0 已基本 ban 掉，别跟版本较劲主机名校验必须漏一个等于名字校验裸奔，第 10.4 节扩展主密钥保持开启防重协商攻击的基线，3.x 默认开，别关重协商关历史安全问题多发区；换密钥宁可重连加会话恢复私钥存储Flash 读保护起步，TrustZone/安全单元最好明文私钥等于没双向认证；RDP 二级是及格线证书寿命公开信任服务器证书 ≤398 天，自有 PKI ≤2 年。]]></description><category></category></item><item><title><![CDATA[RTC 走偏、时间跳变？嵌入式时间管理的工程避坑]]></title><link>https://blog.csdn.net/linweidong/article/details/168248328</link><guid>https://blog.csdn.net/linweidong/article/details/168248328</guid><author>linweidong</author><pubDate>Sat, 17 Oct 2026 19:51:29 +0800</pubDate><description><![CDATA[如果想在掉电前优雅地做点事——flush 文件系统、保存运行状态、记一笔日志——靠的是 PVD（可编程电压检测）或掉电检测（BOD）。STM32 的 PVD 可以设阈值（比如 2.5 V），VDD 跌破阈值时产生中断或事件。问题是时间窗口。假设系统 3.3 V 供电、VBAT 稳压器在 VDD 低于 2 V 时才接管，从 PVD 触发（比如 2.9 V）到 VDD 彻底不可用，中间的时间取决于电源架构和负载电流，工业上常见的是几毫秒到几十毫秒。这点时间够干什么？保存几百字节到备份寄存器：够。]]></description><category></category></item><item><title><![CDATA[Redis 集群故障排查与修复实战：从 Connection refused 到内存打满的七个现场]]></title><link>https://blog.csdn.net/linweidong/article/details/167586126</link><guid>https://blog.csdn.net/linweidong/article/details/167586126</guid><author>linweidong</author><pubDate>Sun, 11 Oct 2026 16:20:39 +0800</pubDate><description><![CDATA[上个月我们生产环境的认证服务 cluster-app 在凌晨两点突然大面积报 Redis 连接错误。告警把我吵醒时，我第一反应是网络抖动，毕竟那段时间机房刚做过割接。但翻了眼监控就排除了——报错是，不是timeout，说明 TCP 握手阶段就被拒，不是链路慢。报错的 IP 是，可我翻遍 docker-compose 和，种子节点只写了和。这个压根没在任何配置里。我当时愣了一下，以为配置被谁改过，git blame了一番，没有。]]></description><category></category></item><item><title><![CDATA[一次根文件系统只读引发的 Docker 全链路级联故障：从 /dev/mapper 到 containerd 插件的完整排查手记]]></title><link>https://blog.csdn.net/linweidong/article/details/166946260</link><guid>https://blog.csdn.net/linweidong/article/details/166946260</guid><author>linweidong</author><pubDate>Thu, 01 Oct 2026 15:08:58 +0800</pubDate><description><![CDATA[生产环境的故障修复，不能只满足于 “现在好了”。你必须确认：下次重启服务器，它还能正常起来。尤其是这种和启动配置相关的故障，一定要做一次重启验证。不然你这次手动修好了，下次服务器重启，业务又挂了，那还是你的问题。所以在确认所有服务都正常、业务恢复之后，我安排了一次重启验证。findmnt /，确认是 rw；/data，确认是 rw；，确认 active；，确认关键插件都加载；，确认 active；，确认正常；，确认没有新增的严重错误。全部检查通过，才算真正的修复完成。]]></description><category></category></item><item><title><![CDATA[C++后端全场景提示词大全(一位老后端用十一年、三十万行生产代码换来的 AI 协作手册)]]></title><link>https://blog.csdn.net/linweidong/article/details/166014944</link><guid>https://blog.csdn.net/linweidong/article/details/166014944</guid><author>linweidong</author><pubDate>Sun, 20 Sep 2026 09:02:26 +0800</pubDate><description><![CDATA[四道 Java 根本不存在的鸿沟。]]></description><category></category></item><item><title><![CDATA[我把5年踩过的大数据开发的坑，写成了 48 个提示词模板]]></title><link>https://blog.csdn.net/linweidong/article/details/165245147</link><guid>https://blog.csdn.net/linweidong/article/details/165245147</guid><author>linweidong</author><pubDate>Mon, 14 Sep 2026 06:46:54 +0800</pubDate><description><![CDATA[适用情境：建指标体系、指标平台、或者发现多个部门对同一个词有不同理解时。这是我的压箱底模板之一。请帮我建立/治理下面的指标体系。【业务域】{如：交易域}【现有指标清单】{粘贴现有指标定义，或指标平台导出}【第一步 · 指标拆解】按"原子指标 + 修饰词 + 时间周期"的标准结构，把每个指标拆开：| 指标名 | 原子指标 | 业务限定（修饰词）| 时间周期 | 统计粒度 | 计算公式 | 数据来源 |原子指标定义规则：- 原子指标 = 业务动作 + 度量，如"支付金额"]]></description><category></category></item><item><title><![CDATA[分享最近2年积累的嵌入式全场景提示词大全]]></title><link>https://blog.csdn.net/linweidong/article/details/165244221</link><guid>https://blog.csdn.net/linweidong/article/details/165244221</guid><author>linweidong</author><pubDate>Mon, 14 Sep 2026 06:42:22 +0800</pubDate><description><![CDATA[裸机和 RTOS 是嵌入式的基本盘，也是 AI 最容易"想当然"的地方。它习惯写高级语言的并发模型，你却要的是"一个超级循环"或"几个任务 + 队列 + 信号量"。适用情境：你拿到一段口语化的功能描述（比如"上电先自检，绿灯闪，等按键，按下后采集温湿度，超阈值报警"），想让 AI 先帮你理清状态流转，再写代码。别直接让它写，先让它出状态机。提示词模板（可直接复制）：
调整技巧：裸机项目最怕 AI 把"轮询"和"中断"搞混。模板里第 2 条强制它区分三类执行位置，这能拦掉一大半坑。如果你的 MCU 是 STM]]></description><category></category></item><item><title><![CDATA[中科闻歌前端面试题及参考答案]]></title><link>https://blog.csdn.net/linweidong/article/details/164508030</link><guid>https://blog.csdn.net/linweidong/article/details/164508030</guid><author>linweidong</author><pubDate>Tue, 08 Sep 2026 08:38:21 +0800</pubDate><description><![CDATA[call、apply、bind 无法修改箭头函数内部 this，就算传入参数，绑定 this 的参数会直接被忽略。]]></description><category></category></item><item><title><![CDATA[中科闻歌Java面试题及参考答案]]></title><link>https://blog.csdn.net/linweidong/article/details/164508436</link><guid>https://blog.csdn.net/linweidong/article/details/164508436</guid><author>linweidong</author><pubDate>Tue, 08 Sep 2026 08:38:01 +0800</pubDate><description><![CDATA[Java 集合框架整体分为 Collection 与 Map 两大体系，Collection 存储独立单个元素，Map 存储键值对映射关系，面试答题关键点在于区分接口和具体实现类，不能只罗列类名，需要从底层存储结构出发推导性能、特性、线程安全情况，同时区分过时实现类，这部分属于面试加分点，很多面试人员只会背诵类名，忽略底层结构与线程安全带来的取舍。Collection 下分为 List、Set、Queue 三个子接口。List 集合特征为元素有序、允许元素重复，存入顺序和遍历取出顺序保持一致。ArrayLi]]></description><category></category></item><item><title><![CDATA[2026 普通 Python 开发转型 AI Agent：学习清单与面试地图]]></title><link>https://blog.csdn.net/linweidong/article/details/164431813</link><guid>https://blog.csdn.net/linweidong/article/details/164431813</guid><author>linweidong</author><pubDate>Mon, 07 Sep 2026 07:18:16 +0800</pubDate><description><![CDATA[一个 Agent 请求往往同时要调 LLM、查数据库、调 MCP、搜网页、请求第三方 API、读文件，全是 I/O 操作。I/O 的特点就是等——等网络、等磁盘、等别人响应，这段时间 CPU 是闲的。asyncio 干的事，就是在这段等待时间里切去干别的活。串行 2 秒，并发 1 秒，这就是 Agent 系统离不开 async 的原因。顺序执行是两个 1 秒相加，asyncio.gather 并发执行约等于 1 秒。]]></description><category></category></item><item><title><![CDATA[Java 后端转 AI Agent 开发：2026 年学习清单与面试高频考点]]></title><link>https://blog.csdn.net/linweidong/article/details/164423141</link><guid>https://blog.csdn.net/linweidong/article/details/164423141</guid><author>linweidong</author><pubDate>Mon, 07 Sep 2026 07:18:03 +0800</pubDate><description><![CDATA[很多教程说 "加个 Redis 存聊天记录就是 Memory"，这是错的。Memory 至少分五层：Short-term（当前会话上下文）、Working（任务进行中的中间状态）、Long-term（跨会话的用户偏好和事实）、Semantic（长期知识）、Episodic（历史经验）。]]></description><category></category></item></channel></rss>