【C#生态园】打造现代化跨平台应用:深度解析.NET桌面应用工具

选择最适合你的.NET UI框架:全面解析六种热门选择

前言

在现代软件开发中,选择合适的桌面应用框架和UI库对于开发人员来说至关重要。本文将介绍几种流行的.NET桌面应用框架和UI库,包括Eto.Forms、Avalonia、ReactiveUI、MahApps.Metro、MaterialDesignInXAML和Uno Platform。通过对每种工具的核心功能、使用场景、安装与配置以及API概览进行全面介绍,读者将能够更好地了解其特性和适用情况,从而为自己的项目选择合适的工具提供参考。

欢迎订阅专栏:C#生态园

文章目录

  • 选择最适合你的.NET UI框架:全面解析六种热门选择
    • 前言
    • 1. Eto.Forms:一个跨平台的桌面应用框架
      • 1.1 简介
        • 1.1.1 核心功能
        • 1.1.2 使用场景
      • 1.2 安装与配置
        • 1.2.1 安装指南
        • 1.2.2 基本配置
      • 1.3 API 概览
        • 1.3.1 控件创建
        • 1.3.2 事件处理
    • 2. Avalonia:一个跨平台的.NET UI框架
      • 2.1 简介
        • 2.1.1 核心功能
        • 2.1.2 使用场景
      • 2.2 安装与配置
        • 2.2.1 安装方法
        • 2.2.2 基本设置
      • 2.3 API 概览
        • 2.3.1 XAML布局
        • 2.3.2 数据绑定
    • 3. ReactiveUI:一个响应式编程库
      • 3.1 简介
        • 3.1.1 核心功能
        • 3.1.2 使用场景
      • 3.2 安装与配置
        • 3.2.1 安装指南
        • 3.2.2 基本设置
      • 3.3 API 概览
        • 3.3.1 响应式属性
        • 3.3.2 命令绑定
    • 4. MahApps.Metro:一个现代化风格的WPF UI库
      • 4.1 简介
        • 4.1.1 核心功能
        • 4.1.2 使用场景
      • 4.2 安装与配置
        • 4.2.1 安装指导
        • 4.2.2 基本配置
      • 4.3 API 概览
        • 4.3.1 样式定义
        • 4.3.2 控件模板
    • 5. MaterialDesignInXAML:一个Material Design风格的XAML库
      • 5.1 简介
        • 5.1.1 核心功能
        • 5.1.2 使用场景
      • 5.2 安装与配置
        • 5.2.1 安装指南
        • 5.2.2 基本设置
      • 5.3 API 概览
        • 5.3.1 主题设置
        • 5.3.2 控件使用
    • 6. Uno Platform:一个支持跨平台的XAML和C#解决方案
      • 6.1 简介
        • 6.1.1 核心功能
        • 6.1.2 使用场景
      • 6.2 安装与配置
        • 6.2.1 安装指南
        • 6.2.2 基本设置
      • 6.3 API 概览
        • 6.3.1 XAML布局
        • 6.3.2 数据绑定
    • 总结

1. Eto.Forms:一个跨平台的桌面应用框架

Eto.Forms 是一个开源的 .NET 跨平台桌面应用程序框架,可以用于创建跨平台的用户界面。它能够在不同的操作系统上使用本地的用户界面组件,同时提供了简洁、易懂的 API,使得开发者可以轻松地编写可跨平台运行的桌面应用程序。

1.1 简介

1.1.1 核心功能

Eto.Forms 提供了一套统一的 API,用于创建并管理跨平台的用户界面,包括窗体、按钮、文本框、下拉框等各种常见控件。它还支持事件处理、布局管理等功能,让开发者可以专注于应用程序的业务逻辑,而不必过多关注不同平台下的界面实现细节。

1.1.2 使用场景

Eto.Forms 适用于需要同时在 Windows、Mac 和 Linux 等多个操作系统上运行的桌面应用程序。无论是企业应用、工具软件还是个人项目,都可以使用 Eto.Forms 来构建跨平台的用户界面。

1.2 安装与配置

1.2.1 安装指南

