WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建

在这里插入图片描述
在这里插入图片描述

WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建

  • 一、前言
  • 二、WPF 核心架构
    • 2.1 核心组件
    • 2.2 布局系统
    • 2.3 数据绑定机制
    • 2.4 事件处理机制
  • 三、WPF 开发环境搭建
    • 3.1 安装 Visual Studio
    • 3.2 创建第一个 WPF 应用程序
  • 结束语
  • 优质源码分享

WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建, 本文旨在深入探讨 Windows Presentation Foundation(WPF),首先介绍 WPF 的基本概念及其在微软技术生态中的地位,随后详细剖析其核心架构,包括核心组件、布局系统、数据绑定机制、事件处理机制等方面。接着阐述 WPF 开发环境的搭建过程,从安装必要软件到创建第一个简单的 WPF 应用程序都进行了细致说明。通过对 WPF 核心架构的理解和开发环境搭建的掌握,为进一步深入学习和应用 WPF 技术奠定坚实基础,帮助开发人员更好地利用 WPF 构建功能强大、界面美观的 Windows 应用程序。

一、前言

    在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

    在当今的软件开发领域,用户界面(UI)设计的重要性日益凸显。Windows 应用程序需要提供丰富、交互性强且美观的界面以吸引用户并提升用户体验。传统的 Windows 开发技术在应对复杂 UI 需求时逐渐暴露出一些局限性,如界面设计与逻辑代码的高度耦合、对图形处理能力有限等。在此背景下,微软推出了 Windows Presentation Foundation(WPF)。

    WPF 是微软.NET 框架下用于构建 Windows 客户端应用程序的强大技术。它将用户界面、媒体和文档整合到一个统一的编程模型中,提供了丰富的功能集,涵盖了从基本的 UI 布局到高级的图形渲染、动画效果以及数据绑定等多个方面。无论是开发企业级的业务应用程序,还是面向消费者的多媒体应用,WPF 都展现出了卓越的适应性和强大的表现力,成为 Windows 应用程序开发的重要选择之一。

    WPF从入门到精通专栏,旨在为读者呈现一条从对 WPF(Windows Presentation Foundation)技术懵懂无知到精通掌握的学习路径。首先从基础入手,介绍 WPF 的核心概念,涵盖其独特的架构特点、开发环境搭建流程,详细解读布局系统、常用控件以及事件机制等基础知识,帮助初学者搭建起对 WPF 整体的初步认知框架。随着学习的深入,进阶部分聚焦于数据绑定、样式模板、动画特效等关键知识点,进一步拓展 WPF 开发的能力边界,使开发者能够打造出更为个性化、交互性强的桌面应用界面。高级阶段则涉及自定义控件开发、MVVM 设计模式应用、多线程编程等深层次内容,助力开发者应对复杂的业务需求,构建大型且可维护的应用架构。同时,通过实战项目案例解析,展示如何将所学知识综合运用到实际开发中,从需求分析到功能实现再到优化测试,全方位积累实践经验。此外,还探讨了性能优化、与其他技术集成以及安全机制等拓展性话题,让读者对 WPF 技术在不同维度有更深入理解,最终实现对 WPF 技术的精通掌握,具备独立开发高质量桌面应用的能力。

🛕 点击进入WPF从入门到精通专栏

在这里插入图片描述

二、WPF 核心架构

2.1 核心组件

  • PresentationCore

    PresentationCore 是 WPF 架构的基础组件之一。它主要负责处理 WPF 应用程序中的核心呈现相关功能,包括图形渲染、可视化树的构建与管理等。它定义了基本的视觉元素类型,如形状(Shape)、画笔(Brush)等,并且提供了与底层图形系统交互的接口。例如,当在 WPF 中绘制一个矩形时,PresentationCore 负责将矩形的几何形状信息传递给图形系统进行绘制,并处理诸如裁剪、透明度等视觉效果的计算与应用。

    它还包含了对文本渲染的支持,确保在 WPF 应用程序中的文字能够以高质量、清晰的方式显示。这涉及到字体选择、文字排版、文本抗锯齿等多方面的处理,为创建富文本内容的用户界面提供了坚实的基础。

  • PresentationFramework

