Qt实现json数据的生成、解析、修改和删除

news/2024/9/14 1:49:20/ 标签: qt, json, c++

文章介绍

  • 本文章主要介绍如何使用QT提供的json相关类来处理json数据,包括json数据的生成、解析、修改和json数据的删除。

json_3">json数据的增删改查

  • 处理json数据时需要包含以下三个头文件
    •   #include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>
      

json_11">json数据生成

  • json数据
    • json">  {  "id":1001,"name":"jack","sex":true}
      
  • 代码
    •   // 创建json数据对象QJsonObject json;json.insert("name", "jack");json.insert("id", 1001);json.insert("sex", true);QJsonDocument document;   // 创建json文档document.setObject(json); // 给json文档设置json数据对象// 将json数据对象转为字符串QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_35">嵌套json数据生成

  • json数据
    • json">  {"id": 1002,"name": "Tom","scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 代码
    •   // 创建子节点scoreData的json数据对象QJsonObject scoreObject;scoreObject.insert("Math", 90);scoreObject.insert("Chinese", 96);scoreObject.insert("English", 82);// 创建json数据对象QJsonObject json;json.insert("name", "Tom");json.insert("id", 1002);json.insert("sex", true);json.insert("scoreData", QJsonValue(scoreObject));QJsonDocument document;document.setObject(json);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_69">包含数组的json数据生成

  • json数据
    • json">  {"id":1002,"name": "Tom","scoreData":{"Chinese":96,"English":82,"Math":90},"sex": true,"techData":["C++", "JAVA", "PYTHON"]}
      
  • 代码
    •   // 创建json数组对象QJsonArray techArray;techArray.append("C++");techArray.append("JAVA");techArray.append("PYTHON");// 创建子节点scoreData的json数据对象QJsonObject scoreObject;scoreObject.insert("Math", 90);scoreObject.insert("Chinese", 96);scoreObject.insert("English", 82);// 创建json对象QJsonObject json;json.insert("name", "Tom");json.insert("id", 1002);json.insert("sex", true);json.insert("scoreData", QJsonValue(scoreObject));json.insert("techData", QJsonValue(techArray));QJsonDocument document;document.setObject(json);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_113">包含数组对象的json数据生成

  • json数据
    • json">  {"id":1002,"name": "Tom","schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"},{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 代码
    •   // 创建json数组QJsonArray SchoolArray;QJsonObject primarySchoolObj;primarySchoolObj.insert("schoolName", "xiaoxue");primarySchoolObj.insert("schoolCity", "Xian");QJsonObject middleSchoolObj;middleSchoolObj.insert("schoolName", "zhongxue");middleSchoolObj.insert("schoolCity", "Xian");QJsonObject universityObj;universityObj.insert("schoolName", "daxue");universityObj.insert("schoolCity", "Beijing");// json数组中插入json数据对象SchoolArray.append(primarySchoolObj);SchoolArray.append(middleSchoolObj);SchoolArray.append(universityObj);// 创建子节点scoreData的json数据对象QJsonObject scoreObject;scoreObject.insert("Math", 90);scoreObject.insert("Chinese", 96);scoreObject.insert("English", 82);// 创建json数据QJsonObject json;json.insert("name", "Tom");json.insert("id", 1002);json.insert("sex", true);json.insert("scoreData", QJsonValue(scoreObject));json.insert("schoolData", QJsonValue(SchoolArray));QJsonDocument document;document.setObject(json);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_173">json数据解析

  • json数据
    • json">  {"sex":true,"id":1001,"name":"jack"}
      
  • 解析结果
    •   strName "jack"iId 1001bSex true
      
  • 代码
    •   QByteArray jsonData = "{\"sex\":true,\"id\":1001,\"name\":\"jack\"}";// 将字符串转为json文档QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}// 获取根对象QJsonObject rootObj = rootDoc.object();// 解析json数据QJsonValue nameValue = rootObj.value("name");QString strName = nameValue.toString();qDebug() << "strName" << strName;QJsonValue idValue = rootObj.value("id");int iId = idValue.toInt();qDebug() << "iId" << iId;QJsonValue sexValue = rootObj.value("sex");bool bSex = sexValue.toBool();qDebug() << "bSex" << bSex;
      

