当前位置: 首页 > news >正文

Qt 创建的C++ 桌面程序 学习笔记1

Qt开发的C++桌面程序

Qt 是一个基于 C++ 的跨平台 GUI 框架,用于开发桌面应用程序,Qt 强调跨平台和性能。

Qt 是跨平台的王者,支持 Windows、Linux、macOS、Android 和嵌入式系统等多个平台。这意味着用 Qt 开发的 C++ 应用可以几乎无缝移植到不同操作系统,而无需重写大量代码。对于需要多平台部署的企业级应用(如科学计算工具或游戏编辑器),这是一大亮点。

  • ​Qt 是一个跨平台的应用程序框架​​,提供:
    •  ​GUI 开发​​:QWidgetQMainWindowQML(用于现代 UI)。
    •  ​​核心功能​​:信号槽机制(替代回调)、容器类(QList/QMap)、文件 I/O(QFile)、网络(QTcpSocket)。
    •  工具链​​:qmake/CMake(构建)、Qt Designer(UI 设计)、MOC(元对象编译器)。
  •  Qt 依赖 C++ 运行时(CRT)​​:
    •  Qt 本身是 C++ 库,编译后的程序仍需链接系统的 C++ 运行时(如 Windows 的 msvcp140.dll)。

  1. Qt 是​​应用层框架​​,而 CRT 是​​语言运行时基础库​​。Qt 的功能更接近 C# 中的 ​​.NET Framework​​(提供高级API)。

  2. Qt 依赖 CRT​​,编译 Qt 程序时,仍需链接 C++ 标准库(如 libstdc++)和操作系统 CRT。例如在 Windows 上,Qt 程序会依赖 vcruntime140.dll
  3. 替代关系​ 在 C++ 中的 ​libc(Linux)或 msvcrt.dll(Windows)​​相当于C# 中的 CRT。Qt 的等价物在 C# 中是 ​​.NET Framework 的类库​​(如 System.Windows.Forms 或 WPF)。

Qt开发的C++桌面程序相对于C# WinForm/WPF的详细对比

性能、跨平台能力、开发效率、生态系统、部署成本。尤其要强调Qt的“一次编写多平台编译”和C#的“跨平台重写”本质区别

核心对比总览

特性维度Qt (C++)C# (WinForms / WPF)胜出方 / 说明
​性能与资源控制​​极高​​。编译为原生代码,运行效率接近硬件极限。内存、CPU周期完全由开发者掌控。​高(WPF) / 较高(WinForms)​​。基于JIT编译,性能通常足够好,但不如C++极致。受限于GC。​Qt (C++)​
适用于性能敏感型应用。
​跨平台能力​​顶级​​。​​一次编写,随处编译​​。完整支持Windows, Linux, macOS, 甚至嵌入式系统。​有限​​。WinForms/WPF ​​本身仅限Windows​​。可通过 ​​MAUI​​ (不成熟) 或 ​​Avalonia​​ (第三方) 实现跨平台。​Qt (C++)​
真正的原生跨平台。
​语言与学习曲线​​C++​​:强大但复杂,学习曲线​​陡峭​​。需手动管理内存,但RAII和智能指针缓解了问题。​C#​​:现代、优雅,学习曲线​​平缓​​。自动内存管理(GC),开发效率高。​C#​
更易上手,开发更快速。
​UI现代化与灵活性​​灵活​​。​​Qt Widgets​​:传统桌面样式,性能好。
​QML​​:声明式语言,支持非常​​现代、炫酷的UI​​和动画,适合触摸设备。
​WPF​​:基于DirectX,支持矢量图形、丰富动画和数据绑定,非常强大。
​WinForms​​:简单、成熟,但UI略显过时,定制复杂控件较难。
​平局​
WPF/QML都很强,取决于设计师和开发者水平。
​开发工具与体验​​良好​​。Qt Creator 轻快高效。VS插件体验也很好。调试C++比C#更复杂。​极佳​​。​​Visual Studio​​ 是宇宙级IDE,提供无与伦比的调试、拖拽设计、智能提示体验。​C#​
凭借Visual Studio胜出。
​生态系统与依赖​​自包含​​。通常只需打包几个Qt的DLL。依赖少,部署相对简单。​依赖.NET​​。需为目标机器安装对应版本的​​.NET Framework​​或​​.NET运行时​​。​Qt (C++)​
部署依赖性更小。
​社区与就业市场​​活跃​​。主要集中在​​嵌入式、工业自动化、汽车、专业软件​​领域。​极其庞大​​。主要集中在​​企业应用、业务系统、Windows内部工具​​开发。​C#​
.NET社区规模更大。
​许可证​​双许可​​。开源版(LGPL/GPL)或商业许可。LGPL要求动态链接,或修改Qt源码需开源。​完全免费​​。.NET SDK和Visual Studio Community版均可免费商用。​C#​
许可证更简单无忧。

