在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

cJSON在傳統C/S模型的應用

共熵服務中心 ? 來源:未知 ? 2022-11-24 19:25 ? 次閱讀

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

文章轉發自51CTO 開源基礎軟件社區 OpenHarmony成長計劃啃論文俱樂部【FFH】啃論文俱樂部---JSON壓縮算法解讀

1.關于作者

大家好!我是來自深圳技術大學FSR Lab(編者注:Falcon Swarm Robotics Lab獵鷹集群機器人控制實驗室的縮寫)的同學HagonChan,陳漢武,標題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長計劃從論文到開源提交研究,以后我們也會陸續在這個社區記錄學習心得和體會。

在OpenHarmony成長計劃啃論文俱樂部里,FFH小組同學們與華為、軟通動力、潤和軟件、拓維信息、深開鴻等公司一起,學習和研究序列化相關技術…

2. 前言

cJSON是一個用在底層數據通信的一個C語言的JSON數據解析庫。比如在一個系統底層使用socket方式進行通信的時候,通信兩端就可以用cJSON對傳遞的JSON數據對象進行處理,下面我們來看看一篇關于cJSON在傳統C/S(Client/Server)模型的應用。

cJSON github 開源地址如下:https://github.com/DaveGamble/cJSON

3. cJSON結構體分析

我們來看看cJSON的源碼的結構體部分:

/* 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:指向下一條/上一條鍵值對(key-value)節點。

  • type:表示該鍵值對節點中值的數據類型。

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

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

  • *child:當值類型為復雜數據結構,如數組,對象,嵌套JSON等等,則該指針指向該鍵值。

可以看到cJSON是通過鏈表來存儲JSON數據的,這個設計比較巧妙,相較于JSONcpp,cJSON可以保證寫入的數據和輸出的數據的順序保持一致,而JSONcpp則不能保證寫入和輸出的順序一致性,因為在存儲的時候JSONcpp會按照key-value進行內部排序。所以對于一些要求JSON數據順序的業務,cJSON相對于JSONcpp就是一個更好的選擇。

通過這個數據結構我們也可以知道每一個JSON對象里面的鍵值對都通過next和prev指針鏈接相鄰的鍵值對節點,以保證我們剛剛說的數據順序。

從這個數據結構我們還能看到另外一個巧妙地地方,就是*child指針,這個指針讓這個cJSON支持復雜數據結構,比如數組,對象,嵌套JSON數據對象等。

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

如上表,cJSON庫里面有很多函數方法,可以進行一系列創建以及處理JSON對象的操作。

4. 數據打包過程

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

數據包在上傳到服務器之前需要封裝成JSON格式,然后通過網絡傳輸。因此,需要創建一個cJSON類型的對象,然后調用cJSON_AddStringToObject()函數,向對象添加信息的屬性值,此時通過調用 cJSON_Print()的函數將對象的屬性解析到緩存中,這里可以認為將cJSON對象序列化為字符串,所以實際上,緩存中存儲了一個字符串。此時,可以根據Ascii代碼表將緩存的Ascii值順序轉換為十六進制數。最后,將十六進制數發送到服務器后,至此打包工作完成。

5. 解析數據包過程

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

同樣,在服務器將信息發送給客戶端后,需要根據協議的格式對數據包進行適當的分析。因此,此時調用cJSON_Parse()函數來解析來自服務器的JSON數據包,此外,還需要創建cJSON的對象來接收解析后的數據,最后,使用JSON_GetObjectItem()的函數來獲取cJSON對象的不同屬性值,這樣就完成了數據包的解包工作。需要注意的是,在處理數據后,必須調用cJSON_Delete()函數來釋放創建的對象。否則會導致內存泄漏,并導致系統不穩定。

6.代碼庫位置

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

如果希望尋找OpenHarmony引用的第三方開源庫,只需要在Gitee上全局搜索OpenHarmony third party+相關領域關鍵術語。

OpenHarmony跟JSON相關的庫,就是全局搜索OpenHarmony third party json字段。

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

<本文完>

寫在最后

OpenHarmony 成長計劃—“啃論文俱樂部”(以下簡稱“啃論文俱樂部”)是在 2022年 1 月 11 日的一次日?;顒又姓Q生的。截至 3 月 31 日,啃論文俱樂部已有 87 名師生和企業導師參與,目前共有十二個技術方向并行探索,每個方向都有專業的技術老師帶領同學們通過啃綜述論文制定技術地圖,按“降龍十八掌”的學習方法編排技術開發內容,并通過專業推廣培養高校開發者成為軟件技術學術級人才。

啃論文俱樂部的宗旨是希望同學們在開源活動中得到軟件技術能力提升、得到技術寫作能力提升、得到講解技術能力提升。大學一年級新生〇門檻參與,已有俱樂部來自多所高校的大一同學寫出高居榜首的技術文章。

如今,搜索“啃論文”,人們不禁想到、而且看到的都是我們——OpenHarmony 成長計劃—“啃論文俱樂部”的產出。

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

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

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

OpenHarmony開源與開發者成長計劃—“啃論文俱樂部”學習資料合集

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

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

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

3)企業/學校/老師/學生為什么要參與 & 啃論文俱樂部的運營辦法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq

4)往期啃論文俱樂部同學分享會精彩回顧:

同學分享會No1.成長計劃啃論文分享會紀要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY

同學分享會No.2 成長計劃啃論文分享會紀要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF

同學們分享會No.3 成長計劃啃論文分享會紀要(2022/03/25)

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

現在,你是不是也熱血沸騰,摩拳擦掌地準備加入這個俱樂部呢?當然歡迎啦!啃論文俱樂部向任何對開源技術感興趣的大學生開發者敞開大門。

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

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

后續,我們會在服務中心公眾號陸續分享一些 OpenHarmony 開源與開發者成長計劃—“啃論文俱樂部”學習心得體會和總結資料。記得呼朋引伴來看哦。

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


原文標題:cJSON在傳統C/S模型的應用

文章出處:【微信公眾號:開源技術服務中心】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源技術
    +關注

    關注

    0

    文章

    389

    瀏覽量

    7992
  • OpenHarmony
    +關注

    關注

    25

    文章

    3747

    瀏覽量

    16588

原文標題:cJSON在傳統C/S模型的應用

文章出處:【微信號:開源技術服務中心,微信公眾號:共熵服務中心】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AI模型部署邊緣設備的奇妙之旅:目標檢測模型

    準確性。 類別不平衡問題:當某些類別的樣本數遠多于其他類別時,分類器可能會偏向多數類別,導致少數類別的預測精度較低。 過擬合風險:復雜的模型容易訓練數據上過擬合,即學到了訓練數據中的特定特征而不是一般化
    發表于 12-19 14:33

    Type-C充電速度與傳統接口對比

    特性,迅速智能手機、筆記本電腦、平板電腦等設備上得到廣泛應用。與傳統的USB接口相比,Type-C接口充電速度上具有明顯優勢。 接口設計 Type-
    的頭像 發表于 10-28 13:58 ?1780次閱讀

    AI大模型傳統機器學習的區別

    AI大模型傳統機器學習多個方面存在顯著的區別。以下是對這些區別的介紹: 一、模型規模與復雜度 AI大模型 :通常包含數十億甚至數萬億的參
    的頭像 發表于 10-23 15:01 ?1044次閱讀

    啟明智顯AI大模型解決方案加速傳統玩具智能升級,WIFI、4G便捷連網

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

    使用CJSON創建數字是一直是顯示0,為什么?

    使用CJSON創建字符沒有問題,但是創建數字是一直是顯示0,代碼如下: /* * Create a json format data */ root = cJSON
    發表于 07-22 07:02

    ai大模型傳統ai的區別在哪?

    AI大模型傳統AI的區別主要體現在以下幾個方面: 數據量和訓練規模 AI大模型通常需要大量的數據進行訓練,以獲得更好的性能。相比之下,傳統AI模型
    的頭像 發表于 07-16 10:06 ?1622次閱讀

    AI大模型傳統AI的區別

    AI大模型(如LLM,即大型語言模型)與傳統AI多個方面存在顯著的區別。以下將從技術層面、應用場景、性能表現、計算資源和成本、以及發展趨勢和挑戰等角度進行詳細闡述。
    的頭像 發表于 07-15 11:37 ?3215次閱讀

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

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

    請問電腦端Pytorch訓練的模型如何轉化為能在ESP32S3平臺運行的模型?

    由題目, 電腦端Pytorch訓練的模型如何轉化為能在ESP32S3平臺運行的模型? 如何把這個Pytorch模型燒錄到ESP32S3上去?
    發表于 06-27 06:06

    esp-idf v4.1 SDK使用cjson時編譯報錯是什么原因導致的?

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

    8266 rtos3.4中使用cJSON_AddNumberToObject添加的數值為空,cJSON_Print輸出報錯的原因?

    8266 rtos3.4中使用cJSON_AddNumberToObject添加的數值為空,cJSON_Print輸出報錯,哪位大佬遇見過類似的問題
    發表于 06-18 06:31

    模型端側迅速落地,面臨哪些挑戰

    電子發燒友網報道(文/李彎彎)大模型技術正在快速發展,并在不同領域取得顯著進展。如在設計領域,近日消息,騰訊混元大模型文生圖已經深度應用在B端和C端,此外,騰訊混元大模型還可以做圖生視
    的頭像 發表于 05-15 01:16 ?3041次閱讀

    【大語言模型:原理與工程實踐】大語言模型的應用

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

    rtthread中使用cJSON轉float時報錯怎么解決?

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

    Groq推出大模型推理芯片 超越了傳統GPU和谷歌TPU

    Groq推出了大模型推理芯片,以每秒500tokens的速度引起轟動,超越了傳統GPU和谷歌TPU。
    的頭像 發表于 02-26 10:24 ?1206次閱讀
    Groq推出大<b class='flag-5'>模型</b>推理芯片 超越了<b class='flag-5'>傳統</b>GPU和谷歌TPU
    主站蜘蛛池模板: 高h办公室 | 久久永久免费视频 | 欧美美女福利视频 | 无遮挡很爽很污很黄很色的网站 | 欧美另类v| 色丁香婷婷 | www.夜| 日本一区三区二区三区四区 | 天天透天天射 | 日本三级在线观看免费 | 四虎h789fcom | 亚洲黄站 | 日韩午夜精品 | 天天上天天干 | 午夜亚洲国产精品福利 | 国产在线精品香蕉综合网一区 | 美女视频一区二区三区 | 综合五月婷婷 | 天天操人人干 | 亚洲色图欧美激情 | 国产真实野战在线视频 | 亚洲最新在线 | 最新亚洲人成网站在线影院 | 日本三级视频在线播放 | 在线观看免费视频国产 | 日本口工全彩无遮拦漫画大 | 久久这里只有精品免费视频 | 日韩中文字幕第一页 | 男人透女人超爽视频免费 | 成人免费淫片95视频观看网站 | 高清视频一区二区 | 欧美一区二区三区不卡免费观看 | 国产免费高清视频在线观看不卡 | 亚洲亚洲人成网站在线观看 | 人人狠狠综合88综合久久 | 精品国产自在在线在线观看 | 黄色网在线播放 | 国产精品福利一区二区亚瑟 | 可以在线看黄的网站 | 亚洲国产成人久久精品影视 | 天天操天天干天搞天天射 |