当前位置: 首页 > news >正文

JSON 基础知识(一)

第一部分:JSON 基础知识

📢 快速掌握 JSON!文章 + 视频双管齐下 🚀

如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 JSON 课程视频!🎬 视频里会用更直观的方式讲解 JSON 的核心概念、实战技巧,并配有动手演示,让你更高效地掌握 JSON 的处理方法!

当然,如果你喜欢深度阅读,这篇文章会帮助你系统地理解 JSON,从基础到进阶!无论你选择哪种方式,最终目标都是让你成为 JSON 处理的高手!💪

🎥 点击这里观看视频 👉 视频链接

一:JSON 介绍

1.1 JSON 是什么?
  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于前后端数据传输、配置文件存储、API 交互等。
  • 它基于 JavaScript 语言的对象表示法,但与编程语言无关,因此被广泛应用于 C/C++、Python、Java、Go、Rust 等语言中。
1.2 JSON 的特点及优点

可读性强:JSON 采用 键值对(Key-Value) 结构,语法简单直观,易于人和机器解析。
轻量级:相比 XML,JSON 体积更小,解析速度更快。
跨语言兼容:JSON 可以在不同的编程语言之间交换数据,各种语言都支持 JSON 解析。
层次结构(嵌套):支持 数组、对象、嵌套数据结构,适合存储复杂数据。
无格式要求:不需要像 XML 那样定义模式(Schema),使用灵活。

1.3 JSON 与 XML 的对比

JSON 与 XML(Extensible Markup Language)都是常见的数据交换格式,以下是它们的区别:

对比项JSONXML
数据结构键值对(Key-Value)标签(Tag-Based)
可读性结构清晰,易理解层级嵌套复杂
解析效率解析速度快解析速度慢
数据体积体积小体积较大
可扩展性适用于结构化数据适用于更复杂的数据格式

📌 JSON 与 XML 实例对比

JSON 格式数据

{"person": {"name": "张三","age": 25,"hobbies": ["篮球", "足球"],"sex":"男"}
}

XML 格式数据

<person><name>张三</name><age>25</age><hobbies><hobby>篮球</hobby><hobby>足球</hobby></hobbies><sex></sex>
</person>

结论:

  • JSON 结构更加紧凑,更适合数据交换
  • XML 适合文档存储(如配置文件、HTML、RSS 订阅等)。

二:JSON 的数据结构和语法

