json文件写操作

一、背景

二、json写操作

2.1 json文件写操作,拷贝初版

//json文件写操作,拷贝初版void json_write()
{//1. 定义对象 { }cJSON* interest = cJSON_CreateObject();// 插入元素,对应 键值对cJSON_AddItemToObject(interest, "combat", cJSON_CreateString("热血"));        // 当值是字符串时,需要使用函数cJSON_CreateString()创建cJSON_AddItemToObject(interest, "reasoning", cJSON_CreateString("推理"));// 或者使用宏进行添加//cJSON_AddStringToObject(interest, "reasoning", "推理");    // 或者这样写// 2.定义 [ ] 数组cJSON* final = cJSON_CreateArray();// 往数组中添加元素cJSON_AddItemToArray(final, cJSON_CreateString("BE"));cJSON_AddItemToArray(final, cJSON_CreateString("HE"));// 3.定义 { } 对象cJSON* likeObject1 = cJSON_CreateObject();cJSON_AddItemToObject(likeObject1, "game", cJSON_CreateString("斩赤红之瞳"));cJSON_AddItemToObject(likeObject1, "Episodes", cJSON_CreateNumber(22));        // 当值是数字时,需要使用函数cJSON_CreateNumber()创建//cJSON_AddNumberToObject(likeObject1, "price", 66.6);    // 或者这样写cJSON* likeObject2 = cJSON_CreateObject();cJSON_AddItemToObject(likeObject2, "game", cJSON_CreateString("文豪野犬"));cJSON_AddItemToObject(likeObject2, "Episodes", cJSON_CreateNumber(84));// 4.定义 [ ] 数组cJSON* like = cJSON_CreateArray();// 往数组中添加元素cJSON_AddItemToArray(like, likeObject1);cJSON_AddItemToArray(like, likeObject2);// 定义 [ ] 数组cJSON* education1 = cJSON_CreateArray();cJSON_AddItemToArray(education1, cJSON_CreateString("战斗"));cJSON_AddItemToArray(education1, cJSON_CreateString("热血"));cJSON* education2 = cJSON_CreateArray();cJSON_AddItemToArray(education2, cJSON_CreateString("推理"));cJSON_AddItemToArray(education2, cJSON_CreateString("格斗"));// 5.定义 [ ] 数组/*"languages": {"serialOne": { "language": "汉语", "grade" : 10 },"serialTwo" : { "language": "英语", "grade" : 6}}*/cJSON* education = cJSON_CreateArray();cJSON_AddItemToArray(education, education1);cJSON_AddItemToArray(education, education2);// 定义对象 { }cJSON* serialOne = cJSON_CreateObject();cJSON_AddItemToObject(serialOne, "language", cJSON_CreateString("汉语"));cJSON_AddItemToObject(serialOne, "grade", cJSON_CreateNumber(10));cJSON* serialTwo = cJSON_CreateObject();cJSON_AddItemToObject(serialTwo, "language", cJSON_CreateString("英语"));cJSON_AddItemToObject(serialTwo, "grade", cJSON_CreateNumber(6));// 定义对象 { }cJSON* languages = cJSON_CreateObject();cJSON_AddItemToObject(languages, "serialOne", serialOne);cJSON_AddItemToObject(languages, "serialTwo", serialTwo);// 创建跟对象cJSON* root = cJSON_CreateObject();// 将子项插入根项中cJSON_AddItemToObject(root, "name", cJSON_CreateString("Blue"));cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(25));cJSON_AddItemToObject(root, "interest", interest);cJSON_AddItemToObject(root, "final", final);cJSON_AddItemToObject(root, "like", like);cJSON_AddItemToObject(root, "education", education);cJSON_AddItemToObject(root, "languages", languages);cJSON_AddItemToObject(root, "vip", cJSON_CreateTrue());    // "vip":    true        插入布尔类型数据需要使用cJSON_CreateBool函数cJSON_AddItemToObject(root, "address", cJSON_CreateNull());    // "address":    null    插入NULL值需要使用cJSON_CreateNull函数//cJSON_AddTrueToObject(root, "vip");//cJSON_AddNullToObject(root, "address");    // 或者这样写也是可以的// 控制台输出char* ALL_JSON = cJSON_Print(root);char* ALL_JSONUnformatted = cJSON_PrintUnformatted(root);printf("ALL_JSON:\n%s\n", ALL_JSON);        // ALL_JSON:有做格式调整printf("ALL_JSONUnformatted:\n%s\n", ALL_JSONUnformatted);    // cJSON_PrintUnformatted:没有做格式调整// 返回的字符串指针需要自己释放free(ALL_JSON);free(ALL_JSONUnformatted);//****************************************************************// 打开文件FILE* file = NULL;file = fopen("E:\\abs\\test.json", "w");if (file == NULL) {printf("Open file fail!\n");// 释放指针内存cJSON_Delete(root);return;}char* cjValue = cJSON_Print(root);// 写入文件//int ret = fwrite(cjValue, sizeof(char), strlen(cjValue), file);int ret = fputs(cjValue, file);if (ret == EOF) {printf("写入文件失败!\n");}fclose(file);free(cjValue);// 释放指针内存cJSON_Delete(root);
}

