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

WPF进阶 | WPF 样式与模板:打造个性化用户界面的利器

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

WPF进阶 | WPF 样式与模板:打造个性化用户界面的利器

  • 一、前言
  • 二、WPF 样式基础
    • 2.1 什么是样式
    • 2.2 样式的定义
    • 2.3 样式的应用
  • 三、WPF 模板基础
    • 3.1 什么是模板
    • 3.2 控件模板
    • 3.3 数据模板
  • 四、样式与模板的高级应用
    • 4.1 样式继承
    • 4.2 模板绑定
    • 4.3 资源字典
  • 五、实际应用案例
    • 5.1 打造自定义主题
    • 5.2 实现复杂控件
  • 六、总结
  • 结束语
  • 优质源码分享

WPF进阶 | WPF 样式与模板:打造个性化用户界面的利器 ,在当今的软件开发领域,用户界面(UI)的设计对于应用程序的成功至关重要。一个吸引人且易于使用的 UI 能够显著提升用户体验,从而增加用户对应用程序的喜爱和忠诚度。Windows Presentation Foundation(WPF)作为微软推出的用于构建桌面应用程序的框架,提供了强大的样式与模板功能,使得开发者能够轻松打造出高度个性化的用户界面。本文将深入探讨 WPF 样式与模板的各个方面,通过详细的代码示例和实际应用场景,帮助读者全面掌握这一强大的工具。

一、前言

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

    在当今数字化时代,桌面应用程序的用户界面(UI)设计至关重要,它直接影响着用户体验与产品的竞争力。而 WPF(Windows Presentation Foundation)作为微软推出的一款强大的 UI 框架,其布局系统更是构建精美界面的核心要素。WPF 布局系统为开发者提供了丰富多样的布局方式,能够轻松应对各种复杂的界面设计需求,无论是简洁明了的工具软件,还是功能繁杂的企业级应用,都能借助其打造出令人惊艳的视觉效果与流畅的交互体验。

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

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

在这里插入图片描述

二、WPF 样式基础

2.1 什么是样式

    在 WPF 中,样式是一种用于定义控件外观和行为的机制。它允许我们将一组属性值应用到多个控件上,从而实现统一的外观风格。例如,我们可以定义一个按钮的样式,包括按钮的背景颜色、字体大小、边框样式等属性,然后将这个样式应用到多个按钮上,这样所有应用该样式的按钮都会具有相同的外观。

2.2 样式的定义

    在 XAML 中,我们使用

<Style x:Key="MyButtonStyle" TargetType="Button"><Setter Property="Background" Value="Blue"/><Setter Property="Foreground" Value="White"/><Setter Property="FontSize" Value="14"/>
</Style>

在这个示例中,x:Key属性为样式指定了一个唯一的键,TargetType属性指定了该样式应用的目标控件类型为Button。元素用于设置控件的属性,这里分别设置了按钮的背景颜色、前景色和字体大小。

2.3 样式的应用

定义好样式后,我们可以通过Style属性将其应用到控件上。例如:

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

通过{StaticResource MyButtonStyle}语法,我们将之前定义的MyButtonStyle样式应用到了这个按钮上。

三、WPF 模板基础

3.1 什么是模板

    模板是 WPF 中另一个强大的功能,它允许我们完全自定义控件的可视化结构。与样式不同,样式主要用于设置控件的属性,而模板则用于定义控件的外观结构。例如,我们可以使用模板来创建一个具有独特形状和布局的按钮,而不仅仅是改变其颜色和字体等属性。

3.2 控件模板

    最常见的模板类型是控件模板。我们可以通过为控件定义一个控件模板来改变其默认的外观。下面是一个简单的按钮控件模板示例:

<ControlTemplate x:Key="MyButtonTemplate" TargetType="Button"><Grid><Rectangle Fill="Green" RadiusX="5" RadiusY="5"/><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/></Grid>
</ControlTemplate>

    在这个示例中,我们定义了一个按钮的控件模板。模板的根元素是一个Grid,其中包含一个Rectangle作为按钮的背景,并且设置了圆角效果。ContentPresenter用于显示按钮的内容(例如按钮的文本)。