2.1 JSON 的数据结构
  • JSON 由 对象(Object)数组(Array) 组成,核心元素包括:
    • 对象(使用 {} 表示,存储键值对)
    • 数组(使用 [] 表示,存储多个值)
    • 值类型(支持 字符串数值布尔值null对象数组

JSON 支持以下六种数据类型:

数据类型示例描述
对象(Object){ "name": "张三", "age": 25 }键值对的集合,类似于 C++ 的 std::map 或 Python 的字典
数组(Array)[1, 2, 3, 4]有序的值列表,对应 C++ 的 std::vector 或 Python 的列表
字符串(String)"hello"双引号包裹的文本数据, 必须使用双引号 "",不能使用单引号
数值(Number)1233.14整数或浮点数
布尔值(Boolean)truefalse逻辑值 truefalse
空值(null)null表示空对象
2.2 JSON 语法规则

JSON 数据的核心是键值对(Key-Value),其中:

  • 键(Key)必须是字符串,且用双引号 "" 包围。
  • 值(Value)可以是字符串、数值、布尔值、数组、对象或 null
  • 多个键值对之间用 逗号 , 分隔,对象用 大括号 {} 包围,数组用 方括号 [] 包围。
  • 字符串 必须使用双引号 ""

📌 示例:一个完整的 JSON 数据结构

{"name": "Alice","age": 25,"is_student": false,"skills": ["C++", "Python", "JavaScript"],"address": {"city": "New York","zip_code": "10001"},"null":null
}

📌 解析该 JSON 结构:

  • name:字符串 "Alice"
  • age:数值 25
  • is_student:布尔值 false
  • skills:数组 ["C++", "Python", "JavaScript"]
  • address:嵌套对象,包含 cityzip 两个键值对

JSON 解析后相当于 C 语言的结构体

struct Address {char city[20];char zip_code[10];
};struct Person {char name[20];int age;int is_student;char* skills[3];struct Address address;
};

2.3 JSON 语法规则(重要)

​ ❌ 错误示例(常见语法错误):

{name: "张三",   // ❌ 错误:键名必须使用双引号"age": 25,    "hobbies": [ "篮球", "足球", ], // ❌ 错误:数组最后一个元素后不能有逗号"address": { "city": "上海", "zip_code": "200000", } // ❌ 错误:对象最后一个键值对后不能有逗号
}

​ ✅ 正确格式

{"name": "张三","age": 25,"hobbies": ["篮球", "足球"],"address": { "city": "上海", "zip_code": "200000" }
}

三:JSON 的实际应用场景

JSON 适用于多种编程场景,常见应用如下:

3.1 Web API 数据交互

服务器通过 REST API / GraphQL 以 JSON 格式返回数据,前端(Vue、React)解析 JSON 并展示(如 GETPOST 请求)。

JSON 替代 XML,成为 API 传输的主流数据格式

📌 示例:前端 JavaScript 发送 JSON 请求到服务器

fetch("https://api.example.com/user", {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({ name: "Alice", age: 25 })
})
.then(response => response.json())
.then(data => console.log(data));
3.2 配置文件存储

JSON 用于软件、Web 服务器、数据库的 配置文件,如 config.json
📌 示例:Web 服务器 Nginx 的配置

{"server": "localhost","port": 8080,"enable_ssl": true
}
3.3 数据存储与日志管理

JSON 可用于存储日志、数据缓存,如 NoSQL 数据库(MongoDB)使用 JSON 作为存储格式。
📌 MongoDB 文档存储示例

{"_id": "user123","username": "Alice","email": "alice@example.com"
}
3.4 机器学习与日志分析
  • 训练数据、日志文件等大量使用 JSON 进行数据存储。
  • 便于后续分析和处理。

JSON 适用于存储服务器日志:

{"timestamp": "2024-02-09T12:30:45Z","level": "ERROR","message": "数据库连接失败","details": {"host": "db.example.com","port": 3306}
}

日志分析工具可以轻松解析 JSON 日志,进行故障排查!

3.5 物联网(IoT)
  • IoT 设备通过 JSON 格式传输传感器数据。

  • 示例:

    {"device_id": "sensor_001","temperature": 22.5,"humidity": 60
    }
    

四:JSON 解析和生成

3.1 JSON 解析(Parsing)和生成(Serialization)概述
  • 解析(Parsing):把 JSON 字符串转换为可操作的数据结构(C 结构体或 C++ 类)。
  • 序列化(Serialization):把 C/C++ 数据结构转换为 JSON 字符串,便于存储和传输。
3.2 JSON 在不同编程语言中的支持情况
  • C 语言处理 JSON 需要使用专门的解析库(如 cJSON)。

  • C++ 提供多个 JSON 库(RapidJSON、JsonCpp、nlohmann/json等)。

3.3 JSON 解析的基本流程
  • 步骤 1:读取 JSON 数据(从字符串或文件)。
  • 步骤 2:解析 JSON 并存入内存中的数据结构。
  • 步骤 3:访问 JSON 数据(读取键值、遍历数组)。
  • 步骤 4:修改 JSON 数据(添加/删除键值对)。
  • 步骤 5:将数据重新序列化为 JSON 字符串,供存储或网络传输。

示例代码(伪代码,后续库会具体实现)

char* json_string = "{ \"name\": \"张三\", \"age\": 25 }";
JsonObject obj = json_parse(json_string);
printf("姓名: %s\n", json_get_string(obj, "name"));
json_set_number(obj, "age", 26);
char* new_json_string = json_serialize(obj);
printf("修改后的 JSON: %s\n", new_json_string);
3.4 C/C++ 解析 JSON 的常见库对比
  • cJSON、RapidJSON、JsonCpp、JSON for Modern C++
3.4.1 cJSON📌
  • 概述

    • cJSON 是一个轻量级的 C 语言实现的 JSON 库,专为嵌入式设备和资源受限的环境设计。

    • 它非常简洁,适合简单的 JSON 数据解析任务。

  • 特点

    • 纯 C 实现:没有任何外部依赖,适用于嵌入式开发和低资源环境。

    • API 简单直观:易于上手,接口简单,适合 C 开发者。

    • 内存管理:需要手动管理内存,易产生内存泄漏问题。

  • 性能表现

    • 在单线程和小数据量的情况下,cJSON 解析性能较好,但在处理大量数据时,性能会略显不足。
  • 使用场景

    • 嵌入式设备开发(如 IoT)

    • 需要轻量化的 JSON 解析任务

  • 优缺点

    优点

    • 轻量级:非常适合资源受限的嵌入式系统。
    • 易用性高:API 设计简洁,快速上手。
    • 没有外部依赖:纯 C 实现,不依赖其他库。

    缺点

    • 性能限制:在大数据量处理上,性能和内存管理上有一定的瓶颈。
    • 内存管理手动:需要开发者自己管理内存,容易引入内存泄漏问题。

3.4.2 RapidJSON📌
  • 概述

    • RapidJSON 是一个 C++ 实现的高性能 JSON 解析库,强调 速度低内存使用,支持 SAXDOM 解析方式。

    • 它是 C++ 中最受欢迎的 JSON 解析库之一,适用于高性能的 JSON 解析场景。

  • 特点

    • C++ 实现:支持现代 C++ 语法和标准,适用于 C++ 开发者。

    • 高性能:在解析速度和内存占用方面,尤其是在大数据量时具有明显优势。

    • 流式解析(SAX):支持流式解析,可以在解析大 JSON 文件时避免内存占用过高。

  • 性能表现

    • 解析速度:在大数据量 JSON 解析时,RapidJSON 表现出色,比大多数 C++ 库要快。

    • 内存使用:内存使用高效,适合需要优化性能的场景。

  • 使用场景

    • 高性能计算和大数据处理

    • 日志解析

    • 金融、游戏、科学计算等需要高效解析的大型 JSON 数据

  • 优缺点

    优点

    • 高性能:在大数据量的解析上,表现比其他库更好。
    • 支持流式解析:适合大文件的逐步解析,内存消耗低。
    • 支持标准 C++:支持 C++11 和以上标准,现代化的接口。

    缺点

    • 不支持动态内存管理:需要开发者自己处理内存分配与管理。
    • 接口复杂:与其他库相比,API 比较复杂,上手稍有难度。

3.4.3 JsonCpp📌
  • 概述

    • JsonCpp 是一个功能强大的 C++ JSON 解析库,旨在提供一种简单的接口来操作 JSON 数据。

    • 适用于中到大型 C++ 项目的 JSON 数据解析与操作。

  • 特点

    • C++ 实现:适用于 C++ 项目,API 风格符合 C++ 的习惯。

    • 支持读取和写入 JSON:不仅可以解析 JSON,还可以方便地将数据写回 JSON 格式。

    • 与 STL 兼容:可以直接与 C++ 的 std::stringstd::vector 等数据结构进行交互。

  • 性能表现

    • 解析速度:性能中等,适合大多数应用场景,尤其是中等规模的数据解析。

    • 内存消耗:内存使用较为稳定,但与 RapidJSON 相比,速度稍慢。

  • 使用场景

    • 配置文件解析

    • 常见桌面应用的数据存储

    • 需要 JSON 读写操作的场景

  • 优缺点

    优点

    • API 易用性:符合 C++ 风格的接口,易于开发者上手。
    • 功能全面:除了 JSON 解析,还支持 JSON 数据的生成与修改。
    • STL 兼容性强:可以与 C++ 标准库的容器和数据结构无缝对接。

    缺点

    • 性能一般:在大数据量处理时,解析速度较慢,内存消耗较高。
    • 库体积较大:相比其他库,JsonCpp 的体积稍大,可能不适合嵌入式设备。

3.4.4 JSON for Modern C++📌
  • 概述

    • JSON for Modern C++(由 nlohmann/json 提供)是一个流行的 C++ JSON 库,利用 C++11 特性,如 std::stringstd::vector 等,提供直观的 JSON 处理接口。

    • 支持与标准 C++ 容器类型(如 std::mapstd::vector)的无缝集成。

  • 特点

    • C++11 风格 API:现代化的接口,支持 std::vectorstd::map 等 C++ 标准库容器。

    • JSON 数据转换:提供简洁的方式将 C++ 对象转换为 JSON,反之亦然。

    • 简洁易用:API 设计现代且简洁,代码量少,易于理解。

  • 性能表现

    • 解析速度:与 RapidJSON 相比稍慢,但仍适用于大多数应用场景。

    • 内存占用:内存使用高效,适合较大数据集。

  • 使用场景

    • 现代 C++ 项目

    • 配置文件管理

    • Web 开发中前后端数据交互

  • 优缺点

    优点

    • 易用性高:简洁的 API,适合现代 C++ 开发者。
    • 兼容性强:与标准 C++ 容器和 STL 兼容。
    • 支持转换 C++ 对象和 JSON:可以轻松将 C++ 对象序列化为 JSON,反之亦然。

    缺点

    • 性能相对较低:解析大规模 JSON 数据时,性能可能不如 RapidJSON。
    • 对旧版 C++ 不友好:要求至少 C++11。

3.4.5 总结📌
语言性能使用场景优点缺点
cJSONC中等嵌入式开发、轻量级应用轻量级、无依赖性能不佳、内存管理手动
RapidJSONC++高性能大数据解析、日志、API快速、支持流式解析API 复杂、内存管理手动
JsonCppC++中等中型 C++ 项目、配置文件STL 兼容、功能全面性能一般、库体积较大
JSON for Modern C++C++中等现代 C++ 项目、Web 应用简洁易用、C++11 风格性能较低、仅支持 C++11 以上

五:JSON 的性能优化策略

5.1 避免 JSON 过度嵌套

过度嵌套会 影响解析速度,应尽量 扁平化 JSON 结构

❌ 差的 JSON 结构(深度嵌套)

{"user": {"profile": {"details": {"name": "Alice"}}}
}

✅ 优化后(扁平化 JSON)

{"user_name": "Alice"
}
5.2 使用流式解析(SAX 解析)

对于 大 JSON 文件,不要一次性加载到内存,而使用 流式解析(SAX 解析)。

📌 C++ 解析 JSON 时使用 RapidJSON 流式解析(节省内存)

#include "rapidjson/reader.h"using namespace rapidjson;class MyHandler : public BaseReaderHandler<UTF8<>, MyHandler> {
public:bool String(const char* str, SizeType length, bool copy) {printf("解析到字符串: %s\n", str);return true;}
};int main() {const char* json = "{\"name\":\"Alice\",\"age\":25}";MyHandler handler;Reader reader;StringStream ss(json);reader.Parse(ss, handler);return 0;
}