2.2修改成代码规范版,包括增加指针规范安全

//json文件写操作,代码规范初级版void json_write()
{//1. 定义对象 { }cJSON* interest = cJSON_CreateObject();if(interest == nullptr){return;}// 插入元素,对应 键值对cJSON_AddItemToObject(interest, "combat", cJSON_CreateString("热血"));        // 当值是字符串时,需要使用函数cJSON_CreateString()创建cJSON_AddItemToObject(interest, "reasoning", cJSON_CreateString("推理"));// 或者使用宏进行添加//cJSON_AddStringToObject(interest, "reasoning", "推理");    // 或者这样写// 2.定义 [ ] 数组cJSON* final = cJSON_CreateArray();// 往数组中添加元素cJSON_AddItemToArray(final, cJSON_CreateString("BE"));cJSON_AddItemToArray(final, cJSON_CreateString("HE"));// 3.定义 { } 对象cJSON* likeObject1 = cJSON_CreateObject();cJSON_AddItemToObject(likeObject1, "game", cJSON_CreateString("斩赤红之瞳"));cJSON_AddItemToObject(likeObject1, "Episodes", cJSON_CreateNumber(22));        // 当值是数字时,需要使用函数cJSON_CreateNumber()创建//cJSON_AddNumberToObject(likeObject1, "price", 66.6);    // 或者这样写cJSON* likeObject2 = cJSON_CreateObject();cJSON_AddItemToObject(likeObject2, "game", cJSON_CreateString("文豪野犬"));cJSON_AddItemToObject(likeObject2, "Episodes", cJSON_CreateNumber(84));// 4.定义 [ ] 数组cJSON* like = cJSON_CreateArray();// 往数组中添加元素cJSON_AddItemToArray(like, likeObject1);cJSON_AddItemToArray(like, likeObject2);// 定义 [ ] 数组cJSON* education1 = cJSON_CreateArray();cJSON_AddItemToArray(education1, cJSON_CreateString("战斗"));cJSON_AddItemToArray(education1, cJSON_CreateString("热血"));cJSON* education2 = cJSON_CreateArray();cJSON_AddItemToArray(education2, cJSON_CreateString("推理"));cJSON_AddItemToArray(education2, cJSON_CreateString("格斗"));// 5.定义 [ ] 数组/*"languages": {"serialOne": { "language": "汉语", "grade" : 10 },"serialTwo" : { "language": "英语", "grade" : 6}}*/cJSON* education = cJSON_CreateArray();cJSON_AddItemToArray(education, education1);cJSON_AddItemToArray(education, education2);// 定义对象 { }cJSON* serialOne = cJSON_CreateObject();cJSON_AddItemToObject(serialOne, "language", cJSON_CreateString("汉语"));cJSON_AddItemToObject(serialOne, "grade", cJSON_CreateNumber(10));cJSON* serialTwo = cJSON_CreateObject();cJSON_AddItemToObject(serialTwo, "language", cJSON_CreateString("英语"));cJSON_AddItemToObject(serialTwo, "grade", cJSON_CreateNumber(6));// 定义对象 { }cJSON* languages = cJSON_CreateObject();cJSON_AddItemToObject(languages, "serialOne", serialOne);cJSON_AddItemToObject(languages, "serialTwo", serialTwo);// 创建跟对象cJSON* root = cJSON_CreateObject();// 将子项插入根项中cJSON_AddItemToObject(root, "name", cJSON_CreateString("Blue"));cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(25));cJSON_AddItemToObject(root, "interest", interest);cJSON_AddItemToObject(root, "final", final);cJSON_AddItemToObject(root, "like", like);cJSON_AddItemToObject(root, "education", education);cJSON_AddItemToObject(root, "languages", languages);cJSON_AddItemToObject(root, "vip", cJSON_CreateTrue());    // "vip":    true        插入布尔类型数据需要使用cJSON_CreateBool函数cJSON_AddItemToObject(root, "address", cJSON_CreateNull());    // "address":    null    插入NULL值需要使用cJSON_CreateNull函数//cJSON_AddTrueToObject(root, "vip");//cJSON_AddNullToObject(root, "address");    // 或者这样写也是可以的// 控制台输出char* ALL_JSON = cJSON_Print(root);char* ALL_JSONUnformatted = cJSON_PrintUnformatted(root);printf("ALL_JSON:\n%s\n", ALL_JSON);        // ALL_JSON:有做格式调整printf("ALL_JSONUnformatted:\n%s\n", ALL_JSONUnformatted);    // cJSON_PrintUnformatted:没有做格式调整// 返回的字符串指针需要自己释放free(ALL_JSON);free(ALL_JSONUnformatted);//****************************************************************// 打开文件FILE* file = NULL;file = fopen("E:\\abs\\test.json", "w");if (file == NULL) {printf("Open file fail!\n");// 释放指针内存cJSON_Delete(root);return;}char* cjValue = cJSON_Print(root);// 写入文件//int ret = fwrite(cjValue, sizeof(char), strlen(cjValue), file);int ret = fputs(cjValue, file);if (ret == EOF) {printf("写入文件失败!\n");}fclose(file);free(cjValue);// 释放指针内存cJSON_Delete(root);
}