通过 NuGet 可以很方便地安装 Eto.Forms。在 Visual Studio 中,打开 NuGet 包管理器控制台,执行以下命令即可安装:

Install-Package Eto.Forms

更多安装方式和更新日志可以参考Eto.Forms 官方网站。

1.2.2 基本配置

在开始使用 Eto.Forms 之前,需要确保已经正确配置了 .NET 开发环境,并且理解了不同平台上的 UI 差异。另外,还需要引入 Eto.Forms 名称空间:

using Eto.Forms;

1.3 API 概览

1.3.1 控件创建

以下是一个简单的示例,演示了如何创建一个窗体并添加一个按钮控件:

using Eto.Forms;public class MyForm : Form
{public MyForm(){Title = "Hello, Eto.Forms!";var button = new Button { Text = "Click me!" };button.Click += (sender, e) => MessageBox.Show("Button Clicked!");Content = button;}
}

在这个示例中,我们创建了一个名为 MyForm 的窗体,并在窗体中添加了一个按钮控件。当按钮被点击时,会弹出一个消息框显示 “Button Clicked!”。

1.3.2 事件处理

Eto.Forms 支持事件处理机制,可以方便地响应用户交互。例如,为按钮的点击事件添加处理方法:

button.Click += (sender, e) => MessageBox.Show("Button Clicked!");

点击按钮时,会弹出一个消息框显示 “Button Clicked!”。

更详细的 API 说明和示例可以参考Eto.Forms 文档。

2. Avalonia:一个跨平台的.NET UI框架

2.1 简介

Avalonia是一个跨平台的开源.NET UI框架,可用于构建现代桌面应用程序。它的设计灵感来自于WPF和Silverlight,旨在提供高性能、可扩展、可定制的用户界面。Avalonia支持XAML布局和数据绑定,使开发者能够快速构建功能丰富、美观的跨平台桌面应用。

2.1.1 核心功能
  • 跨平台支持:Avalonia可以在Windows、Linux和macOS上运行,为开发者提供了更大的目标受众。
  • XAML布局:借助XAML语言,开发者可以轻松创建复杂的用户界面布局。
  • 数据绑定:Avalonia支持强大的数据绑定机制,使UI与数据模型之间的交互变得更加便捷。
2.1.2 使用场景

Avalonia适用于需要构建跨平台桌面应用的开发者,尤其是那些熟悉或已经使用过XAML和.NET技术栈的开发团队。

2.2 安装与配置

2.2.1 安装方法

开发者可以通过NuGet包管理器将Avalonia集成到他们的.NET项目中。具体的安装步骤可以参考Avalonia官方文档。

2.2.2 基本设置

在项目中引用Avalonia库后,通常需要创建一个 AppBuilder 对象并调用 UsePlatformDetect() 方法来启用Avalonia的跨平台支持。以下是一个基本的配置示例:

using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;class Program
{static void Main(string[] args){BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);}public static AppBuilder BuildAvaloniaApp(){return AppBuilder.Configure<App>().UsePlatformDetect().LogToTrace();}
}

2.3 API 概览

2.3.1 XAML布局

Avalonia的XAML布局功能类似于WPF,开发者可以使用XAML定义复杂的UI界面。以下是一个简单的XAML布局示例,其中包含一个按钮和一个文本框:

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><StackPanel><Button Content="Click Me" Click="ButtonClick"/><TextBox Text="{Binding Path=Name, Mode=TwoWay}"/></StackPanel>
</Window>
2.3.2 数据绑定

Avalonia支持多种数据绑定方式,如单向绑定、双向绑定等。下面是一个简单的数据绑定示例,其中文本框的内容与ViewModel中的属性进行双向绑定:

public class MainViewModel : ViewModelBase
{private string _name;public string Name{get => _name;set => this.RaiseAndSetIfChanged(ref _name, value);}
}// 在窗口代码中设置DataContext
this.DataContext = new MainViewModel();

更多关于Avalonia的API和使用方法,请参考Avalonia官方文档。

3. ReactiveUI:一个响应式编程库