5.3 常见问题分析与解决方案
问题可能原因解决方案
JSON 解析失败语法错误(如 , 结尾)使用 jsonlint 校验 JSON
JSON 体积过大包含大量冗余数据优化 JSON 结构,减少嵌套
解析速度慢使用 DOM 解析大文件采用 流式解析(SAX)
不支持 JSON 注释JSON 规范不允许注释使用 // 伪注释字段或 YAML

相关文章:

JSON 基础知识(一)

第一部分&#xff1a;JSON 基础知识 &#x1f4e2; 快速掌握 JSON&#xff01;文章 视频双管齐下 &#x1f680; 如果你觉得阅读文章太慢&#xff0c;或者更喜欢 边看边学 的方式&#xff0c;不妨直接观看我录制的 JSON 课程视频&#xff01;&#x1f3ac; 视频里会用更直观…...

nodejs:midi-writer-js 将基金净值数据转换为 midi 文件

开放式基金是没有公布每日交易量的。 /funds/data/660008.csv 文件开头&#xff1a; date,jz,ljjz 2016-01-04,1.1141,1.1141 2016-01-05,1.1161,1.1161 2016-01-06,1.1350,1.1350 这是一个将开放式基金数据转换为 MIDI音乐的 js 程序示例。该程序将基金净值映射为 MIDI音符的…...