3.3 数据模板

    除了控件模板,WPF 还提供了数据模板。数据模板用于定义如何显示数据对象。当我们在 UI 中绑定数据时,数据模板可以帮助我们以自定义的方式展示数据。例如,假设我们有一个包含姓名和年龄的Person类,我们可以定义一个数据模板来显示这个类的实例:

<DataTemplate DataType="{x:Type local:Person}"><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Name}" Margin="5"/><TextBlock Text="{Binding Age}" Margin="5"/></StackPanel>
</DataTemplate>

    在这个示例中,DataType属性指定了该数据模板应用的数据类型为local:Person(假设local是包含Person类的命名空间)。模板中使用TextBlock来显示Person对象的NameAge属性。

四、样式与模板的高级应用

4.1 样式继承

    WPF 支持样式继承,这意味着我们可以基于一个已有的样式创建一个新的样式,并在新样式中覆盖或添加属性。例如:

<Style x:Key="BaseButtonStyle" TargetType="Button"><Setter Property="Background" Value="Gray"/><Setter Property="Foreground" Value="Black"/>
</Style><Style x:Key="SpecialButtonStyle" BasedOn="{StaticResource BaseButtonStyle}" TargetType="Button"><Setter Property="FontSize" Value="16"/><Setter Property="BorderBrush" Value="Red"/>
</Style>

    在这个示例中,SpecialButtonStyle基于BaseButtonStyle创建,并且添加了FontSizeBorderBrush属性的设置。

4.2 模板绑定

    在控件模板中,我们经常需要将模板中的元素属性与控件的属性进行绑定,这就是模板绑定。例如,我们可以将按钮的IsPressed属性与模板中矩形的背景颜色进行绑定,以实现按钮按下时背景颜色变化的效果:

<ControlTemplate x:Key="PressableButtonTemplate" TargetType="Button"><Grid><Rectangle Fill="{TemplateBinding Background}" RadiusX="5" RadiusY="5"><Rectangle.Style><Style TargetType="Rectangle"><Setter Property="Fill" Value="Blue"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="Fill" Value="LightBlue"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter Property="Fill" Value="DarkBlue"/></Trigger></Style.Triggers></Style></Rectangle.Style></Rectangle><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/></Grid>
</ControlTemplate>

    在这个示例中,{TemplateBinding Background}将矩形的Fill属性与按钮的Background属性进行了绑定,并且通过Trigger实现了鼠标悬停和按下时的不同背景颜色效果。

4.3 资源字典

    随着应用程序的增长,样式和模板的数量也会增加。为了更好地管理这些资源,WPF 提供了资源字典。资源字典是一个独立的 XAML 文件,用于存储各种资源,包括样式、模板、画刷等。我们可以在多个页面或控件中引用资源字典中的资源。例如,我们可以创建一个名为Styles.xaml的资源字典文件:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style x:Key="CommonButtonStyle" TargetType="Button"><Setter Property="Background" Value="Yellow"/><Setter Property="Foreground" Value="Black"/></Style>
</ResourceDictionary>

    然后在主应用程序的App.xaml文件中引用这个资源字典:

<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="Styles.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary>
</Application.Resources>

    这样,在整个应用程序中都可以使用CommonButtonStyle样式。

五、实际应用案例

5.1 打造自定义主题

    通过样式和模板,我们可以轻松打造应用程序的自定义主题。例如,我们可以定义一个深色主题和一个浅色主题,用户可以在应用程序中切换主题。下面是一个简单的深色主题示例:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><SolidColorBrush x:Key="BackgroundColor" Color="#222222"/><SolidColorBrush x:Key="ForegroundColor" Color="White"/><Style TargetType="Window"><Setter Property="Background" Value="{StaticResource BackgroundColor}"/><Setter Property="Foreground" Value="{StaticResource ForegroundColor}"/></Style><Style TargetType="Button"><Setter Property="Background" Value="#444444"/><Setter Property="Foreground" Value="{StaticResource ForegroundColor}"/><Setter Property="BorderBrush" Value="{StaticResource ForegroundColor}"/></Style>