🔍 各维度详细解读

1. 性能与资源控制 (Performance & Control)

C++ 作为底层语言,Qt 应用在执行速度和内存管理上通常更高效,尤其适合资源密集型应用(如实时图形渲染或大型数据处理)。Qt 使用 OpenGL 或 Vulkan 等现代渲染引擎,支持硬件加速,且在低端硬件上表现更好。相比 WinForms,Qt 的性能提升显著;在与 WPF 对比时,Qt 的原生 C++ 代码避免了 .NET 的运行时开销。但时,C++ 的手动内存管理和潜在的指针错误可能导致调试更复杂,如果开发者不熟练,会影响整体性能优化。

  • Qt (C++)​​:这是它的​​核心优势​​。编译后的代码直接运行在硬件上,没有中间层。你可以进行极致优化,精确控制内存分配和释放(虽然Qt本身也有少量开销)。这对于需要榨干硬件性能的软件至关重要,例如:
    • 工业控制软件(高实时性)
    • 视频/图像处理软件(如Adobe Photoshop、DaVinci Resolve底层)
    • 大型科学计算与仿真
    • 游戏引擎编辑器(如Unity Editor早期版本)
    • 嵌入式设备上的GUI
  • ​C# (WinForms/WPF)​​:启动快,适合简单应用。基于.NET,性能对于绝大多数业务应用(ERP、CRM、管理系统)来说​​绰绰有余​​。JIT编译使其速度很快,WPF的图形渲染由DirectX加速,非常流畅。但其性能上限受制于垃圾回收(GC),在需要极低延迟的场景下,不可控的GC暂停可能是个问题。

2. 跨平台能力 (Cross-Platform)
  • Qt (C++)​​:​​真正的跨平台王者​​。你写的同一份C++代码,只需在目标平台上用对应的编译器重新编译,就能生成原生应用。这是Qt的立身之本。如果你的目标用户群使用Windows、Linux和macOS,且你希望为每个平台提供​​原生的外观和体验​​,Qt是首选。
  • C# (WinForms/WPF)​​:​​本质上是Windows技术​​。虽然.NET Core/.NET 5+ 是跨平台的,但​​WinForms和WPF这两个UI框架本身并不是​​。微软的跨平台解决方案是MAUI,但它更侧重于移动端,且成熟度和社区生态远不如Qt。第三方框架AvaloniaUI非常优秀,模仿了WPF的API并实现了跨平台,但它仍然是一个需要额外学习和依赖的框架。
3. 开发效率与体验 (Development Experience)
  • ​C# (WinForms/WPF)​​:​​绝对优势​​。Visual Studio提供了世界上最好的开发体验之一:
    • 强大的拖拽设计器​​:快速搭建UI。
    • XAML热重载​​:实时查看WPF界面更改效果。
    • 一流的调试器​​:易于使用。
    • ​NuGet包管理​​:海量库一键集成。
    • ​C#语言特性​​:async/await、LINQ等特性让编写复杂逻辑变得非常高效。
  • Qt (C++)​​:开发体验也很不错,尤其是使用​​Qt Creator​​时。但对于大型复杂项目,Visual Studio的优势更大。Qt提供了​​Qt Designer​​用于拖拽设计UI,但其体验略逊于VS。C++的编译速度通常慢于C#,这也会影响迭代效率。Qt的信号槽机制虽然强大,但语法上不如C#的eventdelegate直观。
4. 应用场景与总结 (Use Cases & Conclusion)

跨平台专业软件音视频处理嵌入式设备GUI工业控制/HMI企业内部工具业务管理系统/ERP低性能要求高性能要求Windows Only跨平台需求Qt vs C# 技术选型决策图

