5 C语言PAT练习
PAT习题C语言题解。全部用C语言写,追求代码高效简洁。
项目地址:GitHub - OliverLew/PAT
6 Learn-Algorithms
关于项目,这儿主要是,用C语言去实现算法相关的,学习笔记,其中涵盖各类知识点,像链表,还有队列,以及哈希表等等。
项目地址:https://github.com/nonstriater/Learn-Algorithms
7 Sqlite
SQLite是一种开源的,用于嵌入式的,具备自包容特性、零配置要求且支持事务的关系数据库,它有着SQL数据库引擎。
不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
一个完整的,被称作SQLite的数据库,是存储于一个单一的,具备跨平台特性的磁盘文件。
SQLite 极其微小,属于轻量级,在完全配置状况下小于 400KiB,而在省略可选功能配置之际小于 250KiB。
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
SQLite事务具备完全的ACID兼容性,它能够让多个进程或者线程安全地进行访问。
SQLite,对 SQL92(也就是 SQL2)标准里的多数查询语言功能予以支持。
SQLite,是经过使用ANSI - C编写而成,并且它还提供了简单及易于使用的API。
SQLite能够于UNIX之中运行,具体涵盖Linux、Mac OS-X、Android以及iOS,同时,它也可以在Windows里运行,这其中包括Win32、WinCE以及WinRT。
项目地址:SQLite Home Page
8 EasyLogger
目前EasyLogger支持以下功能:
日志输出方式支持串口、Flash、文件等;
日志内容可包含级别、时间戳、线程信息、进程信息等;
支持多种操作系统,支持裸机;
各级别日志支持不同颜色显示;
有着这样一个项目地址,它是,https://gitee.com/Armink/EasyLogger。
9 struct2json
struct2json,是一个开源的,用于C结构体与JSON快速互转的库,它能够快速达成结构体对象与JSON对象之间序列化以及反序列化的要求。其具备快速、简洁的API设计,这极大地降低了直接运用JSON解析库来实现此类功能的代码复杂度。
起源
当下,将面向对象那颇为流行的设计思想应用于C语言之中。然而由于C语言里不存在类,故而通常会运用结构体struct去充当类,如此一来,结构体变量便成了对象。当有了对象之后,在诸多情形下,都得去考量对象的序列化,以及反序列化的问题。C语言不像诸多高级语言那般拥有反射等机制,这就致使对象的序列化以及反序列化无法得到原生的支持。
对于C语言来讲,将其序列化为JSON字符串是个挺好的选择,因而就得去运用cJSON这类JSON解析库,然而使用过后代码显得冗余且逻辑性欠佳,所以便萌生出对cJSON库进行二次封装的想法,从而实现一个struct与JSON之间能够快速相互转换的库。struct2json正是诞生在这种情况下。下面是struct2json主要的使用场景:
结构体对象被序列化成 JSON 对象之后,能够直接保存到文件、Flash 当中,以此达成对结构体对象进行掉电存储,这就是持久化。
通信方面,高级语言对JSON的支持极为友好,比如说,Javascript、Groovy对JSON有着原生支持,故而,JSON能够充当C语言与其他语言软件之间的通信协议格式,还能作为对象传递格式。
可视化 ,序列化为 JSON 后的对象 ,能够更加直观地展示于控制台或者 UI 上 ,可被用于产品调试 、产品二次开发等场景。
项目所在地址为,https://gitee.com/Armink/struct2json。
10 TencentOS-tiny
TencentOS tiny主要由这么个东西构成,它是一个轻量级的RTOS内核,再加上多个物联网组件,从下到上主要涵盖了如下一些部分。
CPU库,它是TencentOS tiny所支持的CPU IP核架构,目前主要支持ARM Cortex M0、ARM Cortex M3、ARM Cortex M4以及ARM Cortex M7,接着还有当下极火的RISC-V,当然了,腾讯物联网团队必定也会去支持更多种类以及更多IP核与开发板。
驱动管理层里面有BSP板级支持包,这些东西主要是由MCU芯片厂家去开发以及维护的,还有HAL硬件抽象,还有Drivers设备驱动,这一部分对于纯粹的嵌入式开发者而言是相当重要的,肯定会愈发完善的!
内核,TencentOS tiny实时内核涵盖任务管理模块,具备实时调度功能,拥有时间管理特性,包含中断管理机制,设有内存管理办法,存在异常处理措施,配备软件定时器,拥有链表,设有消息队列,具备信号量,含有互斥锁,拥有事件标志等诸多方面,接下来,我也会撰写一系列有关TencentOS tiny内核源码分析的文章,敬请期待哦!
IoT协议栈中,TencentOS tiny提供lwip,提供AT Adapter,还提供SAL层,它支持不同的网络硬件,像以太网通信模块,像串口WIFI通信模块,像GPRS通信模块,像NB - IoT通信模块,像4G通信模块等。在TCP/IP网络协议栈之上,它提供常用的物联网协议栈应用层,比如说是COAP,比如说是MQTT,以此支撑终端业务能够快速接入腾讯云。
安全框架,TencentOS tiny针对物联网终端数据传输安全,以及设备认证安全,给出了较为完备的安全解决途径,以作保障。安全框架用以提供的DTLS与TLS安全协议,对COAP以及MQTT的传输层予以加固,借此可确保物联网终端在对接腾讯云之际,达成安全认证以及数据加密;除此之外,针对低资源的终端硬件,安全框架还给出与腾讯云IoTHub相配套的密钥认证方案,以此确保资源受限设备在一定程度上,也能够实现设备安全认证;物联网安全是十分重要的,这些框架也是必定存在的。
组件框架,由TencentOS tiny提供众多组件,其中涵盖文件系统,包含KV存储,具备自组网功能,拥有JS引擎,设有低功耗框架,还有设备框架,包含OTA,以及调试工具链等,这一系列组件,在我看来是相当不错的,我正满怀期待着呢。
公开的 API(处于规划开发阶段):TencentOS tiny 会于协议中间件以及框架层之上给出公开的 API 函数,如此一来便能十分便利地运用中间组件的功能,我可是最为中意这种开发方式的,不去制造轮子,能够直接加以运用。简而言之这个 API 能够迅速对接腾讯云,达成终端业务向云端迁移的需求,最大幅度地缩减终端物联网产品的开发周期,并节省开发成本。
便利用户参照运用的有,包含于TencentOS tiny之中的示例应用所提供的示例代码,还有模块测试代码等。
腾讯云物联网平台,即图中处于最上层的那部分,严格来讲,这部分并不属于TencentOS tiny的框架内容,它已进入接入平台层,腾讯云的物联网平台会提供多种语言的SDK包,在嵌入式设备上必然会使用C SDK,不过从整体来看,都是相当不错的。
就总体而言,TencentOS tiny真的是相当不错的,其所具备的功能都是涵盖应有的那些,是能够去考虑采用一下这个操作系统的~
项目地址:https://github.com/Tencent/TencentOS-tiny
11 ffmpeg
开源计算机程序FFmpeg,专为记录、转换数字音频、视频而设,还能将其转化为流,采用LGPL或GPL许可证,提供录制、转换以及流化音视频的完整解决方案。
项目地址是,GitHub上的FFmpeg/FFmpeg,它是https://git.ffmpeg.org/ffmpeg.git的镜像。
12 Lua
说 Lua 很棒,且 Lua 是巴西人发明的这种事,都让我心里不爽呢,不过还没到脸红那种程度,最多也就是眼红而已。
叫我满脸通红的是 Lua 的源代码,它是百分之百纯粹的 ANSI C,完全没有丝毫掺杂。在任意支持 ANSI C 编译器的平台之上,都能够轻易编译成功通过。我尝试过了,真的是毫无一点多余的话。Lua 的代码行数足够少,5.1.4 版本仅仅只有 1.5W 行,去除空白行以及注释估计能缩减到 1W 行。