</ResourceDictionary>

    在这个示例中,我们定义了背景颜色和前景颜色的画刷,并将这些画刷应用到WindowButton等控件的样式中,从而实现了深色主题的效果。

5.2 实现复杂控件

    使用样式和模板,我们可以创建非常复杂的自定义控件。例如,我们可以创建一个带有进度条和状态显示的自定义按钮。下面是一个简单的示例:

<ControlTemplate x:Key="ProgressButtonTemplate" TargetType="Button"><Grid><Rectangle Fill="Gray" RadiusX="5" RadiusY="5"/><StackPanel Orientation="Vertical"><TextBlock Text="{TemplateBinding Content}" HorizontalAlignment="Center" Margin="5"/><ProgressBar Value="{TemplateBinding Tag}" Visibility="{Binding IsIndeterminate, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}}" Height="10" Margin="5"/><TextBlock Text="{Binding Status, RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Center" Margin="5"/></StackPanel></Grid>
</ControlTemplate>

    在这个示例中,我们定义了一个按钮的控件模板,其中包含一个显示按钮内容的TextBlock,一个根据按钮的Tag属性显示进度的ProgressBar,以及一个显示状态的TextBlock。通过这种方式,我们可以创建出具有独特功能和外观的自定义控件。

六、总结

    WPF 的样式与模板功能为开发者提供了极大的灵活性,使得我们能够创建出高度个性化的用户界面。通过本文的介绍,我们了解了样式和模板的基础概念、定义和应用方法,以及它们的高级应用和实际案例。在实际开发中,合理运用样式和模板可以提高开发效率,增强应用程序的可维护性和可扩展性。希望读者能够通过本文的学习,掌握 WPF 样式与模板的精髓,并将其应用到实际项目中,打造出更加出色的用户界面。

结束语

        展望未来,WPF 布局系统依然有着广阔的发展前景。随着硬件技术的不断革新,如高分辨率屏幕、折叠屏设备的日益普及,WPF 布局系统有望进一步强化其自适应能力,为用户带来更加流畅、一致的体验。在应对高分辨率屏幕时,能够更加智能地缩放和布局元素,确保文字清晰可读、图像不失真;对于折叠屏设备,可动态调整布局结构,充分利用多屏空间,实现无缝切换。

        性能优化方面,微软及广大开发者社区将持续努力,进一步降低复杂布局的计算开销,提高布局更新的效率,使得 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/145323044(防止抄袭,原文地址不可删除)

相关文章:

WPF进阶 | WPF 样式与模板:打造个性化用户界面的利器

WPF进阶 | WPF 样式与模板&#xff1a;打造个性化用户界面的利器 一、前言二、WPF 样式基础2.1 什么是样式2.2 样式的定义2.3 样式的应用 三、WPF 模板基础3.1 什么是模板3.2 控件模板3.3 数据模板 四、样式与模板的高级应用4.1 样式继承4.2 模板绑定4.3 资源字典 五、实际应用…...

趣味Python100例初学者练习01

1. 1 抓交通肇事犯 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有三人目击该事件&#xff0c;但都没有记住车号&#xff0c;只记下了车号的一些特征。甲说&#xff1a;牌照的前两位数字是相同的&#xff1b;乙说&#xff1a;牌照的后两位数字是相同的&#xff0c;但与前…...

每日一题——有效括号序列

有效括号序列 题目描述数据范围&#xff1a;复杂度要求&#xff1a; 示例题解代码实现代码解析1. 定义栈和栈操作2. 栈的基本操作3. 主函数 isValid4. 返回值 时间和空间复杂度分析 题目描述 给出一个仅包含字符 (, ), {, }, [, ] 的字符串&#xff0c;判断该字符串是否是一个…...

MQTT 术语表