json_216">嵌套json数据解析

  • json数据
    • json">  {"id":1002,"name":"Tom","scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 解析结果
    •   strName "Tom"iId 1002bSex trueiChinese 96iEnglish 82iMath 90
      
  • 代码
    •   QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}// 获取根对象QJsonObject rootObj = rootDoc.object();// 解析json数据QJsonValue nameValue = rootObj.value("name");QString strName = nameValue.toString();qDebug() << "strName" << strName;QJsonValue idValue = rootObj.value("id");int iId = idValue.toInt();qDebug() << "iId" << iId;QJsonValue sexValue = rootObj.value("sex");bool bSex = sexValue.toBool();qDebug() << "bSex" << bSex;// 解析scoreData节点的json数据QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();QJsonValue chineseValue = scoreDataObj.value("Chinese");int iChinese = chineseValue.toInt();qDebug() << "iChinese" << iChinese;QJsonValue englishValue = scoreDataObj.value("English");int iEnglish = englishValue.toInt();qDebug() << "iEnglish" << iEnglish;QJsonValue mathValue = scoreDataObj.value("Math");int iMath = mathValue.toInt();qDebug() << "iMath" << iMath;
      

json_282">包含数组的json数据解析

  • json数据
    • json">  {"id":1002,"name":"Tom","scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true,"techData":["C++", "JAVA", "PYTHON"]}
      
  • 解析结果
    •   strName "Tom"iId 1002bSex trueiChinese 96iEnglish 82iMath 90str "C++"str "JAVA"str "PYTHON"
      
  • 代码
    •   QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true,\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"]}";QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}// 获取根对象QJsonObject rootObj = rootDoc.object();// 解析json数据QJsonValue nameValue = rootObj.value("name");QString strName = nameValue.toString();qDebug() << "strName" << strName;QJsonValue idValue = rootObj.value("id");int iId = idValue.toInt();qDebug() << "iId" << iId;QJsonValue sexValue = rootObj.value("sex");bool bSex = sexValue.toBool();qDebug() << "bSex" << bSex;// 解析scoreData节点的json数据QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();QJsonValue chineseValue = scoreDataObj.value("Chinese");int iChinese = chineseValue.toInt();qDebug() << "iChinese" << iChinese;QJsonValue englishValue = scoreDataObj.value("English");int iEnglish = englishValue.toInt();qDebug() << "iEnglish" << iEnglish;QJsonValue mathValue = scoreDataObj.value("Math");int iMath = mathValue.toInt();qDebug() << "iMath" << iMath;// 解析techData数组中的json数据QJsonValue techDataValue = rootObj.value("techData");QJsonArray techDataArray = techDataValue.toArray();for(int i = 0; i < techDataArray.size(); i++){QJsonValue value = techDataArray.at(i);QString str = value.toString();qDebug() << "str" << str;}
      

json_362">包含数组对象的json数据解析

  • json数据
    • json">  {"id":1002,"name":"Tom","schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"},{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 解析结果
    •   strName "Tom"iId 1002bSex trueiChinese 96iEnglish 82iMath 90strSchoolname "xiaoxue"strSchoolcity "Xian"strSchoolname "zhongxue"strSchoolcity "Xian"strSchoolname "daxue"strSchoolcity "Beijing"
      
  • 代码
    •   QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}// 获取根对象QJsonObject rootObj = rootDoc.object();// 解析json数据QJsonValue nameValue = rootObj.value("name");QString strName = nameValue.toString();qDebug() << "strName" << strName;QJsonValue idValue = rootObj.value("id");int iId = idValue.toInt();qDebug() << "iId" << iId;QJsonValue sexValue = rootObj.value("sex");bool bSex = sexValue.toBool();qDebug() << "bSex" << bSex;// 解析scoreData节点的json数据QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();QJsonValue chineseValue = scoreDataObj.value("Chinese");int iChinese = chineseValue.toInt();qDebug() << "iChinese" << iChinese;QJsonValue englishValue = scoreDataObj.value("English");int iEnglish = englishValue.toInt();qDebug() << "iEnglish" << iEnglish;QJsonValue mathValue = scoreDataObj.value("Math");int iMath = mathValue.toInt();qDebug() << "iMath" << iMath;// 解析schoolData数组对象的json数据QJsonValue schoolDataValue = rootObj.value("schoolData");QJsonArray schoolDataValueArray = schoolDataValue.toArray();for(int i = 0; i < schoolDataValueArray.size(); i++){QJsonValue value = schoolDataValueArray.at(i);QJsonObject obj = value.toObject();QJsonValue schoolnameValue = obj.value("schoolName");QString strSchoolname = schoolnameValue.toString();qDebug() << "strSchoolname" << strSchoolname;QJsonValue schoolcityValue = obj.value("schoolCity");QString strSchoolcity = schoolcityValue.toString();qDebug() << "strSchoolcity" << strSchoolcity;}
      