ReactiveUI 是一个基于响应式编程原理的桌面应用框架,它提供了一种优雅的方��来处理用户界面和状态变化。通过结合响应式编程和 MVVM 模式,ReactiveUI 可以使得开发人员更容易地构建具有高度交互性和可维护性的桌面应用程序。

3.1 简介

3.1.1 核心功能

ReactiveUI 的核心功能包括:

  • 提供了一组响应式属性和命令绑定,简化了用户界面元素与数据模型之间的交互。
  • 支持异步编程模式,使得处理任务和事件变得更加便捷和灵活。
  • 提供了强大的路由机制,能够很好地处理导航和页面切换。
3.1.2 使用场景

ReactiveUI 适用于需要构建高度交互性、实时更新的桌面应用程序,尤其是需要处理复杂用户界面和数据流的场景。

3.2 安装与配置

3.2.1 安装指南

你可以通过 NuGet 来安装 ReactiveUI 包,以下为在 Visual Studio 中如何安装:

PM> Install-Package ReactiveUI

更多关于安装指南的信息可以参考 ReactiveUI 官方文档

3.2.2 基本设置

在使用 ReactiveUI 之前,需要进行一些基本设置,比如在应用程序启动时初始化 ReactiveUI:

public partial class App : Application
{public App(){this.InitializeReactiveUI();}
}

更多关于基本设置的内容可以参考 ReactiveUI 官方文档

3.3 API 概览

3.3.1 响应式属性

ReactiveUI 提供了一组便捷的 API 来创建和管理响应式属性。下面是一个简单的例子:

private string _name;
public string Name
{get => this._name;set => this.RaiseAndSetIfChanged(ref this._name, value);
}

以上代码演示了如何定义一个响应式属性 Name,并且使用 this.RaiseAndSetIfChanged 方法来通知属性值的变化。

更多关于响应式属性的API可以参考 ReactiveUI 属性绑定

3.3.2 命令绑定

ReactiveUI 也提供了便捷的 API 来实现命令绑定,以下是一个简单的例子:

public ReactiveCommand<Unit, Unit> GreetUser { get; }// 在构造函数中初始化命令
this.GreetUser = ReactiveCommand.CreateFromTask(async () =>
{await this._dialogService.ShowMessage("Hello, " + this.Name);
});

以上代码演示了如何定义一个命令 GreetUser 并通过 ReactiveCommand.CreateFromTask 来指定命令执行的异步操作。

更多关于命令绑定的 API 可以参考 ReactiveUI 命令绑定

通过上述示例,我们对 ReactiveUI 这个响应式编程库有了初步的了解。希望这篇文章对你有所帮助!

4. MahApps.Metro:一个现代化风格的WPF UI库

MahApps.Metro 是一个流行的开源桌面应用程序框架,它为 WPF 应用程序提供了现代化的用户界面设计和丰富的控件样式。通过 MahApps.Metro,开发人员可以轻松地为他们的应用程序添加漂亮的外观和新颖的交互功能。

4.1 简介

4.1.1 核心功能

MahApps.Metro 提供了丰富的现代化 UI 控件和样式,包括各种按钮、输入框、消息框、菜单等,同时还支持主题定制和国际化。此外,MahApps.Metro 还提供了一些实用的扩展功能,如窗口拖动、命令绑定等,以简化开发过程。

4.1.2 使用场景

MahApps.Metro 可以被广泛应用于需要现代化界面设计的 WPF 桌面应用程序中,尤其适合于企业内部管理系统、工具类软件等。

4.2 安装与配置

4.2.1 安装指导

首先,在 Visual Studio 中创建一个 WPF 项目。然后,在 NuGet 包管理器中搜索并安装 MahApps.Metro 包。

Install-Package MahApps.Metro
4.2.2 基本配置

在 App.xaml 文件中添加以下代码,引入 MahApps.Metro 主题:

<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /><ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /><ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /></ResourceDictionary.MergedDictionaries></ResourceDictionary>
</Application.Resources>

4.3 API 概览

4.3.1 样式定义

MahApps.Metro 提供了一系列精美的控件样式定义,例如按钮、文本框、下拉列表等。开发者可以通过简单的 XAML 代码或者 C# 代码来使用这些样式。

<Button Style="{StaticResource MetroButton}" Content="Click Me" />