PresentationFramework 构建在 PresentationCore 之上,是 WPF 应用程序开发中直接使用最多的组件。它提供了一系列高级的 UI 功能,如窗口(Window)、页面(Page)、控件(Control)等的定义与实现。这些预定义的 UI 元素使得开发人员可以快速构建应用程序的界面结构。例如,通过简单地实例化一个 Window 类并设置其属性,就可以创建一个基本的应用程序主窗口。

    此外,PresentationFramework 还实现了 WPF 的事件路由机制、数据绑定引擎以及命令系统等重要功能。事件路由机制允许在 WPF 应用程序中以灵活的方式处理事件,例如可以在父元素中统一处理子元素的某些事件,提高了代码的复用性和可维护性。数据绑定引擎则是 WPF 的核心特色之一,它能够方便地在 UI 元素和数据对象之间建立绑定关系,实现数据的自动更新与同步显示,大大简化了数据驱动 UI 开发的复杂性。命令系统则为处理用户交互操作提供了一种解耦的方式,将操作逻辑与具体的 UI 元素触发分离,便于代码的组织与管理。

  • WindowsBase

    WindowsBase 组件提供了一些基本的基础设施服务,如依赖属性系统、路由事件系统的基础实现等。依赖属性是 WPF 中一种特殊的属性类型,它支持属性值的继承、数据绑定、动画等高级特性。例如,一个控件的字体属性可以被设置为依赖属性,这样当父元素的字体属性发生变化时,子元素的字体属性可以自动继承该变化,无需额外的代码处理。

    路由事件系统基于 WindowsBase 中的基础实现构建了完整的事件路由机制,使得事件能够在 WPF 元素树中进行冒泡或隧道传播,方便开发人员处理复杂的事件交互场景。同时,WindowsBase 还提供了与线程、资源管理等相关的一些基本功能,为整个 WPF 应用程序的稳定运行提供了保障。

2.2 布局系统

  • 布局原理

    WPF 的布局系统基于容器和子元素的概念。容器负责确定其子元素的位置和大小,而子元素则向容器提供自身的布局需求信息。布局过程是一个递归的过程,从根元素开始,依次遍历整个元素树。例如,在一个典型的 WPF 窗口中,窗口是根容器,它内部可能包含一个网格(Grid)布局面板,网格面板又包含多个按钮、文本框等子元素。

    在布局过程中,容器首先会根据自身的布局规则对子元素进行测量。测量过程中子元素会返回其期望的大小,这个大小通常是基于其内容、样式设置以及自身的布局约束等因素确定的。例如,一个文本框可能根据其文本内容的长度和字体大小确定其期望的宽度和高度。然后容器会根据自身的布局策略对这些测量结果进行整理和计算,确定每个子元素最终的位置和大小。例如,网格布局面板会根据其定义的行和列的设置,将子元素放置在相应的网格单元中,并调整其大小以适应网格单元的尺寸。

  • 常见布局面板

    Grid:Grid 是 WPF 中最常用的布局面板之一。它通过定义行和列来组织子元素,可以灵活地实现复杂的布局结构。开发人员可以指定行和列的大小,可以是固定值、比例值或者自动适应内容的值。例如,在一个数据录入界面中,可以使用 Grid 将标签和文本框分别放置在不同的列中,并且可以根据需要调整列的宽度比例,使界面布局更加美观和合理。

    StackPanel:StackPanel 按照水平或垂直方向依次堆叠其子元素。当子元素添加到 StackPanel 中时,它们会按照设定的方向依次排列。例如,在一个导航菜单的实现中,可以使用垂直方向的 StackPanel 将菜单项依次堆叠,方便用户进行选择操作。

    Canvas:Canvas 提供了绝对定位的布局方式。开发人员可以精确地指定子元素在 Canvas 中的坐标位置。这种布局方式适用于需要精确控制元素位置的场景,如绘制图形、创建自定义的可视化界面等。例如,在一个简单的图形绘制应用程序中,可以使用 Canvas 来放置各种形状元素,并通过指定坐标来确定它们的位置和相互关系。