2.3 json文件写操作,代码规范后应用版

//json文件写操作,代码规范后应用版#include <iostream>
#include <string>
#include "../3rd/cJSON/cJSON.h"
#include "../test_memset/include/ArrayToZero.h"using namespace std;#ifdef __cplusplus
extern "C" {
#endifvoid json_write()
{//1. 定义对象 { }cJSON* interest = cJSON_CreateObject();if(interest == nullptr){return;}// 插入元素,对应 键值对cJSON_AddItemToObject(interest, "combat", cJSON_CreateString("热血"));        // 当值是字符串时,需要使用函数cJSON_CreateString()创建cJSON_AddItemToObject(interest, "reasoning", cJSON_CreateString("推理"));// 或者使用宏进行添加//cJSON_AddStringToObject(interest, "reasoning", "推理");    // 或者这样写// 2.定义 [ ] 数组cJSON* final = cJSON_CreateArray();if(final == nullptr){cJSON_Delete(interest);return;}// 往数组中添加元素cJSON_AddItemToArray(final, cJSON_CreateString("BE"));cJSON_AddItemToArray(final, cJSON_CreateString("HE"));// 3.定义 { } 对象cJSON* likeObject1 = cJSON_CreateObject();if(likeObject1 == nullptr){cJSON_Delete(interest);cJSON_Delete(final);return;}cJSON_AddItemToObject(likeObject1, "game", cJSON_CreateString("斩赤红之瞳"));cJSON_AddItemToObject(likeObject1, "Episodes", cJSON_CreateNumber(22));        // 当值是数字时,需要使用函数cJSON_CreateNumber()创建//cJSON_AddNumberToObject(likeObject1, "price", 66.6);    // 或者这样写cJSON* likeObject2 = cJSON_CreateObject();if(likeObject1 == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);return;}cJSON_AddItemToObject(likeObject2, "game", cJSON_CreateString("文豪野犬"));cJSON_AddItemToObject(likeObject2, "Episodes", cJSON_CreateNumber(84));// 4.定义 [ ] 数组cJSON* like = cJSON_CreateArray();if(like == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);return;}// 往数组中添加元素cJSON_AddItemToArray(like, likeObject1);cJSON_AddItemToArray(like, likeObject2);// 定义 [ ] 数组cJSON* education1 = cJSON_CreateArray();if(education1 == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);return;}cJSON_AddItemToArray(education1, cJSON_CreateString("战斗"));cJSON_AddItemToArray(education1, cJSON_CreateString("热血"));cJSON* education2 = cJSON_CreateArray();if(education2 == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);return;}cJSON_AddItemToArray(education2, cJSON_CreateString("推理"));cJSON_AddItemToArray(education2, cJSON_CreateString("格斗"));// 5.定义 [ ] 数组/*"languages": {"serialOne": { "language": "汉语", "grade" : 10 },"serialTwo" : { "language": "英语", "grade" : 6}}*/cJSON* education = cJSON_CreateArray();cJSON_AddItemToArray(education, education1);cJSON_AddItemToArray(education, education2);if(education == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);cJSON_Delete(education2);return;}// 定义对象 { }cJSON* serialOne = cJSON_CreateObject();if(serialOne == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);cJSON_Delete(education2);cJSON_Delete(education);return;}cJSON_AddItemToObject(serialOne, "language", cJSON_CreateString("汉语"));cJSON_AddItemToObject(serialOne, "grade", cJSON_CreateNumber(10));cJSON* serialTwo = cJSON_CreateObject();if(serialTwo == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);cJSON_Delete(education2);cJSON_Delete(education);cJSON_Delete(serialOne);return;}cJSON_AddItemToObject(serialTwo, "language", cJSON_CreateString("英语"));cJSON_AddItemToObject(serialTwo, "grade", cJSON_CreateNumber(6));// 定义对象 { }cJSON* languages = cJSON_CreateObject();if(languages == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);cJSON_Delete(education2);cJSON_Delete(education);cJSON_Delete(serialOne);cJSON_Delete(serialTwo);return;}cJSON_AddItemToObject(languages, "serialOne", serialOne);cJSON_AddItemToObject(languages, "serialTwo", serialTwo);// 创建跟对象cJSON* root = cJSON_CreateObject();if(root == nullptr){cJSON_Delete(interest);cJSON_Delete(final);cJSON_Delete(likeObject1);cJSON_Delete(likeObject2);cJSON_Delete(like);cJSON_Delete(education1);cJSON_Delete(education2);cJSON_Delete(education);cJSON_Delete(serialOne);cJSON_Delete(serialTwo);cJSON_Delete(languages);return;}// 将子项插入根项中cJSON_AddItemToObject(root, "name", cJSON_CreateString("Blue"));cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(25));cJSON_AddItemToObject(root, "interest", interest);cJSON_AddItemToObject(root, "final", final);cJSON_AddItemToObject(root, "like", like);cJSON_AddItemToObject(root, "education", education);cJSON_AddItemToObject(root, "languages", languages);cJSON_AddItemToObject(root, "vip", cJSON_CreateTrue());    // "vip":    true        插入布尔类型数据需要使用cJSON_CreateBool函数cJSON_AddItemToObject(root, "address", cJSON_CreateNull());    // "address":    null    插入NULL值需要使用cJSON_CreateNull函数//cJSON_AddTrueToObject(root, "vip");//cJSON_AddNullToObject(root, "address");    // 或者这样写也是可以的// 控制台输出char* ALL_JSON = cJSON_Print(root);char* ALL_JSONUnformatted = cJSON_PrintUnformatted(root);printf("ALL_JSON:\n%s\n", ALL_JSON);                          // ALL_JSON:有做格式调整printf("ALL_JSONUnformatted:\n%s\n", ALL_JSONUnformatted);    // cJSON_PrintUnformatted:没有做格式调整// 返回的字符串指针需要自己释放free(ALL_JSON);free(ALL_JSONUnformatted);//****************************************************************// 打开文件FILE* file = NULL;file = fopen("E:\\abs\\test.json", "w");if (file == NULL) {printf("Open file fail!\n");// 释放指针内存cJSON_Delete(root);return;}char* cjValue = cJSON_Print(root);// 写入文件//int ret = fwrite(cjValue, sizeof(char), strlen(cjValue), file);int ret = fputs(cjValue, file);if (ret == EOF) {printf("写入文件失败!\n");}fclose(file);free(cjValue);// 释放指针内存cJSON_Delete(root);
}int  main()
{cout << "test CJSON" << "hello" << endl;ArrayToZero arrayToZero;arrayToZero.showArray();json_write();return 0;
}#ifdef __cplusplus
}
#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基于Fluent和深度学习算法驱动的流体力学计算与应用】