json_465">json数据修改

  • 原始json数据
    • json">  {"id":1002,"name":"Tom","techData":["C++","JAVA","PYTHON"], "schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"},{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 修改后的json数据
    • json">  {"id":1002,"name":"Jack", // Tom修改为Jack"techData":["C++","JAVA","GO"], // PYTHON修改为GO "schoolData":[{"schoolCity":"Baoji","schoolName":"xiaoxue"}, // Xian改为Baoji{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":100, // 96修改为100"English":82,"Math":90},"sex":true}
      
  • 代码
    •   QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";// 将json数据转为json文档QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}// 获取根对象QJsonObject rootObj = rootDoc.object();// 修改数据rootObj["name"] = "Jack";// 修改数据对象QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();scoreDataObj["Chinese"] = 100;rootObj["scoreData"] = scoreDataObj;// 修改数组QJsonValue techDataValue = rootObj.value("techData");QJsonArray techDataArray = techDataValue.toArray();for(int i = 0; i < techDataArray.size(); i++){if(techDataArray.at(i).toString().compare("PYTHON") == 0){techDataArray.replace(i, "GO");break;}}rootObj["techData"] = techDataArray;// 修改数组对象QJsonValue schoolDataValue = rootObj.value("schoolData");QJsonArray schoolDataArray = schoolDataValue.toArray();for(int i = 0; i < schoolDataArray.size(); i++){QJsonObject obj = schoolDataArray.at(i).toObject();if(obj.value("schoolName").toString().compare("xiaoxue") == 0){obj["schoolCity"] = "Baoji";schoolDataArray.replace(i, obj);break;}}rootObj["schoolData"] = schoolDataArray;// 将json数据对象转为字符串QJsonDocument document;document.setObject(rootObj);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_559">新增json数据

  • 原始json数据
    • json">  {"id":1002,"name":"Tom","techData":["C++", "JAVA", "PYTHON"], "schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"},{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":96,"English":82,"Math":90},"sex":true}
      
  • 新增相应字段后的json数据
    • json">  {"class":5, // 新增项"home":{   // 新增项"father":52,"mather":52},"id":1002,"name":"Tom","schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"},{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"},{"schoolCity":"shanghai","schoolName":"boshi"} // 新增项],"scoreData":{"Chinese":96,"English":82,"Math":90,"Physics":100 // 新增项},"sex":true,"techData":["C++","JAVA","PYTHON","GO"] //新增GO数据}
      
  • 代码
    • json">  QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "parse json data failed.";return false;}QJsonObject rootObj = rootDoc.object();// 新增数据rootObj.insert("class", 5);// 新增数据对象QJsonObject homeObject;homeObject.insert("father", 52);homeObject.insert("mather", 52);rootObj.insert("home", homeObject);// 在数据对象中新增数据QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();scoreDataObj.insert("Physics", 100);rootObj["scoreData"] = scoreDataObj;// 在数组中新增数据QJsonValue techDataValue = rootObj.value("techData");QJsonArray techDataArray = techDataValue.toArray();techDataArray.append("GO");rootObj["techData"] = techDataArray;// 在数组对象中新增数据QJsonValue schoolDataValue = rootObj.value("schoolData");QJsonArray schoolDataArray = schoolDataValue.toArray();QJsonObject doctorObj;doctorObj.insert("schoolName", "boshi");doctorObj.insert("schoolCity", "shanghai");schoolDataArray.append(doctorObj);rootObj["schoolData"] = schoolDataArray;QJsonDocument document;document.setObject(rootObj);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