2.3 数据绑定机制

  • 数据绑定基础

    数据绑定是 WPF 的核心特性之一,它允许在 UI 元素和数据对象之间建立一种连接关系,使得数据的变化能够自动反映在 UI 上,同时 UI 元素的状态改变也能更新数据对象。数据绑定的基本组成部分包括绑定源、绑定目标和绑定表达式。绑定源是数据的提供者,可以是各种数据对象,如普通的.NET 对象、集合、数据库查询结果等。例如,一个包含用户信息的自定义类对象可以作为绑定源。

    绑定目标则是 UI 元素的某个属性,如文本框的 Text 属性、按钮的 IsEnabled 属性等。绑定表达式则定义了绑定源和绑定目标之间的绑定关系,包括绑定的路径(即如何从绑定源获取数据)、绑定的模式(如单向绑定、双向绑定等)等信息。例如,在一个显示用户姓名的文本框中,绑定表达式可以指定将文本框的 Text 属性绑定到用户对象的 Name 属性上,并且采用单向绑定模式,即当用户对象的 Name 属性发生变化时,文本框的 Text 属性会自动更新。

  • 数据转换与验证

    WPF 的数据绑定机制还支持数据转换和验证功能。数据转换可以在数据从绑定源传输到绑定目标或者反之的过程中对数据进行格式转换。例如,可以定义一个数据转换器将一个日期类型的数据转换为特定格式的字符串以便在文本框中显示,或者将用户输入的字符串转换为相应的数据类型进行数据更新。

    数据验证则用于确保用户输入的数据符合特定的要求。可以在绑定表达式中指定验证规则,当用户输入的数据不符合规则时,WPF 会自动提供反馈信息,如显示错误提示框或者改变 UI 元素的外观以提示用户输入错误。例如,在一个年龄输入文本框中,可以定义一个验证规则确保输入的年龄是一个有效的数值且在合理的范围内。

2.4 事件处理机制

  • 路由事件概述

    WPF 采用路由事件机制来处理事件。路由事件与传统的.NET 事件不同,它可以在元素树中进行传播。路由事件有两种传播方式:冒泡和隧道。冒泡事件是从事件源开始,沿着元素树向上传播,即从子元素向父元素传播。例如,当点击一个按钮时,按钮的 Click 事件会先在按钮自身触发,然后依次向上传播到按钮所在的容器、窗口等父元素。

    隧道事件则是从元素树的根元素开始,沿着元素树向下传播到事件源。隧道事件通常用于预览事件,例如在一个窗口中,可以在窗口级别处理鼠标按下的隧道事件,以便在事件到达具体的子元素之前进行一些全局的处理,如判断是否满足某些条件才允许事件继续向下传播到子元素进行具体的处理。

  • 事件处理的实现

    在 WPF 中,事件处理可以通过在 XAML 中声明事件处理程序或者在代码后置文件中编写事件处理方法来实现。在 XAML 中声明事件处理程序时,只需指定事件名称和对应的事件处理方法名称即可。例如,对于一个按钮的 Click 事件,可以在 XAML 中这样声明:<Button Click="Button_Click">Click Me</Button>,其中 “Button_Click” 是在代码后置文件中定义的事件处理方法。在代码后置文件中,事件处理方法需要遵循特定的签名格式,如对于按钮的 Click 事件处理方法,其签名通常为private void Button_Click(object sender, RoutedEventArgs e),其中“sender” 表示事件源对象,“e” 表示事件参数,包含了关于事件的详细信息,如事件发生的位置、鼠标按键状态等。

三、WPF 开发环境搭建

