petard  

一、实时时钟

时间戳(实时的时间【单位:s】):

​ 使用"time.h"文件:

mktime() ——得到一个时间戳

localtime() ——得到一个当前时间的结构体(包含:年-月-日 时:分:秒)

eg:

time_t timestamp = mktime(&utc_time);   //得到一个时间戳(单位为秒)
struct tm *beijing_time = localtime(&timestamp);
  • 在window的powershell获取unix时间戳命令:
	[int][double]::Parse((Get-Date -UFormat %s))

二、弱函数

想要实现在其他文件中调用该文件函数,可以使用弱函数调用,在相关对应文件中重写

弱函数格式: __weak

eg:回调函数就用的该种形式

__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)

三、cjson

cJSON_中Delete与free :

在C语言中,内存的释放主要是通过free函数完成的,free是C标准库中的一个函数,用于释放之前通过malloccallocrealloc函数分配的内存。

在C语言环境下,如果你使用cJSON库,当你不再需要一个cJSON结构体时,你应该使用cJSON_Delete函数来释放内存。cJSON_Delete函数不仅释放了由cJSON创建的结构体本身占用的内存,还会递归地释放结构体中所有嵌套的子结构体所占用的内存。这是因为cJSON结构体通常包含指向子结构体的指针,如果不递归地释放,会导致内存泄漏。

/* 开源库网站:https://github.com/

(xml 与 json格式)

发送什么形式的数据到数据库:

  1. xml

zs

10

male

  1. json

​ {"name": "zs", "age": 10, "sex": "male"}

​ javascript object notation

json对象

​ { } 键值对 key-value

​ { key: v , key: v,....}

​ key: 必须是字符串 ""

​ v: 可以是任何类型: json值类型, json对象, json数组

​ { "name": "zs",

​ "age": 10,

​ "sex": "male",

​ "girl": { name": "zs", "age": 10, "sex": "male" }

​ }

json数组:

​ 只要是方括号括起来的就是数组 : []

​ 数组中可以存储任意类型 json对象, json值类型

​ [{ }, { },...]

​ [1,2,3]

​ 字符串 "abc"

​ 整数 123

​ 浮点数 1.111

​ 布尔值 true/false

​ 空 null

/*使用工具:cjson
     *  最终需要得到一个json对象
     */
    cJSON *obj = cJSON_CreateObject();
    /*添加一个一个的成员*/
    cJSON_AddNumberToObject(obj, "lat", uploadData->lat);
    cJSON_AddStringToObject(obj, "latDir", (char *)uploadData->latDir); //这只能接收字符串,所以latDir定义的是字符串类型

    cJSON_AddNumberToObject(obj, "lon", uploadData->lon);
    cJSON_AddStringToObject(obj, "lotDir", (char *)uploadData->lonDir);

    cJSON_AddNumberToObject(obj, "speed", uploadData->speed);

    cJSON_AddStringToObject(obj, "dateTime", (char *)uploadData->dateTime);

    cJSON_AddNumberToObject(obj, "stepNum", uploadData->stepNum);

    char *jsonStr = cJSON_PrintUnformatted(obj);    //组成输出一个未格式化数据,节省内存

    /*释放内存*/
    cJSON_Delete(obj);
    /*字符串的内存也要释放*/
    cJSON_free(jsonStr);
  1. cJSON *obj = cJSON_CreateObject(); //创建 返回了一个字符串结构体指针(相当于一个[void *]类型,

  2. char *jsonStr = cJSON_PrintUnformatted(obj);

内存分配函数 :malloc() 函数用于分配一块连续的内存空间。也是返回一个void指针,指向新分配内存块的地址

动态内存分配指根据需要向系统申请所需大小的空间,由于未在声明部分定义其为变量或者数组,不能通过变量名或者数组名来引用这些数据,只能通过*指针*来引用)

​ 【堆区是 存放malloc()等函数动态分配的数据 内存的总命名】

  • 需要进行下堆内存释放,要不会出现 内存溢出(又名:泄露)的情况

释放内存 :cJSON_Delete(obj); //不仅释放cjson本身所创建结构体占用的内存,也会释放子结构体的

​ cJSON_free(jsonStr); //该函数比较通用,方便移植

序列化:

​ 把编程语言对应的数据结构转成json格式的字符串

​ 把结构体数据编程json

反序列化(解析):

​ 把json格式的字符串转成编程语言对应的数据结构

​ 把json编程结构体数据

*/

posted on   岌岌无名  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
 
点击右上角即可分享
微信分享提示