色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

cJSON在傳統(tǒng)C/S模型的應(yīng)用

共熵服務(wù)中心 ? 來(lái)源:未知 ? 2022-11-24 19:25 ? 次閱讀

8c8a5e28-6be9-11ed-8abf-dac502259ad0.png

文章轉(zhuǎn)發(fā)自51CTO 開(kāi)源基礎(chǔ)軟件社區(qū) OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂(lè)部【FFH】啃論文俱樂(lè)部---JSON壓縮算法解讀

1.關(guān)于作者

大家好!我是來(lái)自深圳技術(shù)大學(xué)FSR Lab(編者注:Falcon Swarm Robotics Lab獵鷹集群機(jī)器人控制實(shí)驗(yàn)室的縮寫(xiě))的同學(xué)HagonChan,陳漢武,標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開(kāi)源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。

在OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂(lè)部里,F(xiàn)FH小組同學(xué)們與華為、軟通動(dòng)力、潤(rùn)和軟件、拓維信息、深開(kāi)鴻等公司一起,學(xué)習(xí)和研究序列化相關(guān)技術(shù)…

2. 前言

cJSON是一個(gè)用在底層數(shù)據(jù)通信的一個(gè)C語(yǔ)言的JSON數(shù)據(jù)解析庫(kù)。比如在一個(gè)系統(tǒng)底層使用socket方式進(jìn)行通信的時(shí)候,通信兩端就可以用cJSON對(duì)傳遞的JSON數(shù)據(jù)對(duì)象進(jìn)行處理,下面我們來(lái)看看一篇關(guān)于cJSON在傳統(tǒng)C/S(Client/Server)模型的應(yīng)用。

cJSON github 開(kāi)源地址如下:https://github.com/DaveGamble/cJSON

3. cJSON結(jié)構(gòu)體分析

我們來(lái)看看cJSON的源碼的結(jié)構(gòu)體部分:

/* The cJSON structure: */
typedef struct cJSON
{
    struct cJSON *next;
    struct cJSON *prev;
    struct cJSON *child;
    int type;
    char *valuestring;
    int valueint;
    double valuedouble;
    char *string;
} cJSON;
  • *next/*prev:指向下一條/上一條鍵值對(duì)(key-value)節(jié)點(diǎn)。

  • type:表示該鍵值對(duì)節(jié)點(diǎn)中值的數(shù)據(jù)類型。

  • *valuestring/valueint/valuedouble:如果type為字符串/整型/浮點(diǎn)數(shù)類型,則其指向該鍵值。

  • *string:用于存儲(chǔ)所有鍵(key)的名稱,包括child中的key。

  • *child:當(dāng)值類型為復(fù)雜數(shù)據(jù)結(jié)構(gòu),如數(shù)組,對(duì)象,嵌套JSON等等,則該指針指向該鍵值。

可以看到cJSON是通過(guò)鏈表來(lái)存儲(chǔ)JSON數(shù)據(jù)的,這個(gè)設(shè)計(jì)比較巧妙,相較于JSONcpp,cJSON可以保證寫(xiě)入的數(shù)據(jù)和輸出的數(shù)據(jù)的順序保持一致,而JSONcpp則不能保證寫(xiě)入和輸出的順序一致性,因?yàn)樵诖鎯?chǔ)的時(shí)候JSONcpp會(huì)按照key-value進(jìn)行內(nèi)部排序。所以對(duì)于一些要求JSON數(shù)據(jù)順序的業(yè)務(wù),cJSON相對(duì)于JSONcpp就是一個(gè)更好的選擇。

通過(guò)這個(gè)數(shù)據(jù)結(jié)構(gòu)我們也可以知道每一個(gè)JSON對(duì)象里面的鍵值對(duì)都通過(guò)next和prev指針鏈接相鄰的鍵值對(duì)節(jié)點(diǎn),以保證我們剛剛說(shuō)的數(shù)據(jù)順序。

從這個(gè)數(shù)據(jù)結(jié)構(gòu)我們還能看到另外一個(gè)巧妙地地方,就是*child指針,這個(gè)指針讓這個(gè)cJSON支持復(fù)雜數(shù)據(jù)結(jié)構(gòu),比如數(shù)組,對(duì)象,嵌套JSON數(shù)據(jù)對(duì)象等。

cJSON的主要功能接口
功能接口 特性
cJSON_CreateObject() 生成一個(gè)JSON類型的對(duì)象
cJSON_AddStringToObject() 給JSON對(duì)象添加結(jié)構(gòu)屬性
cJSON_GetObjectItem() 獲取JSON對(duì)象每個(gè)屬性的值
cJSON_Print() 將JSON對(duì)象的屬性解析到緩存中
cJSON_Parse()? 字符串被解析為JSON對(duì)象
cJSON_Delete() 釋放創(chuàng)建的JSON對(duì)象

如上表,cJSON庫(kù)里面有很多函數(shù)方法,可以進(jìn)行一系列創(chuàng)建以及處理JSON對(duì)象的操作。

4. 數(shù)據(jù)打包過(guò)程

8cb1f118-6be9-11ed-8abf-dac502259ad0.png

數(shù)據(jù)包在上傳到服務(wù)器之前需要封裝成JSON格式,然后通過(guò)網(wǎng)絡(luò)傳輸。因此,需要?jiǎng)?chuàng)建一個(gè)cJSON類型的對(duì)象,然后調(diào)用cJSON_AddStringToObject()函數(shù),向?qū)ο筇砑?a target="_blank">信息的屬性值,此時(shí)通過(guò)調(diào)用 cJSON_Print()的函數(shù)將對(duì)象的屬性解析到緩存中,這里可以認(rèn)為將cJSON對(duì)象序列化為字符串,所以實(shí)際上,緩存中存儲(chǔ)了一個(gè)字符串。此時(shí),可以根據(jù)Ascii代碼表將緩存的Ascii值順序轉(zhuǎn)換為十六進(jìn)制數(shù)。最后,將十六進(jìn)制數(shù)發(fā)送到服務(wù)器后,至此打包工作完成。

5. 解析數(shù)據(jù)包過(guò)程

8cdfe29e-6be9-11ed-8abf-dac502259ad0.png

同樣,在服務(wù)器將信息發(fā)送給客戶端后,需要根據(jù)協(xié)議的格式對(duì)數(shù)據(jù)包進(jìn)行適當(dāng)?shù)姆治觥R虼耍藭r(shí)調(diào)用cJSON_Parse()函數(shù)來(lái)解析來(lái)自服務(wù)器的JSON數(shù)據(jù)包,此外,還需要?jiǎng)?chuàng)建cJSON的對(duì)象來(lái)接收解析后的數(shù)據(jù),最后,使用JSON_GetObjectItem()的函數(shù)來(lái)獲取cJSON對(duì)象的不同屬性值,這樣就完成了數(shù)據(jù)包的解包工作。需要注意的是,在處理數(shù)據(jù)后,必須調(diào)用cJSON_Delete()函數(shù)來(lái)釋放創(chuàng)建的對(duì)象。否則會(huì)導(dǎo)致內(nèi)存泄漏,并導(dǎo)致系統(tǒng)不穩(wěn)定。

6.代碼庫(kù)位置

大家是不是躍躍欲試,想看代碼?

如果希望尋找OpenHarmony引用的第三方開(kāi)源庫(kù),只需要在Gitee上全局搜索OpenHarmony third party+相關(guān)領(lǐng)域關(guān)鍵術(shù)語(yǔ)。

OpenHarmony跟JSON相關(guān)的庫(kù),就是全局搜索OpenHarmony third party json字段。

8d0f92be-6be9-11ed-8abf-dac502259ad0.png

<本文完>

寫(xiě)在最后

OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”(以下簡(jiǎn)稱“啃論文俱樂(lè)部”)是在 2022年 1 月 11 日的一次日常活動(dòng)中誕生的。截至 3 月 31 日,啃論文俱樂(lè)部已有 87 名師生和企業(yè)導(dǎo)師參與,目前共有十二個(gè)技術(shù)方向并行探索,每個(gè)方向都有專業(yè)的技術(shù)老師帶領(lǐng)同學(xué)們通過(guò)啃綜述論文制定技術(shù)地圖,按“降龍十八掌”的學(xué)習(xí)方法編排技術(shù)開(kāi)發(fā)內(nèi)容,并通過(guò)專業(yè)推廣培養(yǎng)高校開(kāi)發(fā)者成為軟件技術(shù)學(xué)術(shù)級(jí)人才。

啃論文俱樂(lè)部的宗旨是希望同學(xué)們?cè)陂_(kāi)源活動(dòng)中得到軟件技術(shù)能力提升、得到技術(shù)寫(xiě)作能力提升、得到講解技術(shù)能力提升。大學(xué)一年級(jí)新生〇門檻參與,已有俱樂(lè)部來(lái)自多所高校的大一同學(xué)寫(xiě)出高居榜首的技術(shù)文章。

如今,搜索“啃論文”,人們不禁想到、而且看到的都是我們——OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”的產(chǎn)出。

8d3978ae-6be9-11ed-8abf-dac502259ad0.jpg

8d57df38-6be9-11ed-8abf-dac502259ad0.jpg

8d6c39ec-6be9-11ed-8abf-dac502259ad0.jpg

OpenHarmony開(kāi)源與開(kāi)發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”學(xué)習(xí)資料合集

1)入門資料:啃論文可以有怎樣的體驗(yàn)

https://docs.qq.com/slide/DY0RXWElBTVlHaXhi?u=4e311e072cbf4f93968e09c44294987d

2)操作辦法:怎么從啃論文到開(kāi)源提交以及深度技術(shù)文章輸出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU

3)企業(yè)/學(xué)校/老師/學(xué)生為什么要參與 & 啃論文俱樂(lè)部的運(yùn)營(yíng)辦法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq

4)往期啃論文俱樂(lè)部同學(xué)分享會(huì)精彩回顧:

同學(xué)分享會(huì)No1.成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY

同學(xué)分享會(huì)No.2 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF

同學(xué)們分享會(huì)No.3 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/25)

https://docs.qq.com/doc/DUm5pUEF3ck1VcG92?u=4e311e072cbf4f93968e09c44294987d

現(xiàn)在,你是不是也熱血沸騰,摩拳擦掌地準(zhǔn)備加入這個(gè)俱樂(lè)部呢?當(dāng)然歡迎啦!啃論文俱樂(lè)部向任何對(duì)開(kāi)源技術(shù)感興趣的大學(xué)生開(kāi)發(fā)者敞開(kāi)大門。

8dc3045c-6be9-11ed-8abf-dac502259ad0.png

掃碼添加 OpenHarmony 高校小助手,加入“啃論文俱樂(lè)部”微信群

后續(xù),我們會(huì)在服務(wù)中心公眾號(hào)陸續(xù)分享一些 OpenHarmony 開(kāi)源與開(kāi)發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”學(xué)習(xí)心得體會(huì)和總結(jié)資料。記得呼朋引伴來(lái)看哦。

8dd82044-6be9-11ed-8abf-dac502259ad0.gif

8ded88e4-6be9-11ed-8abf-dac502259ad0.png

8e3e68b8-6be9-11ed-8abf-dac502259ad0.png

8e55b004-6be9-11ed-8abf-dac502259ad0.png

8eb28310-6be9-11ed-8abf-dac502259ad0.png

8ee38e92-6be9-11ed-8abf-dac502259ad0.png

8efaa4e2-6be9-11ed-8abf-dac502259ad0.png

8f202b90-6be9-11ed-8abf-dac502259ad0.png

8f3e134e-6be9-11ed-8abf-dac502259ad0.png

8f57c60e-6be9-11ed-8abf-dac502259ad0.png

8f6a5f26-6be9-11ed-8abf-dac502259ad0.png

8f7e1d18-6be9-11ed-8abf-dac502259ad0.png

8f953bec-6be9-11ed-8abf-dac502259ad0.png

8fb1cd98-6be9-11ed-8abf-dac502259ad0.png

8fd91eb6-6be9-11ed-8abf-dac502259ad0.png

8fea573a-6be9-11ed-8abf-dac502259ad0.png

90040a5e-6be9-11ed-8abf-dac502259ad0.png

902f9cd2-6be9-11ed-8abf-dac502259ad0.png

90424ae4-6be9-11ed-8abf-dac502259ad0.png

908e0560-6be9-11ed-8abf-dac502259ad0.png

90a8bc84-6be9-11ed-8abf-dac502259ad0.png

90cf6190-6be9-11ed-8abf-dac502259ad0.png

9134e68c-6be9-11ed-8abf-dac502259ad0.png

917223da-6be9-11ed-8abf-dac502259ad0.png

919bc7f8-6be9-11ed-8abf-dac502259ad0.png

91cab5d6-6be9-11ed-8abf-dac502259ad0.png

91e06192-6be9-11ed-8abf-dac502259ad0.png

925083e6-6be9-11ed-8abf-dac502259ad0.png


原文標(biāo)題:cJSON在傳統(tǒng)C/S模型的應(yīng)用

文章出處:【微信公眾號(hào):開(kāi)源技術(shù)服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    389

    瀏覽量

    7963
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3728

    瀏覽量

    16405

原文標(biāo)題:cJSON在傳統(tǒng)C/S模型的應(yīng)用

文章出處:【微信號(hào):開(kāi)源技術(shù)服務(wù)中心,微信公眾號(hào):共熵服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

    準(zhǔn)確性。 類別不平衡問(wèn)題:當(dāng)某些類別的樣本數(shù)遠(yuǎn)多于其他類別時(shí),分類器可能會(huì)偏向多數(shù)類別,導(dǎo)致少數(shù)類別的預(yù)測(cè)精度較低。 過(guò)擬合風(fēng)險(xiǎn):復(fù)雜的模型容易訓(xùn)練數(shù)據(jù)上過(guò)擬合,即學(xué)到了訓(xùn)練數(shù)據(jù)中的特定特征而不是一般化
    發(fā)表于 12-19 14:33

    Type-C充電速度與傳統(tǒng)接口對(duì)比

    特性,迅速智能手機(jī)、筆記本電腦、平板電腦等設(shè)備上得到廣泛應(yīng)用。與傳統(tǒng)的USB接口相比,Type-C接口充電速度上具有明顯優(yōu)勢(shì)。 接口設(shè)計(jì) Type-
    的頭像 發(fā)表于 10-28 13:58 ?1234次閱讀

    AI大模型傳統(tǒng)機(jī)器學(xué)習(xí)的區(qū)別

    AI大模型傳統(tǒng)機(jī)器學(xué)習(xí)多個(gè)方面存在顯著的區(qū)別。以下是對(duì)這些區(qū)別的介紹: 一、模型規(guī)模與復(fù)雜度 AI大模型 :通常包含數(shù)十億甚至數(shù)萬(wàn)億的參
    的頭像 發(fā)表于 10-23 15:01 ?738次閱讀

    啟明智顯AI大模型解決方案加速傳統(tǒng)玩具智能升級(jí),WIFI、4G便捷連網(wǎng)

    啟明智顯憑借前沿、低成本的AI大模型解決方案催化傳統(tǒng)玩具行業(yè)的革新,“高清顯示+AI大模型”將傳統(tǒng)玩具升級(jí)為集智能、情感、個(gè)性化于一體的智能玩伴。
    的頭像 發(fā)表于 08-21 10:07 ?516次閱讀
    啟明智顯AI大<b class='flag-5'>模型</b>解決方案加速<b class='flag-5'>傳統(tǒng)</b>玩具智能升級(jí),WIFI、4G便捷連網(wǎng)

    使用CJSON創(chuàng)建數(shù)字是一直是顯示0,為什么?

    使用CJSON創(chuàng)建字符沒(méi)有問(wèn)題,但是創(chuàng)建數(shù)字是一直是顯示0,代碼如下: /* * Create a json format data */ root = cJSON
    發(fā)表于 07-22 07:02

    ai大模型傳統(tǒng)ai的區(qū)別在哪?

    AI大模型傳統(tǒng)AI的區(qū)別主要體現(xiàn)在以下幾個(gè)方面: 數(shù)據(jù)量和訓(xùn)練規(guī)模 AI大模型通常需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練,以獲得更好的性能。相比之下,傳統(tǒng)AI模型
    的頭像 發(fā)表于 07-16 10:06 ?1416次閱讀

    AI大模型傳統(tǒng)AI的區(qū)別

    AI大模型(如LLM,即大型語(yǔ)言模型)與傳統(tǒng)AI多個(gè)方面存在顯著的區(qū)別。以下將從技術(shù)層面、應(yīng)用場(chǎng)景、性能表現(xiàn)、計(jì)算資源和成本、以及發(fā)展趨勢(shì)和挑戰(zhàn)等角度進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 07-15 11:37 ?2879次閱讀

    使用cJSON_AddNumberToObjectcJSON_Print命令期間ESP8266崩潰了的原因?

    IDF 版本 3.4 發(fā)布 問(wèn)題:使用cJSON_AddNumberToObjectcJSON_Print命令期間使ESP8266崩潰。 ESP32 上正確執(zhí)行的相同代碼。 vo
    發(fā)表于 07-08 08:03

    請(qǐng)問(wèn)電腦端Pytorch訓(xùn)練的模型如何轉(zhuǎn)化為能在ESP32S3平臺(tái)運(yùn)行的模型

    由題目, 電腦端Pytorch訓(xùn)練的模型如何轉(zhuǎn)化為能在ESP32S3平臺(tái)運(yùn)行的模型? 如何把這個(gè)Pytorch模型燒錄到ESP32S3上去?
    發(fā)表于 06-27 06:06

    esp-idf v4.1 SDK使用cjson時(shí)編譯報(bào)錯(cuò)是什么原因?qū)е碌模?/a>

    你好,最近準(zhǔn)備從ESP-IDF V3.3遷移到V4.1,現(xiàn)在添加了cJSON后,工程編譯不過(guò)去,我查看了SDK中是有這個(gè)component的,我工程中也添加了頭文件,但不知道為何編譯不過(guò)去,麻煩
    發(fā)表于 06-24 09:22

    8266 rtos3.4中使用cJSON_AddNumberToObject添加的數(shù)值為空,cJSON_Print輸出報(bào)錯(cuò)的原因?

    8266 rtos3.4中使用cJSON_AddNumberToObject添加的數(shù)值為空,cJSON_Print輸出報(bào)錯(cuò),哪位大佬遇見(jiàn)過(guò)類似的問(wèn)題
    發(fā)表于 06-18 06:31

    【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的應(yīng)用

    類任務(wù)上表現(xiàn)出色,甚至零樣本條件下也能取得良好效果。另一類則需要逐步推理才能完成的任務(wù),類似于人類的系統(tǒng)2,如數(shù)字推理等。然而,隨著參數(shù)量的增加,大語(yǔ)言模型在這類任務(wù)上并未出現(xiàn)質(zhì)的飛躍,除非有精心
    發(fā)表于 05-07 17:21

    rtthread中使用cJSON轉(zhuǎn)float時(shí)報(bào)錯(cuò)怎么解決?

    ; cJSON_AddNumberToObject(root,\"runSpeed\",jxs); out=cJSON_Print(root); cJSON_Delete(root); LOG_D(\"%
    發(fā)表于 03-05 06:33

    Groq推出大模型推理芯片 超越了傳統(tǒng)GPU和谷歌TPU

    Groq推出了大模型推理芯片,以每秒500tokens的速度引起轟動(dòng),超越了傳統(tǒng)GPU和谷歌TPU。
    的頭像 發(fā)表于 02-26 10:24 ?1067次閱讀
    Groq推出大<b class='flag-5'>模型</b>推理芯片 超越了<b class='flag-5'>傳統(tǒng)</b>GPU和谷歌TPU

    【吃灰開(kāi)發(fā)板復(fù)活】DIY全志V3s隨身終端屏幕適配,LVGL以及各種外設(shè)驅(qū)動(dòng)移植教程

    ); if(cJSON_IsString(text)) {lv_label_set_text_fmt(label1, "當(dāng)前天氣\n%s", text-&gt
    發(fā)表于 01-22 09:58
    主站蜘蛛池模板: 久久九九亚洲精品| 欧美高清videos 360p| 日本不卡一二三| 中文国产成人精品久久免费| 国产精品高清视亚洲一区二区| 嫩草影院地址一二三| 御姐被吸奶| 国产一区免费在线观看| 十七岁日本免费完整版BD | 国产精品久久久久无码AV色戒 | 先锋影音 av| 扒开老师大腿猛进AAA片| 美女屁股软件| 一区一区三区产品| 国产在线高清视频| 午夜aaaa| 国产成人在线视频网站| 日本漂亮妈妈7观整有限中| 99精品视频一区在线视频免费观看| 久久精品热播在线看| 亚洲中文字幕永久在线| 国内精品日本久久久久影院| 午夜福利免费视频921000电影| 动漫美女3d被爆漫画| 区一区二视频免费观看| chinese学生gv video| 男女午夜性爽快免费视频不卡| 在线精品国精品国产不卡| 九九热免费在线观看| 亚洲午夜久久久无码精品网红A片| 国产亚洲精品高清视频免费| 亚洲AV无码乱码A片无码蜜桃| 国产精品嫩草影院在线观看免费 | 又爽又黄又粗又大免费视频| 精品无码久久久久久动漫| 亚洲性夜色噜噜噜网站2258KK| 国语自产一区视频| 亚洲欧美精品一中文字幕| 国内精品伊人久久久久| 亚洲一区乱码电影在线| 久久大香线蕉综合爱|