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,且该 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
一个开源的,用于C结构体与JSON快速互转的库,叫struct2json,它能够迅速达成结构体对象与JSON对象之间序列化以及反序列化的要求,其有着快速、简洁的API设计,极大减低了直接借助JSON解析库去实现此类功能的代码复杂度。
起源
把面向对象设计运用至C语言里,是当前颇为流行的设计理念。鉴于C语言中不存在类,故而通常借助结构体struct来充任类,如此一来结构体变量便是对象。有了对象以后,许多时候要思量对象的序列化以及其反序列化问题。C语言不像诸多高级语言具备反射等机制,这致使对象序列化及反序列化得不到原生的支持。
C语言里,将其转化为JSON字符串是个挺好的抉择,这种情况下就要用到像cJSON这样的JSON解析库,然而使用过后代码有冗余现象且逻辑性比较差,所以就产生了对cJSON库进行二次封装的想法,进而实现一个能让struct与JSON之间快速相互转换的库,struct2json就是在这样的情形下诞生的,下面是struct2json主要的使用场景:
以下是改写后的:持久化,结构体对象经序列化为 JSON 对象之后,能够直接被保存到文件、Flash 当中,以达成对结构体对象的掉电存储。
通信:一些高级语言,像Javascript、Groovy这种,对JSON带有原生的支持,这表明JSON在与其他语言软件通信时,可充当C语言和它们之间通信协议格式以及对象传递格式,因为高级语言对JSON支持得挺友好。
借助可视化,经序列化为 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 行。