json_655">删除json数据

  • 原始json数据
    • json">  {"id":1002,"name":"Tom", //此项删除"techData":["C++","JAVA","PYTHON"], // PYTHON删除 "schoolData":[{"schoolCity":"Xian","schoolName":"xiaoxue"}, // 此项删除{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"Chinese":96, //此项删除"English":82,"Math":90},"sex":true}
      
  • 删除相应字段后的json数据
    • json">  {"id":1002,"techData":["C++","JAVA"], "schoolData":[{"schoolCity":"Xian","schoolName":"zhongxue"},{"schoolCity":"Beijing","schoolName":"daxue"}],"scoreData":{"English":82,"Math":90},"sex":true}
      
  • 代码
    •   QByteArray jsonData = "{\"id\":1002,\"name\":\"Tom\",\"techData\":[\"C++\",\"JAVA\",\"PYTHON\"], \"schoolData\":[{\"schoolCity\":\"Xian\",\"schoolName\":\"xiaoxue\"},{\"schoolCity\":\"Xian\",\"schoolName\":\"zhongxue\"},{\"schoolCity\":\"Beijing\",\"schoolName\":\"daxue\"}],\"scoreData\":{\"Chinese\":96,\"English\":82,\"Math\":90},\"sex\":true}";QJsonParseError result;QJsonDocument rootDoc = QJsonDocument::fromJson(jsonData, &result);if(rootDoc.isNull() || result.error != QJsonParseError::NoError){qDebug() << "rootdoc is null";return false;}QJsonObject rootObj = rootDoc.object();// 删除数据rootObj.remove("name");// 删除数据对象中的数据QJsonValue scoreDataValue = rootObj.value("scoreData");QJsonObject scoreDataObj = scoreDataValue.toObject();scoreDataObj.remove("Chinese");rootObj["scoreData"] = scoreDataObj;// 删除数组中的数据QJsonValue techDataValue = rootObj.value("techData");QJsonArray techDataArray = techDataValue.toArray();for(int i = 0; i < techDataArray.size(); i++){if(techDataArray.at(i).toString().compare("PYTHON") == 0){techDataArray.removeAt(i);break;}}rootObj["techData"] = techDataArray;// 删除数组对象中的数据QJsonValue schoolDataValue = rootObj.value("schoolData");QJsonArray schoolDataArray = schoolDataValue.toArray();for(int i = 0; i < schoolDataArray.size(); i++){QJsonObject obj = schoolDataArray.at(i).toObject();if(obj.value("schoolName").toString().compare("xiaoxue") == 0){schoolDataArray.removeAt(i);break;}}rootObj["schoolData"] = schoolDataArray;QJsonDocument document;document.setObject(rootObj);QByteArray byJsonData = document.toJson(QJsonDocument::Compact);QString strJson(byJsonData);
      

http://www.ppmy.cn/news/1516539.html

相关文章

企业群集应用概述与 LVS 负载均衡详解

文章目录 企业群集应用概述与 LVS 负载均衡详解一、企业群集应用概述1.1 群集的含义1.2 现有问题1.3 解决方法 二、企业群集分类2.1 负载均衡群集&#xff08;Load Balance Cluster&#xff09;2.2 高可用群集&#xff08;High Availability Cluster&#xff09;2.3 高性能运算…

游戏开发设计模式之装饰模式

目录 装饰模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在Unity中实现装饰模式以动态扩展游戏对象的功能&#xff1f; 装饰模式与其他设计模式&#xff08;如适配器模式、代理模式&#xff09;相比&#xff0c;有哪些优势和劣势&#xff1f; 优势 劣势 与适配器…

数学建模2024国赛时间及事项安排

2024年的全国大学生数学建模竞赛即将拉开帷幕。考虑到许多同学可能是首次参与此类赛事&#xff0c;尚不清楚如何进行有效的时间安排&#xff0c;博主在此整理了以往参赛的经验和时间管理策略&#xff0c;希望能为大家提供一些有益的参考&#xff0c;更从容地应对国赛。 本届全国…

如何完全掌握音准?

要完全掌握音准&#xff0c;需要综合多方面的训练和实践。以下是一些关键步骤和技巧&#xff1a; 一、基础准备 了解音准概念&#xff1a; 音准是指歌唱和乐器演奏中所发的音高能与一定律制的音高相符。掌握音准有赖于敏锐的听觉、精湛的技巧与适宜的演出环境。选择合适的乐器…

吴恩达机器学习课后作业-04神经网络

神经网络 对y进行独立热编码处理&#xff08;one-hot处理&#xff09;序列化权重参数前向传播代价函数反向传播神经网络优化可视化隐藏层 对y进行独立热编码处理&#xff08;one-hot处理&#xff09; def one_hot_encoder(raw_y):result[]for i in raw_y:#1-10y_tempnp.zeros(1…

62.不同路径

62.不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#…

适用于机器人视觉系统的LED光源

工业光源在机器视觉系统中扮演着至关重要的角色&#xff0c;它们直接影响到图像采集的质量以及后续图像处理的效率和准确性。 在自动化生产线上&#xff0c;光源用于辅助机器人进行精确的零件装配。通过提供稳定且高质量的照明&#xff0c;光源帮助机器人更准确地识别和定位零…

Hive SQL

一、基本数据类型 tinyint 1byte 有符号整数 smallint 2byte 有符号整数 int 4byte 有符号整数 bigint 8byte 有符号整数 boolean 布尔类型&#xff0c;true或者false float 单精度浮点数 double 双精度浮点数 decim…

less -- 总结 01 -(增删改查)

less的使用 // 下载插件 easy-less // 新建文件&#xff0c;后缀名是less&#xff0c;会自动生成一个后缀名为css的文件// 浏览器只认识 html css js // less css 是一种动态样式语言&#xff0c;属于 css预处理语言的一种&#xff0c;它使用类似 css的语法&#xff0c;为 cs…