​如何选择?​

  • 选择 Qt (C++) 如果:​
    • 你的应用是​​性能敏感型​​或​​资源极度受限​​。
    • 你有​​强烈的跨平台需求​​,希望为Windows、Linux、macOS提供完全原生的体验。
    • 你的目标领域是​​嵌入式、工业自动化、专业音视频处理​​等。
    • 你的团队精通C++,并且对底层控制有要求。
  • 选择 C# WinForms/WPF 如果:​
    • 你的应用是​​典型的Windows企业级应用​​(如管理系统、后台工具、数据展示)。
    • 开发速度、上市时间和开发体验​​是你的最高优先级。
    • 你的团队主要使用Windows,且对C#和.NET生态系统更熟悉。
    • 应用不需要部署到Linux或macOS。
5.开发效率和学习曲线

Qt 的优势:Qt Designer 提供可视化拖拽设计,支持信号-槽机制简化事件处理。C++ 开发者可以轻松集成现有 C++ 后端代码(如科学库),无需语言切换。对于有 C++ 经验的团队,Qt 的工具链(如 Qt Creator IDE)非常强大。

Qt 的劣势:C++ 语言本身更复杂(无垃圾回收,手动管理资源),学习曲线陡峭,尤其是对初学者。Qt 的 API 庞大,初次上手需时间;相比 C#,调试和迭代周期更长。

6.社区支持、生态和未来性

Qt 的优势:活跃的开源社区,大量第三方库(如集成 OpenCV 或 TensorFlow),商用支持强劲。未来性好,随着跨平台需求增长,Qt 持续更新。

Qt 的劣势:社区不如 .NET 大,C++ 资源较少。

