首页 > 其他分享 >实时时钟、弱函数、json

实时时钟、弱函数、json

时间:2024-07-16 21:30:04浏览次数:13  
标签:obj 函数 cJSON 实时 uploadData json 内存 时钟

一、实时时钟

时间戳(实时的时间【单位: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编程结构体数据

*/

标签:obj,函数,cJSON,实时,uploadData,json,内存,时钟
From: https://www.cnblogs.com/petard/p/18306156

相关文章

  • Java实现将json数据转换为sql insert语句
    Java实现将json数据转换为sqlinsert语句importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.ObjectMapper;importjava.util.Iterator;importjava.util.Map;publicclassJson......
  • 纳米体育数据API电竞数据接口:实时数据包接口文档API示例②
    纳米体育数据的数据接口通过JSON拉流方式获取200多个国家的体育赛事实时数据或历史数据的编程接口,无请求次数限制,可按需购买,接口稳定高效;覆盖项目包括足球、篮球、网球、电子竞技、奥运等专题、数据内容。纳米数据API2.0版本包含http协议以及websocket协议,主要通过http获取数......
  • C# 任意类型数据转JSON格式
    1publicclassObjectToJson2{3///<summary>4///List转成json5///</summary>6///<typeparamname="T"></typeparam>7///<paramname="jso......
  • 写了一个json小工具,希望大家体验(Mac平台)
    用rust写了一个json小工具“JSONPICKER”,欢迎大家试用:https://github.com/davelet/json-picker/releases/tag/V0.2动机是平常开发的时候,经常遇到大段json,里面的很多字段是不需要的。我所在的项目组在接口对接上出现了reponse达到数兆字节的情况市面上已经有不少json工具,......
  • 类与json的互相转化(c#)
    1//JavaScriptSerializer需添加dll引用,System.Web.Extensions2//Class转json字符串3JavaScriptSerializerserializer=newJavaScriptSerializer();4varjson=serializer.Serialize(obj);56//将json字符串在转为原先的类,JsonConvert需添加第三方dll,Newtonsoft.......
  • C#拼接Json串的几种方法
    1. 利用  JsonConvert.SerializeObject方法(Nuget获取Newtonsoft.JsonPackage),需要Newtonsoft.Json 支持。stringuid="22";varabcObject=new{AccessKey=11,CustomerNo=uid,mc="33",qd="44",mr="55",......
  • C#对象转换Json时的一些高级用法
    [JsonObject(MemberSerialization.OptIn)]//默认为不输出publicclassPeopleInfo{[JsonProperty]//需要输出publicstringName{get;set;}[JsonProperty]//需要输出publicintAge{get;set;}publicDateTimeBirthday{......
  • Retrofit2 使用FastJson作为Converter.m
    首先创建一个FastJsonRequestBodyConverter类packagecom.rrc.core.net.converter;importcom.alibaba.fastjson.JSON;importjava.io.IOException;importokhttp3.MediaType;importokhttp3.RequestBody;importretrofit2.Converter;/***=========================......
  • 助力智慧交通,基于YOLO家族最新端到端实时目标检测算法YOLOv10全系列【n/s/m/b/l/x】参
    交通标志检测是交通标志识别系统中的一项重要任务。与其他国家的交通标志相比,中国的交通标志有其独特的特点。卷积神经网络(CNN)在计算机视觉任务中取得了突破性进展,在交通标志分类方面取得了巨大的成功。CCTSDB数据集是由长沙理工大学的相关学者及团队制作而成的,其有交通标志样......
  • mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系
    我们先来看一个公式:Mipiclock=[(width+hsync+hfp+hbp)x(height+vsync+vfp+vbp)]x(bus_width)xfps/(lane_num)/2即mipi屏的传输时钟频率(CLKN,CLKP)等于(屏幕分辨率宽width+hsync+hfp+hbp)x(屏幕分辨率高height+vsync+vfp+vbp)x(RGB显示数据宽度)x帧率/(lane_num)/......