WPF:WPF原生布局说明

news2025/1/22 12:26:30

前言

WPF在国内讨论度很小,我在这里记录一下WPF简单的原生控件是如何使用的,顺便回忆一下WPF的基础知识,有些忘记的比较厉害了

WPF简介

WPF是微软推出的桌面UI软件,是我觉得最早实现MVVM(数据驱动事务),比Vue早3,4年吧。当然讨论谁是第一个并没有意义,现在Vue如日中天,Vue+uniapp(uniapp是基于Vue开发的)基本实现了网页端到移动端全平台的UI解决方案。而桌面软件逐渐式微。注意,WPF只能在Windows环境下运行,Linux系统现在应该暂不支持

WPF目前状况

微软技术的特点就是,技术很牛B,但是容易断档。只管开发新技术,但是不管维护。WPF目前框架已经停止更新,微软现在主推的是MAUI,推出Windows桌面应用,Andorid,ios,macos跨端文件,一次生成,多端使用。WPF现在是工控领域比较多,工控领域主打的就是性能。

现在Ui框架情况

  • Vue:
    • Vue2.0:上手难度低,开发速度快
    • Vue3.0:效率更高,
    • uniapp(基于Vue开发):在追求开发效率上和学习成本上,是国内目前的最优解
  • React:用的比较少,不评价。Web端两个大哥:Vue和React。React 有 React Active,也支持移动端开发。但是我也没接触过。
  • Angular:目前看已经没落了
  • Flutter:没用过,是Andriod和IOS跨端开发的框架,但是好像圈子比较小
  • QT:C++,专业工控领域,因为是C++所以可以实现对内存的完全操控,但是开发周期长,开发难度大。用来开发小项目就是大炮打蚊子。
  • C#/.NET
    • Winform:老东西,死而不僵。在工控领域,不追求UI界面美观,只要求能用。现在岗位也还是很多。
    • WPF:Winform的上位替代,使用XMAL,MVVM。用起来和Vue差不多。
    • Unity2d/3d:上限最高的Ui框架,用游戏的UI去做操作系统简直是降维打击。特别适合需要进行交互设计的软件。但是问题是大部分UI界面就是点点点,有点大材小用。

工控领域是特别讲究性能的地方。网页不太适合做工控领域的操作软件。工控领域的要求是:

  • 效率高:因为工控领域机器性能比较差,打开网页特别慢。
  • 兼容性好:有些工控机还是windows xp系统这种老东西。
  • 权限问题:网页的权限提升难度比较大。

ok,目前有些离题了,现在来介绍WPF原生相关知识

WPF原生介绍

微软官方文档
微软的文档写的真是垃圾在这里插入图片描述,我去微软上面搜WPF文档里面没有,给放到Windows Desktop里面了。我找了半天。还有就是有部分是机器翻译,你TM把元素名翻译了我怎么搜得到。Grid翻译成网格,我搜还没有这个类。
在这里插入图片描述

WPF布局

布局是最重要,因为后面单个元素组件我们可以通过Ui库来进行解决。

名称作用
Grid最基本的布局元素。通过Row和Col来对布局进行划分。有固定长度,比例长度,自动适应三种长度布局
UniformGrid均分布局。如果是9个按钮,就是33。如果是4个按钮,就是22。如果不是平方数,例如10个按钮,则是4*4的布局,然后是4+4+2。剩下的布局为空。
StackPanel无法自动换行的布局
WrapPanel会自动换行的布局
DockPanel停靠容器,类似于vs studio里面的侧边栏

Grid

Grid使用有一定的逻辑顺序

  • Grid
    • Gird.RowDefinitions:定义用于包裹RowDefinition
      • RowDefinition:定义有多少个RowDefinition
    • Grid.ColumnDefinitions:同上
      • ColumnDefinition
    • 元素

示例如下:

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>


        <TextBlock Text="我是默认"
                   FontSize="50" />
        <TextBlock Text="我是第二个默认" TextWrapping="Wrap"
                   FontSize="50" />
        <TextBlock Text="我是默认"
                   FontSize="50" />
        <TextBlock Text="我是指定第二行第二列"
                   FontSize="50"
                   Grid.Row="2"
                   Grid.Column="2"
                   TextWrapping="Wrap" />

    </Grid>
