自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 CAN通讯协议

CAN是差分通讯,总线电平分为显性电平(Dominant Level)和隐形电平(Recessive Level)两种,总线必须处于两种电平之一,总线上执行逻辑上的线与时,显性电平为0,隐形电平为1。总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备。ACK(ACK Slot):应答槽位,发送方发送1(隐形),接收方回应0(显性),判断数据有没有被接收方接收;

2025-12-22 16:57:48 249

原创 Gin笔记二之gin.Engine和路由设置

同时第三行输出路由信息的地方,标明了这个路由指向的处理函数,后面的括号里是 3 handlers,这个意思是除了我们处理路由的 handler,还有两个默认的中间件 handler,也就是这里的 Logger() 和 Recovery() 中间件。在接口调用的时候,如果我们使用的是 gin.Default(),那么客户端不会报错,而是会收到一个 HTTP 状态码为 500 的报错信息,而如果使用的是 gin.New(),客户端则会直接发生错误。这条日志信息的输出就是 Logger() 这个中间件起的作用。

2025-12-22 16:57:14 358

原创 【URP】Unity[抗锯齿]原理实现与对比

分三阶段实现:边缘检测(基于颜色/深度差)、权重计算(分析边缘模式)、混合执行(沿边缘方向插值)。例如,当检测到斜线边缘时,会模糊相邻像素以消除阶梯状锯齿‌。‌纹理资源‌:依赖预计算的AreaTex(存储混合模式)和SearchTex(存储搜索方向),需导入为Texture2D资源。‌动态混合策略‌:基于运动向量长度调整混合权重,静态区域权重低(保留更多历史数据),动态区域权重高(减少拖影)‌权重计算阶段‌:通过AreaTex和SearchTex分析边缘形态(L形/T形/对角线),计算混合权重。

2025-12-22 16:55:37 526

原创 Java并发编程利器:深入解析13个原子操作类

System.out.println("索引4加5后的值: " + newValue + ", 数组: " + atomicArray.toString());System.out.println("CAS操作结果: " + success + ", 当前值: " + atomicBoolean.get());System.out.println("CAS操作结果: " + success + ", 当前用户: " + atomicUser.get());

2025-12-22 16:55:01 610

原创 从零开始实现简易版Netty(九) MyNetty 实现池化内存的线程本地缓存

当然,线程本地缓存也不是没有缺点的,线程本地缓存毫无疑问增加了内存的开销,规格繁多的本地池化内存段对象多数时候都只会静静地在缓存中等待被使用(视为内部碎片),因此线程本地所能缓存的池化内存段数量是被严格限制的,使用者需要在池化内存分配效率与空间利用率的取舍上达成平衡。具体的实现细节,我们在下文中结合源码再展开介绍。在jemalloc的论文中提到,为了减少线程之间对Arena的争抢,jemalloc设置了多个Arena区域,并使用特别的算法使得每个Arena尽可能的被线程均匀的使用。

2025-12-21 14:01:05 795

原创 WPF/C#:使用Microsoft Agent Framework框架创建一个带有审批功能的终端Agent

最近新出了一个Microsoft Agent Framework框架,我感觉还挺有意思的,就通过它的那个Using function tools with human in the loop approvals例子,做了一个终端助手Agent。该框架还提供了基础构建模块,包括模型客户端(聊天补全和响应)、用于状态管理的代理线程、用于代理记忆的上下文提供程序、用于拦截代理操作的中间件,以及用于工具集成的MCP客户端。工作流:基于图形的工作流,用于连接多个代理和功能,以执行复杂的多步骤任务。

2025-12-21 14:00:27 742

原创 边缘机房架构思考

另外 n9e-edge 产生的告警事件没法写到中心数据库了,所以你在页面上没法看到相关的告警事件,但只要美东的外网出口没问题,n9e-edge 产生的告警事件还是可以推送出去的,因为告警媒介都是走的外网,比如钉钉、企微、Slack,都是外网 SaaS 服务。告警判定是周期性的,比如15秒一次,很频繁,我们需要确保查询时网络链路是好的,最佳实践就是把告警引擎直接部署到美东,这样本机房查询,就没问题了。举个例子,假设有北京、上海、美东三个数据中心,北京和上海之间有良好的专线打通,而美东和国内网络链路较差。

2025-12-20 15:10:09 293

原创 超越基础:SightAI 智能路由与多模型选择实战

