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

.NET MAUI 发展历程:从 Xamarin 到现代跨平台应用开发框架

文章目录

    • 引言
    • Xamarin 起源:MAUI 的前身
      • Xamarin 的创立(2011年)
      • Xamarin Studio 与 Visual Studio 集成(2013年)
      • Xamarin.Forms 的诞生(2014年)
      • 微软收购Xamarin(2016年)
    • .NET MAUI的诞生与演变
      • .NET MAUI的宣布(2020年)
      • .NET MAUI预览版与.NET 6(2021年)
      • .NET MAUI正式发布(2022年)
      • .NET MAUI在.NET 7中的发展(2022-2023)
      • .NET MAUI 8的推出(2023年)
    • .NET MAUI的核心特性
      • 1. 跨平台开发
      • 2. 单一项目模型
      • 3. 声明式UI与XAML
      • 4. 现代架构
      • 5. 热重载支持
      • 6. 原生UI渲染
      • 7. 深度平台集成
    • .NET MAUI的技术架构
      • 整体架构
      • 处理器架构
    • .NET MAUI与其他框架的比较
      • .NET MAUI vs Xamarin
      • .NET MAUI vs 其他跨平台框架
        • MAUI vs Flutter
        • MAUI vs React Native
    • .NET MAUI的使用案例
      • Microsoft官方案例
      • 企业的采用
      • 跨平台游戏
    • .NET MAUI的未来发展
      • .NET 8及后续版本的改进
      • 路线图上的功能
      • 社区发展
    • 总结
    • MAUI发展时间线可视化
    • 资源与参考

引言

.NET 多平台应用 UI(.NET MAUI)是微软推出的跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用程序。它允许开发者从单个共享代码库构建可在 Android、iOS、macOS 和 Windows 上运行的应用程序。本文将详细回顾.NET MAUI的起源、发展历程和技术特点,帮助开发者了解这个强大的跨平台开发框架。

在这里插入图片描述

Xamarin 起源:MAUI 的前身

Xamarin 的创立(2011年)

故事始于2011年,Nat Friedman 和 Miguel de Icaza 共同创立了 Xamarin 公司。Miguel de Icaza也是GNOME项目的创始人之一,而Nat Friedman曾担任GitHub的CEO直至2021年11月。他们的愿景是创建一个真正跨平台的移动应用开发解决方案,允许开发者使用 C# 语言为 iOS 和 Android 平台构建应用程序。

Xamarin Studio 与 Visual Studio 集成(2013年)

2013年,Xamarin发布了自己的独立IDE——Xamarin Studio,同时还提供了与Visual Studio的集成。这一步骤使.NET开发者能够使用熟悉的工具和语言进行移动应用开发,大大降低了进入移动开发领域的门槛。

Xamarin.Forms 的诞生(2014年)

2014年是Xamarin历史上的重要里程碑,Xamarin.Forms正式发布。这是一个用于使用C#和XAML构建跨平台移动应用程序的UI工具包。Xamarin.Forms提供了一种方式,让开发者只需编写一次用户界面代码,就能在多个平台上共享这些代码。这一创新极大地提高了开发效率,使开发者能够专注于业务逻辑而非平台差异。

在这里插入图片描述

微软收购Xamarin(2016年)

2016年,微软收购了Xamarin,这是该公司发展历程中的关键转折点。此次收购旨在将Xamarin的技术整合到微软自己的开发工具和服务中。作为收购的结果,Xamarin成为了Microsoft Visual Studio产品家族的一部分,这进一步验证了微软对跨平台开发的承诺。

收购后,微软宣布将Xamarin SDK开源并免费提供给所有开发者,这极大地扩展了Xamarin的使用范围,使其成为.NET开发者社区中的主流移动开发解决方案。

.NET MAUI的诞生与演变

.NET MAUI的宣布(2020年)

在2020年的Microsoft Build大会上,微软宣布了.NET MAUI(Multi-platform App UI)的诞生,这是Xamarin.Forms的进化版本。微软表示,.NET MAUI将建立在Xamarin.Forms的基础之上,同时引入新的功能和能力以支持现代应用开发。它将是一个跨平台框架,用于构建可在移动和桌面平台上运行的本机应用程序。

.NET MAUI预览版与.NET 6(2021年)

