自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用通用数据引用表示法简化 AI 智能体的数据互操作

在当今AI智能体(Agent)、模型上下文协议(MCP)、函数调用(Function Calling)和技能(Skill)架构中,已成为核心瓶颈。每个系统、每个协议、每个服务都采用独特的数据引用方式——配置文件路径、API端点、数据库查询、环境变量,形成了复杂的“数据孤岛”。开发者不得不为每种数据源编写特定的访问逻辑,而智能体则难以跨系统理解和操作数据。通过的统一模式,为AI系统提供了简洁、一致、可扩展的数据定位规范。本文将深入探讨UDRS如何赋能AI生态系统的各个层面。

2026-01-06 15:21:28 536

原创 通用数据引用表示法:基于协议-URI-JSONPath的简洁数据定位规范

(* 完整UDRS语法 *)(* 协议部分 *)(* URI部分 - 简化定义 *)(* 如data:协议 *)(* JSONPath部分 *)(* 可选,通常省略 *)(* 基本元素 *)(* 字符串 *)(* 布尔表达式 - 简化 *)(* 字面量 *)(* 字符类 *)char =?;(* URI保留字符 *)" | "=";

2026-01-06 15:15:40 287

原创 回到原点再出发2

二十年前,本文的一位作者联合发表了一篇论文,评论了过去 40 年间数据模型的研究和发展,发现尽管人们不断尝试提出新方案,关系模型和 SQL 仍然是数据库主流技术。SQL 从新方法中吸取了最好的思想。我们重新审视问题,发现从 2005 年以来,相同的演进仍在继续。人们仍在试图提供比 SQL 或关系模型更好的方案,而关系模型持续占据数据模型的主导地位,同时 SQL 也不断扩展,从其他数据模型中汲取思想。我们认为未来这样的情况仍然存在,SQL 和关系型数据库的持续演进。

2025-12-21 09:58:25 955

原创 关系数据库的四大支柱

这意味着,简单的运算可以像积木一样,安全地组合成任意复杂的自定义运算,而系统始终在操作同一种类型的对象(关系)。其持久的生命力,并非偶然,而是源于其设计哲学中几个相互支撑、浑然一体的核心支柱:以关系为基础的数据抽象、基于封闭集合运算的强大表达能力、声明式查询语言与优化器,以及将操作原子化的可靠事务机制。这一体系犹如一座经典而永恒的建筑杰作:关系模型是坚实的地基,关系代数是精密的钢筋骨架,声明式查询与优化器如同高效的智能控制系统,事务则可靠的安全防护机制。四、业务保障:事务——从数据运算到业务操作的飞跃。

2025-12-16 15:04:30 427

原创 一个简单的 PowerShell REPL 脚本

【代码】一个简单的 PowerShell REPL 脚本。

2025-11-07 22:43:56 227

原创 学习Hilt注解

注解是元数据,用于为代码(类、方法、字段等)添加标记信息,本身不直接影响程序行为。要学习如何使用别人定义的 Java 注解,通常要了解注解的作用目标、生命周期和元数据的处理细节。

2025-10-20 15:03:10 456

原创 在Kotlin中安全的管理资源

当作用域结束后,协程中的对象不再有效(可能尚未回收,但对于应用程序来说,对象生命周期已经结束)。安全管理资源的方法是自动释放资源。对于长生命周期资源,需要使用RAII(Resource Acquisition Is Initialization,资源获取即初始化)。由于这类对象的生命周期跨越多个方法或协程,不能使用“即用即释放”的策略管理,需要使用RAII策略,将资源释放代码加入到Job.invokeOnCompletion中。// 离开use作用域后,自动调用r.close()释放资源。

2025-08-30 13:06:35 829

原创 软件的本质与生命特征

软件不仅是代码堆砌的产物,它的真正价值在于:成为 业务活动中各相关方利益的数字化保护与执行机制。因此,软件的功能并不是孤立存在的,而是现实利益格局的数字映射。

2025-08-23 04:42:29 566

原创 构建Node.js单可执行应用(SEA)的方法

如果为了降低部署复杂度,可以考虑使用@vercel/ncc。除非有特别理由,不建议使用SEA。

2025-08-14 11:57:19 926

原创 在nodejs中使用Java方法

JSON-RPC 2.0是一种轻量级、无状态的远程过程调用(RPC)协议,使用JSON作为数据交换格式。表1 请求对象字段名类型必填说明jsonrpcstring是固定为 "2.0"methodstring是方法名params否参数id否请求标识符代码10 请求对象示例"id": 1表2 响应对象字段名类型必填说明jsonrpcstring是固定为 "2.0"resultany否结果error错误对象否错误信息id是。

