【SE】接口标准化

1、概述

接口标准化一直软件平台在追求的目标。接口标准规范由哪些组织来确立呢?

标准范例 制定组织 解决的核心问题 所在的抽象层级 举例
POSIX​ IEEE / The Open Group​ 应用软件在不同操作系统间的可移植性 应用 <--> 操作系统​
CMSIS​ ARM​ 嵌入式软件在不同ARM芯片间的可复用性 中间件/OS <--> 芯片硬件​
SQL​ ISO / IEC​ 应用在不同数据库间的可移植性 应用 <--> 数据服务​ SQLite(嵌入式常用),OceanBase,PostgreSQL, MySQL
Vulkan/OpenGL​ Khronos Group​ 图形应用在不同GPU间的可移植性 应用 <--> 图形硬件​
AUTOSAR​ AUTOSAR联盟​ 汽车软件组件在不同供应商间的可互换性 汽车应用 <--> 汽车硬件​
OCI​ OCI联盟​ 容器在不同运行时间的可移植性 应用交付 <--> 容器运行时 如Docker

对于嵌入式开发我们常接触的标准接口如下:

2、POSIX

IEEE:专注于电气与电子工程领域的标准化,主导技术规范制定 。 ‌

The Open Group:作为开放系统互操作性联盟,推动跨平台解决方案的标准化 。

POSIX认证流程:产品需通过The Open Group测试套件验证后,由IEEE颁发商标许可 。

参考手册:https://pubs.opengroup.org/onlinepubs/9699919799/nframe.html

复制代码
POSIX Headers
Format of Entries
<aio.h>
<arpa/inet.h>
<assert.h>
<complex.h>
<cpio.h>
<ctype.h>
<dirent.h>
<dlfcn.h>
<errno.h>
<fcntl.h>
<fenv.h>
<float.h>
<fmtmsg.h>
<fnmatch.h>
<ftw.h>
<glob.h>
<grp.h>
<iconv.h>
<inttypes.h>
<iso646.h>
<langinfo.h>
<libgen.h>
<limits.h>
<locale.h>
<math.h>
<monetary.h>
<mqueue.h>
<ndbm.h>
<net/if.h>
<netdb.h>
<netinet/in.h>
<netinet/tcp.h>
<nl_types.h>
<poll.h>
<pthread.h>
<pwd.h>
<regex.h>
<sched.h>
<search.h>
<semaphore.h>
<setjmp.h>
<signal.h>
<spawn.h>
<stdarg.h>
<stdbool.h>
<stddef.h>
<stdint.h>
<stdio.h>
<stdlib.h>
<string.h>
<strings.h>
<stropts.h>
<sys/ipc.h>
<sys/mman.h>
<sys/msg.h>
<sys/resource.h>
<sys/select.h>
<sys/sem.h>
<sys/shm.h>
<sys/socket.h>
<sys/stat.h>
<sys/statvfs.h>
<sys/time.h>
<sys/times.h>
<sys/types.h>
<sys/uio.h>
<sys/un.h>
<sys/utsname.h>
<sys/wait.h>
<syslog.h>
<tar.h>
<termios.h>
<tgmath.h>
<time.h>
<trace.h>
<ulimit.h>
<unistd.h>
<utime.h>
<utmpx.h>
<wchar.h>
<wctype.h>
<wordexp.h>

3、OpenVG

OpenVG是由Khronos Group维护的硬件加速的2D矢量图形API。专为渲染路径、文字、地图等可无限缩放而不失真的图形设计。

Khronos Group​: 一个成立于2000年的非盈利性、会员制的行业联盟。其核心使命是创建开放的、免版税的跨平台API标准,这些标准主要用于图形处理、并行计算、视觉和机器学习、增强与虚拟现实(AR/VR)​ 等多媒体领域。您可以将其理解为一个由行业巨头们组成的"标准制定俱乐部",目的是共同解决关键技术领域的互操作性和碎片化问题。

