C语言实现PAT习题题解及算法学习笔记,附SQLite介绍

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 行。

相关推荐
良木生香1 小时前
【C++ 初阶】:内存管理的迭代革新——从malloc/free 到 new/delete 的时代更迭
c语言·开发语言·c++
code_li2 小时前
▍Type-C 不等于 Type-C,是看起来已经「统一」了
c语言·开发语言·type-c
CHANG_THE_WORLD2 小时前
C 语言的 `fread` 与 C++ 的 `ifstream::read` 区别及设计哲学
java·c语言·c++
zore_c2 小时前
【C++】C++——类的默认成员函数(构造、析构、拷贝构造函数)
java·c语言·c++·笔记·算法·排序算法
itman30112 小时前
C语言、C++与C#深度研究:从底层到现代开发演进全解析
c语言·c++·c·内存管理·编译模型
爱编码的小八嘎13 小时前
C语言完美演绎8-2
c语言
zopple15 小时前
汇编、C、C++和Java核心技术对比
c语言·汇编·c++
leaves falling16 小时前
C/C++ 的内存管理,函数栈帧详讲
java·c语言·c++
XY_墨莲伊18 小时前
【编译原理】实验二:基于有穷自动机FA词法分析器设计与实现
c语言·开发语言·c++·python