在深度学习与流体力学融合的背景下&#xff0c;科研边界不断拓展&#xff0c;创新成果层出不穷。从物理模型融合到复杂流动模拟&#xff0c;从数据驱动研究到流场智能分析&#xff0c;深度学习正以前所未有的力量重塑流体力学领域。目前在Nature和Science杂志上发表的深度学习驱…

Leetcode 力扣93. 复原IP地址 (抖音号:708231408)

有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址&#xff0c;但是 "0.011.255.2…

常见乱码分析

java编解码 如果该编码本身支持中文&#xff0c;同类型 编解码&#xff0c;中文不会乱码&#xff0c; 如果该编码本身不支持中文&#xff08;如&#xff1a;US_ASCII&#xff0c;ISO_8859_1&#xff09;&#xff0c;同类型 编解码&#xff0c;中文也会乱码 StandardCharsets 不…

uinapp 写好的聊天基础页面,拿来就用非常方便

<template><view class"chat"><!-- <u-navbar :title"name" :placeholdertrue leftClick"goback"></u-navbar> --><!-- 顶部标题 --><view class"topTabbar"><!-- 返回图标 --><u…

Linux 中的进程优先级管理

在 Linux 系统中&#xff0c;理解和管理进程优先级是维护系统性能的关键因素。本文将详细介绍进程优先级&#xff08;priority&#xff09;的基本概念、如何查看和调整进程优先级&#xff0c;以及 nice 值对优先级的影响。 基本概念 在多任务操作系统中&#xff0c;CPU 资源的…