解除 Excel 表格的文档保护全攻略

在日常工作和学习中&#xff0c;我们可能会遇到 Excel 表格被保护无法编辑的情况。别担心&#xff0c;今天就为大家分享几种解除 Excel 表格文档保护的方法。 一、导入腾讯文档 可以将受保护的 Excel 表格上传到腾讯文档。在部分情况下&#xff0c;腾讯文档会尝试自动解除表…

Unity3D UI Toolkit数据动态绑定详解

前言 在Unity3D中&#xff0c;Compute Shader是一种强大的工具&#xff0c;用于在GPU上执行并行计算任务&#xff0c;这些任务通常涉及大量的数据处理&#xff0c;如图像处理、物理模拟等。然而&#xff0c;由于GPU的并行特性&#xff0c;Compute Shader中的线程&#xff08;也…

归并排序与其例题

一、归并排序的简述 归并排序&#xff08;Merge Sort&#xff09;是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Conquer&#xff09;的策略。它的基本思想是将一个大的问题分解成多个小问题&#xff0c;然后解决这些小问题&#xff0c;最后将结果合并起…

pnpm快速入门

pnpm快速入门 1.使用pnpm启动项目 pnpm是一个优化的包管理器&#xff0c;它通过锁定工作树的方式来减少依赖安装的开销。要在pnpm环境中启动项目&#xff0c;首先你需要确保已经全局安装了pnpm。然后按照以下步骤操作 克隆项目&#xff1a;如果项目还没有下载&#xff0c;使用…

Linux基础 - yum、rzsz、vim 使用与配置、gcc/g++的详细解说

目录 一、Linux 软件包管理器 yum A.什么是软件包&#xff1f; B.关于rzsz&#xff0c;yum的配置 1.安装 sz&#xff0c;rz 命令&#xff1a; a.执行命令sz可将linux中的文件传输到Windows中 b.执行rz命令可将Windows中的文件传输到linux 2.scp XXX.tgz 用户名另一台lin…

2024最新FL Studio24.1.1.4285破解版中文安装包百度云网盘下载地址

大家好&#xff0c;今天我要给大家介绍一款音乐制作神器——FL Studio 24.1.1.4285中文版。这款软件可是音乐制作界的翘楚&#xff0c;无论是专业人士还是音乐爱好者&#xff0c;都会为它的强大功能和易用性所折服。 我们来看看FL Studio的特点。 这是一款全能型的音乐工作站&…

el-form中使用v-model和prop实现动态校验

如何在Vue的el-form中使用v-model和prop实现动态校验&#xff0c;包括多个变量控制校验、数组循环校验和字段级条件显示。通过实例演示了如何配合rules和自定义验证函数来确保表单的完整性和有效性。 公式&#xff1a; 动态校验项的v-model的绑定值 el-form的属性 :model的值 …

SystemTap(stap)架构和原理介绍,以及脚本编写举例

1 SystemTap简介 SystemTap是一个诊断Linux系统性能或功能问题的开源工具。它允许开发人员和系统管理员深入研究内核甚至用户空间应用程序的行为&#xff0c;以便发现错误状态、性能问题&#xff0c;或者仅仅为了解系统是如何工作的。它使得对运行时的Linux系统进行诊断调式变…

Windows安装Tomcat10

1. 下载Tomcat Tomcat官网 https://tomcat.apache.org/download-10.cgi ​下载安装jdk17 &#xff1a;jdk-17_windows-x64_bin.exe 配置JAVA环境变量 JAVA_HOME&#xff1a;C:\Program Files\Java\jdk-17 PATH&#xff1a;%Java_Home%\bin;%Java_Home%\jre\bin; 2. 设置环境变…

【13.3 python中的高级文件操作】

python中的高级文件操作 在Python中&#xff0c;除了基本的文件读写和目录操作外&#xff0c;还有一些高级的文件和目录操作&#xff0c;如删除文件、重命名文件和目录、以及获取文件的基本信息等。这些操作通常通过os模块和pathlib模块来实现。下面我将详细介绍这些操作&#…

电脑换硬盘怎么全盘克隆?轻松实现数据迁移

随着科技的不断发展&#xff0c;电脑硬盘的存储容量和读写速度也在不断提升。为了获得更好的电脑使用体验&#xff0c;许多用户会选择更换更大容量、更高效的硬盘。然而&#xff0c;在更换硬盘的过程中&#xff0c;一个关键的问题摆在了我们面前&#xff1a;如何将旧硬盘中的所…