2021年2月17日,.NET MAUI随着.NET 6预览版1一起进入预览状态。它取代Xamarin.Forms成为跨平台UI工具包的推荐选择。当年11月,.NET 6正式稳定发布,.NET MAUI也随之进入更广泛的测试阶段。

.NET MAUI正式发布(2022年)

2022年5月19日,.NET MAUI正式发布稳定版本。从Xamarin.Forms演变而来的.NET MAUI,不仅支持移动平台,还扩展到了桌面平台,使其成为一个真正的全平台解决方案。

.NET MAUI在.NET 7中的发展(2022-2023)

在.NET 7中,.NET MAUI获得了更多功能和稳定性改进,进一步巩固了其作为微软官方跨平台UI框架的地位。团队重点解决了性能问题和用户反馈的关键bug,使框架更加稳定和可靠。

.NET MAUI 8的推出(2023年)

2023年11月14日,.NET 8正式发布,其中包含了.NET MAUI的最新版本。在.NET 8中,.NET MAUI团队主要关注质量改进,共合并了1618个拉取请求,解决了689个问题。与.NET 7 GA版本相比,这是拉取请求合并量增加180%,bug问题解决量增加283%。

.NET 8版本的.NET MAUI引入了许多新功能,包括键盘加速器支持、指针手势增强、拖放手势增强等桌面体验改进,同时还优化了性能和内存管理,大幅提高了应用程序质量。

.NET MAUI的核心特性

1. 跨平台开发

.NET MAUI的主要特点是支持跨平台开发,允许开发者使用单一代码库创建可在Android、iOS、macOS和Windows平台上运行的应用程序。这种"一次编写,随处运行"的方法大大降低了开发和维护多平台应用的成本和复杂性。

在这里插入图片描述

2. 单一项目模型

.NET MAUI采用单一项目模型,即开发者可以在一个项目中管理面向多个平台的代码和资源。这与Xamarin的多项目方式不同,大大简化了项目结构和管理。核心优势包括:

  • 简化的调试目标选择
  • 单一项目中的共享资源文件
  • 统一的应用清单配置
  • 跨平台的单一应用入口点

3. 声明式UI与XAML

.NET MAUI使用XAML(可扩展应用程序标记语言)来声明性地定义用户界面。这种方式将UI设计与程序逻辑分离,使应用程序更易于开发和维护。XAML的使用使设计师和开发者能够更好地协作,同时也便于实现更复杂的界面设计。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"x:Class="MauiApp.MainPage"><VerticalStackLayout Spacing="25" Padding="30"><Label Text="Welcome to .NET MAUI!"FontSize="24"HorizontalOptions="Center" /><Button Text="Click Me"Clicked="OnButtonClicked"HorizontalOptions="Center" /></VerticalStackLayout>
</ContentPage>

4. 现代架构

.NET MAUI支持多种架构模式:

  • MVVM(Model-View-ViewModel):与WPF和Xamarin中使用的相同模式
  • ReactiveUI:MVVM的框架扩展
  • MVU(Model-View-Update):一种更现代的状态管理模式

这种灵活性使开发者能够根据项目需求和团队经验选择最适合的架构模式。

5. 热重载支持

.NET MAUI支持热重载功能,允许开发者在不关闭和重启应用程序的情况下查看代码更改的效果。这大大提高了开发效率,缩短了调试和测试周期。热重载支持包括:

  • XAML热重载:保存XAML文件后,立即在运行中的应用程序中查看界面变化
  • .NET热重载:修改C#代码后,无需重新编译即可应用到正在运行的应用程序

6. 原生UI渲染

.NET MAUI使用平台特定的原生控件来渲染UI元素,确保应用程序的外观和感觉与平台原生应用一致。这种方法不同于使用WebView或自定义渲染引擎的跨平台框架,能够提供更好的性能和用户体验。

7. 深度平台集成

.NET MAUI提供了丰富的API,允许开发者访问各平台的特定功能,如:

  • 传感器(加速度计、陀螺仪等)
  • 相机和媒体功能
  • 地理位置服务
  • 文件系统访问
  • 通知和后台服务

这使开发者能够利用每个平台的独特功能,同时保持代码的跨平台兼容性。

.NET MAUI的技术架构

整体架构

.NET MAUI的架构设计明显区别于Xamarin,采用了更现代化的方式。下图展示了.NET MAUI应用程序架构的高级视图:

在这里插入图片描述

在.NET MAUI应用中,开发者主要与.NET MAUI控件和API层(1)交互。这一层直接使用原生平台API(3)。此外,应用代码还可以根据需要直接调用平台API(2)。