从零实现Json-Rpc框架】- 项目实现 - 服务端registrydiscovery实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

自适应二值化与形态学变换在图像颜色识别与替换中的应用解析

目录 前言一、自适应二值化1.1 取均值 ADAPTIVE_THRESH_MEAN_C1.2 高斯加权求和 ADAPTIVE_THRESH_GAUSSIAN_C1.2.1 一维高斯分布1.2.2 二维高速分布1.2.3 二维高斯分布权重计算规则 1.2.3.1 用户设置了σ1.2.3.2 用户没有设置σ1.3 代码二、形态学变换2.1 核 2.2 腐蚀2.3 膨胀…...

JsonCpp 处理 JSON(现代 C++ 方案)(三)

第三部分:JsonCpp 处理 JSON(现代 C++ 方案) 📢 快速掌握 JSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 JsonCpp 课程视频!🎬 视频里会用更直观的方式讲解 JsonCpp 的核心概念、实战技巧,并配有动手演…...

flutter 曲线学习 使用第三方插件实现左右滑动

flutter 曲线的使用 实现左右滑动 TemperatureChartPage() TemperatureChartPage2() – 不太完善 方法 ChartDrawPage import package:doluyo/dly_package/widget/dly_widget.dart; import package:fl_chart/fl_chart.dart; import package:flutter/material.dart; impor…...