或者在 C# 代码中使用:

var button = new Button();
button.Style = FindResource("MetroButton") as Style;

更多样式定义,请参考 MahApps.Metro Styles。

4.3.2 控件模板

MahApps.Metro 还提供了丰富的控件模板,开发者可以根据自己的需求对控件的外观和交互行为进行定制。

<controls:TextBox Template="{StaticResource MetroTextBox}" />

或者在代码中应用模板:

var textBox = new TextBox();
textBox.Template = FindResource("MetroTextBox") as ControlTemplate;

有关更多控件模板的信息,请查看 MahApps.Metro Control Templates。

5. MaterialDesignInXAML:一个Material Design风格的XAML库

MaterialDesignInXAML是一个用于创建Material Design风格桌面应用的开源XAML库。它提供了一系列的控件和主题,可以帮助开发者快速构建现代化、美观的桌面应用程序。

5.1 简介

5.1.1 核心功能

MaterialDesignInXAML提供了丰富的Material Design风格控件,包括按钮、文本框、进度条等。同时,它还支持自定义主题,让开发者可以轻松实现应用程序的个性化定制。

5.1.2 使用场景

适用于需要在WPF应用中使用Material Design风格的开发者,尤其是那些希望快速搭建现代化界面的人群。

5.2 安装与配置

5.2.1 安装指南

首先,在Visual Studio中创建一个新的WPF项目。然后,可以通过NuGet包管理器来安装MaterialDesignInXAML。在NuGet包管理器控制台中执行以下命令:

Install-Package MaterialDesignThemes
5.2.2 基本设置

在WPF项目中,可以通过引入MaterialDesign的命名空间来使用其提供的控件和样式。在XAML文件中,可以通过下面的方式引入:

xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"

5.3 API 概览

5.3.1 主题设置

MaterialDesignInXAML允许开发者通过修改主题颜色、字体大小等来自定义应用程序的外观。以下是一个示例,演示如何设置主题为深色:

var paletteHelper = new PaletteHelper();
var theme = paletteHelper.GetTheme();
theme.SetBaseTheme(Theme.Dark);
paletteHelper.SetTheme(theme);

更多关于主题设置的信息,请参考官方文档

5.3.2 控件使用

MaterialDesignInXAML提供了丰富的Material Design控件,例如按钮、文本框和进度条等。以下是一个简单的示例,展示如何使用Material Design风格的按钮:

<Button Style="{StaticResource MaterialDesignRaisedButton}" Content="Save" />

官方文档中还提供了更加详细的控件使用说明,可以通过这里找到更多信息。

以上是MaterialDesignInXAML库的简要介绍和基本使用方法,希望对您有所帮助。

6. Uno Platform:一个支持跨平台的XAML和C#解决方案

6.1 简介

Uno Platform 是一个支持使用 XAML 和 C# 跨平台开发的解决方案。它允许开发人员使用单一的代码库来构建适用于多个平台的应用程序,包括 iOS、Android、Windows 和 Web。

6.1.1 核心功能

Uno Platform 的核心功能包括跨平台的 XAML 布局系统和强大的数据绑定机制。开发人员可以使用熟悉的工具和语言来构建原生级别的用户界面,并实现数据模型与视图之间的无缝连接。

6.1.2 使用场景

Uno Platform 适用于需要在多个平台上构建一致性用户体验的项目。开发人员可以通过 Uno Platform 实现代码重用,并最大限度地减少针对不同平台的定制化开发工作量。

6.2 安装与配置

6.2.1 安装指南

要开始使用 Uno Platform,首先需要安装 Visual Studio 2019 或更高版本,并安装 Uno Platform 的 Visual Studio 插件。安装完成后,即可创建 Uno Platform 项目。

安装 Uno Platform 插件:

Extensions -> Manage Extensions -> Online -> Search for "Uno Platform" -> Install
6.2.2 基本设置

在 Visual Studio 中创建 Uno Platform 项目后,需要根据目标平台进行适当的配置。例如,对于 Android 平台,需要确保已经配置了正确的 Android 开发环境和模拟器。

6.3 API 概览

6.3.1 XAML布局