处理器架构

与Xamarin相比,.NET MAUI在处理平台特定功能时采用了不同的方法。Xamarin使用渲染器将跨平台控件转换为平台特定控件,而.NET MAUI引入了“处理器”(Handler)模式:

  • 渲染器(Xamarin方式):每个渲染器引用跨平台元素,并依赖INotifyPropertyChanged来工作
  • 处理器(MAUI方式):框架与平台之间的关系被倒置,平台控件只需处理框架的需求

这种新架构不仅更高效,而且更容易扩展或覆盖。处理器模式消除了创建自定义渲染器或效果的复杂性,同时保持了向后兼容性。

.NET MAUI与其他框架的比较

.NET MAUI vs Xamarin

在这里插入图片描述

.NET MAUI与Xamarin的主要区别包括:

  1. 项目结构:MAUI使用单一项目模型,而Xamarin需要为每个平台创建单独的项目
  2. 性能:MAUI的性能比Xamarin.Android提高了68%,比Xamarin.Forms提高了44%
  3. 热重载:MAUI提供无缝热重载支持,而Xamarin仅有有限的XAML热重载
  4. UI控件:MAUI为每个平台优化了UI控件,并提供了Xamarin中不存在的跨平台图形功能
  5. 平台支持:MAUI官方支持Windows和macOS桌面平台,并有社区提供的Linux支持
  6. 构建工具:MAUI支持.NET命令行接口工具链,而Xamarin使用.NET Framework
  7. 架构支持:MAUI支持MVVM、ReactiveUI和MVU,而Xamarin不支持MVU

.NET MAUI vs 其他跨平台框架

.NET MAUI与其他流行的跨平台开发框架相比也有其独特优势:

MAUI vs Flutter
  • MAUI使用原生控件和渲染,而Flutter使用自己的渲染引擎和控件
  • MAUI开发者使用C#和.NET生态系统,Flutter使用Dart语言
  • MAUI提供更深层次的平台API访问
MAUI vs React Native
  • MAUI的原生控件可能提供比React虚拟 DOM方式更好的性能
  • MAUI使用C#和.NET,React Native使用JavaScript/TypeScript
  • MAUI官方支持桌面平台,React Native主要针对移动平台

.NET MAUI的使用案例

.NET MAUI已被多家公司和组织采用于构建跨平台应用程序。下面列举了一些成功的案例及其特点:

Microsoft官方案例

  • Microsoft Loop:微软的协作应用,将MAUI与CloudAppX技术结合实现跨平台部署
  • .NET Podcasts:由微软开发的播客客户端,展示了MAUI的多平台功能
  • Weather '21:微软的样例天气应用,演示了MAUI的UI能力

企业的采用

  • Quicken:将其金融应用迁移到.NET MAUI,实现了代码库的清晰和精简
  • TOFAS (土耳其菲亚特汽车公司):开发了使用MAUI的场地管理应用
  • DAIMLER:使用.NET MAUI开发了公司内部应用

跨平台游戏

  • Sketchbook Games:使用MAUI的游戏開程平台
  • Weather Dice:一款结合天气信息和随机元素的游戏应用

.NET MAUI的未来发展

.NET MAUI正在持续发展,微软及开源社区已定义了多个发展方向:

.NET 8及后续版本的改进

.NET 8(2023年11月发布)为.NET MAUI带来了多项重要更新:

  • 性能优化:进一步提高启动速度和运行时性能
  • 全新MapControl:在所有平台上提供原生地图集成
  • 改进的输入控件:更多的表单输入选项和改进
  • 应用大小优化:减少了最终发布应用的大小

路线图上的功能

根据微软公开的路线图,.NET MAUI未来的重点开发方向包括:

  1. 跨平台物联网支持:增强与硬件设备的互操作性
  2. 跨平台ML集成:与.NET ML的无缝集成
  3. Blazor Hybrid改进:增强的Web和原生混合支持
  4. 改进的平台集成:更深入地与各平台特定功能集成
  5. 新型控件:增加更多原生控件包装

社区发展

.NET MAUI的开源社区非常活跃,已经产生了许多价值的贡献:

  • 第三方控件库:如CommunityToolkit.Maui和Syncfusion MAUI控件
  • Linux支持:社区提供的AvaloniaUI可以运行.NET MAUI应用程序
  • 模板和项目结构:更多的项目模板和最佳实践

总结

.NET MAUI代表了微软跨平台移动开发策略的重要发展,它不仅继承Xamarin的优势,还进一步扩展了应用范围和性能。作为统一的UI框架,MAUI在设计上解决了Xamarin相关框架的许多局限性,并且更好地集成到.NET生态系统中。

尽管.NET MAUI相对于Flutter和React Native等框架在市场份额上可能仍有差距,但它在.NET开发者社区中获得了广泛采用,并且随着Microsoft的持续投资和社区的积极参与,其生态系统和能力将不断增强。

随着.NET 8及后续版本的发布,.NET MAUI将继续改进其性能、功能和开发体验,为开发者提供更强大、更灵活的跨平台开发解决方案。

MAUI发展时间线可视化

在这里插入图片描述

资源与参考

  • Microsoft .NET MAUI官方文档
  • GitHub上的.NET MAUI项目
  • .NET MAUI社区工具包
  • Microsoft Learn - .NET MAUI学习路径

相关文章:

.NET MAUI 发展历程:从 Xamarin 到现代跨平台应用开发框架

文章目录 引言Xamarin 起源&#xff1a;MAUI 的前身Xamarin 的创立&#xff08;2011年&#xff09;Xamarin Studio 与 Visual Studio 集成&#xff08;2013年&#xff09;Xamarin.Forms 的诞生&#xff08;2014年&#xff09;微软收购Xamarin&#xff08;2016年&#xff09; .N…...

多模态大语言模型arxiv论文略读(四十)

The Wolf Within: Covert Injection of Malice into MLLM Societies via an MLLM Operative ➡️ 论文标题&#xff1a;The Wolf Within: Covert Injection of Malice into MLLM Societies via an MLLM Operative ➡️ 论文作者&#xff1a;Zhen Tan, Chengshuai Zhao, Raha M…...

【蓝桥杯选拔赛真题104】Scratch回文数 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch回文数 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch回文数 第十五届青少年蓝桥杯scratch编…...

OpenWrt 与 Docker:打造轻量级容器化应用平台技术分享

文章目录 前言一、OpenWrt 与 Docker 的集成前提1.1 硬件与内核要求1.2 软件依赖 二、Docker 环境部署与验证2.1 基础服务配置2.2 存储驱动适配 三、容器化应用部署实践3.1 资源限制策略3.2 Docker Compose 适配 四、性能优化与监控4.1 容器资源监控4.2 镜像精简策略 五、典型问…...

tkinter的文件对话框:filedialog

诸神缄默不语-个人技术博文与视频目录 文章目录 一、前言二、tkinter.filedialog模块详解2.1 模块导入方式2.2 通用参数说明 三、五大核心函数实战3.1 选择单个文件 - askopenfilename()3.2 多文件选择 - askopenfilenames()3.3 保存文件对话框 - asksaveasfilename()3.4 选择目…...

C++初阶----模板初阶

引言 什么是模板 模板是泛型编程的基础&#xff0c;泛型编程是以一种独立于任何特定类型的方式编写代码。 模板也是创建泛型类或者函数的蓝图。 如&#xff1a;库容器&#xff0c;迭代器和算法&#xff0c;都是泛型编程的例子 1. 泛型编程 首先&#xff0c;我们应该了解什么是…...

网络流量分析 | 流量分析基础

流量分析是网络安全领域的一个子领域&#xff0c;其主要重点是调查网络数据&#xff0c;以发现问题和异常情况。本文将涵盖网络安全和流量分析的基础知识。 网络安全与网络中的数据 网络安全的两个最关键概念就是&#xff1a;认证&#xff08;Authentication&#xff09;和授…...

幻读是什么项目中是怎么保证不会出现幻读

幻读&#xff08;Phantom Read&#xff09;是数据库并发控制中的一种现象&#xff0c;指的是在事务处理中&#xff0c;一个事务在读取某个数据范围时&#xff0c;另一个事务插入、删除或者修改了该数据范围&#xff0c;导致第一个事务再次读取数据时&#xff0c;看到的数据发生…...

C语言实现对哈希表的操作:创建哈希表与扩容哈希表

一. 简介 前面文章简单了解了哈希表 这种数据结构&#xff0c;文章如下&#xff1a; 什么是哈希表-CSDN博客 本文来学习一下哈希表&#xff0c;具体学习一下C语言实现对哈希表的简单实现。 二. C语言实现对哈希表的操作 1. 哈希表 哈希表&#xff08;Hash Table&#xff…...