Power BI 使用Filter()函数完成类似子查询的筛选

1. 假如我们有两张表&#xff0c;如下图&#xff0c;以及它们的关联方式&#xff1a; tb_bursary.student_id tb_student.id 2. 我们想要实现这个逻辑&#xff0c;先找出tb_student里&#xff0c;sno最大的学生id&#xff0c;再根据查找出的学生id&#xff0c;找到tb_bursary…

TS 进阶类型

联合类型 | 当 TS 不确定一个联合类型的变量到底是哪个类型的时候,可以定义多种类型&#xff0c;例如&#xff0c;一个变量既支持 number 类型&#xff0c;又支持 string 类型. let num: 类型1 | 类型2 | 类型3 .... 初始值 let num:number | string 1 // 可以写多个类型 /…

C++笔试强训day34

目录 1.ISBN号码 2.kotori和迷宫 3.矩阵最长递增路径 1.ISBN号码 链接https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5?tpId290&tqId39864&ru/exam/oj 提取题意&#xff0c;模拟一下即可。 #include <iostream> using namespace std; …

学习笔记:C语言的32个关键字

一、标准C语言的32个关键字 1、基本数据类型&#xff1a; signed unsigned char int float double short long void 2、构造数据类型&#xff1a; struct union enum 3、数据存储类别&#xff1a; auto static extern register 4、数据优化&#xff1a; const volatile 5、9条…

Java(其十二)--集合·初级

ArrayList集合 集合有很多种&#xff0c;ArrayList 是最常用的一种&#xff0c;集合的作用相当于C中的STL 最显著的特点就是&#xff1a;自动扩容。 一般定义式 ArrayList list new ArrayList(); //该 list 是可以储存各种类型的数据的&#xff0c;要想约束储存的数据&#x…