Qt (C++) 的核心优势在于跨平台和高性能,适合需要多 OS 支持或 C++ 后端的复杂应用(如工程软件),但学习曲线和开发速度是劣势。WinForms (C#) 简单高效,适合 Windows 专属的快速开发,但 UI 和性能已落后。WPF (C#) 是现代 Windows 应用的首选,提供最佳 UI 能力和生产力,但缺乏跨平台性。如果你优先 Windows 且追求现代感,选择 WPF;若需跨平台,Qt 是更好选项。最终选择取决于项目需求、团队技能和目标平台。

​一句话总结:Qt 用于需要极致性能、控制力和跨平台能力的“硬核”软件;C# 用于追求开发效率和体验的Windows商业应用。​

Qt的各个版本的区别

了解Qt与跨平台开发,全面包括Qt各个版本特性及应用场景_qt 版本-CSDN博客

Qt 各主要版本(Qt 4、Qt 5、Qt 6)在架构、特性和适用场景上有所不同。下面是一个表格汇总了它们的核心差异,方便你快速了解:

特性维度Qt 4 (2005-2015) 

Qt 5 (2012-2020) 

Qt 6 (2020至今) 

​图形渲染​基于 OpenGL,能力基础 

Qt Quick 2.0 基于 OpenGL 

​Qt RHI​​ (渲染硬件接口),支持 ​​Vulkan/Metal/D3D​​ 

​C++标准支持​缺乏现代 C++ 支持 

​C++11​​ 

​C++17​​ 及以上 

​主要GUI范式​​Qt Widgets​​ 

Qt Widgets (维护) + ​​Qt Quick/QML​​ (引入并强化) 

Qt Widgets (维护) + ​​Qt Quick/QML​​ (进一步现代化,增强3D能力) 

​构建系统​qmake 

qmake (主要), CMake (开始引入) 

​CMake​​ (为主) 

​关键新特性​模块化架构, MVC, QtWebKit 

增强的跨平台支持(Android/iOS), Qt WebEngine (基于Chromium), 更丰富的模块 

强类型QML, 更好的高DPI支持, Qt Shader Tools, 大量API清理和现代化 

​性能重点​稳定,但渲染性能和效率有限 桌面和移动端性能提升,QML性能优化 ​图形渲染效率​​显著提升,跨平台硬件加速 
​主要局限​移动和嵌入式支持弱,遗留代码多 仍受 OpenGL 限制,Qt Widgets 改进有限 移除部分过时API,​​兼容性调整​​较大 ;​​对操作系统版本要求更高​​ (如 Win10+ ) 
​典型应用场景​传统桌面应用,经典嵌入式系统(部分老设备) 跨平台桌面应用、移动应用(Android/iOS)、嵌入式Linux ​高性能要求的现代应用​​、​​3D UI​​、移动应用、​​利用现代图形API的嵌入式系统​

Qt 的常用模块

📦 一、Qt 基本模块 (Essentials Modules)

这些模块是 Qt 的核心,在所有支持的平台上都可用,是绝大多数 Qt 应用程序的基础。

模块名描述
​Qt Core​​核心非 GUI 类​​。是所有其他模块的基础,包括信号槽、对象模型、线程、文件 I/O、容器类等。
​Qt GUI​​图形用户界面的基础类​​。包括 OpenGL 集成、字体、图像、调色板等。更高级的 UI 模块都构建于此。
​Qt Widgets​​基于 C++ 的传统桌面风格 UI 控件​​。提供按钮、列表、对话框等大量可定制控件,用于构建经典桌面应用。
​Qt Network​​网络编程类​​。简化 TCP/IP 和 UDP 客户端和服务器程序的开发,支持 SSL 加密。
​Qt SQL​​数据库集成类​​。提供到 SQL 数据库的驱动和操作接口,支持主流数据库(MySQL, PostgreSQL, SQLite 等)。
​Qt Test​​单元测试框架​​。用于编写 Qt 应用程序和库的单元测试。

🧩 二、Qt 附加模块 (Add-On Modules)

这些模块提供特定领域的额外功能,可能需要根据许可证单独选择,或在安装时勾选。

​1. 图形与用户界面 (Graphics & UI)​
模块名描述
​Qt QML​​用于构建动态、自定义用户界面的声明式框架​​。使用 JavaScript 作为逻辑脚本。
​Qt Quick​​QML 的标准库和运行时​​。提供用于构建现代动画触摸式 UI 的基本类型和功能(如 RectangleText)。
​Qt Quick Controls 2​​基于 Qt Quick 的轻量级、高性能 UI 控件集​​。提供接近原生风格的按钮、列表等控件,适合移动和嵌入式设备。
​Qt Quick 3D​​用于创建 3D 内容和 3D 用户界面的高级 API​​。
​Qt ShaderTools​​跨平台着色器工具​​,用于管理着色器在不同图形 API 上的移植性。
​2. 多媒体 (Multimedia)​
模块名描述
​Qt Multimedia​​音频、视频、摄像头和收音机功能的 API​​。
​Qt PDF​​用于显示和操作 PDF 文档的类和工具​​。
​3. 通信与连接 (Connectivity)​
模块名描述
​Qt Bluetooth​​提供蓝牙功能的 API​​,用于在不同平台间连接蓝牙设备。
​Qt SerialBus​​工业总线协议的实现​​,如 ​​CAN​​、​​Modbus​​。
​Qt SerialPort​​提供对硬件串口(RS-232/485)的访问​​。
​Qt MQTT​​实现 MQTT 协议​​,用于物联网(IoT)消息传递。
​Qt NFC​​提供对近场通信(NFC)功能的访问​​。
​Qt WebChannel​​在 Qt 应用程序(C++/QML)和 Web 内容(HTML/JS)之间建立对等连接​​。
​Qt WebSockets​​实现 WebSocket 协议​​(RFC 6455)。
​4. 语言与工具 (Language & Tools)​
模块名描述
​Qt Linguist​​一套用于应用程序国际化的工具​​。使应用程序的翻译变得简单。
​Qt Script​​ (已弃用)​提供脚本化功能​​,但已被 ​​QML​​ 和 ​​Qt QML​​ 模块取代。
​Qt Help​​用于在应用程序中集成在线帮助文档​​。
​5. 其他重要模块​
模块名描述
​Qt Concurrent​​高级多线程编程库​​。使用高阶函数(如 mapfilterreduce)并行处理列表,无需使用低级的线程原语。
​Qt PrintSupport​​提供对打印功能的支持​​。
​Qt Xml​​ / ​​Qt XML Patterns​​处理 XML 数据的模块​​(部分功能已被 Qt Core 中的 QXmlStreamReader/Writer 取代)。
​Qt Sensors​​提供对硬件传感器(如加速度计、陀螺仪)的访问​​。
​Qt Positioning​​提供位置信息来源(如 GPS, Wi-Fi)的访问​​。
​Qt StateMachine​​提供创建和执行状态机的框架​​。
​Qt Charts​​用于创建美观的 2D 图表​​(折线图、饼图、条形图等)。
​Qt Data Visualization​​用于创建 3D 数据可视化(如柱状图、散点图)​​。
​Qt Gamepad​​允许应用程序接收游戏手柄输入事件​​。

Qt环境下MSVC和MinGW编译器的文件区别

MSVC 编译器(Microsoft Visual C++)。这是Visual Studio自带的编译器。

mingw_64 是MinGW 编译器(Minimalist GNU for Windows)构建的。

MSVC 和 MinGW 是两种不同的编译器工具链,它们编译产生的二进制库文件是​​不兼容的​​。Visual Studio的Qt插件在检测到你试图将一个MinGW构建的Qt版本

特性MSVC (Microsoft Visual C++)MinGW (Minimalist GNU for Windows)
​目标文件​.obj (COFF格式) .o 
​静态库​.lib .a 
​动态库​.dll + 配套的.lib(导入库).dll + 配套的.dll.a(导入库)
​运行时依赖​Microsoft Visual C++ Redistributable包 或 MSVCRT.dll等 libstdc++-6.dlllibgcc_s_dw2-1.dllwinpthreads等GNU库 
​调试信息​.pdb (Program Database) .debug 或嵌入DWARF信息 
​兼容性​需使用MSVC编译的第三方库 需使用MinGW编译的第三方库 

​🔧 选择建议:​

  • 优先选择 MSVC 的情况​​:
    • 开发​​仅面向Windows平台​​的应用程序,尤其是需要深度集成Windows特有API(如COM、DirectX)或追求最佳性能的项目
    • 需要使用​​Visual Studio强大的图形化调试器​​进行复杂调试
    • 项目依赖的​​第三方库仅提供MSVC编译版本​​(例如许多官方Windows SDK)
  • 优先选择 MinGW 的情况​​:
    • 需要​​跨平台开发​​(Windows、Linux、macOS),希望源码能在不同系统上编译通过,注重平台兼容性
    • 项目依赖的​​第三方库来源于GNU生态或主要提供MinGW编译版本​
    • 希望使用​​完全开源免费的工具链​​,或更熟悉GCC系列编译器的选项和特性
组件说明
​MSVC​针对 Windows 平台上的 MSVC 编译器的 Qt 组件,如 msvc2019 32-bit 和 msvc2019 64-bit 等。安装该组件需要计算机上已经安装相应版本的 Visual Studio。
​MinGW​编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,是 Windows 平台上使用的 GNU 工具集导入库的集合。
​UWP​UWP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP,属于 MSVC 编译器生成的 Qt 库。如果不是开发 UWP 应用程序,就不需要,直接忽略。
​Android​这是针对安卓应用开发的 Qt 库,一般情况下用不到。
​Sources​Qt 的源代码包,除非你想阅读 Qt 的源码,否则不用安装。
​Qt​Qt 的附加模块。括号里的 TP 是指 Technology Preview,技术预览模块的意思,还处在功能测试阶段,不是正式版模块;括号里的 Deprecated 是指抛弃的旧模块,兼容旧代码使用的,一般用不到(如果不是为和以前开发的源程序兼容,过时的模块不要选择)。

安装QT

进入清华大学开源软件镜像站下载:

https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/

一步步安装

VisualStudio 2022中安装Qt Vs Tools

在 Visual Studio 的 ​​扩展 -> 管理扩展​​ 中在线搜 Qt Visual Studio Tools​

配置 Qt 版本​

Qt 框架​​:从 Qt 官网下载并安装。对于 Windows 上的 Visual Studio 开发,安装时请选择与你 Visual Studio 版本匹配的 ​​MSVC 编译器组件​​(例如,对于 VS2022,可选择 msvc2019_64 或查询 Qt 官网以确认兼容的版本)

  1. 启动项目创建​​  打开 Visual Studio,选择 ​​“文件” > “新建” > “项目”​
  2. 选择项目模板  ​​“Qt Widgets Application”​​(适用于传统桌面GUI)或其他Qt项目类型
  3. ​配置 Qt 版本​​项目创建过程中或之后,会提示你选择要使用的 ​​Qt 版本​​。从下拉菜单中选择你已安装并通过 ​​“扩展 -> Qt VS Tools -> Qt Options”​​ 配置好的 Qt 版本。
  4. QT项目中文件类型
YourProjectName/
├── main.cpp              // 应用程序主入口
├── MainWindow.h          // 主窗口类头文件
├── MainWindow.cpp        // 主窗口类实现文件
├── MainWindow.ui         // 主窗口UI文件(可用Qt Designer编辑)
└── YourProjectName.pro    // Qt项目文件(qmake)
  • 双击 .ui 文件即可在集成的 ​​Qt Designer​​ 中通过拖放控件设计界面
  • 在 MainWindow.h 和 MainWindow.cpp 等文件中编写业务逻辑和功能代码

文章转载自:

http://85owlhFG.bqdgr.cn
http://5aHKX9mz.bqdgr.cn
http://7Y4IZHuv.bqdgr.cn
http://Z3HEEQV9.bqdgr.cn
http://PuDyL4vx.bqdgr.cn
http://H0qO2gur.bqdgr.cn
http://asWcg2We.bqdgr.cn
http://L8nRTspt.bqdgr.cn
http://soiApJkP.bqdgr.cn
http://oiZEVW6r.bqdgr.cn
http://irAryPlB.bqdgr.cn
http://AFlftrVW.bqdgr.cn
http://uHAZBn1Y.bqdgr.cn
http://AfKBe5O0.bqdgr.cn
http://QaXfGM6X.bqdgr.cn
http://vCCKPG2z.bqdgr.cn
http://CspHajzx.bqdgr.cn
http://1GMPgLsK.bqdgr.cn
http://FKTRtqcM.bqdgr.cn
http://TFfgq100.bqdgr.cn
http://BbMMjiNK.bqdgr.cn
http://EnmEFOoN.bqdgr.cn
http://llb1XQZu.bqdgr.cn
http://okySQj3x.bqdgr.cn
http://vtr8y9lx.bqdgr.cn
http://Mgjgv6CB.bqdgr.cn
http://Ry4F1S7p.bqdgr.cn
http://jH4vZgSy.bqdgr.cn
http://YVdhET34.bqdgr.cn
http://LRyQXsbu.bqdgr.cn
http://www.dtcms.com/a/362566.html

相关文章:

  • Elasticsearch创建索引分片和副本大小建议
  • iOS XML 处理利器:CNXMLParser 与 CNXMLDocument 深度解析
  • iOS15如何绕过MDM锁?详细图文教程教你搞定
  • 数据结构:基数排序 (Radix Sort)
  • uni-app iOS 性能监控与调试全流程:多工具协作的实战案例
  • Qt中QSettings的键值使用QDataStream进行存储
  • 【Vue2 ✨】Vue2 入门之旅(七):事件处理
  • 从spring MVC角度理解HTTP协议及Request-Response模式
  • 自学嵌入式第三十二天:网络编程-UDP
  • 基于单片机醉酒驾驶检测系统/酒精检测/防疲劳驾驶设计
  • Angular事件处理全攻略:从基础到进阶的完整指南
  • GEO 应用实践研讨会:探索行业新路径,激发企业新活力
  • IoT Power软件 -- 每次开启强制升级解决方法
  • DVWA靶场通关笔记-DOM型XSS(Impossible级别)
  • CentOS7.6
  • 基于Force-closure评估的抓取计算流程
  • gitlab中回退代码,CI / CD 联系运维同事处理
  • RAGFlow——知识库检索系统开发实战指南(包含聊天和Agent模式)
  • 微信小程序备忘
  • ResponseBodyEmitter介绍
  • HarmonyOS 鸿蒙系统自带的 SymbolGlyph 图标组件详解
  • 【学Python自动化】 8.1 Python 与 Rust 错误处理对比学习笔记
  • 拔河(蓝桥杯)(前缀和)
  • Docker CI/CD 自动化部署配置指南
  • 【Datawhale之Happy-LLM】3种常见的decoder-only模型——Github最火大模型原理与实践教程task07
  • C#---共享项目
  • 【C++变量和数据类型:从基础到高级】
  • AI 在教育领域的落地困境:个性化教学与数据隐私的平衡之道
  • 线程特定存储
  • 【Go语言入门教程】 Go语言的起源与技术特点:从诞生到现代编程利器(一)