JSON-RPC 2.0 vs REST API 详细对比分析
现在要开始做一个新的业务模块了,系统思考下 新的业务模式应该是采用 JSON-RPC 2.0 还是 老套路 REST API 的接口协议 ,系统的学习下
1. 基本概念
JSON-RPC 2.0
- 无状态的、轻量级的远程过程调用(RPC)协议
- 使用 JSON 作为数据格式
- 所有调用通过发送 JSON 对象完成
- 主要关注"动作"和"过程"
- 版本号固定为 “2.0”
REST
- 表述性状态转移(Representational State Transfer)
- 基于 HTTP 协议的架构风格
- 以资源为中心
- 使用标准 HTTP 方法操作资源
- 无版本概念,依赖 HTTP 协议
2. 请求格式对比
JSON-RPC 2.0 请求格式
{"jsonrpc": "2.0","method": "subtract","params": [42, 23],"id": 1
}
REST 请求格式
GET /api/v1/users/123
POST /api/v1/users
PUT /api/v1/users/123
DELETE /api/v1/users/123
3. 主要特点对比
JSON-RPC 2.0 特点
- 请求/响应格式固定
- 支持批量请求
- 支持通知(无需响应)
- 统一的错误处理机制
- 方法名自定义
- 所有操作都是 POST 请求
REST 特点
- 使用 HTTP 方法语义
- 以资源为中心
- 利用 HTTP 状态码
- 支持缓存机制
- URL 表达资源
- 支持多种 HTTP 方法
4. 适用场景
JSON-RPC 2.0 适合:
- 复杂业务逻辑处理
- 微服务间通信
- 需要批量操作
- 事件驱动系统
- 内部API系统
REST 适合:
- 资源的 CRUD 操作
- 需要缓存的场景
- 公开 API 接口
- 标准的 Web 服务
- 面向用户的 API
5. 示例代码
JSON-RPC 2.0 示例
单个请求:
{"jsonrpc": "2.0","method": "createUser","params": {"name": "张三","age": 25,"email": "zhangsan@example.com"},"id": 1
}
批量请求:
[{"jsonrpc": "2.0", "method": "getUser", "params": [1], "id": "1"},{"jsonrpc": "2.0", "method": "getUser", "params": [2], "id": "2"}
]
REST 示例
创建资源:
POST /api/users
Content-Type: application/json{"name": "张三","age": 25,"email": "zhangsan@example.com"
}
批量操作:
POST /api/users/batch
Content-Type: application/json{"users": [{"name": "张三", "age": 25},{"name": "李四", "age": 30}]
}
6. 优缺点对比
特性 | JSON-RPC 2.0 | REST |
---|---|---|
优点 | • 协议简单,易实现 • 支持批量请求 • 明确的错误处理 • 支持通知机制 • 适合复杂业务逻辑 | • 简单直观 • 优秀的缓存机制 • 良好的可扩展性 • 丰富的工具支持 • 符合 HTTP 语义 |
缺点 | • 不如 REST 直观 • 缓存机制较弱 • 工具支持较少 • 不符合 HTTP 语义 | • 复杂业务支持不友好 • URL 设计可能复杂 • 某些操作难以表示 • 可能需要多个请求 |
7. 安全性对比
安全特性 | JSON-RPC 2.0 | REST |
---|---|---|
认证机制 | 需要自行实现认证 | 标准 HTTP 认证 |
加密支持 | 可使用 HTTPS 加密 | HTTPS 加密 |
权限控制 | 需要方法级权限控制 | OAuth/JWT 支持 |
错误处理 | 统一的错误处理 | HTTP 状态码错误处理 |
8. 性能特性对比
性能特性 | JSON-RPC 2.0 | REST |
---|---|---|
请求优化 | 批量请求优化 | HTTP 缓存机制 |
开销控制 | 通知机制减少开销 | 条件请求 |
数据处理 | 自定义压缩机制 | 资源压缩 |
连接管理 | 连接复用 | 连接池化 |
9. 开发工具支持对比
工具特性 | JSON-RPC 2.0 | REST |
---|---|---|
工具生态 | 工具相对较少 | 丰富的工具生态 |
文档支持 | 需要自定义文档 | Swagger/OpenAPI 支持 |
测试工具 | 基础测试工具 | Postman 等测试工具 |
代码生成 | 客户端生成简单 | 完善的代码生成工具 |
10. 选择建议
-
选择 JSON-RPC 2.0 的情况:
- 内部服务间通信
- 复杂业务逻辑处理
- 需要批量操作
- 性能要求高的场景
-
选择 REST 的情况:
- 公开 API 接口
- 标准的 CRUD 操作
- 需要好的缓存机制
- 需要良好的工具支持
-
混合使用的情况:
- REST 用于资源操作
- JSON-RPC 用于复杂业务逻辑
- 根据具体场景选择合适的方式
11. 大模型 MCP (Model Context Protocol) 案例分析
11.1 为什么 MCP 选择 JSON-RPC 2.0
MCP(Model Context Protocol)是大模型与工具交互的协议。它选择 JSON-RPC 2.0 而不是 RESTful API 有其深层的技术考虑:
11.2 大模型通信的特殊需求
// MCP 典型的函数调用请求
{"jsonrpc": "2.0","method": "mcp_sequential_thinking_sequentialthinking","params": {"thought": "分析当前问题...","nextThoughtNeeded": true,"thoughtNumber": 1,"totalThoughts": 5},"id": 1
}
主要原因:
- 需要复杂的上下文传递
- 需要流式思考过程
- 需要支持函数调用链
- 需要支持异步操作
- 需要处理大量的结构化数据
11.3 函数调用特性
// 函数调用链示例
{"jsonrpc": "2.0","method": "mcp_webresearch_search_google","params": {"query": "最新 AI 发展","explanation": "搜索最新 AI 发展动态"},"id": "search_1"
}// 后续的函数调用
{"jsonrpc": "2.0","method": "mcp_webresearch_visit_page","params": {"url": "https://example.com/ai-news","takeScreenshot": true},"id": "visit_1"
}
优势:
- 函数调用的自然表达
- 参数传递的灵活性
- 调用链的清晰表达
- 错误处理的统一性
11.4 流式思考过程的支持
// 连续思考过程
{"jsonrpc": "2.0","method": "mcp_sequential_thinking_sequentialthinking","params": {"thought": "第一步:理解问题本质","thoughtNumber": 1,"totalThoughts": 3,"nextThoughtNeeded": true},"id": "thought_1"
}// 下一个思考步骤
{"jsonrpc": "2.0","method": "mcp_sequential_thinking_sequentialthinking","params": {"thought": "第二步:分析可能的解决方案","thoughtNumber": 2,"totalThoughts": 3,"nextThoughtNeeded": true},"id": "thought_2"
}
11.5 工具调用的灵活性
// 文件系统操作
{"jsonrpc": "2.0","method": "mcp_filesystem_read_file","params": {"path": "docs/example.md"},"id": "read_1"
}// 命令行操作
{"jsonrpc": "2.0","method": "mcp_desktop_commander_execute_command","params": {"command": "ls -l","timeout_ms": 5000},"id": "cmd_1"
}
11.6 错误处理机制
// 统一的错误响应格式
{"jsonrpc": "2.0","error": {"code": -32000,"message": "工具调用失败","data": {"tool": "mcp_filesystem_read_file","reason": "文件不存在"}},"id": "read_1"
}
11.7 上下文管理
// 维护对话上下文
{"jsonrpc": "2.0","method": "mcp_context_manager","params": {"conversation_id": "conv_123","user_query": "分析问题","system_context": {"tools_available": ["tool1", "tool2"],"user_info": {"os": "darwin", "shell": "/bin/zsh"}}},"id": "ctx_1"
}
11.8 为什么特别适合 MCP
-
结构化通信:
- 清晰的方法调用
- 规范的参数传递
- 统一的响应格式
-
工具调用链:
- 支持连续调用
- 保持上下文一致
- 错误传播清晰
-
异步操作支持:
- 支持长时间运行的操作
- 支持并行工具调用
- 支持事件通知
-
性能考虑:
- 协议开销小
- 批量操作支持
- 连接复用
11.9 实际应用优势
// 工具调用示例
{"jsonrpc": "2.0","method": "codebase_search","params": {"query": "查找相关代码","explanation": "搜索代码库中的相关实现"},"id": "search_1"
}// 文件编辑示例
{"jsonrpc": "2.0","method": "edit_file","params": {"target_file": "src/main.py","instructions": "添加新功能","code_edit": "// ... existing code ..."},"id": "edit_1"
}
11.10 MCP 选择 JSON-RPC 2.0 的核心原因
-
协议特性匹配:
- 适合函数调用模式
- 支持复杂参数传递
- 统一的错误处理
-
实现简单:
- 协议规范清晰
- 实现成本低
- 调试方便
-
性能优势:
- 低协议开销
- 支持批量操作
- 连接复用
-
功能完备:
- 支持异步操作
- 支持通知机制
- 支持双向通信
-
特别适合 AI 工具调用:
- 清晰的方法调用
- 结构化的参数
- 统一的错误处理
- 支持链式操作
这些特性使得 JSON-RPC 2.0 成为大模型 MCP 协议的理想选择,能够很好地支持 AI 模型与各种工具之间的交互通信需求。
相关文章:
JSON-RPC 2.0 vs REST API 详细对比分析
现在要开始做一个新的业务模块了,系统思考下 新的业务模式应该是采用 JSON-RPC 2.0 还是 老套路 REST API 的接口协议 ,系统的学习下 1. 基本概念 JSON-RPC 2.0 无状态的、轻量级的远程过程调用(RPC)协议使用 JSON 作为数据格式…...
Python 类方法
Python 类方法示例 类方法是绑定到类而不是实例的方法,它们使用 classmethod 装饰器定义,第一个参数通常是 cls(表示类本身)。下面是一个具体的例子: class Employee:"""员工类"""rais…...
MVC流程讲解——以文件下载为例
整体的流程是这样: 用户点击一个树节点 → 请求远程机器该目录下的文件信息 → 显示在树控件和列表控件中。 🧱 MCV 模式简介(针对这个场景) 模块代表什么主要职责Model(模型)数据结构和逻辑表示你传输的…...
深度学习之线性代数基础
2.3.7 点积 ∑按位积 2.3.8 矩阵-向量积 2.3.9 矩阵-矩阵乘法 2.3.10 范数...
某公司网络OSPF单区域配置
1.配置背景: xx公司网络由三台路由器和一台交换机组成,现在想要三台路由器之间通过OSPF实现互连互通。 2.网络结构如下: 3.具体配置: 3.1路由器 RA 配置: 1.更改主机名称: Router>en Router#conf t…...
vue+flask+GNN+neo4j图书知识图谱推荐系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F025 pro 架构: vueflaskneo4jmysqlpytorch 亮点:两种基于知识图谱的推荐算法(GNN和基于路径推荐&#x…...
小程序页面传值的多种方式
开发小程序,总是避免不了页面和页面之间数据共享,实现方法有很多种,以下就讲解一下小程序页面传值,需要的朋友可以参考下。 1 使用wx.navigateTo()传值 这种传值方式有两种, url后面拼接传值:需要跳转的…...
基于SSM框架的校园食堂小程序设计与实现
概述 基于SSM框架开发的微信小程序民大食堂用餐综合服务平台,该系统集成了商家管理、餐品展示、在线点。 主要内容 一、管理员模块功能实现 用户信息管理 管理员可添加、查看和删除用户信息,确保平台用户数据安全可靠。 商家信息管理…...
FOC算法对MCU计算资源的需求?
评估FOC(磁场定向控制)算法对MCU计算资源的需求,需从算法复杂度、硬件特性、实时性要求等多维度分析。以下是具体步骤和关键要点: 一、拆解FOC算法的核心模块及计算复杂度 FOC算法主要由以下子模块组成,需分别评估各模块的计算量: 1. 传感器采样与预处理 ADC采样:电流…...
在 Excel 中使用通义灵码辅助开发 VBA 程序
VBA 简介 VBA 是一种用于微软办公套件(如 Word、Excel、PowerPoint 等)的编程语言,它本质上是一种内嵌的脚本,或者可以认为是一段命令,其标准叫法被称为宏。 VBA 只能依赖于对应的软件进行开发,例如本文就…...
嵌入式基础(三)基础外设
嵌入式基础(三)基础外设 1.什么是UART?与USART有什么区别⭐⭐⭐ (1)什么是UART 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。是一种异步全双工串行通信协议,它将要…...
【微服务管理】深入理解 Gateway 网关:原理与实现
在当今微服务架构盛行的时代,Gateway 网关扮演着举足轻重的角色。它作为微服务架构的重要组成部分,为系统提供了统一的入口,承担着诸如路由转发、负载均衡、安全防护、流量控制等关键功能。本文将深入探讨 Gateway 网关的底层原理,…...
AI与无人驾驶汽车:如何通过机器学习提升自动驾驶系统的安全性?
引言 想象一下,在高速公路上,一辆无人驾驶汽车正平稳行驶。突然,前方的车辆紧急刹车,而旁边车道有一辆摩托车正快速接近。在这千钧一发的瞬间,自动驾驶系统迅速分析路况,判断最安全的避险方案,精…...
【网络安全】通过 JS 寻找接口实现权限突破
未经许可,不得转载。 本文所述所有风险点均已修复。 文章目录 引言正文引言 以下些漏洞已被起亚方面修复;起亚方面确认,这些漏洞从未被恶意利用过。 2024年6月11日,我们发现起亚汽车存在一系列严重安全漏洞,攻击者仅凭车牌号即可远程控制车辆的核心功能。该攻击不需要接触…...
【HarmonyOS NEXT】多目标产物构建实践
目录 什么是多产物构建 如何定义多个构建产物 如何在项目中使用 参考文章 什么是多产物构建 在鸿蒙应用开发中,一个应用可定义多个 product,每一个 product 对应一个定制的 APP 包,每个 product 中支持对 bundleName、bundleType、输出产…...
Openlayers:实现聚合
一、什么是聚合 聚合是一种将一定范围内的多个图形合并为一个图形的一种技术方案。通常用来解决图形过于集中或者图形数量过多的问题。 在Openlayers中主要通过Cluster数据源来实现聚合的效果。与其它的数据源不同,Cluster数据源在实例化时需要接收一个矢量数据源…...
相机内外参
文章目录 相机内参相机外参 相机的内外参是相机标定过程中确定的重要参数,用于建立图像像素坐标与实际世界坐标之间的关系。 相机内参 定义:相机内参是描述相机内部光学和几何特性的参数,主要包括焦距、主点坐标、像素尺度因子以及畸变系数等…...
轨道力学课程习题集
轨道力学课程习题集 第一讲:轨道力学概述 思考题 推导开普勒第三定律与牛顿万有引力定律的关系。 计算地球表面的第一宇宙速度和第二宇宙速度。 设计一个太阳同步轨道,高度为800公里,要求当地时间为上午10:30。 分析地球静止轨道的稳定性…...
【Web三十一】K8S的常用命令
01 基础资源操作 查看资源 # 查看 kube-system 命名空间下的 Pod 列表 kubectl get pods -n kube-system# 查看节点详细信息(IP、状态等) kubectl get nodes -o wide# 按标签筛选 Pod(例如筛选标签 appnginx 的 Pod) ku…...
GDPR/CCPA
定义 GDPR(通用数据保护条例) 适用范围:适用于欧盟境内所有成员国,以及处理欧盟居民个人数据的全球企业。 数据主体权利:用户有权知道、访问、更正、删除(被遗忘权)自己的数据,还有…...
Lua中的元表
2025年4月14日,周一上午 Lua中的元表(metatable)是一种特殊的表,用于定义或修改其他表(或用户数据类型)的行为。通过元表中的元方法(meta-methods),开发者可以自定义表在…...
Sql Server(自用查看版)
目录 1、基本数据库相关概念 1.1数据Data 1.2数据库DataBase,DB 1.3数据库管理系统DataBase Management System,DBMS 1.4数据库系统 DataBase System DBS 1.5数据库系列架构 2、SQL sever 基本概念 单表查询 查询所有列的信息,用* 查询部分列:…...
【JavaScript】二十、电梯导航栏的实现
文章目录 1、案例:电梯导航1.1 需求分析与实现1.2 关键思路梳理 2、属性选择器补充 1、案例:电梯导航 1.1 需求分析与实现 需求:点击不同的模块,页面可以自动跳转不同的位置 模块分析: 页面滚动到对应位置,导航显示…...
【Python】OpenCV图像处理
文章目录 OpenCV安装查看版本getVersionString查看图片像素shape打开图片imshowRGB灰度图图像裁剪image绘制处理噪点图像特征提取匹配图像梯度(canny边缘检测)阈值图像的形态学(腐蚀、膨胀)打开电脑的摄像头 OpenCV OpenCV&#…...
HTTP协议 --- 超文本传输协议 和 TCP --- 传输控制协议
是基于 TCP 协议的 80 端口的一种 C/S 架构协议。 特点:无状态 --- 数据传输完成后,会断开 TCP 连接,哪怕浏览器还正常运行。 请求报文 --- 方法 响应报文 --- 状态码 是一种面向连接的可靠传输协议 。 面向连接 --- 在传输数据之前&am…...
微信小程序实现table样式,自带合并行合并列
微信小程序在代码编写过程好像不支持原生table的使用,在开发过程中偶尔又得需要拿table来展示。 1.table效果展示 1.wxml <view class"table-container"><view class"table"><view class"table-row"><view cla…...
【NLP】25.python实现点积注意力,加性注意力,Decoder(解码器)与 Attention
1. 点积注意力(Dot-Product Attention) 点积注意力是最简单的注意力机制之一,其基本思想是通过计算查询(query)和键(key)之间的点积来得到相似度,进而为每个值(value&am…...
基础贪心算法集合2(10题)
目录 1.单调递增的数字 2.坏了的计算器 3.合并区间 4.无重叠区间 5. 用最少数量的箭引爆气球 6.整数替换 解法1:模拟记忆化搜索 解法2位运算贪心 7.俄罗斯套娃信封问题 补充.堆箱子 8.可被3整除的最大和 9.距离相等的条形码 10.重构字符串 1.单调递增的数字…...
Oracle OCP知识点详解3:使用 vim 编辑文件
一、Vim 核心模式解析 1.1 模式切换图谱 graph LR A[普通模式] -->|i/I/a/A| B[插入模式] B -->|Esc| A A -->|v/V/Ctrlv| C[可视模式] A -->|: / ?| D[命令模式] C -->|Esc| A D -->|Enter| A 1.2 Oracle 场景高频模式组合 模式组合应用场景操作效率提…...
项目风险的早期识别与应对清单
项目风险的早期识别与应对策略的核心在于: 建立系统化的风险识别流程、评估风险的影响程度、制定详细的应对措施、持续监控与调整风险管理计划。 其中,建立系统化的风险识别流程是风险管理的第一步,也是最为关键的一环。通过构建一套有效的识…...
springboot数据动态脱敏
反射Jackson数据动态脱敏 我有两个字段,name和type,我想要在type为1对数据脱敏,而其他情况不脱敏: CustomSerializer注解 Target(ElementType.FIELD) //表示这个注解只能用在字段上 Retention(RetentionPolicy.RUNTIME) //注解…...
算法:定义一个数组的的陡峭值为:相邻两个元素之差的绝对值之和。
定义一个数组的的陡峭值为:相邻两个元素之差的绝对值之和。现在小红拿到了一个数组,她有多次询问,每次查询一段连续子数组的陡峭值。你能帮帮她吗? 连续子数组为从原数组中,连续的选择一段元素(可以全选、可以不选)得到的新数组。 输入描述 …...
【AI提示词】网络安全专家
提示说明 网络安全专家在数字时代扮演着至关重要的角色,他们通过专业的知识和技能保护网络系统免受攻击和破坏,确保数据的安全和隐私。 提示词 # 角色 网络安全专家## 性格类型指标 INTP(内向直觉思维感知型)## 背景 网络安全专…...
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理 在人工智能快速发展的今天,大语言模型(如GPT、BERT等)已经成为改变世界的重要技术。但对于很多人来说,理解这些模型的工作原理仍然是一个挑战。为了帮助更多…...
解决无人机无人化自主巡检面对的新挑战-机载通信、控制及算力的AIBOX
解决无人机无人化自主巡检面对的新挑战-机载通信、控制及算力的AIBOX 之前的微文:基于无人机的无人化自主巡检-大疆机场3M4TD,介绍了机场3的无人机无人机巡检的特点以及局限性。此处从通信增强、飞行及位置服务增强、智慧飞行以及无人机编队几个方面阐述…...
供应商涨价,项目如何控制采购成本
优化供应商结构、严格控制交付流程、强化谈判策略、设置弹性预算、建立长远合作机制 来有效控制采购成本。其中,强化谈判策略 是最核心的一步:不仅要明确价格承受范围,还需根据对方供应链特点和市场行情,准备多套备选方案…...
newbee商城购物车模块mapper.xml
1.浏览代码 1)表 自定义 DROP TABLE IF EXISTS tb_newbee_mall_shopping_cart_item; CREATE TABLE tb_newbee_mall_shopping_cart_item (cart_item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 购物项主键id,user_id bigint(20) NOT NULL COMMENT 用户主键id…...
高级java每日一道面试题-2025年4月07日-微服务篇[Nacos篇]-如何监控Nacos的运行状态?
如果有遗漏,评论区告诉我进行补充 面试官: 如何监控Nacos的运行状态? 我回答: 监控Nacos运行状态的综合方案 在Java高级面试中,监控Nacos运行状态是一个重要的技术点,它直接关系到微服务架构的稳定性和性能。以下是一个综合的监控方案&am…...
开源技术如何助力中小企业实现财务管理自主化?
中小企业的数字化困境与开源机遇 国际数据公司(IDC)研究显示,全球67%的中小企业因高昂的软件成本和僵化的功能设计,未能有效推进数字化转型。传统商业软件常面临三大矛盾: 功能冗余与核心需求缺失:标准化系…...
3D-DIC技术:煤层开采瓦斯防治的精准监测解决方案
3D-DIC非接触式三维全场应变测量系统是基于数字图像相关算法(DIC)的一种光学测定应变、变形的方法。由CCD相机、光源、支架、数据采集器和DIC软件组成。 一、DIC技术瓦斯防治应用 新拓三维XTDIC三维全场应变测量系统,通过两个工业相机采集图…...
CS5346 - Annotation in Visualization (可视化中的注释)
文章目录 Annotation 的重要性Levels of Annotation (注释的层级)Headings and IntroductionHeadings(标题)陈述型(Statement):突出结论或有趣发现疑问型(Question)&…...
VRoid-Blender-Unity个人工作流笔记
流程 VRoid 选配模型>减面、减材质>导出vrm Blender(先有CATS、vrm插件) 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…...
【ROS2】行为树 BehaviorTree(三):异步操作
【ROS】郭老二博文之:ROS目录 1、简述 前面的例子中,使用过同步节点 SyncActionNode,当调用到该节点时,成功返回SUCCESS,失败返回FAILURE,并且线程会等待该节点执行完毕。 如果需要异步操作,比如节点执行需要很长时间,不能立刻返回结果,可以先去执行其它任务,等该…...
Uniapp:本地存储
目录 一、概述二、分类三、同步存储:setStorageSync3.1 方法3.2 案例3.2.1 存储3.2.2 获取3.2.3 获取storage3.2.4 删除3.2.5 清空 四、异步存储:setStorage4.1 方法4.2 案例4.2.1 存储数据4.2.2 获取数据4.2.3 获取storage详情4.2.4 删除4.2.5 清空 一、…...
3D版的VLA——从3D VLA、SpatialVLA到PointVLA(不动VLM,仅动作专家中加入3D数据)
前言 之前写这篇文章的时候,就想解读下3D VLA来着,但一直因为和团队并行开发具身项目,很多解读被各种延后 更是各种出差,比如从25年3月下旬至今,连续出差三轮,绕中国半圈,具身占八成 第一轮 …...
Linux/Unix 命令pstree
pstree 是一个用于以树状结构显示系统中进程关系的 Linux/Unix 命令。它可以直观地展示进程的父子关系,帮助用户理解进程之间的层次结构。 基本用法 pstree [选项] [PID或用户名]如果不带参数,pstree 会显示所有进程的树状结构。可以指定 PID 来查看某个…...
探索Linux/Unix 系统中进程与文件的深层关系
在 Linux 和 Unix 系统中,“一切皆文件” 的设计哲学贯穿始终。这种理念不仅简化了系统的操作接口,也赋予了用户和开发者极大的灵活性。文件、目录、设备、网络套接字,甚至进程本身,都可以通过文件系统的形式进行访问和操作。其中…...
AI:线性代数之矩阵
从0到1吃透线性代数矩阵:码农必修的数学武器库 ⚔️🔥 🧩 矩阵基础概念(程序员视角) 在人工智能时代,矩阵早已突破数学课本的边界,成为程序员手中的瑞士军刀🔪。TensorFlow底层用矩阵实现张量计算⚡,OpenCV依赖矩阵完成图像卷积🌌,Spark MLlib通过矩阵分解进行…...
object类
equals() 方法 equals() 方法的原始定义是比较两个对象的内存地址是否相同,但在实际使用中,很多类都会重写这个方法,使其用于比较对象的内容是否相同。例如 String 类就重写了 equals() 方法,用于比较字符串的内容。 String str…...
MySQL表的使用(4)
首先回顾一下之前所学的增删查改,这些覆盖了平时使用的80% 我们上节课中学习到了MySQL的约束 其中Primary key 是主键约束,我们今天要学习的是外键约束 插入一个表 外键约束 父表 子表 这条记录中classid为5时候,不能插入; 删除…...