【WRF工具】GIS4WRF详细介绍:配置 WPS/WRF

【WRF工具】GIS4WRF详细介绍 QGIS-GIS4WRF安装&#xff08;Installation&#xff09;安装 QGIS安装 GIS4WRF GIS4WRF 配置(Configuration)一、如何进入配置界面二、可配置内容1️⃣ 设置工作目录2️⃣ 与 WPS/WRF 集成3️⃣ 与 NCAR 数据档案集成 参考 GIS4WRF 是一个在 QGIS 中…...

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub&#xff0c;想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub&#xff08;但没怎么用&#xff09;&#xff0c;现在需要重新搞起&#xff08;操作忘得差不多&#xff09;。 在看教程实操的过程中遇到了一些小问题&#xff0c;遂记录一下。 前…...

小程序中跨页面组件共享数据的实现方法与对比

小程序中跨页面/组件共享数据的实现方法与对比 在小程序开发中&#xff0c;实现不同页面或组件之间的数据共享是常见需求。以下是几种主要实现方式的详细总结与对比分析&#xff1a; 一、常用数据共享方法 全局变量&#xff08;getApp()&#xff09;、本地缓存&#xff08;w…...

ngx_http_core_merge_srv_conf

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) {ngx_http_core_srv_conf_t *prev parent;ngx_http_core_srv_conf_t *conf child;ngx_str_t name;ngx_http_server_name_t…...

如何在中科方德llinux系统上离线安装salt-minion

1&#xff0c;我的系统是什么 国产操作系统 中科方德 NFSChina Server release 4.0.240701 (RTM4-G320) 2&#xff0c;首先准备好两个安装包 salt-minion-2015.8.8-2.el7.noarch.rpm和salt-2015.8.8-2.el7.noarch.rpm 后者这个是前者的依赖项。 所以先安装salt-2015.8.8-2.e…...

RAG系统实战:当检索为空时,如何实现生成模块的优雅降级(Fallback)?

目录 RAG系统实战&#xff1a;当检索为空时&#xff0c;如何实现生成模块的优雅降级&#xff08;Fallback&#xff09;&#xff1f; 一、为什么需要优雅降级&#xff08;Fallback&#xff09;&#xff1f; 二、常用的优雅降级策略 策略一&#xff1a;预设后备提示&#xff0…...

输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技

在现代社会&#xff0c;随着航空业的快速发展&#xff0c;低空飞行活动日益频繁。为了确保飞行安全&#xff0c;避免飞机与高压电线等障碍物发生碰撞&#xff0c;输电线路航空标志球应运而生。这种装置被广泛应用于高压输电线路上&#xff0c;尤其是超高压和跨江输电线&#xf…...

【SPP】蓝牙 SDP 协议在SPP中的互操作性解析

在蓝牙通信体系中&#xff0c;服务发现协议&#xff08;SDP, Service Discovery Protocol&#xff09;扮演着 "服务目录" 的核心角色。对于串口通信协议&#xff08;SPP, Serial Port Profile&#xff09;而言&#xff0c;SDP 服务记录是设备间建立串口连接的基础&am…...

本地部署vanna ai+通过http请求调用vanna

本地部署vanna ai ① 准备python环境&#xff0c;推荐最新的python12、13版本 ② 安装vanna库 我这里安装的python环境是python312 进入目录python312/Scripts&#xff0c;在该目录下的命令行窗口中输入以下命令&#xff1a;pip jinstall vanna pip install vanna③ 配置向…...

seq2seq

理解 transformer 中的 encoder decoder 详细的 transformer 教程见&#xff1a;【极速版 – 大模型入门到进阶】Transformer 文章目录 &#x1f30a; Encoder: 给一排向量输出另外一排向量&#x1f30a; Encoder vs. Decoder: multi-head attention vs. masked multi-head at…...

C++ ---- 虚继承

一、什么是虚继承 虚继承就是子类中只有一份间接父类的数据。用于解决多继承中的父类为非虚继承时出现的二义性问题&#xff0c;即菱形继承问题。继承方式需要加上virtual关键字。 二、虚继承的特性 以菱形继承为例&#xff1a; 1.不使用虚继承 根据输出的大小和关系图&…...

COMSOL多层圆片随机堆积三维模型

构建多层圆片随机堆积三维模型可用于材料、化工、土木、生物医学等多领域的研究&#xff0c;如复合材料设计、催化剂载体、颗粒物堆积研究等。本案例介绍在COMSOL内建立三维圆片堆积模型。 三维圆片堆积模型可采用CAD纤维密堆积3D插件建立&#xff0c;参数设置如图所示&#…...

PHP 开发API接口签名验证

就安全来说&#xff0c;所有客户端和服务器端的通信内容应该都要通过加密通道(HTTPS)传输&#xff0c;明文的HTTP通道将会是man-in-the- middle及其各种变种攻击的温床。所谓man-in-the-middle攻击简单讲就是指恶意的黑客可以在客户端和服务器端的明文通信通道上做手 脚&#x…...

Web开发-JavaEE应用ORM框架SQL预编译JDBCMyBatisHibernateMaven

知识点&#xff1a; 0、安全开发-JavaEE-构建工具-Maven 1、安全开发-JavaEE-ORM框架-JDBC 2、安全开发-JavaEE-ORM框架-Mybatis 3、安全开发-JavaEE-ORM框架-Hibernate 4、安全开发-JavaEE-ORM框架-SQL注入&预编译 一、演示案例-WEB开发-JavaEE-构建工具-Maven IDEA配置m…...

软考-数据库系统工程师第四版pdf

软考-数据库系统工程师第四版pdf git中的文件相对没有那么清楚&#xff0c;网盘的有高清版 github下载 这里我给出仓库地址 链接: https://github.com/yaodada123/ruankao-pdf https://github.com/yaodada123/ruankao-pdf gitee下载 https://gitee.com/yao-hengchao/ruank…...

扫描仪+文档pdf编辑器+pdf格式转换器

小扫描仪是一款集“扫描仪文档pdf编辑器pdf格式转换器”于一体的多功能扫描软件&#xff0c;软件功能丰富&#xff0c;而且目前是免费&#xff0c;功能包括扫描、编辑、转换三部分。 扫描&#xff1a;扫描的功能包括文档扫描、身份证扫描、护照扫描、书籍扫描、OCR和二维码。 扫…...

【stm32--HAL库DMA+USART+空闲中断不定长收发数据】

串口通信-Hal库实现不定长度收发&#xff0c;DMAUSART DMA串口STM32CUBEMX配置&#xff08;工程创建&#xff09;基础配置时钟配置工程配置 代码编写现象 DMA 在正式配置之前&#xff0c;我们先来一起简单了解一下DMA。DMA&#xff08;Direct Memory Access&#xff0c;直接内…...

5G-A技术

最近的iOS 18.4 推送了 新功能&#xff0c;最引人注目的便是这个5G-A的这个功能&#xff0c;那什么是5G-A呢 &#xff1f; 目前北京 四环内 还是有能显示出5G-A标志的。 5G-A &#x1f310; 一句话概括&#xff1a; 5G-A 更快的速度 更低的延迟 更强的AI能力 更智能的网…...

Vue 组件 - 动态组件

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 组件 - 动态组件 目录 动态组件 选项卡页面示例 更简单写法 增加输入框 弥补措施 总结 动态组件 选项卡页面示例 功能&#xff1a;选项卡功能&#xff0c;设置导航点击哪个显示相应页面。 设置三个全局组件&#…...

ffmpeg滤镜使用

ffmpeg实现画中画效果 FFmpeg中&#xff0c;可以通过overlay将多个视频流、多个多媒体采集设备、多个视频文件合并到一个界面中&#xff0c;生成画中画的效果 FFmpeg 滤镜 overlay 基本参数 x和y x坐标和Y坐标 eof action 遇到 eof表示时的处理方式&#xff0c;默认为重复。…...

【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】

MVC简介 产生原因&#xff1a; MVC&#xff08;Model-View-Controller&#xff09;模式诞生于20世纪70年代&#xff0c;由Trygve Reenskaug在施乐帕克研究中心&#xff08;Xerox PARC&#xff09;为Smalltalk语言设计&#xff0c;目的是解决图形用户界面&#xff08;GUI&…...

基于大模型的房间隔缺损手术全流程预测与方案优化研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与创新点 二、房间隔缺损概述 2.1 房间隔缺损定义与分类 2.2 发病机制与病理生理 2.3 流行病学特征 三、大模型在房间隔缺损预测中的应用原理 3.1 大模型技术简介 3.2 数据收集与预处理 3.3 模型…...

什么是 CSSD?

文章目录 一、什么是 CSSD&#xff1f;CSSD 的职责 二、CSSD 是如何工作的&#xff1f;三、CSSD 为什么会重启节点&#xff1f;情况一&#xff1a;网络和存储都断联&#xff08;失联&#xff09;情况二&#xff1a;收到其他节点对自己的踢出通知&#xff08;外部 fencing&#…...

uniapp APP端在线升级(简版)

设计思路&#xff1a; 1.版本比较&#xff1a;应用程序检查其当前版本与远程服务器上可用的最新版本 2. 更新状态指示&#xff1a;如果应用程序是不是最新的版本&#xff0c;则页面提示下载最新版本。 3.下载启动&#xff1a;通过plus.downloader.createDownload()启动新应用…...

2024年蓝桥杯Java B组省赛真题超详解析-分布式队列

问题&#xff1a;你需要回答在某个时刻&#xff0c;队列中有多少个元素具有可见性 方案&#xff1a;跟踪每个副节点已经同步到主节点队列的元素数量&#xff0c;并找出所有副节点中同步到的最少元素数量&#xff0c;这个数量即为所有副节点都已经同步的元素数量。 解析&#…...

Vue3入门

环境准备: node.js vscode or webstorm 哪个熟悉用哪个 这两个都是傻瓜式安装 浏览器直接搜索 下载即可 安装: 安装完node.js之后 按住快捷键 winR 打开命令提示符输入node 将显示版本信息 接着我们通过 vite 构建vue3工程 优点: 轻量快速的热重载&#xff08;HMR&#xf…...

向量库(Vector Database)概述

向量库&#xff08;Vector Database&#xff09;概述 1. 核心概念 ​向量 高维空间中的数值数组&#xff0c;通常由模型&#xff08;如BERT、ResNet&#xff09;将非结构化数据&#xff08;文本、图像等&#xff09;转换为嵌入向量。 ​向量相似性 衡量方法&#xff1a;余弦相…...

Oracle迁移达梦遇中断?试试SQLark的断点续迁功能!

在企业级数据迁移项目中&#xff0c;如果迁移单表数据量超过亿行、占用空间超过100GB时&#xff0c;一旦遇到网络中断或迁移报错&#xff0c;往往需要整表重新迁移&#xff0c;导致效率低下&#xff0c;严重影响项目进度。针对这一痛点&#xff0c;SQLark 支持对 Oracle→DM 的…...

上海某海外视频平台Android高级工程师视频一面

问的问题比较细&#xff0c;有很多小细节在里面&#xff0c;平时真不一定会注意到&#xff0c;做一个备忘&#xff1a; 1.Object类里面有哪些方法&#xff1f; Object 类是 Java 中所有类的根类&#xff0c;它定义了一些基本方法&#xff0c;供所有类继承和重写1. 常用方法 1…...

基于yolov11的汽车损伤检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的汽车损伤检测系统是一种先进的计算机视觉技术&#xff0c;旨在快速准确地识别汽车的各种损伤类型。该系统利用YOLOv11模型的强大性能&#xff0c;实现了对车辆损伤的精确检测与分类。 该系统能够识别的损伤类型包括裂纹&#xff08;crack&#xff…...

华为IP(3)

DHCP Relay报文格式 DHCP Relay主要负责转发DHCP客户端与DHCP服务器之间的DHCP报文&#xff0c;所以DHCP Relay的报文格式只是把DHCP的报文部分字段做了相应的修改&#xff0c;报文格式没有发生变化 hops&#xff1a;表示当前DHCP报文经过DHCP中继的数目&#xff0c;该字段由…...

面试问题总结:qt工程师/c++工程师

C 语言相关问题答案 面试问题总结&#xff1a;qt工程师/c工程师 C 语言相关问题答案 目录基础语法与特性内存管理预处理与编译 C 相关问题答案面向对象编程模板与泛型编程STL 标准模板库 Qt 相关问题答案Qt 基础与信号槽机制Qt 界面设计与布局管理Qt 多线程与并发编程 目录 基础…...

【TS学习】(15)分布式条件特性

在 TypeScript 中&#xff0c;分布式条件类型&#xff08;Distributive Conditional Types&#xff09; 是一种特殊的行为&#xff0c;发生在条件类型作用于裸类型参数&#xff08;Naked Type Parameter&#xff09; 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…...

四款高效数据报表工具 让数据分析更简单

概述 在数字化时代&#xff0c;企业和组织越来越依赖数据驱动决策&#xff0c;报表软件成为提高数据可视化能力、优化业务管理的关键工具。本文将为大家介绍四款功能强大的报表软件&#xff0c;帮助不同需求的企业找到合适的解决方案。 一、山海鲸报表 山海鲸报表是一款零代…...

QT 非空指针 软件奔溃

在用QT的实际项目中&#xff0c;出现如下现象&#xff1a; 运行软件再关闭软件&#xff0c;然后再运行软件会崩溃。等待5~10分钟&#xff0c;再运行软件&#xff0c;又正常&#xff0c;百思不得其解&#xff0c;后面找到原因是在头文件里定义指针变量时没有赋初nullptr&#x…...

图漾相机——C#语言属性设置

文章目录 前言1.示例程序说明2.SDK API功能介绍2.1 ListDevice2.2 Open2.3 OpenDeviceByIP2.4 Close2.5 DeviceStreamEnable2.6 DeviceStreamFormatDump2.7 DeviceStreamFormatConfig2.8 DeviceReadCurrentEnumData2.9 DeviceReadCalibData2.10 DeviceStreamOn2.11 DeviceStrea…...

WPF中viewmodel单例模式

1、单例模式介绍 单例模式是一种创建型设计模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。它常用于需要全局唯一访问点的场景&#xff0c;如配置管理、日志记录、数据库连接等。 2、WPF 中 ViewModel 的单例实现 在 WPF 中&#…...

AI比人脑更强,因为被植入思维模型【36】时光机理论思维

giszz的理解&#xff1a;据说是软银孙正义提出的一种思维模型&#xff0c;他利用同一时间内的地区差&#xff0c;通过引入技术、思维&#xff0c;在同一地区&#xff0c;形成了时间差。所谓商业模式&#xff0c;有时就是打空间差、时间差&#xff0c;信息差。 一、定义 时光机…...

SQL Server:用户权限

创建 & 删除 1. 创建用户命令整理 创建 admin2 用户 -- 在 master 数据库创建登录名 USE master; BEGINCREATE LOGIN [admin2] WITH PASSWORDNCljslrl0620!, DEFAULT_DATABASE[master], CHECK_EXPIRATIONOFF, CHECK_POLICYON; END;-- 在 db03 数据库创建用户并添加到相应…...

Qt之QTextEdit控制文本滚动, 停止滚动, 开始滚动, 鼠标控制滚动

对工作台文本框进行控制。含以下内容。详细说明在源码中可查看 至最底部停止滚动开始滚动 源码分两部分. .h文件和.cpp文件 MyTextEdit.h #ifndef MYTEXTEDIT_H #define MYTEXTEDIT_H#include <QObject> #include <QTextEdit> #include <QScrollBar> #includ…...

策略模式与元数据映射模式融合 JSR 380 验证规范实现枚举范围校验

类文件 Target({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION_TYPE,ElementType.CONSTRUCTOR,ElementType.PARAMETER,ElementType.TYPE_USE }) Retention(RetentionPolicy.RUNTIME) Documented Constraint(validatedBy {InEnumValidator.class, InEnumColle…...

9对象树(3)

目录 创建自定义的类&#xff0c;最主要的目的,是自定义一个析构函数,在析构函数中,完成打印.方便咱们看到最终的自动销毁对象的效果!!! 写完一个函数的声名之后, 按下 altenter, 在按下enter就可以自动的在对应的 cpp 文件中添加函数的定义了 内置类型&#xff0c;析构不会明…...

深入 OpenPDF:高级 PDF 生成与操作技巧

1 引言 1.1 项目背景 在许多企业级应用中,生成和操作 PDF 文档是一个常见的需求。PDF(Portable Document Format)因其格式统一、易于打印和分发而被广泛使用。本文将介绍如何使用 OpenPDF 库在 Java 项目中生成和操作 PDF 文档。 1.2 技术选型理由 OpenPDF:OpenPDF 是一…...

电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法

调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中&#xff0c;合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一&#xff1a;使用快捷键 大多数笔…...