MYSQL 常用字符串函数 和 时间函数详解

一、字符串函数 1、​CONCAT(str1, str2, …) 拼接多个字符串。 SELECT CONCAT(Hello, , World); -- 输出 Hello World2、SUBSTRING(str, start, length)​​ 或 ​SUBSTR() 截取字符串。 SELECT SUBSTRING(MySQL, 3, 2); -- 输出 SQ3、LENGTH(str)​​ 与 ​CHAR_LENGTH…...

通过API接口在自己的独立站系统上架商品信息。(实战案例)

以下是一个通过API接口在独立站系统上架商品信息的实战案例&#xff0c;以某跨境电商独立站集成亚马逊产品数据为例&#xff0c;详细说明技术实现流程和关键代码逻辑&#xff1a; 案例背景 某跨境电商独立站需要从亚马逊平台同步商品数据&#xff08;标题、价格、库存、图片、…...

C语言文件操作完全手册:读写·定位·实战

1.什么是文件 1.1文件的概念 文件&#xff08;File&#xff09;是计算机中用于持久化存储数据的基本单位。它可以存储文本、图片、音频、程序代码等各种信息&#xff0c;并在程序运行结束后仍然保留数据。 1.2文件名 一个文件要有一个唯一的文件标识&#xff0c;以便用户识别…...

多模态大语言模型arxiv论文略读(三十七)

A Spectrum Evaluation Benchmark for Medical Multi-Modal Large Language Models ➡️ 论文标题&#xff1a;A Spectrum Evaluation Benchmark for Medical Multi-Modal Large Language Models ➡️ 论文作者&#xff1a;Jie Liu, Wenxuan Wang, Yihang Su, Jingyuan Huan, …...

IDEA创建Gradle项目然后删除报错解决方法

根据错误信息&#xff0c;你的项目目录中缺少Gradle构建必需的核心文件&#xff08;如settings.gradle/build.gradle&#xff09;&#xff0c;且IDEA可能残留了Gradle的配置。以下是具体解决方案&#xff1a; 一、问题根源分析 残留Gradle配置 你通过IDEA先创建了Gradle子模块…...

SpringBoot 学习

什么是 SpringBoot SpringBoot 是基于 Spring 生态的开源框架&#xff0c;旨在简化 Spring 应用的初始化搭建和开发配置。它通过约定大于配置的理念&#xff0c;提供快速构建生产级应用的解决方案&#xff0c;显著降低开发者对 XML 配置和依赖管理的负担。 特点&#xff1a; …...

MoE架构解析:如何用“分治”思想打造高效大模型?

在人工智能领域&#xff0c;模型规模的扩大似乎永无止境。从GPT-3的1750亿参数到传闻中的GPT-4万亿级规模&#xff0c;每一次突破都伴随着惊人的算力消耗。但当我们为这些成就欢呼时&#xff0c;一个根本性问题愈发尖锐&#xff1a;如何在提升模型能力的同时控制计算成本&#…...

云服务器和独立服务器的区别在哪

在当今数字化的时代&#xff0c;服务器成为了支撑各种业务和应用的重要基石。而在服务器的领域中&#xff0c;云服务器和独立服务器是两个备受关注的选项。那么&#xff0c;它们到底有何区别呢&#xff1f; 首先&#xff0c;让我们来聊聊成本。云服务器通常采用按需付费的模式…...

使用 Pandas 进行多格式数据整合:从 Excel、JSON 到 HTML 的处理实战

前言 在数据处理与分析的实际场景中&#xff0c;我们经常需要整合不同格式的数据&#xff0c;例如 Excel 表格、JSON 配置文件、HTML 报表等。本文以一个具体任务&#xff08;蓝桥杯模拟练习题&#xff09;为例&#xff0c;详细讲解如何使用 Python 的 Pandas 库结合其他工具&…...

深入解析 Linux 中动静态库的加载机制:从原理到实践

引言 在 Linux 开发中&#xff0c;动静态库是代码复用的核心工具。静态库&#xff08;.a&#xff09;和动态库&#xff08;.so&#xff09;的加载方式差异显著&#xff0c;直接影响程序的性能、灵活性和维护性。本文将深入剖析两者的加载机制&#xff0c;结合实例演示和底层原…...