Broker 有时我们也会直接将服务端称为 Broker&#xff0c;这两个术语可以互换使用。 Clean Start 客户端可以在连接时使用这个字段来指示是期望从已存在的会话中恢复通信&#xff0c;还是创建一个全新的会话。仅限 MQTT v5.0。 Client 使用 MQTT 协议连接到服务端的设备或…...

每天学点小知识之设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解模板方法模式 模板方法模式是结构最简单的行为型设计模式&#xff0c;在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式&#xff0c;可以将一些复杂流程的实现步骤封装在一系列基…...

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…...

信息学奥赛一本通 2113:【24CSPJ普及组】小木棍(sticks) | 洛谷 P11229 [CSP-J 2024] 小木棍

【题目链接】 ybt 2113&#xff1a;【24CSPJ普及组】小木棍&#xff08;sticks&#xff09; 洛谷 P11229 [CSP-J 2024] 小木棍 【题目考点】 1. 思维题&#xff0c;找规律 【解题思路】 解法1&#xff1a;找规律 该题为&#xff1a;求n根木棍组成的无前导0的所有可能的数…...

【数据结构】(5) ArrayList 顺序表

一、使用 ArrayList ArrayList 就是数组的封装&#xff0c;但是数组只有 [] 操作存取值&#xff0c;和 .length 操作获取数组内存长度&#xff1b;而 ArrayList 有更多的功能&#xff1a; 1、创建对象 2、扩容机制 ArrayList 有自动扩容机制&#xff0c;在插入元素时不用担心数…...

Elasticsearch 指南 [8.17] | Search APIs

Search API 返回与请求中定义的查询匹配的搜索结果。 http GET /my-index-000001/_search Request GET /<target>/_search GET /_search POST /<target>/_search POST /_search Prerequisites 如果启用了 Elasticsearch 安全功能&#xff0c;针对目标数据流…...

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具03

SQLSERVER的ImpDp和ExpDp工具 1、全部的表导出&#xff08;仅表结构导出&#xff09; 2、导出的表结构&#xff0c;导入到新的数据库 导入前&#xff0c;test3数据没有任何表 导入 导入结果确认&#xff1a;表都被做成&#xff0c;但是没有数据 3、全部的表导出&#x…...

JVM-运行时数据区

JVM的组成 运行时数据区-总览 Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。 《Java虚拟机规范》中规定了每一部分的作用 运行时数据区-应用场景 Java的内存分成哪几部分&#xff1f; Java内存中哪些部分会内存溢出&#xff1f; JDK7 和J…...

经典本地影音播放器MPC-BE.

经典本地影音播放器MPC-BE 链接&#xff1a;https://pan.xunlei.com/s/VOIAZbbIuBM1haFdMYCubsU-A1?pwd4iz3# MPC-BE&#xff08;Media Player Classic Black Edition&#xff09;是来自 MPC-HC&#xff08;Media Player Classic Home Cinema&#xff09;的俄罗斯开发者重新…...

求水仙花数,提取算好,打表法。或者暴力解出来。

暴力解法 #include<bits/stdc.h> using namespace std; int main() {int n,m;cin>>n>>m;if(n<3||n>7||m<0){cout<<"-1";return 0;}int powN[10];//记录0-9的n次方for(int i0;i<10;i){powN[i](int)pow(i,n);}int low(int) pow(1…...

后盾人JS -- 原型

没有原型的对象 也有没有原型的对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…...

Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Nginx 命令行参数

文章来源&#xff1a;命令行参数 -- nginx中文文档|nginx中文教程 nginx 支持以下命令行参数&#xff1a; -?| — 打印帮助 以获取命令行参数。-h-c file— 使用替代项 configuration 而不是 default 文件。file-e file— 使用替代项 error log 来存储日志 而不是默认文件 &…...

YOLOV11-1:YoloV11-安装和CLI方式训练模型

