面试篇——Qt开发库,Linux标准库,Windows API浅尝

一、Qt开发库

        Qt 是一个跨平台的 C++ 应用程序开发框架,广泛用于开发图形用户界面(GUI)应用程序,同时也支持非图形的开发工作,如网络、数据库、线程等功能。它的主要开发库包括以下几个模块:

1.QtCore

提供核心的非GUI功能,包括事件处理、字符串、日期时间、文件、I/O处理、多线程、定时器等。它是Qt应用的核心基模块。

  • QCoreApplication:基础的应用管理类。
  • QTimer:定时器类。
  • QString:字符串处理类。

2.QtGui

提供了图形用户界面的功能,包括 2D 图形渲染、字体、图片、以及一些基本的窗口管理组件。

  • QPainter:用于绘图的类。
  • QImage:处理图片的类。
  • QFont:管理字体的类。

3.QtWidgets

提供了构建桌面应用程序的用户界面组件,例如按钮、标签、文本输入框等。

  • QPushButton:按钮类。
  • QLabel:标签类。
  • QLineEdit:文本输入框类。

4.QtNetwork

提供了用于网络编程的功能,包括 TCP、UDP、HTTP 等协议的支持。

  • QNetworkAccessManager:处理 HTTP 请求和响应。
  • QTcpSocket:用于创建 TCP 连接。
  • QUdpSocket:用于创建 UDP 连接。

5.QtMultimedia

提供了处理多媒体内容的功能,包括音频、视频播放、摄像头支持等。

  • QMediaPlayer:用于播放音频和视频。
  • QCamera:用于访问和控制摄像头。

6.QtSql

提供与数据库相关的功能,支持多种数据库管理系统(DBMS)如 SQLite、MySQL、PostgreSQL 等。

  • QSqlDatabase:管理数据库连接。
  • QSqlQuery:用于执行 SQL 查询。
  • QSqlTableModel:用于显示数据库表数据的模型类。

7.QtConcurrent

提供了简化多线程操作的功能,可以轻松地在多个线程之间处理并行任务。

  • QtConcurrent::run:并行执行函数的工具。
  • QFuture:表示异步操作的结果。

8.QtQuick / QML

提供了使用 QML 语言进行快速开发现代化用户界面的功能,特别适合用于移动应用或嵌入式系统的开发。

  • QQuickView:加载 QML 文件并显示它们。
  • QML:一种描述用户界面的声明式语言。

二、Linux标准库

Linux 标准库主要指与 C/C++ 相关的库,特别是 GNU C Library(glibc),它是 Linux 系统上 C 语言程序的标准库实现,并且是很多系统调用和底层功能的封装。以下是 Linux 下常用的标准库及其功能分类:

1.GNU C Library (glibc)

glibc 是 Linux 系统上最常用的 C 库,它实现了标准的 C 语言库函数,并且提供对 Linux 系统调用的封装。

  • <stdio.h>, <stdlib.h>, <string.h>, <time.h>, <unistd.h>等。
  • 标准输入输出 (printf, scanf, fopen, fclose 等)。
  • 字符串操作 (strcpy, strlen, strcmp, strcat 等)
  • 动态内存管理 (malloc, calloc, realloc, free)。
  • 时间管理 (time, localtime, strftime 等)。
  • 系统调用封装 (fork, exec, open, read, write, close, sleep, getpid 等)。

2.math.h

math.h 提供了各种数学运算函数,常用于科学计算和数值处理

  • 三角函数:sin(), cos(), tan()
  • 指数与对数:exp(), log(), log10()
  • 幂函数:pow()
  • 其他:sqrt(), ceil(), floor()

3.pthread

POSIX 线程库(pthread)是 Linux 下实现多线程编程的标准库。

  • <pthread.h>
  • 线程创建和管理 (pthread_create, pthread_join)。
  • 线程同步 (pthread_mutex_lock, pthread_mutex_unlock)。
  • 线程条件变量 (pthread_cond_wait, pthread_cond_signal)。