</Window>

不指定的话,就默认第一格,这里可以看到两个文字重叠了

在这里插入图片描述

按比例修改

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="2*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="2*"/>
        </Grid.ColumnDefinitions>
		............

    </Grid>
</Window>

在这里插入图片描述

固定大小

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="200"/>
            <RowDefinition Height="100"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        .......

    </Grid>
</Window>

在这里插入图片描述

UniformGrid

自动分配,尽可能均匀分布,与长宽不管。例如4=2x2。9=3x3。如果是不能开方的就会向上取整,缺的就空着。例如8=3*3-1。
效果如下

4个

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <UniformGrid>
        <TextBox  Text="1" FontSize="50"/>
        <TextBox  Text="2"
                  FontSize="50" />
        <TextBox  Text="3"
                  FontSize="50" />
        <TextBox  Text="4"
                  FontSize="50" />
    </UniformGrid>
</Window>

在这里插入图片描述
9个

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <UniformGrid>
        <TextBox  Text="1" FontSize="50"/>
        <TextBox  Text="2"
                  FontSize="50" />
        <TextBox  Text="3"
                  FontSize="50" />
        <TextBox  Text="4"
                  FontSize="50" />
        <TextBox  Text="5"
                  FontSize="50" />
        <TextBox  Text="6"
                  FontSize="50" />
        <TextBox  Text="7"
                  FontSize="50" />
        <TextBox  Text="8"
                  FontSize="50" />
        <TextBox  Text="9"
                  FontSize="50" />
    </UniformGrid>
</Window>

在这里插入图片描述
8个

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <UniformGrid>
        <TextBox  Text="1" FontSize="50"/>
        <TextBox  Text="2"
                  FontSize="50" />
        <TextBox  Text="3"
                  FontSize="50" />
        <TextBox  Text="4"
                  FontSize="50" />
        <TextBox  Text="5"
                  FontSize="50" />
        <TextBox  Text="6"
                  FontSize="50" />
        <TextBox  Text="7"
                  FontSize="50" />
        <TextBox  Text="8"
                  FontSize="50" />
    </UniformGrid>
</Window>


在这里插入图片描述

StackPanel

单方向布局,配合Orientation 使用,默认纵向布局.长宽会自动拉伸填满

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB"
        Height="450"
        Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <StackPanel Orientation="Horizontal">
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            
        </StackPanel>
        <StackPanel Grid.Column="1">
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
        </StackPanel>
    </Grid>
    
</Window>

在这里插入图片描述

WrapPanel

自动换行布局,也可以指定排版方向

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <WrapPanel>
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
        </WrapPanel>
        <WrapPanel Orientation="Vertical" Grid.Column="1">
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
            <Button Content="按钮"
                    FontSize="50" />
        </WrapPanel>
    </Grid>
</Window>

在这里插入图片描述

DockPanel

停靠布局,使用DockPanel.Dock指定停靠方向

默认设置

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB"
        Height="450"
        Width="800">
    <DockPanel >
        <Button DockPanel.Dock="Top"
                Content=" Top" FontSize="50"/>
        <Button DockPanel.Dock="Left"
                Content="Left"
                FontSize="50" />
        <Button DockPanel.Dock="Right"
                Content=" Right"
                FontSize="50" />
        <Button DockPanel.Dock="Bottom"
                Content=" Bottom"
                FontSize="50" />
        <Button Content=" Center"
                FontSize="50" />

    </DockPanel>
    
</Window>

在这里插入图片描述
放置顺序会影响覆盖逻辑

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB"
        Height="450"
        Width="800">
    <DockPanel >
        <Button DockPanel.Dock="Bottom"
                Content=" Bottom"
                FontSize="50" />
        <Button DockPanel.Dock="Left"
                Content="Left"
                FontSize="50" />
        <Button DockPanel.Dock="Top"
                Content=" Top" FontSize="50"/>
        
        <Button DockPanel.Dock="Right"
                Content=" Right"
                FontSize="50" />
      
        <Button Content=" Center"
                FontSize="50" />

    </DockPanel>
    