YoloV11-安装和CLI方式训练模型 1.安装和运行1.1安装的基础环境1.2安装yolo相关组件1.3命令行方式使用1.3.1 训练1.3.2 预测 本文介绍yoloV11的安装和命令行接口 1.安装和运行 1.1安装的基础环境 GPU环境&#xff0c;其中CUDA是12.4版本 1.2安装yolo相关组件 # 克隆github…...

Docker Hub 镜像 Pull 失败的解决方案

目录 引言一、问题二、原因三、解决方法四、参考文献 引言 在云原生技术火热的当下&#xff0c;Docker可谓是其基础&#xff0c;由于其简单以及方便性&#xff0c;让开发人员不必再为环境配置问题而伤脑筋&#xff0c;因为可将其看作一个虚拟机程序去理解。所以掌握好它可谓是…...

重新思考绩效管理变革

Peter Cappelli 和 Anna Tavis 在绩效管理变革一文中&#xff0c;为我们带来了很多关于绩效管理变革的思考。企业为什么做绩效管理变革&#xff0c;为什么现在需要&#xff1f;让我们看看这些学者是如何思考的。 摘要 受到老板和下属的痛恨&#xff0c;传统的绩效考核已经被超…...

内核定时器2-高分辨率定时器

高分辨率定时器与低分辨率定时器 高分辨率定时器与低分辨率定时器相比&#xff0c;有如下两个根本性的不同。 (1) 高分辨率定时器使用红黑树对定时器进行管理。 (2) 定时器独立于周期时钟。即不基于jiffies&#xff0c;精度可以达到纳秒级别。 内核2.6.16版本开始&#xff…...

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具02

工具运行前的环境准备 1、登录用户管理员权限确认 工具使用的登录用户(-u后面的用户)&#xff0c;必须具有管理员的权限&#xff0c;因为需要读取系统表 例&#xff1a;Export.bat -s 10.48.111.12 -d db1 -u test -p test -schema dbo      2、Powershell的安全策略确认…...

数据结构【单链表操作大全详解】【c语言版】(只有输入输出为了方便用的c++)

单链表操作的C/C实现详解 在数据结构中&#xff0c;单链表是一种非常基础且重要的数据结构。它由一系列节点组成&#xff0c;每个节点包含数据和指向下一个节点的指针。今天我们就来深入探讨用C/C实现的单链表及其各种操作。 一、单链表的定义 const int N 1e5; //单链表 t…...

【R语言】环境空间

一、环境空间种类 R语言中有5种环境&#xff1a; 全局环境&#xff1a;也叫用户环境&#xff0c;指在当前用户下R程序运行的环境空间。 内部环境&#xff1a;通过“new.env()”命令创建的环境空间&#xff0c;也可以是匿名的环境空间。 父环境&#xff1a;当前环境空间所处…...

Python处理数据库:MySQL与SQLite详解

Python处理数据库&#xff1a;MySQL与SQLite详解 在数据处理和存储方面&#xff0c;数据库扮演着至关重要的角色。Python提供了多种与数据库交互的方式&#xff0c;其中pymysql库用于连接和操作MySQL数据库&#xff0c;而SQLite则是一种轻量级的嵌入式数据库&#xff0c;Pytho…...

软考高项笔记 信息技术及其发展

信息技术及其发展 ❝ 信息系统项目管理师第二章第一节 1. 网络标准协议的定义 网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。网络协议由三个要素组成&#xff0c;分别是语义、语法和时序。 语义&#xff1a;解释控制信息每个部分的含义&#xff0c;它…...

HAO的Graham学习笔记

前置知识&#xff1a;凸包 摘录oiwiki 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为&#xff1a;对于给定集合 X&#xff0c;所有包含 X 的凸集的交集 S 被称为 X 的 凸包。 说人话就是用一个橡皮筋包含住所有给定点的形态 如图&#xff1a; 正题&#xff1a…...

C#基础知识

0 C#介绍 定义与背景 C#&#xff08;发音为C - sharp&#xff09;是微软公司开发的一种高级编程语言。它是专门为构建在微软的.NET平台上运行的各种应用程序而设计的。在2000年左右推出&#xff0c;目的是结合当时编程语言的优点&#xff0c;如C的强大功能和Java的简单性与安全…...