{"model": "gpt-4.1-mini","messages": [{"role": "user", "content": "北京现在的天气怎么样?content = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "")if content:print(content, end="", flush=True) # 实时打印响应内容except json.JSONDecodeError:print("解析流数据失败")

2025-12-20 15:09:11 280

原创 【光照】Unity[PBR]环境光中的[漫反射]

漫反射辐照(Diffuse Irradiance)在URP PBR中用于模拟环境光对物体表面的均匀散射效果,通过预计算环境立方体贴图的低频光照信息,为动态物体提供间接漫反射光照。Unity采用三阶SH(9个系数),仅需存储RGB三个通道的9个浮点数,相比立方体贴图内存占用减少99.8%。该技术解决了动态物体无法实时计算全局光照的问题,通过球谐函数(SH)或光照探针存储预计算数据,显著降低实时渲染开销。采用三层球谐基函数压缩环境光数据,内存占用降低90%以上,同时支持动态光照探针混合,实现移动端高效运行。

2025-12-18 20:54:25 366

原创 OFD文档落地技术路径研究

因此这种OFD文档还需要进行业务数据的补录,由于业务数据的产生和数据补录在流程时序、开发组织、逻辑模块划分等方面距离较远,因此实际上落地上困难重重,这导致生成的OFD文档包含的可自动抽取的业务数据很少,距离OFD-H的预期目标还很远。在这种设计器中,文档包含多个文档元素,大体分为文本标签,图片,勾线框等多种文档元素,所有的元素都使用确定的绝对坐标值,也就是Left,Top,Width,Height这4个数值来确定文档元素在文档中的位置。虽然最后生成的OFD文档质量不高,是应付式合规,但总算是有了零的突破。

2025-12-18 20:53:26 332

原创 FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap

StreamCap的源码托管地址为https://github.com/ihmily/StreamCap(星星数2.4k),国内的镜像地址为https://gitcode.com/gh_mirrors/st/StreamCap。最新版本是2025年8月发布的v1.0.2,可见该框架的源码更新十分及时,该版本的源码下载链接为https://github.com/ihmily/StreamCap/archive/refs/tags/v1.0.2.tar.gz。

2025-12-17 18:39:05 291

原创 终曲:NOIP2025游记

nyyjshcz,lyxhsx,多喝岩浆,fangzichang,QAQfj5,Leoair,expnoi,zzzcr,Maraschino,Edward2019。「自主复习」带给我的,不是是 Last Dance 的慌张,而是足够的用来思考「过去和未来是什么东西」的时间。Thomaswmy,RiceFruit,wxy2010,Green&White,不知名用户,Milmon……那就先验证一下这个转化的正确性。肯定是一个「能买即买」的策略,关键是要不要让已经买掉的「一对糖」少买几对,把这些钱留给单买的糖。

2025-12-17 18:38:25 459

原创 Laravel 乐观锁:高并发场景下的性能优化利器

无论你构建的是电商平台、社交应用还是支付系统,当面对高并发场景时,请记住 Maria 的故事。而乐观系统仍然以 200ms 的平均响应时间稳定运行,处理的请求量是前者的 10 倍。在高并发的互联网世界中,每一毫秒的延迟都会影响用户体验,每一次失败的请求都可能流失用户。乐观锁为我们提供了两全其美的方案:极致的性能和坚如磐石的一致性。他们的系统像一条多车道的高速公路,相信大多数时候车辆(请求)不会相撞。这就像编辑共享的 Google 文档——你不会在思考写什么的时候锁定整个文档。来看看 Maria 的故事。

2025-12-15 11:28:36 770

原创 .NET+AI | MEAI | ChatOptions 详解(5)

ChatOptions 是 Microsoft.Extensions.AI 中传递给 IChatClient 的统一配置容器,用于在单次请求中精准控制生成策略、工具调用和扩展特性。["strictJsonSchema"] = true // OpenAI 的严格 JSON Schema 模式。IncludeUsage = true, // OpenAI 特有:在流式响应中包含使用统计。// - TopP: 0.95 (来自 RawRepresentationFactory,优先级更高)

2025-12-15 11:27:42 879

原创 万丈高楼平地起:从“输入-处理-输出”第一性原理,看懂系统架构的演进

从最广义的范畴来看,一个系统(System)被定义为一个由多个相互关联、相互作用的组成部分构成的有机整体,它遵循特定的规则运作,旨在实现一个或多个预设的目标。当并发请求从每秒几十次飙升至每秒数十万次时,单一节点的物理资源——无论是处理器的计算核心、内存的容量,还是硬盘I/O和网络带宽,都会迅速达到饱和状态,导致响应延迟急剧增加,甚至完全崩溃。对于互联网应用而言,用户规模的增长和流量的瞬时波动,是其必须面对的常态。然而,这个架构的演进过程,在解决了旧问题的同时,也引入了一系列全新的、更为复杂的挑战。

2025-12-14 10:08:57 355

原创 Makefile极简指南

目标:依赖 + Tab命令(Tab 是关键);CC(编译器)、CFLAGS(编译选项)、OBJS(中间文件),便于维护;简化技巧:模式规则%.o: %.c减少重复代码,自动变量$@$<$^简化命令;嵌入式适配:替换CC为交叉编译器,添加MCU 架构和Thumb 指令集选项;增量编译:修改单个文件仅重新编译对应.o,大幅节省时间。

2025-12-14 10:00:59 404

原创 基于 Word 模板占位符的动态文档生成实践(源码+保姆版)

setCellText(table.getRow(2).getCell(3), "数量:" + order.getQuantity());setCellText(table.getRow(2).getCell(1), "电压:" + order.getVoltage());setCellText(table.getRow(2).getCell(2), "电流:" + order.getCurrent());setCellText(table.getRow(0).getCell(0), "客户单位:");

2025-12-13 17:16:45 365

原创 CAN通讯协议

CAN是差分通讯,总线电平分为显性电平(Dominant Level)和隐形电平(Recessive Level)两种,总线必须处于两种电平之一,总线上执行逻辑上的线与时,显性电平为0,隐形电平为1。总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备。ACK(ACK Slot):应答槽位,发送方发送1(隐形),接收方回应0(显性),判断数据有没有被接收方接收;

2025-12-13 17:15:52 423

原创 Mac端查词翻译工作流:基于欧路词典与Raycast

下载Easy Dictionary插件,主要有快速查词翻译和OCR翻译功能,可以给不同功能设置别名或者快捷键,比如我给查词翻译设置了别名为di,所以只需要输入di,然后敲击空格,就可以开始查词了。配置AI翻译需要API Key,当然用Deepseek等AI模型也可以,如果想白嫖Gemini的免费额度,构建一个Gemini号池,可以参考这篇博客。选中需要翻译的文字,输入查词指令(我设置为di)即可快速调用预先设置的翻译引擎进行翻译(我设置的是谷歌,DeepL和Gemini AI)

2025-12-12 10:20:52 442

原创 QARM:多模态语义对齐与量化在推荐系统中的实践路径

例如,VQ code 的第一个维度 v_1 对应一个大小为 |I| × d_emb 的 embedding 矩阵(其中 |I| 是物品总数,d_emb 是 embedding 维度),从该矩阵中查找索引 v_1^i 对应的行向量,即可得到该 code 的 embedding 表示。如果业务场景中的用户行为数据稀疏,或者现有的召回模型质量较差,那么构造出的 item-item 样本对可能无法充分反映真实的用户偏好模式,导致对齐训练的效果受限。论文在快手的广告和电商两大业务场景中进行了详尽的离线和在线实验。

2025-12-12 10:19:38 435

原创 一把锁的两种承诺:synchronized如何同时保证互斥与内存可见性?

根据happens-before规则,可以确定线程A对x的修改happens-before线程B对x的读取,从而保证了数据的一致性。当线程请求一个由其他线程持有的锁时,请求的线程会被阻塞,直到锁被释放。在Java内存模型中,对synchronized关键字建立如下的happens-before关系:释放锁的操作happens-before之后对同一把锁的获取的锁操作。synchronized释放锁的内存语义:当线程释放锁时,Java内存模型会把该线程对应的本地内存中的共享变量刷新到主内存中。

2025-12-11 09:26:49 396

原创 OI?原来这么简单-语法&算法入门篇

比如int a[5]的下标是 0-4,不是 1-5,访问a[5]会 “越界”,导致程序崩溃或输出乱码(相当于去翻别人的盒子,会被 “保安” 抓👮);不要在函数里定义 “全局变量”:函数里定义的变量是 “局部变量”,出了函数就 “消失” 了,全局变量在函数外定义,所有函数都能访问,但尽量少用(容易搞混)。指针是 C++ 的 “灵魂”,但对 OI 新手来说有点难,先简单了解:指针就是 “存储变量地址的变量”,相当于 “地址牌”🗺️,通过地址能找到变量本身。),少了i++,i永远是 1,会一直循环下去。

2025-12-11 09:26:01 360

原创 Flink学习笔记:时间与Watermark

今天我们先了解了 Flink 中时间的概念,EventTime 是事件产生的时间,通常由上游数据源生成,ProcessTime 是处理时间,通常由处理算子本身生成,IngestionTime是摄入时间,通常由 Flink 的 Source 生成。通过输出的日志,我们可以看出,当watermark推进到大于等于时间窗口的结束时间时,窗口就会完成计算并关闭。首先来学习 Flink 的时间属性,作为流处理引擎,时间是实时数据处理的重要依赖,特别是在做时序分析或者特定时间段数据处理时,时间的概念更显得尤为重要。

2025-12-10 09:23:31 371

原创 一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样

根据一篇Facebook AI发表的论文(arxiv.org/pdf/2010.02178),当输入尺寸不满足 特定条件 (详见下文) 时,填充只在特征图的单侧被有效应用,另一侧失活浪费,因此卷积核在不同空间位置收到的零值信息不平衡,从而模型在训练中,卷积核的某些位置(如左侧、上侧)会更频繁地与填充的零值相乘,导致其学习到的权重出现系统性偏斜。而这种不对称的权重会在前向传播中,在特征图上产生不依赖于图像内容的、固定的线条或网格状激活模式,也就是一些在平均图中的可见的线条。就是将降低特征图的空间分辨率。

2025-12-10 09:22:38 389

原创 告别 NDK 噩梦!用 Python + Chaquopy 在 Android 上 5 分钟跑通 Paddle AI 模型

它长得好看(UI 漂亮),反应快(交互流畅),负责接待客人(获取用户输入)。💡 提示:点击 "Sync Now" 后,Gradle 会自动下载 Python 解释器和 Paddle 库并打包进你的 APK。它手艺高超(AI 推理能力强),掌握着核心配方(模型),但它躲在后厨,见不到客人。在 src/main/python 目录下(如果没有就新建一个),创建 ai_engine.py。在过去,想让服务员和大厨配合,你需要专门修一条复杂的传送带(JNI/NDK),非常容易卡住。

2025-12-09 16:54:24 474

原创 Transformer 详解:从架构到训练

∂L/∂z[5, 1366] = (1/6)(0.015 - 1) = -0.1642 ← 正确答案,梯度=(概率-1)/n。│ ∂L/∂Logits[5, 10568] = (1/6)(0.023 - 0) = 0.004 ← 错误高概率预测 │。∂L/∂z[5, 0] = (1/6)(0.00002 - 0) = 0.0000033 ← 错误答案,梯度=概率/n。│ ∂L/∂Logits[5, 1366] = (1/6)(0.015 - 1) = -0.164 ← 正确答案 │。

2025-12-09 16:53:49 787

原创 C#AI系列(5): 从零开始 C# 轻松语音识别

c#使用的Whisper模型是.bin的二进制格式的,现在可以在https://huggingface.co/ggerganov/whisper.cpp/tree/main下载。//using (Mp3FileReader reader = new Mp3FileReader("D:\\Documents\\Temp\\WhisperDesktop\\上午对接结构录音.mp3"))在转换时,语音越长,转换速度越慢,因此建议在转换前,主动对长语音进行分段。") // 否则大概率会输出繁体中文。

2025-12-08 11:30:21 834

原创 SGA性能调整与优化:从内部结构到实战思路

SGA内存抖动 SELECT BEGIN_TIME, END_TIME, DB_CACHE_SIZE, SHARED_POOL_SIZE FROM V$SGA_DYNAMIC_COMPONENTS_HISTORY WHERE END_TIME > SYSDATE-1;LIBRARY CACHE LOCK等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT = 'library cache lock';

2025-12-07 10:25:04 461

原创 建议由CDH迁移到CMP 7.13 平台(类Cloudera CDP,如华为鲲鹏 ARM 版)可以做到无缝切换平缓迁移

过去十年(约2015–2025年),Hadoop 作为“大数据”浪潮的核心引擎,曾被寄予厚望:它承诺以低成本、高扩展性的方式,让企业从海量数据中挖掘价值,实现智能决策、业务创新乃至行业颠覆。结果:Gartner 指出,超80%的企业数据湖最终变成“数据沼泽”(Data Swamp)——数据存在,但不可发现、不可理解、不可用。承诺:只要把所有原始数据(日志、点击流、传感器等)存入 HDFS,未来就能随时分析、挖掘价值。未来的赢家,不再是喊“大数据”口号最响的,而是能把数据嵌入业务流、决策流、智能流的务实者。

2025-12-07 10:24:30 317

原创 python代码封装成可执行文件

-------------------------- 线程类(避免UI卡死) --------------------------# -------------------------- 主窗口类 --------------------------# -------------------------- 工具类 --------------------------# -------------------------- 主函数 --------------------------

2025-12-01 16:11:54 579

原创 结构化机器学习项目 第二周:误差分析与学习方法(二)数据不匹配问题

概念原理比喻分布不匹配(Distribution Mismatch)训练集与真实应用数据的来源或特征不同,导致训练指标无法反映真实表现。你在安静的教室练习口语,但真正考试是在嘈杂的咖啡厅,自然效果会掉。训练验证集(Training-Dev Set)从训练分布中再划分一部分不参与训练的数据,用来区分“模型能力不足”和“分布不同造成的偏差”。像是给你准备一张“模拟考试卷”,难度、风格都和练习册一样,用来判断你是否真的掌握。数据不匹配误差(Data Mismatch Error)

2025-12-01 16:10:35 860 1

空空如也

空空如也

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

TA关注的人

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