2025-08-09 13:09:16 523

原创 x86汇编语言笔记

假设我们修改的是从右开始的第 位( 算第1位),即。在表示有符号整数时,MSB用来表示符号,0表示正数,1表示负数。考虑到计算机中实际使用的整数都属于 环,其零元是 的倍数(包括0),因此 也是 的加法逆元。我们用 表示 按位取反,显然 ,因此 的补码就是。依次压栈EAX/ECX/EDX/EBX/ESP(原值)/EBP/ESI/EDI。依次压栈AX/CX/DX/BX/SP(原值)/BP/SI/DI。add/sub/neg操作结果会影响ZF/CF/SF/OF/PF。

2025-08-09 01:28:23 767

原创 MySQL definer does not exist 问题分析

代码3 修改存储过程定义者。

2025-08-08 23:26:37 1166

原创 汇编语言和高级语言的差异

if (read_value() == 0x10) { // 读取、比较、条件判断内联。前6个整形参数通过RDI/RSI/RDX/RCX/R8/R9传递。leave等同于 mov esp, ebp;leave等同于mov rsp, rbp;dq .case0;[ebp-8] 本地变量2 (temp2)call do_something;mov rcx, 5;

2025-08-08 22:59:41 977

原创 GLSL 3.0简介

着色语言Shading Language用于调整渲染管线的GPU编程语言。GLSL 3.0顶点Vertex顶点是构成3D模型的基本单位,包含位置、法线、纹理坐标、颜色等属性。例如,一个立方体由8个顶点定义,每个顶点存储其在三维空间中的坐标。顶点着色器Vertex Shader从顶点属性(位置、法线等)生成中间数据的函数。顶点着色器控制几何形态(如动画、变形)。图元Primitive图元是由顶点组合成的基础几何形状,如点、线、三角形。例如,两个顶点构成一条线,三个顶点构成一个三角形面片。

2025-07-26 21:51:35 837

原创 Camera2API笔记

在CameraCaptureSession中,可以连续且不等待拍摄完成就发送新CaptureRequest。但要注意避免请求过多超出流水线容量,导致帧丢弃或延迟。可以通过CaptureCallback监听状态,控制请求频率。通过CameraCharacteristics的REQUEST_PIPELINE_MAX_DEPTH可以得到流水线容量。

2025-07-10 22:57:45 1523

原创 使用协程简化异步资源获取操作

Kotlin为这两种场景提供了解决方案:使用挂起函数简化一次性资源获取,使用流处理持续事件通知。关于事件流处理方案详见《将listener转换为事件流》一文。本文聚焦第一种场景:如何简化异步资源获取操作。

2025-07-08 23:36:08 811

原创 Kotlin流操作符简介

【代码】Kotlin流操作符简介。

2025-07-07 18:32:07 339

原创 Java类加载器getResource行为简单分析

ClassLoader是一个抽象类,实际使用的是URLClassLoader。URLClassPath内部使用3个加载器:Loader、FileLoader和JarLoader,分别从远程(HTTP)、本地目录和jar包中加载资源。JarFile派生自ZipFile,加载jar文件项的代码是。如果没有目录,返回null。检查一番,原来是classpath中只有jar包,没有目录。因此当classpath中只有jar包时,时,JarLoader无法加载资源。,而如果classpath包含目录,

2025-07-04 22:30:12 717

原创 ViewModel是EventFlow-State映射

ViewModel负责组装界面状态State。引发State变换的原因有很多,比如用户点击某个按钮,一次网络请求受到应答,一次本地数据库查询返回结果等等。因此ViewModel是根据各种事件生成State的对象,换句话说,是一个从多个事件流到状态的映射。用图来表示就是用户交互 ───▶ 事件流 ───┤ ││ViewModel├───▶ UI 状态 ───▶ 渲染UI数据变更 ───▶ 数据流 ───┤ │。

2025-07-01 20:23:46 743

原创 将listener转换为事件流

考虑到listener/callback实际上是一种事件通知/触发机制,我们可以利用Kotlin中处理事件的工具:流,将listener/callback转换成事件流。从listener/callback到事件流,代码完成了三种范式转换。其次是从深层嵌套回调转换为平面流式操作。定义事件之后,可以使用callbackFlow将listener转换为事件流。┌───操作1───►操作2───►操作3───►完成┐。│ │ │ 回调2 │ │ │。│ │ │ │回调3│ │ │ │。

2025-06-27 21:29:47 974

原创 结构化并发

任务树让父任务与子任务的关联更加紧密。消息和和控制可以在树中传递,父任务可以感知子任务成功或失败,也可以控制子任务取消或退出。因此可以保证父任务结束(成功、失败或取消)时,全部子任务都已结束。让并发代码不再是一坨面条。按照启动关系,任务构成一棵树。显然这棵树将产生了一个清晰的边界,将并发任务和外部代码分隔开。结构化并发就是使用任务树约束并发任务边界,将变法任务变成像函数、类一样整体结构,作为构建复杂程序的基础。但并发程序很难开发,由于缺少边界约束,很难有效管理内部子任务,同时和外部代码产生清晰边界。

2025-06-25 21:25:32 301

原创 我对续体传递风格CPS的理解

显然fcps表达的就是“先对x应用f运算,再对结果应用另一个运算”,这里的k就代表“另一个运算”。观察h(x)和h2(x)的定义可以发现,h(x)的步骤是固定的、静态的。通过调整fcps的第二个参数,可以很容易的构造出“先应用f运算,再应用另一个运算”的函数。假设有两个运算y = f(x)和m = g(n),我们构造一个复杂运算h(x):首先对参数x应用f运算,再对结果应用g运算。我们可以从更抽象的层次理解h(x):首先对参数x应用f运算,再对结果应用另一个运算。

2025-06-25 01:12:32 259

原创 值类:Kotlin中的零成本抽象

仔细观察UserName和Email两个类,都是把一个String对象和一些专属操作绑定起来,构成一个新类型。用户名不能是空白,不能是"null",也不能包含"@"。值对象(Value Object)是领域驱动设计中不可变的概念片段,值类是Kotlin零开销的类型安全包装特性。如果当值对象只需封装单个值时,值类是最佳实现方式。Kotlin的值类(Value Class)是一种强大的类型安全工具,允许开发者创建语义明确的类型,并保持运行时零成本。但在运行时,值类不会产生额外性能损耗,可以做到零成本抽象。

2025-06-17 19:54:30 849

原创 从MVC到MVVM:从过程式走向声明式

以前学习MVVM模式时写了一篇。近来重读,有了一些新想法。从MVC模式到MVVM模式的变化,体现出在技术推动下,界面构造方法从传统的过程式向声明式演进。从“在坐标(x,y)到(a,b)之间绘制一个红色矩形”到“坐标(x,y)到(a,b)之间存在一个红色矩形”。我们先简单了解一下从MVC到MVVM的演进过程。图1 从MVC到MVVM的演进过程从上图可以看出,业务发展引发界面复杂度超出过程式构造方法适用范围,为演进提供了驱动力和必要性。而数据绑定等自动化技术的突破为演进提供了路径和可行性。

2025-06-14 18:23:35 1164

原创 CSS入门

本文档面向的读者是有一点HTML基础,希望学习CSS的开发者。文档内容分为基础、布局、进阶三部分。基础部分介绍CSS中常用和通用的元素样式、选择器以及盒模型。布局部分介绍如何在HTML中排列元素。进阶部分介绍CSS的高级内容,包括动画、函数、响应式设计等。文档附录包含了一些速查表,方便读者查阅。CSS是Cascading Style Sheets的缩写,翻译为层叠样式表。CSS是一种样式表语言,用来描述HTML文档的表现方式,如字体、色彩、背景色等等。我们先从一段简单的CSS代码开始。

2025-05-24 23:00:39 1075

原创 CSS手动布局

让元素浮动到上级元素盒子的左侧或右侧。浮动元素会被移出文档流,然后向左(右)平移,直到触碰盒子边界,或另一个浮动元素。其他内容环绕浮动元素排列,填充浮动元素右(左)侧和下方的空间。/* 相对(正常布局)位置。/* 视口固定位置。CSS支持单独设置某个元素的布局,最主要的属性是。也可以改变元素的位置。代码1 手动布局属性。

2025-05-07 20:45:57 428

原创 CSS分栏布局

浏览器使用这个值计算栏的数量,如果还有额外的空间,浏览器会增加栏的实际宽度。分栏布局将区域划分为若干垂直的栏,子元素放置到栏中,填满一个后再填充下一个。/* 内容优先填充靠左侧的栏。/* 内容平均分配到每个栏中。如果希望分栏容器中的某个子元素跨越所有的栏,可以将子元素的。属性,将内容优先填满靠左侧的栏,或者平均分配到每个栏中。代码3 column-rule-*

2025-05-06 23:01:16 674

原创 CSS网格布局

minmax(min-content, 100px) /* min-content是不换行、不溢出时网格项需要的最小空间。minmax(100px, max-content) /* max-content是不换行、不截断时网格项自然占据的空间。minmax(auto, ...) /* 等价于 minmax(min-content, ...) */代码4 网格项的grid-column-start/grid-column-end属性可以调整放置位置或横跨多列。/* 网格项横跨3个行轨道。

2025-05-06 22:21:35 707

原创 正常流布局

元素分为块元素和行内元素两类。块元素独占一行,行内元素则是在行中,在前面元素的右边排列。如果一行排满了,行内元素继续从第二行开始排列。布局决定了元素的排列方式。正常布局是怎么排列元素的呢?各行从上到下,行内从左到右。,是一种特殊的行内元素,它像其他行内元素一样,在行内排列,同时像块元素一样可以设置高度、宽度和边距。如果希望为行内元素设置高度、宽度或垂直内外边距要怎么做呢?可以使用行内块元素。的元素,不产生换行,高度和宽度由元素内容决定,不能设置垂直方向的内边距和外边距。的元素,独占一行,可以设置高度。

2025-04-28 18:09:55 391

原创 弹性盒子布局

新的一行(列)默认排列在原行(列)的下方(右侧),这个方向叫做交叉轴方向。如果希望元素在水平或垂直方向依次排列,并且能够根据容器尺寸自动调整元素位置和大小,可以使用弹性盒子布局。,它就成为flex容器,它的下级元素成为flex元素。主轴方向由flex容器的。“排不下”有五种处理方法:一是收缩元素适配主轴长度,二是换行,三是溢出,四是截断,五是使用滚动轴。讲完了主轴上元素的排列方式,现在介绍元素在交叉轴方向的对齐方式,它由flex容器的。如果某个flex元素希望拥有独立的对齐方式,可以使用flex元素的。

2025-04-28 18:09:19 798

原创 CSS基础

CSS是Cascading Style Sheets的缩写,翻译为层叠样式表。CSS是一种样式表语言,用来描述HTML文档的表现方式,如字体、色彩、背景色等等。我们先从一段简单的CSS代码开始。代码1 CSS示例p {color: red;这段代码的效果是将HTML文档中全部<p>元素里的文本设置成红色。大括号里面的是CSS规则,格式为属性: 属性值;每条规则占一行,以半角分号结尾。属性和值之间以半角冒号分割,属性和值的前后可以添加空格。color表示文字色彩属性,red。

2025-04-24 21:16:50 1143

原创 AIP代码生成器——标准化接口开发智能工具

AIP代码生成器遵循Google API Improvement Proposal(AIP)设计准则,为RESTful API开发提供标准化方法和批量方法模板,快速生成符合AIP的代码框架。支持多种语言和框架。

2025-04-24 10:57:25 1037

原创 Vue3笔记

/script></script><template>模型实际上是双向的ref。每个v-model只包含一个简单的状态,并非整个组件整体状态的聚合。组件的整体状态由多个v-model组成。

2025-04-18 20:49:18 348 1

原创 VueRouter笔记

routes});

2025-04-18 20:48:40 303

原创 AIP目录

AIP是总结了谷歌API设计决策的设计文档,它也为其他人提供了用文档记录API设计规则和实践的框架和系统。专注于开发灵活API的设计文档。

2025-04-18 19:13:38 358

原创 AIP-236 策略预览

策略是一种资源,它提供规则,许可或拒绝对其他资源的访问。通常,策略的结果可以计算为特定的结果集合。未经充分验证就变更策略,可能会产生意外后果,严重影响客户的整体基础设施配置。为了安全的更新资源,利用策略推出API测试这些变更,是有好处的。预览是策略资源的安全推出机制,让客户能够在变更生效之前,验证所提交的变更对生产流量的影响。针对流量的策略评估结果会记录下来,为客户提供数据,测试变更是否正确。防火墙策略是适合预览的典型场景。使用流量评估新配置,观察哪些IP会被放行或拦截。

2025-04-18 19:12:22 1090

原创 AIP-235 批量方法:Delete

一些API允许用户在单个事务中删除一系列资源。批量删除方法提供了这个功能。

2025-04-15 22:06:03 948

原创 AIP-234 批量方法:Update

一些API允许用户在单个事务中修改一系列资源。批量更新方法提供了这个功能。

2025-04-15 22:05:31 726

原创 AIP-231 批量方法:Get

一些API允许用户获取一组特定资源在一个时间点(例如使用读事务)的状态。批量获取方法提供了这个功能。

2025-04-14 23:53:33 1079

原创 AIP-233 批量方法:Create

有些API需要允许用户在单个事务中创建多个资源。批量Create方法提供了这个功能。

2025-04-14 23:52:29 848

空空如也

空空如也

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

TA关注的人

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