特性维度 OpenGL ES OpenVG
核心绘制单元​ 几何图元:点、线、三角形。所有复杂物体都由三角形网格构成。 路径:由直线段、二次/三次贝塞尔曲线构成的矢量轮廓。
着色/填充方式​ 纹理映射​ 和 片段着色器。通过将位图(纹理)贴到几何体上来表现细节。 笔画​ 和 填充。用纯色、线性渐变、径向渐变或图像模式来填充路径内部或勾勒路径轮廓。
坐标系统与变换​ 完整的 3D 变换。使用 4x4 矩阵进行模型视图变换、投影变换。需要处理深度和透视。 2D 变换。使用 3x3 矩阵进行平移、旋转、缩放和剪切。本质是二维平面操作。
渲染管线​ 可编程管线。开发者编写顶点着色器和片段着色器,完全控制几何体变换和像素颜色计算。 固定功能管线。API 预先定义了路径的填充和笔画规则,开发者只需设置参数(如颜色、线宽),无法自定义着色逻辑。
抗锯齿​ 通常由开发者在使用时选择开启多重采样,或在片段着色器中自行实现。 原生、高质量的抗锯齿是核心设计目标。API 在填充路径时自动计算像素覆盖率,生成平滑的边缘。
典型接口对比​ glDrawArrays(GL_TRIANGLES, ...) glUniformMatrix4fv texture2D() vgDrawPath vgSetParameteri(path, VG_PAINT_TYPE, VG_PAINT_TYPE_LINEAR_GRADIENT)

4、SQLite

SQLite 是一个嵌入式关系型数据库管理系统。它的核心特点在于它是一个自包含的、无服务器的、零配置的、事务性的​ SQL 数据库引擎。"嵌入式"意味着它不是一个独立的进程,而是直接链接到您的应用程序中,成为应用程序的一部分。这与 MySQL、PostgreSQL 等需要单独安装、运行和管理的"客户端-服务器"型数据库有本质区别。

SQLite 虽然小巧,但功能相当强大,支持大部分 SQL92 标准。

标准的 SQL 语法 :支持绝大多数核心 SQL 语句,如 SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE, JOIN, INDEX, TRANSACTION等。

数据类型 :支持 NULL, INTEGER, REAL, TEXT, BLOB等动态类型(Manifest Typing)。

触发器 :支持在特定的数据库操作(INSERT/UPDATE/DELETE)前后自动执行自定义逻辑。

视图 :可以创建虚拟表(视图)来简化复杂查询。

外键约束 :支持关系完整性(需要运行时开启)。

部分索引 :可以只为满足特定条件的行创建索引,提高效率并节省空间。

特性 SQLite(嵌入式) MySQL/PostgreSQL(客户端-服务器)
架构 库形式,嵌入应用 独立服务器进程
数据库形式 单个磁盘文件 多个文件组成的复杂目录结构
部署 零配置,复制文件即可 需要安装、配置、管理
并发 读并发优秀,写并发差 为高并发读写设计
网络访问 需通过应用层间接实现 原生支持网络协议
适用场景 嵌入式、移动端、桌面端、小网站 中大型、高并发Web应用

简单来说,SQLite 不是一个用来替代 MySQL 或 PostgreSQL 的数据库,而是一个用于替代 fopen()(直接操作文件)的数据库。​ 当你需要比文件系统更高效、更可靠的结构化数据存储时,SQLite 是一个非常完美的选择。

相关推荐
t***p9351 小时前
idea创建springBoot的五种方式
java
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot+vue的学校课程管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
无名3871 小时前
RTPEngine 官方自带的 perl 测试程序
开发语言·perl·通信
fruge1 小时前
接口 Mock 工具对比:Mock.js、Easy Mock、Apifox 的使用场景与配置
开发语言·javascript·ecmascript
AI小云1 小时前
【数据操作与可视化】Matplotlib绘图-生成其他图表类型
开发语言·python·matplotlib
MediaTea1 小时前
Python 第三方库:plotnine(类 ggplot 的 Python 数据可视化库)
开发语言·python·信息可视化
S***26751 小时前
【监控】spring actuator源码速读
java·spring boot·spring
Pluchon1 小时前
硅基计划4.0 算法 FloodFill算法
java·算法·leetcode·决策树·逻辑回归·深度优先·图搜索算法
阿拉斯攀登2 小时前
深入微服务配置中心:Nacos注册中心的实操细节
java·微服务·云原生·springcloud