VuePress 使用教程:从入门到精通

VuePress 使用教程&#xff1a;从入门到精通 VuePress 是一个以 Vue 驱动的静态网站生成器&#xff0c;它为技术文档和技术博客的编写提供了优雅而高效的解决方案。无论你是个人开发者、团队负责人还是开源项目维护者&#xff0c;VuePress 都能帮助你轻松地创建和管理你的文档…...

Kafka与Spark-Streaming

大数据处理的得力助手&#xff1a;Kafka与Spark-Streaming 在大数据处理的领域中&#xff0c;Kafka和Spark-Streaming都是极为重要的工具。今天&#xff0c;咱们就来深入了解一下它们&#xff0c;看看这些技术是如何让数据处理变得高效又强大的。先来说说Kafka&#xff0c;它是…...

【设计】接口幂等性设计

1. 幂等性定义 接口幂等性&#xff1a; 无论调用次数多少&#xff0c;对系统状态的影响与单次调用相同。 比如用户支付接口因网络延迟重复提交了三次。 导致原因&#xff1a; 用户不可靠&#xff08;手抖多点&#xff09;网络不可靠&#xff08;超时重传&#xff09;系统不可…...

闲聊人工智能对媒体的影响

技术总是不断地改变信息的传播方式。互联网促进了社交媒体的蓬勃发展。 网络媒体成为主流。大语言模型为代表的人工智能的出现&#xff0c;又会对媒体传播带来怎样的改变呢&#xff1f;媒体的演变反映了社会和技术的演变。 人工智能(AI) 将继续对整个媒体行业产生变革性的影响。…...

卷积神经网络--手写数字识别

本文我们通过搭建卷积神经网络模型&#xff0c;实现手写数字识别。 pytorch中提供了手写数字的数据集 &#xff0c;我们可以直接从pytorch中下载 MNIST中包含70000张手写数字图像&#xff1a;60000张用于训练&#xff0c;10000张用于测试 图像是灰度的&#xff0c;28x28像素 …...

Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表

在数据分析和数据处理过程中&#xff0c;将数据导出到 Excel 文件是一个常见的需求。Pandas 提供了强大的功能来实现这一需求&#xff0c;尤其是将数据追加到同一个 Excel 文件的不同工作表&#xff08;Sheet&#xff09;中。本文将详细介绍如何使用 Pandas 实现这一功能&#…...

Unity中数据和资源加密(异或加密,AES加密,MD5加密)

在项目开发中&#xff0c;始终会涉及到的一个问题&#xff0c;就是信息安全&#xff0c;在调用接口&#xff0c;或者加载的资源&#xff0c;都会涉及安全问题&#xff0c;因此就出现了各种各样的加密方式。 常见的也是目前用的最广的加密方式&#xff0c;分别是&#xff1a;DE…...

SQL Server 2019 安装与配置详细教程

一、写在最前的心里话 和 MySQL 对比&#xff0c;SQL Server 的安装和使用确实要处理很多细节&#xff1a; 需要选择配置项很多有“定义实例”的概念&#xff0c;同一机器可以运行多个数据库服务设置身份验证方式时&#xff0c;需要同时配置 Windows 和 SQL 登录要想 Spring …...

Qt 调试信息重定向到本地文件

1、在Qt软件开发过程中&#xff0c;我们经常使用qDebug()输出一些调试信息在QtCreator终端上。 但若将软件编译、生成、打包为一个完整的可运行的程序并安装在系统中后&#xff0c;系统中没有QtCreator和编译环境&#xff0c;那应用程序出现问题&#xff0c;如何输出信息排查…...

MyBatisPlus文档

一、MyBatis框架回顾 使用springboot整合Mybatis,实现Mybatis框架的搭建 1、创建示例项目 (1)、创建工程 新建工程 创建空工程 创建模块 创建springboot模块 选择SpringBoot版本 (2)、引入依赖 <dependencies><dependency><groupId>org.springframework.…...

Memcached 主主复制架构搭建与 Keepalived 高可用实现

实验目的 掌握基于 repcached 的 Memcached 主主复制配置 实现通过 Keepalived 的 VIP 高可用机制 验证数据双向同步及故障自动切换能力 实验环境 角色IP 地址主机名虚拟 IP (VIP)主节点10.1.1.78server-a10.1.1.80备节点10.1.1.79server-b10.1.1.80 操作系统: CentOS 7 软…...