</Window>

在这里插入图片描述
最后一个元素不填满布局

<Window x:Class="ModuleB.Views.ViewB"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ModuleB.Views"
        mc:Ignorable="d"
        Title="ViewB"
        Height="450"
        Width="800">
    <DockPanel  LastChildFill="False">
        <Button DockPanel.Dock="Top"
                Content=" Top" FontSize="50" />
        <Button DockPanel.Dock="Left"
                Content="Left"
                FontSize="50" />
        <Button DockPanel.Dock="Right"
                Content=" Right"
                FontSize="50" />
        <Button DockPanel.Dock="Bottom"
                Content=" Bottom"
                FontSize="50" />
        <Button Content=" Center"
                FontSize="50" />

    </DockPanel>
    
</Window>

在这里插入图片描述

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

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

相关文章

三、H3C-NE实验-配置管理实验

实验拓扑图&#xff1a; 实验描述&#xff1a; 1&#xff09;把路由器R配置为FTP服务器&#xff1b; 2&#xff09;在R上save配置文件后&#xff0c;主机登录FTP&#xff0c;把R的配置文件copy备份&#xff1b; 3&#xff09;删掉R的配置文件后&#xff0c;利用主机恢复R的配…

42个网工高效率工具,我只告诉你(一)

晚上好&#xff0c;我是老杨。 不知道上一篇书单总结&#xff0c;你是否觉得干货 今天更新第四篇&#xff0c;也是最后一篇总结——2022年全年&#xff0c;我安利给你的网工好用工具&#xff0c;整整42个。 它是什么&#xff0c;为什么好用&#xff0c;哪里下载&#xff0c;…

【Linux】进程信号详解(二)

文章目录 前言一、信号阻塞1.信号其他相关常见概念信号递达&#xff1a;信号未决&#xff1a;信号阻塞&#xff1a;信号阻塞vs信号递达的忽略动作 2. 在内核中的表示3. sigset_t4. 信号集操作函数5.sigprocmask函数6.sigpending 二、深入理解捕捉信号1. 虚拟地址空间2.用户态和…

mybatis是如何集成到spring的?

文章目录 1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤 2 SqlSessionFactoryBean对象分析2.1 buildSqlSessionFactory做了什么事情&#xff1f;2.2 为什么是SqlSessionFactoryBean却可以使用SqlSessionFactory&#xff1f; 3 验证demo4 举一反三…

【Python 爬虫之BeautifulSoup】零基础也能轻松掌握的学习路线与参考资料

BeautifulSoup是一种Python库&#xff0c;用于解析HTML和XML文档&#xff0c;并从中提取数据。它提供了Pythonic的解决方案来处理非结构化数据&#xff0c;因此可以轻松地从网页上提取数据。 使用BeautifulSoup编写爬虫&#xff0c;你可以自动化许多任务&#xff0c;比如数据抓…

实验三 Spark SQL基础编程

实验三 Spark SQL基础编程 1.实验目的 1. 掌握 Spark SQL 的基本编程方法&#xff1b; 2. 熟悉 RDD 到 DataFrame 的转化方法&#xff1b; 3. 熟悉利用 Spark SQL 管理来自不同数据源的数据。 2.实验内容 1&#xff0e;Spark SQL 基本操作 将下列 JSON 格式数据复制到 Li…

CF1245D Shichikuji and Power Grid 题解

CF1245D Shichikuji and Power Grid 题解 题目链接字面描述题面翻译样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 思路点拨代码实现 题目 链接 https://www.luogu.com.cn/problem/CF1245D 字面描述 题面翻译 已知一个平面上有 n n n 个城市&#x…

计网笔记 数据链路层 (1-2) 封装成帧、差错控制、流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录 前言在这里插入图片描述 零、数据链路层基本概念一、功能0、数据链路层功能概述1、封装成帧和透明传输1.1封装成帧1.2 透明传输1.3组帧方法 2、数据链路层的差错控制2.0差错从何而来2.1位错&#xff08;比特错&#xff0c;1变成0&#xff0c;0变成1&#xff09;2.2帧错…