买车是小米su7还是model3?这个AI在我这里“干掉了”百万车评人

作者 | 曾响铃 文 | 响铃说 43天交付1万辆新车&#xff01;雷军的微博一发&#xff0c;又把小米汽车推上了热搜。 自小米su7问世以来&#xff0c;天天刷屏。说不心动&#xff0c;那是假的&#xff0c;身边好几个朋友都按捺不住要下订一台了。 但真要买&#xff0c;还是忍不住…

[回溯法]子集和数问题

没有任何优化&#xff0c;纯深搜做法&#xff1a; #include<iostream> #include<vector> using namespace std;const int N 100010; int nums[N],selected[N]; int n,M,sum; bool ansfalse;void Out() {for (int i 0; i < n - 1; i)printf("%d", …

Gateway+Oauth2授权码登录

在Oauth服务中配置 @Override protected void configure(HttpSecurity http) throws Exception {http.csrf().disable().formLogin().permitAll().and()//主要配置好.formLogin().authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll().antMatche…

强大的医院绩效考核管理系统源码,支持行业内所有绩效方案,且每步核算都可自主进行方案的新建、调整。

医院绩效考核管理系统是采用B/S架构模式设计、使用JAVA语言开发、后台使用MySql数据库进行管理的一整套计算机应用软件源码。 系统和his系统进行对接&#xff0c;按照设定周期&#xff0c;从his系统获取医院科室和医生、护士、其他人员工作量&#xff0c;对没有录入信息化系统…

YOLOv10:全面的效率-准确性驱动模型设计

YOLOv10&#xff1a;全面的效率-准确性驱动模型设计 提出背景精细拆分解法双重标签分配一致的匹配度量以效率为导向的模型设计 YOLO v10 总结1. 双重标签分配策略2. 一致匹配度量策略 论文&#xff1a;https://arxiv.org/pdf/2405.14458 代码&#xff1a;https://github.com/T…

今日选题。

诱导读者点开文章的9引真经&#xff08;一&#xff09; 标题重要么&#xff1f;新媒体、博客文通常在手机上阅读。首先所有的内容不同于纸媒&#xff0c;手机只展现标题&#xff0c;而内容都是折叠。其次读者能像看内容一样看4、5条或者7、8条标题&#xff08;区别于不同的主流…

微信小程序实现计算当前位置到目的地的距离

实现方式&#xff1a;使用腾讯位置服务 微信小程序JavaScript SDK | 腾讯位置服务 1.进腾讯位置服务申请key 2.下载sdk 微信小程序JavaScript SDK | 腾讯位置服务 3.微信公众平台添加授权域名 4.代码实现计算 const qqmap require("../../utils/qqmap-wx-jssdk.min.js…

一键部署Ollama和粘土模型?快来看看吧!

厚德云新上两款AI软件&#xff01;无需部署一键生成&#xff01; 前言 上新Ollama与粘土模型 就在5月23日&#xff0c;厚德云官方上新了Ollama开源大语言模型与粘土画风模型。它们都可以在平台上实施一键部署&#xff0c;那么这两款AI应用究竟有什么样的魅力呢&#xff1f;我们…

Agent 如何更有用

先看这篇会更连贯 Agent的记忆能力 学习来源 LLM的基础能力 1、复杂任务的规划和分解 2、遵循复杂指令 3、自主使用工具 4、减少幻觉 一两个人就能开发的有用AI AI的优势&#xff1a;长文本的阅读理解能力、广阔的知识面。 1、导游&#xff1a;GPT-4知道很多著名景点&…

2024年4k激光投影仪购买指南:618推荐家用4K激光投影当贝X5 Pro

2024年的618已经悄然开始热度也在持续攀升&#xff0c;每年的大促节点是投影仪优惠力度最大的时候&#xff0c;很多消费者都会选择在这个时候去购买心仪的投影仪&#xff0c;想要投影放在客厅使用替代电视机的&#xff0c;一般都会去选择4K激光投影&#xff0c;如何挑选一款极具…