3.1 安装 Visual Studio

  • 系统要求

    在安装 Visual Studio 之前,需要确保计算机满足一定的系统要求。对于不同版本的 Visual Studio,系统要求会有所不同。一般来说,需要一定的处理器性能,如至少 1.8 GHz 或更快的处理器(对于某些高级功能可能需要更高性能的处理器)。内存方面,建议至少 2GB 的 RAM,对于大型项目开发或同时运行多个实例时,可能需要更多内存,如 4GB 或 8GB 以上。磁盘空间也有要求,Visual Studio 安装程序本身以及后续开发过程中可能会占用大量磁盘空间,一般需要几十 GB 的可用磁盘空间,具体取决于安装的组件和版本。操作系统方面,支持 Windows 7 及以上版本的 Windows 操作系统,但不同版本的 Visual Studio 对不同 Windows 版本的支持细节可能存在差异。

  • 安装步骤

    首先,从微软官方网站下载 Visual Studio 的安装程序。在下载页面,可以根据自己的需求选择不同的版本,如 Visual Studio Community(免费供个人和小型团队使用)、Visual Studio ProfessionalVisual Studio Enterprise 等。下载完成后,运行安装程序。

    安装程序启动后,会出现安装向导界面。在这个界面中,可以选择安装的工作负载。对于 WPF 开发,需要选择 “.NET 桌面开发” 工作负载。这个工作负载包含了开发 WPF 应用程序所需的基本组件,如 WPF 设计器、.NET 框架开发工具等。同时,还可以根据自己的需求选择其他相关的工作负载或单个组件,如版本控制系统集成(如 Git)、测试工具等。

    选择完工作负载后,点击 “安装” 按钮,安装程序就会开始下载并安装所选的组件。安装过程可能需要一段时间,具体取决于计算机的性能和网络速度。安装完成后,会提示安装成功,可以启动 Visual Studio

3.2 创建第一个 WPF 应用程序

  • 创建项目

    启动 Visual Studio 后,选择 “创建新项目”。在项目模板列表中,选择 “WPF 应用程序(.NET Framework)”。然后指定项目的名称、位置等基本信息,点击 “确定” 按钮,Visual Studio 就会创建一个基本的 WPF 应用程序项目结构。

  • 项目结构分析

    一个典型的 WPF 应用程序项目包含多个文件和文件夹。其中,“App.xaml”“App.xaml.cs” 文件用于定义应用程序的全局资源、启动窗口等信息。“MainWindow.xaml”“MainWindow.xaml.cs” 文件是应用程序的主窗口相关文件,“MainWindow.xaml” 用于定义主窗口的 UI 布局,采用 XAML 语言编写,而 “MainWindow.xaml.cs” 则是主窗口的代码后置文件,用于处理主窗口的逻辑代码,如事件处理、数据初始化等。此外,项目中还可能包含 “Properties” 文件夹,其中存放着项目的属性设置文件,如程序集信息、资源文件引用等。还有 “obj” 和 “bin” 文件夹,分别用于存放编译过程中的中间文件和最终生成的可执行文件及相关依赖文件。

  • 编写简单的 UI 与逻辑代码

“MainWindow.xaml” 文件中,可以开始设计主窗口的 UI。例如,可以添加一个按钮和一个文本框,如下所示:

<Window x:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="My First WPF App" Height="350" Width="525"><Grid><Button x:Name="MyButton" Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"/><TextBox x:Name="MyTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,50,0,0" Width="200"/></Grid>
</Window>

    然后在 “MainWindow.xaml.cs” 文件中,可以为按钮添加 Click 事件处理代码,例如:

using System;
using System.Windows;namespace WpfApp1
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();MyButton.Click += MyButton_Click;}private void MyButton_Click(object sender, RoutedEventArgs e){MyTextBox.Text = "按钮单击!";}}
}

    这样,当运行应用程序并点击按钮时,文本框中就会显示 “按钮单击!”。