Kafka中文文档

文章来源&#xff1a;https://kafka.cadn.net.cn 什么是事件流式处理&#xff1f; 事件流是人体中枢神经系统的数字等价物。它是 为“永远在线”的世界奠定技术基础&#xff0c;在这个世界里&#xff0c;企业越来越多地使用软件定义 和 automated&#xff0c;而软件的用户更…...

Tyrant(暴君):反向Shell-后门注入与持久化控制的渗透测试工具

Tyrant Tyrant 是一款用于渗透测试和远程控制持久化的恶意工具&#xff0c;具备以下功能&#xff1a; 反向Shell&#xff1a;允许攻击者通过指定用户UID进行反弹对应权限的Shell会话。后门注入与持久化&#xff1a;在目标系统中注入后门并确保即使重启后依然能恢复控制。Tyran…...

leetcode刷题-贪心04

代码随想录贪心算法part04|452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间 452. 用最少数量的箭引爆气球435. 无重叠区间763.划分字母区间 今天的三道题目&#xff0c;都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#…...

系统学习算法: 专题八 二叉树中的深搜

深搜其实就是深度优先遍历&#xff08;dfs&#xff09;&#xff0c;与此相对的还有宽度优先遍历&#xff08;bfs&#xff09; 如果学完数据结构有点忘记&#xff0c;如下图&#xff0c;左边是dfs&#xff0c;右边是bfs 而二叉树的前序&#xff0c;中序&#xff0c;后序遍历都可…...

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题2)-网络部分解析-附详细代码

目录 附录1:拓扑图​编辑 附录2:地址规划表 1.SW1 2.SW2 3.SW3 4.SW4 5.SW5 6.SW6 7.SW7 8.R1 9.R2 10.R3 11.AC1 12.AC2 13.EG1 14.EG2 15.AP2 16.AP3 附录1:拓扑图 附录2:地址规划表...

笔试-业务逻辑4

应用 小明在玩一个数字加减游戏&#xff0c;输入4个正整数&#xff1a;s、t、a、b&#xff0c;其中s>1&#xff0c;b<105&#xff0c;a!b。只使用加法或者减法&#xff0c;使得st。 每回合&#xff0c;小明用当前的数字&#xff0c;加上或减去一个数字&#xff1b;目前有…...

冷启动+强化学习:DeepSeek-R1 的原理详解——无需监督数据的推理能力进化之路

本文基于 DeepSeek 官方论文进行分析,论文地址为:https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf 有不足之处欢迎评论区交流 原文翻译 在阅读和理解一篇复杂的技术论文时,逐字翻译是一个重要的步骤。它不仅能帮助我们准确把握作者的原意,还能为后续…...

ubuntu22安装issac gym记录

整体参考&#xff1a;https://blog.csdn.net/Yakusha/article/details/144306858 安装完成后的整体版本信息 ubuntu&#xff1a;22.04内核&#xff1a;6.8.0-51-generic显卡&#xff1a;NVIDIA GeForce RTX 3050 OEM显卡驱动&#xff1a;535.216.03cuda&#xff1a;12.2cudnn&…...

Docker小游戏 | 使用Docker部署2048网页小游戏

Docker小游戏 | 使用Docker部署2048网页小游戏 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署2048网页小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问2048网页小游戏五、总结前言 在当今快速发展的技术世…...

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…...

传输层协议 UDP 与 TCP

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 前置复盘&#x1f98b; 传输层&#x1f98b; 再谈端口号&#x1f98b; 端口号范围划分&#x1f98b; 认识知名端口号 (Well-Know Port Number) 二&#xf…...

Vue06

目录 一、声明式导航-导航链接 1.需求 2.解决方案 3.通过router-link自带的两个样式进行高亮 二、声明式导航的两个类名 1.router-link-active 2.router-link-exact-active 三、声明式导航-自定义类名&#xff08;了解&#xff09; 1.问题 2.解决方案 3.代码演示 四…...