Uno Platform 的 XAML 布局系统类似于 UWP(Universal Windows Platform),支持使用标签和属性定义用户界面元素的布局和外观。

<Grid><TextBlock Text="Hello, Uno Platform!" />
</Grid>

官网链接:Uno Platform - XAML

6.3.2 数据绑定

Uno Platform 支持使用 C# 代码进行数据绑定,实现数据模型与视图之间的自动更新。

public class Person : INotifyPropertyChanged
{private string _name;public string Name{get { return _name; }set{if (_name != value){_name = value;RaisePropertyChanged(nameof(Name));}}}public event PropertyChangedEventHandler PropertyChanged;protected void RaisePropertyChanged(string propertyName){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}
}

官网链接:Uno Platform - Data Binding

总结

通过本文的介绍,我们对多个.NET桌面应用框架和UI库有了全面的了解。Eto.Forms提供跨平台的桌面应用开发解决方案,Avalonia则专注于.NET UI框架的跨平台实现。ReactiveUI支持响应式编程,MahApps.Metro和MaterialDesignInXAML则分别提供现代化风格和Material Design风格的UI组件。Uno Platform则是一个支持跨平台的XAML和C#解决方案。通过比较和总结,我们可以根据项目需求选取最适合的工具,以提升开发效率和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/55649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能指针详解

目录 智能指针原理 RAII Unique_ptr Shared_ptr Shared_ptr缺点 定制删除器 在C库里提供的智能指针有跟多&#xff0c;如下图所示&#xff0c;使用时需要包含头文件<memory>。下面将详细介绍这些智能指针的底层原理和缺点&#xff0c;还有每个智能指针的应用场景。…

AI寒冬?不,2025年将是AI代理之年

引言 近年来,人工智能(AI)的发展速度令人瞩目,但一些观察者认为今年的前六个月相对“缓慢和无趣”。然而,这种观点可能忽略了AI在多个领域的持续进步。本文将探讨为什么我们不应该轻易使用“AI寒冬”这样的说法,并展望2025年作为AI代理之年的潜力。 为何不应轻易使用“…

Linux No space left on device分析和解决

报错解释&#xff1a; "No space left on device" 错误表示你的Linux设备&#xff08;通常是磁盘分区&#xff09;上没有剩余空间了。这可能是因为磁盘已满&#xff0c;或者inode已满。磁盘空间是指磁盘上的实际空间&#xff0c;而inode是用来存储文件元数据的数据结…

嘉立创EDA中PCB快速画螺旋触摸焊盘或其他不规则形状

常见触摸焊盘 首先需要有CAD软件 使用CAD的原因&#xff1a;能快速编辑线条和不规则形状&#xff0c;在嘉立创EDA中不能快速完成。 画图整体步骤&#xff1a; 1&#xff0c;先在CAD中画出螺旋线&#xff08;HELIX&#xff09; 这里需要设置底部半径&#xff0c;圈数和顶部半…

【MYSQL】mysql约束---自增长约束(auto_increment)

1、概念 在Mysql中&#xff0c;当主键为自增长后&#xff0c;这个主键的值就不再需要用户输入数据了&#xff0c;而由数据库系统根据定义自动赋值。每增加一条记录&#xff0c;主键会自动以相同的步长进行增长。 注意&#xff1a;自增长约束通常与主键放在一起使用。 通过给…

网盘能否作为FTP替代产品?企业该如何进行FTP国产化替代?

近年来&#xff0c;信创的概念引入和高效实践落地让更多的行业企业自发性地进行国产化替代&#xff0c;目前信创国产化替代还多发生在操作系统和应用层面&#xff0c;软件工具等目前还在下一阶段规划&#xff0c;但很多企业未雨绸缪&#xff0c;已经在做调研和尝试。 FTP作为世…

守护网络安全:从日常生活做起的防护策略

引言 在信息化时代&#xff0c;网络已成为我们生活中不可或缺的一部分。它为我们提供了快速沟通和便捷服务的渠道&#xff0c;使我们能够高效地办理业务、完成工作和享受娱乐。然而&#xff0c;随着网络的普及和信息化程度的加深&#xff0c;我们在享受便利的同时&#xff0c;…

codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!

复习比学习更重要&#xff0c;更需要投入时间&#xff0c;更需要花费精力 1.字符串的排列2.找出字符串中第一个匹配的下标3.最大连续1的个数II4.数组中的山脉5.移除元素6.两个数组的交集II7.有序数组的平方8.删除有序数组中的重复项II9.寻找重复数10.水果成篮 1.字符串的排列 …

JavaScript 与 HTML 的结合

在 HTML 页面中嵌入 JavaScript 代码是实现动态效果和交互功能的关键一步。下面是一些常用的方法来实现 JavaScript 与 HTML 的结合。 内联方式&#xff1a;可以直接在 HTML 元素的事件属性中嵌入 JavaScript 代码。例如&#xff0c;可以在按钮的 onclick 属性中添加 JavaScri…

【黑马点评】使用RabbitMQ实现消息队列——3.使用Jmeter压力测试,导入批量token,测试异步秒杀下单

3 批量获取用户token&#xff0c;使用jmeter压力测试 3 批量获取用户token&#xff0c;使用jmeter压力测试3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去 3 批量获取用户…

Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)

1. 实用命令 1.1 系统相关 1.1.1 查看系统、用户信息等 查看当前系统硬件架构 uname -m注&#xff1a;mac 上也能用 查看当前系统的操作系统及版本 cat /etc/os-release | grep "PRETTY_NAME"查看当前系统单个cpu的可用核心数 cat /proc/cpuinfo | grep "…

前端练习小项目 —— 让图片变得更 “色”

前言&#xff1a;相信读者在学习完了HTML、CSS和JavaScript之后已经想要迫不及待的想找一个小型的项目来练练手&#xff0c;那么这篇文章就正好能满足你的 “需求”。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在开始学习…

不动产证ocr识别场景解析、房产证识别API

不动产证OCR识别、房产证识别接口是通过光学字符识别技术&#xff08;OCR&#xff09;从不动产证书的图像或扫描件中自动提取关键信息的技术应用。该场景的主要目标是提高信息录入的效率&#xff0c;减少人工输入的错误&#xff0c;并能自动化处理大量不动产证书、房产证的数据…

基于springboot+小程序的智慧物业平台管理系统(物业1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 智慧物业平台管理系统按照操作主体分为管理员和用户。 1、管理员的功能包括报修管理、投诉管理管理、车位管理、车位订单管理、字典管理、房屋管理、公告管理、缴费管理、维修指派管理、…

37 | 实战二(下):重构ID生成器项目中各函数的异常处理代码

平时进行软件设计开发的时候&#xff0c;我们除了要保证正常情况下的逻辑运行正确之外&#xff0c;还需要编写大量额外的代码&#xff0c;来处理有可能出现的异常情况&#xff0c;以保证代码在任何情况下&#xff0c;都在我们的掌控之内&#xff0c;不会出现非预期的运行结果。…

Mysql(六) --- 聚合函数,分组和联合查询

文章目录 前言1.聚合函数1.1.常用的函数1.2.COUNT()1.3.SUM()1.4.AVG()1.5.MIN()、MAX() 2.GROUP BY 分组查询2.1.语法2.2.示例2.3.HAVING 子句 3.联合查询3.1.为什么要进行联合查询3.2.那么是如何进行联合查询的3.3.示例&#xff1a;一个完整的联合查询的过程3.4.内连接3.5.外…

Python知识点:如何使用Airflow进行ETL任务调度

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 要使用Apache Airflow进行ETL任务调度&#xff0c;你可以遵循以下步骤&#xff1…

C++(异常)

目录 C语言传统的处理错误的方式 传统的错误处理机制 C异常概念 异常的使用 异常的抛出和捕获 异常的抛出和匹配原则 在函数调用链中异常栈展开匹配原则 异常的重新抛出 异常安全 异常规范 自定义异常体系 C标准库的异常体系 异常的优缺点 C异常的优点 C异常的缺…

「自动化测试」Selenium 的使用

使用 Selenium 需要先导入相关依赖 <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.0.0</version> </dependency><dependency><groupId>io.gith…