结束语

        通过对 WPF 核心架构的深入理解,包括其核心组件、布局系统、数据绑定机制和事件处理机制等方面,以及掌握 WPF 开发环境的搭建过程,从安装 Visual Studio 到创建第一个简单的 WPF 应用程序,开发人员已经迈出了学习 WPF 技术的重要一步。WPF 凭借其强大的功能和灵活的架构,为开发高质量的 Windows 应用程序提供了广阔的空间。在后续的学习和实践中,可以进一步探索 WPF 的高级特性,如动画效果、自定义控件开发、与其他技术的集成等,从而能够更好地利用 WPF 构建出功能丰富、界面精美的 Windows 应用程序,满足不同用户和业务场景的需求,提升 Windows 应用程序在软件市场中的竞争力。无论是对于企业级应用开发还是面向消费者的软件产品开发,WPF 都具有不可忽视的价值和潜力,值得深入研究与应用。

        在开发过程中,遵循 MVVM 设计模式和合理使用资源字典等最佳实践,可以使代码结构更加清晰、易于维护和扩展,提高开发团队的协作效率。同时,了解并掌握数据绑定不生效、布局异常等常见问题的解决方法,能够帮助开发人员快速排除故障,减少开发时间和成本。

        无论是开发简单的工具类应用程序,还是复杂的企业级桌面软件,WPF 都能够满足各种需求,并能够与其他微软技术如 WCF、Entity Framework 等无缝集成,进一步拓展了其应用范围和功能深度。随着技术的不断发展和应用场景的不断拓展,WPF 将继续在桌面应用开发领域发挥重要作用,为用户带来更加优质的桌面应用体验。对于希望深入学习桌面应用开发的读者来说,WPF 无疑是一个值得深入探索和掌握的技术框架,它将为个人的技术成长和职业发展提供坚实的基础和广阔的空间。

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144660532(防止抄袭,原文地址不可删除)

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

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

相关文章

字节跳动自研HTTP开源框架Hertz简介附使用示例

字节跳动自研 HTTP 框架 Hertz Hertz 是字节跳动自研的高性能 HTTP 框架&#xff0c;专为高并发、低延迟的场景设计。它基于 Go 语言开发&#xff0c;结合了字节跳动在微服务架构中的实践经验&#xff0c;旨在提供更高效的 HTTP 服务开发体验。 1. 背景介绍 随着字节跳动业务…

实战演示:利用ChatGPT高效撰写论文

在当今学术界&#xff0c;撰写论文是一项必不可少的技能。然而&#xff0c;许多研究人员和学生在写作过程中常常感到困惑和压力。幸运的是&#xff0c;人工智能的快速发展为我们提供了新的工具&#xff0c;其中ChatGPT便是一个优秀的选择。本文将通过易创AI创作平台&#xff0c…

在线可编辑Excel

1. Handsontable 特点&#xff1a; 提供了类似 Excel 的表格编辑体验&#xff0c;包括单元格样式、公式计算、数据验证等功能。 支持多种插件&#xff0c;如筛选、排序、合并单元格等。 轻量级且易于集成到现有项目中。 具备强大的自定义能力&#xff0c;可以调整外观和行为…

spring-springboot -springcloud

目录 spring: 动态代理: spring的生命周期(bean的生命周期): SpringMvc的生命周期: SpringBoot: 自动装配: 自动装配流程: Spring中常用的注解&#xff1a; Spring Boot中常用的注解&#xff1a; SpringCloud: 1. 注册中心: 2. gateway(网关): 3. Ribbon(负载均…

DAY9,递归实现计算 :1 + 1/3 - 1/5 + 1/7 - 1/9 + .... 1/n 的值

题目 用递归实现计算 :1 1/3 - 1/5 1/7 - 1/9 .... 1/n 的值&#xff0c;n通过键盘输入 思路 递进阶段&#xff1a;n、...... 、9、7、5、3、1 函数出口&#xff1a;递进到1 开始返回&#xff1b;函数返回值视为“总和” 回归阶段&#xff1a;对当前n取倒数&#xff1b;“总…

Formality:不可读(unread)的概念

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 在Formality中有时会遇到不可读(unread)这个概念&#xff0c;本文就将对此…

【27】Word:徐雅雯-艺术史文章❗

目录 题目​ NO1.2 NO3 NO4 NO5 NO6.7 NO8.9 NO10.11 注意&#xff1a;修改样式的字体颜色/字号&#xff0c;若中英文一致&#xff0c;选择所有脚本。格式相似的文本→检查多选/漏选格式刷F4重复上一步操作请❗每一步检查和保存 题目 NO1.2 F12另存为布局→行号布局…