AJAX笔记进阶篇

黑马程序员视频地址&#xff1a; AJAX-Day04-01.同步代码和异步代码https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p47 同步代码和异步代码 回调函数地狱与解决方法 回调函数地狱…...

Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】

文章目录 一、Shell 循环类型二、Shell while 循环三、Shell for 循环四、Shell until 循环五、Shell select 循环六、总结 一、Shell 循环类型 循环是一个强大的编程工具&#xff0c;使您能够重复执行一组命令。在本教程中&#xff0c;您将学习以下类型的循环 Shell 程序&…...

【Redis】安装配置Redis超详细教程 / Linux版

Linux安装配置Redis超详细教程 安装redis依赖安装redis启动redis停止redisredis.conf常见配置设置redis为后台启动修改redis监听地址设置工作目录修改密码监听的端口号数据库数量设置redis最大内存设置日志文件设置redis开机自动启动 学习视频&#xff1a;黑马程序员Redis入门到…...

S4 HANA明确税金汇差科目(OBYY)

本文主要介绍在S4 HANA OP中明确税金汇差科目(OBYY)相关设置。具体请参照如下内容&#xff1a; 1. 明确税金汇差科目(OBYY) 以上配置点定义了在外币挂账时&#xff0c;当凭证抬头汇率和税金行项目汇率不一致时&#xff0c;造成的差异金额进入哪个科目。此类情况只发生在FB60/F…...

Nginx反向代理 笔记250203

Nginx反向代理 Nginx 是一个高性能的 HTTP 服务器和反向代理服务器。反向代理是指客户端请求资源时&#xff0c;Nginx 作为中间层&#xff0c;将请求转发到后端服务器&#xff0c;并将后端服务器的响应返回给客户端。通过反向代理&#xff0c;可以实现负载均衡、缓存、SSL 终端…...

【ChatGPT:开启人工智能新纪元】

一、ChatGPT 是什么 最近,ChatGPT 可是火得一塌糊涂,不管是在科技圈、媒体界,还是咱们普通人的日常聊天里,都能听到它的大名。好多人都在讨论,这 ChatGPT 到底是个啥 “神器”,能让大家这么着迷?今天咱就好好唠唠。 ChatGPT,全称是 Chat Generative Pre-trained Trans…...

OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化

爬虫与 OpenAI 模型结合&#xff0c;不仅能高效地抓取并分析海量数据&#xff0c;还能通过 NLP 技术生成洞察、摘要&#xff0c;极大提高业务效率。以下是一些实际工作中具有较高价值的应用案例&#xff1a; 1. 电商价格监控与智能分析 应用场景&#xff1a; 电商企业需要监控…...

49【服务器介绍】

服务器和你的电脑可以说是一模一样的&#xff0c;只不过用途不一样&#xff0c;叫法就不一样了 物理服务器和云服务器的区别 整台设备眼睛能够看得到的&#xff0c;我们一般称之为物理服务器。所以物理服务器是比较贵的&#xff0c;不是每一个开发者都能够消费得起的。 …...

docker pull Error response from daemon问题

里面填写 里面解决方案就是挂代理。 以虚拟机为例&#xff0c;将宿主机配置端口设置&#xff0c;https/http端口设为7899 配置虚拟机的http代理&#xff1a; vim /etc/systemd/system/docker.service.d/http-proxy.conf里面填写&#xff0c;wq保存 [Service] Environment…...

院校联合以项目驱动联合培养医工计算机AI人才路径探析

一、引言 1.1 研究背景与意义 在科技飞速发展的当下&#xff0c;医疗人工智能作为一个极具潜力的新兴领域&#xff0c;正深刻地改变着传统医疗模式。从疾病的早期诊断、个性化治疗方案的制定&#xff0c;到药物研发的加速&#xff0c;人工智能技术的应用极大地提升了医疗服务…...

C++ Primer 标准库vector

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...