4.dlfcn.h

Linux 支持动态加载库的功能,dlfcn.h 是管理动态链接库的库。

  • dlopen():打开动态库。
  • dlsym():获取动态库中的符号(函数或变量)。
  • dlclose():关闭动态库。

5.signal.h

提供处理和发送信号的函数,用于控制进程间通信或异常处理。

  • SIGINT:键盘中断(Ctrl + C)。
  • SIGTERM:终止进程信号。
  • SIGKILL:强制终止进程信号。
  • signal():设置信号处理函数。
  • raise():发送信号给当前进程。

6.fcntl.h

 fcntl.h 提供文件控制操作,用于改变已经打开的文件描述符的属性。

  • fcntl():设置文件描述符的属性,例如非阻塞模式 (O_NONBLOCK) 或读写模式 (O_RDWR)。
  • open():打开文件。

7.unistd.h

unistd.h 提供了对操作系统服务的访问接口,包含 POSIX 标准的系统调用接口。

  • 文件操作read(), write(), close()
  • 进程控制fork(), exec(), getpid(), getppid()
  • 系统管理chdir(), sleep(), usleep()

8. sys/socket.h

sys/socket.h 提供网络编程的 API,用于创建和管理网络通信的套接字。

  • socket():创建套接字。
  • bind():绑定地址到套接字。
  • listen():监听连接。
  • accept():接受连接。
  • connect():连接到远程主机。

9. netinet/in.h 和 arpa/inet.h

这些库是与 sys/socket.h 配合使用的,用于处理网络地址和字节序的转换。

  • inet_ntoa():将 IP 地址转换为字符串。
  • inet_pton():将字符串转换为 IP 地址。
  • htons() / htonl():主机字节序转换为网络字节序。

10. sys/stat.h

sys/stat.h 用于获取文件属性,如文件大小、权限等。

  • stat():获取文件的状态信息。
  • chmod():更改文件权限。
  • mkdir():创建目录。

11. errno.h

errno.h 定义了处理错误码的标准接口,当系统调用出错时,会设置全局变量 errno

  • 提供错误代码,如 EACCES, EBUSY, EEXIST
  • perror():输出错误信息。

12. setjmp.h

提供非本地跳转的函数,用于异常处理或错误恢复

  • setjmp():保存当前执行环境。
  • longjmp():跳转到保存的执行环境。

三、Windows API

        Windows API(Windows 应用程序接口)是 Microsoft Windows 操作系统提供的底层接口,允许开发者与系统功能和硬件进行交互。它提供了大量的函数和数据结构,广泛用于桌面应用开发、系统管理、文件操作、进程控制等方面。以下是 Windows API 的主要功能模块及其应用:

1.Windows 基础服务 (Windows Base Services)

这些服务提供了操作系统的核心功能,如文件管理、内存管理、设备控制等。

  • CreateFile():创建或打开文件。
  • ReadFile():从文件读取数据
  • WriteFile():将数据写入文件。
  • CloseHandle():关闭文件句柄。
  • VirtualAlloc():分配虚拟内存。
  • VirtualFree():释放虚拟内存。
  • GlobalAlloc():分配全局内存。
  • GlobalFree():释放全局内存。
  • DeviceIoControl():对设备发出控制命令。

2. 图形设备接口 (GDI)

GDI 提供了用于在屏幕或打印机上绘图的函数,包括处理图形、文本、图像等。

  • CreateDC():创建设备上下文。
  • MoveToEx():移动当前绘图光标位置。
  • LineTo():绘制直线。
  • Ellipse():绘制椭圆形。
  • TextOut():在设备上下文中输出文本。
  • CreateFont():创建字体对象。
  • SelectObject():选择设备上下文中的 GDI 对象。
  • CreateCompatibleBitmap():创建与设备上下文兼容的位图。
  • BitBlt():进行位图的位块传输(拷贝图像)。

3. 用户界面管理 (User Interface Services)

这些 API 负责管理 Windows 的图形用户界面(GUI),包括窗口、消息处理、对话框等。

  • CreateWindowEx():创建一个窗口。
  • ShowWindow():显示或隐藏窗口。
  • DestroyWindow():销毁窗口。
  • GetMessage():从消息队列中获取消息。
  • DispatchMessage():分发消息给相应的窗口过程。
  • TranslateMessage():将虚拟键消息转换为字符消息。
  • SendMessage():同步发送消息到窗口。
  • CreateMenu():创建菜单。
  • AppendMenu():在菜单中添加菜单项。
  • DialogBox():创建模式对话框。
  • MessageBox():显示消息框。

4. Shell API

提供与 Windows Shell 交互的函数,用于处理桌面、任务栏、文件系统等相关任务。

  • SHFileOperation():复制、删除、移动或重命名文件/文件夹。
  • SHGetSpecialFolderPath():获取特殊文件夹的路径,如桌面或文档文件夹。
  • Shell_NotifyIcon():向系统托盘添加图标。

5. 进程与线程管理 (Process and Thread Management)

这些函数用于创建和管理进程、线程、同步对象。

  • CreateProcess():创建一个新进程。
  • TerminateProcess():终止进程。
  • GetCurrentProcessId():获取当前进程 ID。
  • CreateThread():创建一个线程。
  • TerminateThread():终止线程。
  • WaitForSingleObject():等待线程、进程或同步对象的状态变化。
  • CreateMutex():创建一个互斥量对象。

  • CreateSemaphore():创建信号量。

  • EnterCriticalSection():进入临界区。

6. 网络服务 (Networking Services)

这些 API 用于在 Windows 上进行网络通信,支持套接字、HTTP 等协议。

  • socket():创建一个套接字。
  • connect():与远程主机建立连接。
  • bind():将套接字绑定到本地地址。
  • send():发送数据到套接字。
  • recv():从套接字接收数据。
  • InternetOpen():初始化应用的使用 Internet 功能。
  • InternetConnect():连接到远程服务器。
  • HttpOpenRequest():创建 HTTP 请求句柄。
  • HttpSendRequest():发送 HTTP 请求。

7. 注册表操作 (Registry Services)

注册表 API 用于访问和操作 Windows 的注册表,存储系统和应用程序的配置信息。

  • RegOpenKeyEx():打开注册表键。
  • RegQueryValueEx():查询键值数据。
  • RegSetValueEx():设置键值数据。
  • RegCloseKey():关闭注册表键。

8. 安全与访问控制 (Security and Access Control)

提供了控制系统资源的访问权限和用户身份验证的函数。

  • AdjustTokenPrivileges():调整进程令牌中的权限。
  • OpenProcessToken():获取进程的访问令牌。
  • SetFileSecurity():设置文件的安全描述符。
  • CryptEncrypt():加密数据。
  • CryptDecrypt():解密数据。
  • CryptGenKey():生成加密密钥。

9. 多媒体服务 (Multimedia Services)

Windows API 提供了用于播放音频、视频、处理图像的多媒体服务。

  • mciSendString():发送 MCI 命令来控制音频和视频设备。
  • DirectX 是一个用于多媒体和游戏开发的 API 集合,包含 Direct3D(3D 图形)、DirectSound(音频处理)等。

10. 时间和计时器 (Time and Timer Services)

Windows 提供了精确的时间管理 API,用于获取系统时间或设置定时器。

  • GetSystemTime():获取系统时间。
  • GetLocalTime():获取本地时间。
  • SetSystemTime():设置系统时间。
  • SetTimer():设置定时器。
  • KillTimer():关闭定时器。

11. 系统信息和配置 (System Information and Configuration)

用于获取系统配置和硬件相关的信息。

  • GetSystemInfo():获取处理器架构、页面大小、内存信息等。
  • GetVersionEx():获取操作系统的版本信息。
  • GlobalMemoryStatusEx():获取系统内存状态。

猜你喜欢

转载自blog.csdn.net/qq_42331320/article/details/142171681