干货 | ChatGPT使用指南,让你轻松上车AI世界!

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 聊天机器人&#xff08;Chatbot&#xff09;是一种人工智能应用&#xff0c;可以模拟人类对话行为&#xff0c;以自然语言进行交互。 在过去的几年里&#xff0c;随着自然语言处理技术和深…

Springboot +Flowable,定时器的简单使用

一.流程定义定时激活 之前介绍流程定义的时候&#xff0c;流程都是定义好之后立马就激活了&#xff0c;其实在流程定义的这个过程中&#xff0c;我们还可以设置一个激活时间&#xff0c;也就是流程定义好之后&#xff0c;并不会立马激活&#xff08;不激活就不能据此流程定义创…

操作系统作业 第37-40章

第四次作业 第37章 本章作业需要使用提供的disk.py程序。该程序可以模拟磁盘的工作。在默认情况下&#xff0c;磁盘调度方法为FIFO。对于时间的计算&#xff0c;假设旋转一度为1个时间单位&#xff0c;旋转完整一圈需要360个时间单位&#xff0c;而一个磁道上默认有12个扇区&…

实验二 RDD基础编程

实验二 RDD基础编程 前提是配置好大数据环节。 hadoop&#xff0c;spark&#xff0c;scala等必须的软件 以及下载pyshark 1.实验目的 1. 掌握 RDD 基本操作&#xff1b; 2. 熟悉使用 RDD 编程解决实际具体问题的方法&#xff1b; 2.实验内容 本人仅提供测试代码&#xff01;…

策划专业技能提升攻略,让你在职场中脱颖而出

作为一个10多年的老策划&#xff0c;刚入行的时候也走过很多弯路&#xff0c;后来加入到一家在国内比较知名的策划公司&#xff08;老板也是当年的十大知名策划人&#xff09;才真正让我实现水平的跃升。 当时公司经常有内训&#xff0c;新人的第一课就是策划人应该如何快速入…

FreeRTOS-事件组详解

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;玩转FreeRTOS &#x1f4ac;保持…

深入理解JVM读书笔记与实战_01_Java内存区域与内存溢出异常

文章目录 运行时数据区域问题引入 运行时数据区域 Java虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区。运行时数据区包括了程序计数器、虚拟机栈、本地方法栈、方法区和堆。 程序计数器&#xff1a;程序计数器是线程私有的内存&#xff0c;用来记住…

vue:组件使用v-model实现2个组件间的数据双向绑定

一、需要实现的需求&#xff1a; 子组件输入框的数据发生改变&#xff0c;父组件的数据跟着实时改变&#xff1b; 父组件的数据发生改变&#xff0c;子组件的数据跟着实时改变。 二、实现思路&#xff1a; 1、&#xff08;1&#xff09;在父组件引入子组件。&#xff08;2&…

CAN总线要点总结(CAN2.0A/B)

个人博客原文链接&#xff1a;CAN总线要点总结&#xff08;CAN2.0A/B&#xff09; 前言 工作也有几年了&#xff0c;在项目中也接触过几次CAN总线&#xff0c;但总是止步于会用即可&#xff0c;对于很多细节上的东西有时还是稀里糊涂的状态&#xff0c;这几天正好有点时间&am…

【亲测有效】pycharm不显示软件包

http://pypi.hustunique.com/ https://pypi.mirrors.ustc.edu.cn/ http://pypi.tuna.tsinghua.edu.cn/simple/ http://mirrors.aliyun.com/pypi/simple/ http://pypi.douban.com/simple/2023.5.13 亲测有效

单点登录系统:登录,登出,拦截器

什么是单点登录&#xff1f; 单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。 假设一个企业…

贪心算法(无规则)

目录 1.easy1.455. 分发饼干2.1005. K 次取反后最大化的数组和3.860. 柠檬水找零 2.medium1.序列问题1.376. 摆动序列2.738. 单调递增的数字 2.贪心解决股票问题1.122. 买卖股票的最佳时机 II 3.两个维度权衡问题1.135. 分发糖果*2.406. 根据身高重建队列(linklist&#xff0c;…