关于ARM和汇编语言

一图流 ARM 计算机组成 输入设备 输出设备 存储设备 运算器 控制器 处理器读取内存程序执行的过程 取指阶段&#xff1a;控制器器通过地址总线向存储器发送想要获取的指令的地址编号&#xff0c;存储器将指定的指令发送给处理器 译码阶段&#xff1a;控制器对指令进行分…

PyTorch使用教程(9)-使用profiler进行模型性能分析

1、简介 PyTorch Profiler是一个内置的性能分析工具&#xff0c;可以帮助开发者定位计算资源&#xff08;如CPU、GPU&#xff09;的瓶颈&#xff0c;从而更好地优化PyTorch程序。通过捕获和分析GPU的计算、内存和带宽利用情况&#xff0c;能够有效识别并解决性能瓶颈。 2、原…

2025-01-22 Unity Editor 1 —— MenuItem 入门

文章目录 1 Editor 文件夹2 MenuItem3 使用示例3.1 打开网址3.2 打开文件夹3.3 Menu Toggle3.4 Menu 代码复用3.5 MenuItem 激活与失活4 代码示例 1 Editor 文件夹 ​ Editor 文件夹是 Unity 中的特殊文件夹&#xff0c;Unity 中所有编辑器相关的脚本都需要放置在其中&#xf…

docker 安装 mysql 详解

在平常的开发工作中&#xff0c;我们经常需要用到 mysql 数据库。那么在docker容器中&#xff0c;应该怎么安装mysql数据库呢。简单来说&#xff0c;第一步&#xff1a;拉取镜像&#xff1b;第二步&#xff1a;创建挂载目录并设置 my.conf&#xff1b;第三步&#xff1a;启动容…

linux-samba服务配置与应用

1.了解samba的配置文件 2.熟悉samba服务的实例 以前我们在windows上共享文件的话&#xff0c;只需右击要共享的文件夹&#xff0c;然后选择共享相关的选项设置即可&#xff0c;然后如何实现windows和linux的文件共享呢&#xff0c;这就涉及到了samba服务&#xff0c;这个软件…

Spring Boot 整合 Redis 步骤详解

文章目录 1. 引言2. 添加依赖3. 配置 Redis 连接信息4. 创建 Redis 操作服务类5. 使用 RedisTemplate 或 ReactiveRedisTemplate6. 测试 Redis 功能7. 注意事项8. 总结 Redis 是一个高性能的键值存储系统&#xff0c;常用于缓存、消息队列等多种场景。将 Redis 与 Spring Boot …

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明&#xff1a;用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 结果&#xff1a; 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询…

K8S中Service详解(三)

HeadLiness类型的Service 在某些场景中&#xff0c;开发人员可能不想使用Service提供的负载均衡功能&#xff0c;而希望自己来控制负载均衡策略&#xff0c;针对这种情况&#xff0c;kubernetes提供了HeadLiness Service&#xff0c;这类Service不会分配Cluster IP&#xff0c;…

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c) npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…

DDD - 微服务落地的技术实践

文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…

通过视觉语言模型蒸馏进行 3D 形状零件分割

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01;对应英文要求比较高&#xff0c;特此说明&#xff01; Abstract This paper proposes a cross-modal distillation framework, PartDistill, which transfers 2D knowledge from vision-language models …

【大模型】ChatGPT 高效处理图片技巧使用详解

目录 一、前言 二、ChatGPT 4 图片处理介绍 2.1 ChatGPT 4 图片处理概述 2.1.1 图像识别与分类 2.1.2 图像搜索 2.1.3 图像生成 2.1.4 多模态理解 2.1.5 细粒度图像识别 2.1.6 生成式图像任务处理 2.1.7 图像与文本互动 2.2 ChatGPT 4 图片处理应用场景 三、文生图操…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件&#xff0c;最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型&#xff0c;具备高吞吐、低延迟、高可用和强一致性的特点&#xff0c;适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …