1.c fastjsonԴ??
2.å享javaç¥è¯ä»ä¹å¥½
c fastjsonԴ??
cJSON是什么?
cJSON是C语言领域中的一款超轻量级JSON解析库。它开源于GitHub,遵循MIT协议,对使用友好。
与Python的粉丝点赞源码json库、Java的x gen 源码Gson、jackson、fastjson等解析器类似,cJSON同样能解析JSON数据。
cJSON的源码由一个头文件和一个源文件组成,极为简洁。
JSON的基本概念:
JSON对象是无序的键值对集合,以"{ “开始,封包辅助源码以”}"结束,允许嵌套使用。
1. 名称和值成对出现,名称与值之间使用":"分隔。company name 源码
2. 键值对之间用","分隔。
3. 字符前后允许存在无意义的空白符。
4. 键值可为数组、数字、javashop 源码部署字符串、字面值(false、null、true,需小写)。
VSCode验证cJSON:
前提:VSCode已配置C/C++开发环境,插件及编译器设置完成。
克隆cJSON源码,用VSCode打开。仅需改动vscode的配置文件tasks.json,改动如下图所示。
配置后,从test.c直接编译,通常不会出现编译错误。
新增函数测试JSON解析,代码如下:
运行结果如下:
IDF中引入cJSON:
cJSON位于IDF的components\json\cJSON目录下。
cJSON常用方法概览:
1. 解析数据:验证JSON格式 > 解析数据 > 释放内存
2. 创建数据:创建JSON结构体 > 添加数据 > 释放内存
务必记得释放内存。
参考资料:
ESP学习笔记()--JSON接口使用_esp cjson-CSDN博客
vscode运行cjson(自用)_vscode c.json-CSDN博客
å享javaç¥è¯ä»ä¹å¥½
1.å¤çº¿ç¨å¹¶å
å¤çº¿ç¨æ¯Javaä¸æ®é认为æ¯è¾é¾çä¸åãå¤çº¿ç¨ç¨å¥½äºå¯ä»¥æææé«cpu使ç¨çï¼ æåæ´ä½ç³»ç»æçï¼ ç¹å«æ¯å¨æ大éIOæä½é»å¡çæ åµä¸;ä½æ¯å®ä¹æ¯ä¸æåååï¼ å¦æç¨ä¸å¥½ï¼ç³»ç»éä½æåä¸å¤§ï¼æè 没ææåï¼èä¸è¿ä¼å¸¦æ¥å¤çº¿ç¨ä¹é´çè°è¯æ¶çé®é¢ã
å¨å¤çº¿ç¨ä¸å 容æå¾å¤ï¼åªæ¯ç®å说æä¸ä¸Javaä¸åæ¥ä½¿ç¨å¤çº¿ç¨éè¦ææ¡çç¥è¯ç¹ï¼ä»¥åææºä¼åç¬å详ç»ä»ç»ä¸äºé«çº§ç¹æ§ç使ç¨åºæ¯ã
å¤çº¿ç¨çå®ç°åå¯å¨
callable ä¸ runable åºå«
syncrhoized ï¼reentrantLock åèªç¹ç¹åæ¯å¯¹
线ç¨æ±
future å¼æ¥æ¹å¼è·åæ§è¡ç»æ
concurrent å
lock
2.ç½ç»
Java ä¸ä¹æ¯æä¾äºå¯ä»¥ç´æ¥æä½ TCPåè®®ãUDPåè®®çAPIãå¨éè¦å¼ºè°ç½ç»æ§è½çæ åµä¸ï¼å¯ä»¥ç´æ¥ä½¿ç¨TCP/UDP è¿è¡é讯ãå¨æ¥çTomcatççæºç ä¸ï¼å°±å¯ä»¥çå°è¿äºç¸å ³APIç使ç¨æ åµãä¸è¿ä¸è¬ä¹æ¯è¾å°ä¼ç´æ¥ä½¿ç¨TCPï¼ä¼ä½¿ç¨è¯¸å¦MINAãNettyè¿æ · çæ¡æ¶æ¥è¿è¡å¤çï¼å 为è¿ä¸ªæ¹é¢çå¼åæ¶åä¸å¤ï¼æ以就ä¸å详ç»ç½åäºã
3.æ¶é´æ¥æå¤ç
å ä¹å¯¹äºæ¯ä¸ªåºç¨æ¥è¯´ï¼æ¶é´æ¥æçå¤çä¹æ¯ç»ä¸è¿å»çï¼ä½æ¯JDK8 ä¹åçæ¶é´ç¸å ³APIç¨æ³å¹¶ä¸å好ãå¨é£ä¸ªæ¶ä»£ï¼å¯ä»¥éæ©Jodaçæ¶é´æ¡æ¶ãå°äºJDK8 åå¸ä¹åï¼å ¨æ°çæ¶é´APIåºæ¬èåäºå ¶ä»æ¡æ¶çä¼ç¹ï¼å·²ç»å¯ä»¥å¾å¥½çç´æ¥ä½¿ç¨äºã
对äºJavaå¼åè æ¥è¯´ï¼éè¦çç»å°ä½¿ç¨APIæ¥å¯¹æ¶é´åæ¥æåç¸å ³çå¤çã
å ·ä½ç¥è¯ç¹ä¸åç½åï¼ä¼å¨ä»¥ååå个ä¸é¨çæç« æ¥æ»ç»ä¸ä¸JDK8ä¸æ¶é´æ¥æAPIçç¨æ³
4.XML解æ/ JSON解æ
å ¶å®è¿ä¸¤åå 容é½ä¸æ¯J2SEéé¢çå 容ï¼ä½æ¯å¨æ¥å¸¸å¼åä¸ï¼åå ¶ä»ç¨åºäº¤äºï¼åé ç½®æ件交äºï¼è¶æ¥è¶ç¦»ä¸å¼è¿ä¸¤ç§æ ¼å¼ç解æã
ä¸è¿å¯¹äºä¸ä¸ªå¼åè æ¥è¯´ï¼è½å¤äºè§£ä¸äºXML/JSONå ·ä½è§£æçåçåæ¹æ³ï¼æå©äºä½ å¨åä¸ªå ·ä½çåºæ¯ä¸æ´å¥½çéæ©åéä½ çæ¹å¼æ¥ä½¿å¾ä½ çç¨åºæ´ææçåæ´å å¥å£®ã
XMLï¼ éè¦äºè§£ DOM解æå SAX解æçåºæ¬åçååèªçéç¨åºæ¯
JSONï¼ éè¦äºè§£ä¸äºå¸¸ç¨JSONæ¡æ¶çç¨æ³ï¼ å¦ Jacksonï¼ FastJsonï¼ Gson çã
5.Mavenç使ç¨
Maven ä¹ä¸æ¯Javaéé¢çå 容ï¼ä½æ¯mavenæ¯é©å½æ§çï¼ç»javaå¼å带æ¥äºå·¨å¤§ç便å©ãä»ä¾èµçå¼å ¥å管çï¼å¼åæµç¨çæ´æ°ååå¸äº§åºï¼ä¹è³çæ¬çæ´ æ°ï¼ä½¿ç¨mavenå¯ä»¥å¤§å¤§ç®åå¼åè¿ç¨ä¸çå¤æ度ï¼ä»èèç大éæ¶é´ãå¯ä»¥è¯´ï¼mavenå·²ç»æ为javaå¼åè çæ é äºãæ以ææmavenä¹ä½ä¸ºä¸ 个javaå¼åè 对äºåºç¡å¿ å¤çç¥è¯ç¹ã以åä¼åæ¾ä¸ä¸äºæçä¸äºå¯¹äºmaven使ç¨çç»éªåæå·§çï¼è¿éå°±ä¸åç»è¯´äºã
6.æ³å
è¿æ¯JDK5å¼å§å¼å ¥çæ°æ¦å¿µï¼å ¶å®æ¯ä¸ªè¯æ³ç³ï¼å¨ç¼åjava代ç æ¶ä¼æäºè®¸ä¾¿å©ï¼ ä¸è¬çåºç¨æè æ¯ä¸å¡çå¼åï¼åªéè¦ç®å使ç¨ï¼ä¸ä¸å®ä¼ç¨å°å®ä¹æ³åè¿æ ·çæä½ï¼ ä½æ¯å¼åä¸äºåºç¡å ¬å ±ç»ä»¶ä¼ä½¿ç¨å°ï¼å¯ä»¥å¨éè¦çæ¶ååç»çè¿ä¸ªé¨åï¼ä¸è¬æ åµä¸åªè¦ä¼ç®å使ç¨å³å¯ãç°å¨å¾å¤ä¼ä¼´æ³å¦ä¹ ç¼ç¨ï¼ä½å¦ä¹ çè¿ç¨æ¯ç¥åè¿·è«ï¼ä¸ç¥éæä¹å¦ï¼ç»æ³è¦å¦ä¹ Javaçä¼ä¼´æ¨èä¸ä¸ªå¦ä¹ çå°æ¹ï¼æ¯å¤©æä¸å¨çº¿ç´ææå¦ãå¦ä¹ Javaç群ï¼ä¸ä¸å ï¼å «é¶åï¼äºé¶å «ï¼ä¸æ¯å¦ä¹ çå°±ä¸è¦å å ¥äºã
7.æ 注
ä¹æ¯jdk5 ä¹åå¼å ¥çãSpringæ¯ä¸ªä¼ç§çæ¡æ¶ï¼æå¼å§å°±ä»¥xmlä½ä¸ºæ åçé ç½®æ件ãä¸è¿å°äºSpring3 ä¹åï¼å°¤å ¶æ¯ spring-boot å ´èµ·ä¹åï¼è¶æ¥è¶æ¨å´ä½¿ç¨æ 注æ¥ç®åxmlé ç½®æ件äºï¼å¯¹äºå¼åè æ¥è¯´ï¼å¯ä»¥èçä¸å°xmlé ç½®çæ¶é´ãä½æ¯å£å¿æ¯å¨äºæ 注æ£è½å¨å个类ä¸ï¼ä¸åxmlï¼ å¯ä»¥å¯¹ææé ç½®æä¸ªå ¨å±æ§çç解å管çï¼æ以è¿æ²¡æåæ³è¯´å®å ¨å°±å代ææçxmlã对äºä¸è¬å¼åè ï¼ä¼ä½¿ç¨æ 注å³å¯ï¼ä¸äºå ¬å ±ç»å»ºçå¼åè å¯è½ä¼éè¦äºè§£ æ 注çå®ä¹åå®ç°ï¼å¯ä»¥å¨å ·ä½éè¦çæ¶ååç»çã
8.RMI
RemoteMethodInvocation ï¼Javaè¯è¨ç¹æçè¿ç¨è°ç¨æ¥å£ï¼ä½¿ç¨è¿æ¯æ¯è¾ç®åæ¹ä¾¿ãä¸è¿éè¦è·¨è¯è¨çæ åµä¸ï¼å°±éè¦ä½¿ç¨ webservice çå ¶ä»æ¹å¼æ¥æ¯æãä¸è¬æ¥è¯´ï¼ç¨åºé½ä¸éè¦ä½¿ç¨RMIï¼ä¸è¿å¯ä»¥å¨ç¹å®çæ åµä¸ä½¿ç¨ï¼æå°±å¨ä¸ä¸ªé¡¹ç®ä¸ï¼ä½¿ç¨RMIæ¥è¿è¡ç¨åºè¿ç¨å¯å¨åæ¢çæ§å¶ã
9.JNI
Java Native Interfaceï¼å¯ä»¥å 许Javaä¸è°ç¨æ¬å°æ¥å£æ¹æ³ï¼ä¸è¬ç¨äºC/C++代ç çè°ç¨ãéè¦æ³¨æçæ¯å¨javaä¸å è½½so/dllæ件çè·¯å¾é®é¢ï¼æ¬èº«è°ç¨æ¥å£å¹¶ä¸å¤æï¼ä½æ¯ç»å¸¸å¨æ¯å¦å è½½äºæéçæ¬å°æ¥å£åºä¸è±è´¹è¾å¤æ¶é´ã