WPF学习(2)--类与类的继承2-在窗口的实现

一、代码分析

1.Animal.cs

1.1 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AnimalNamespace
{
    public class Animal
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public Animal (string name,int age)
        {
           Name = name;
           Age = age;
        }
        public virtual string 吃饭()
        {
            return "我要吃饭";
        }

        public virtual string Makesound()
        {
            return "animal sound";
        }

        public override string ToString()
        {
            return $"{Name} (Age:{Age})";
        }
    }
}

1.2 代码分析

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

解释:这些 using 指令用于引入命名空间,允许你使用这些命名空间中定义的类和方法。System 包含基本的系统功能,Collections.Generic 提供泛型集合类,Linq 用于查询操作,Text 提供处理文本的类,Threading.Tasks 提供并行编程类。

namespace AnimalNamespace
{

解释:定义一个命名空间 AnimalNamespace,用于组织代码并避免命名冲突。在这个命名空间内定义的所有类和方法都属于这个命名空间。

    public class Animal
    {

解释:定义一个公共类 Animalpublic 关键字表示这个类可以被其他命名空间中的代码访问。

        public string Name { get; set; }

解释:定义一个公共属性 Namestring 是数据类型,表示这个属性存储字符串。{ get; set; } 是属性访问器,表示这个属性可以被读取和写入。

        public int Age { get; set; }

解释:定义一个公共属性 Ageint 是数据类型,表示这个属性存储整数。{ get; set; } 同样表示这个属性可以被读取和写入。

        public Animal(string name, int age)
        {
           Name = name;
           Age = age;
        }

解释:定义一个构造函数 Animal。构造函数是一个特殊的方法,在创建类的实例时调用。public 关键字表示这个构造函数可以被其他代码调用。参数 string nameint age 用于初始化 NameAge 属性。

        public virtual string 吃饭()
        {
            return "我要吃饭";
        }

解释:定义一个公共的虚方法 吃饭,返回类型为 stringvirtual 关键字表示这个方法可以在派生类中被重写。方法体返回一个字符串 "我要吃饭"

        public virtual string Makesound()
        {
            return "animal sound";
        }

解释:定义另一个公共的虚方法 Makesound,返回类型为 string。方法体返回一个字符串 "animal sound"

        public override string ToString()
        {
            return $"{Name} (Age:{Age})";
        }

解释:重写基类 ObjectToString 方法。override 关键字表示这是一个重写的方法。方法体返回一个格式化的字符串,包含 NameAge 属性的值。$"{Name} (Age:{Age})" 是 C# 6.0 引入的字符串插值语法,允许在字符串中嵌入表达式。

2.DOG.cs

2.1 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AnimalNamespace
{
    public class Dog:Animal
    {
        public Dog(string name, int age) : base(name, age) { }

        public override string Makesound()
        {
            return "汪汪!";
        }
        public override string 吃饭()
        {
            return "我要啃骨头";
        }
    }
}

2.2 代码解释

    public class Dog : Animal
    {

解释:定义一个公共类 Dog,它继承自 Animal 类。public 关键字表示这个类可以被其他命名空间中的代码访问。: 表示继承关系,Dog 类继承自 Animal 类,意味着 Dog 类将具有 Animal 类的所有属性和方法。

        public Dog(string name, int age) : base(name, age) { }

解释:定义一个构造函数 Dog,它接受两个参数 nameage,并将它们传递给基类 Animal 的构造函数。base(name, age) 调用基类的构造函数以初始化继承自基类的 NameAge 属性。

        public override string Makesound()
        {
            return "汪汪!";
        }

解释:重写基类 Animal 的虚方法 Makesoundoverride 关键字表示这是一个重写的方法。这个方法返回一个字符串 "汪汪!"

        public override string 吃饭()
        {
            return "我要啃骨头";
        }

解释:重写基类 Animal 的虚方法 吃饭。这个方法返回一个字符串 "我要啃骨头"

3.CAT.cs

3.1 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AnimalNamespace
{
    public class Cat:Animal
    {
        public Cat(string Name, int age):base(Name, age){ }

        public override string Makesound()
        {
            return "喵喵";
        }
    }
}

3.2 代码解释

同DOG.cs

4.MainWindow.xaml.cs

4.1 代码

using System.ComponentModel;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using AnimalNamespace;

namespace WpfApp2
{

    public partial class MainWindow : Window
    {

        List<Animal> Zoo;
        private 我的实验 MyText;
        public MainWindow()
        {
            InitializeComponent();
            Zoo = new List<Animal>();
            MyText=new 我的实验();
            MyText.显示串 = "";
            DataContext = new { 我的实验 = MyText };
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Dog x = new Dog("dog" + DateTime.Now.Second.ToString(), DateTime.Now.Second);
            Zoo.Add(x);
            
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Cat x = new Cat("cat" + DateTime.Now.Second.ToString(), DateTime.Now.Second);
            Zoo.Add(x);
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            string 叫声 = "";
            foreach (Animal animal in Zoo)
            {
                if (animal != null)
                {
                    叫声+=animal .Name +":"+ animal.Makesound()+ ":"+animal.吃饭();
                    叫声 += Environment.NewLine;
                }
            }
            MyText.显示串 = 叫声;

        }
    }

    public class 我的实验 : INotifyPropertyChanged
    {

        private string _显示串;
        public string 显示串
        {
            get { return _显示串; }
            set
            {
                _显示串 = value;
                OnPropertyChanged("显示串");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

4.2 代码解释

    public partial class MainWindow : Window
    {

解释:定义一个公共的部分类 MainWindow,继承自 Window 类。这个类是 WPF 应用程序的主窗口。

        List<Animal> Zoo;
        private 我的实验 MyText;

解释:定义一个 Zoo 列表,用于存储 Animal 类的实例。定义一个私有字段 MyText,类型为 我的实验,用于数据绑定。

        public MainWindow()
        {
            InitializeComponent();
            Zoo = new List<Animal>();
            MyText = new 我的实验();
            MyText.显示串 = "";
            DataContext = new { 我的实验 = MyText };
        }

解释:定义 MainWindow 的构造函数。

  • InitializeComponent():初始化组件,加载 XAML 中定义的 UI 元素。
  • Zoo = new List<Animal>():初始化 Zoo 列表。
  • MyText = new 我的实验():初始化 MyText 实例。
  • MyText.显示串 = "":将 MyText显示串 属性初始化为空字符串。
  • DataContext = new { 我的实验 = MyText }:设置数据上下文,用于数据绑定。
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Dog x = new Dog("dog" + DateTime.Now.Second.ToString(), DateTime.Now.Second);
            Zoo.Add(x);
        }

解释:定义一个按钮点击事件处理方法 Button_Click

  • Dog x = new Dog("dog" + DateTime.Now.Second.ToString(), DateTime.Now.Second):创建一个新的 Dog 实例,名字包括当前秒数。
  • Zoo.Add(x):将新创建的 Dog 实例添加到 Zoo 列表中。
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Cat x = new Cat("cat" + DateTime.Now.Second.ToString(), DateTime.Now.Second);
            Zoo.Add(x);
        }

解释:定义另一个按钮点击事件处理方法 Button_Click_1

  • Cat x = new Cat("cat" + DateTime.Now.Second.ToString(), DateTime.Now.Second):创建一个新的 Cat 实例,名字包括当前秒数。
  • Zoo.Add(x):将新创建的 Cat 实例添加到 Zoo 列表中。
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            string 叫声 = "";
            foreach (Animal animal in Zoo)
            {
                if (animal != null)
                {
                    叫声 += animal.Name + ":" + animal.Makesound() + ":" + animal.吃饭();
                    叫声 += Environment.NewLine;
                }
            }
            MyText.显示串 = 叫声;
        }

解释:定义第三个按钮点击事件处理方法 Button_Click_2

  • string 叫声 = "":初始化一个空字符串 叫声
  • foreach (Animal animal in Zoo):遍历 Zoo 列表中的每个 Animal 实例。
  • if (animal != null):检查 animal 是否不为 null
  • 叫声 += animal.Name + ":" + animal.Makesound() + ":" + animal.吃饭():将 animal 的名字、叫声和吃饭行为添加到 叫声 字符串中。
  • 叫声 += Environment.NewLine:添加换行符。
  • MyText.显示串 = 叫声:更新 MyText显示串 属性。
    public class 我的实验 : INotifyPropertyChanged
    {

解释:定义一个公共类 我的实验,实现 INotifyPropertyChanged 接口。这个接口用于通知属性值的更改。

        private string _显示串;
        public string 显示串
        {
            get { return _显示串; }
            set
            {
                _显示串 = value;
                OnPropertyChanged("显示串");
            }
        }

解释:定义一个私有字段 _显示串 和一个公共属性 显示串

  • get { return _显示串; }:返回 _显示串 的值。
  • set { _显示串 = value; OnPropertyChanged("显示串"); }:设置 _显示串 的值,并调用 OnPropertyChanged("显示串") 方法通知属性值的更改。
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

解释

  • public event PropertyChangedEventHandler PropertyChanged:定义一个 PropertyChanged 事件,用于通知属性值的更改。
  • protected virtual void OnPropertyChanged(string propertyName):定义一个受保护的虚方法 OnPropertyChanged,用于触发 PropertyChanged 事件。
  • PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)):如果 PropertyChanged 事件不为空,则触发该事件,并传递 propertyName 参数。

5.MainWindow.xaml

5.1 代码

<Window x:Class="WpfApp2.MainWindow"
        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:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Grid>
        <Button Content="DOG" HorizontalAlignment="Left" Height="67" Margin="71,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click"/>
        <Button Content="CAT" HorizontalAlignment="Left" Height="67" Margin="212,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_1"/>
        <Button Content="MAKESOUND" HorizontalAlignment="Left" Height="67" Margin="355,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_2"/>
        <TextBlock x:Name="OutputTextBlock" HorizontalAlignment="Left" Height="183" Margin="71,140,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="404" FontSize="16"
             Text="{Binding 我的实验.显示串}"  />
    </Grid>
</Window>

5.2 代码解释

<Window x:Class="WpfApp2.MainWindow"
        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:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

解释

  • <Window> 标签定义了一个 WPF 窗口。
  • x:Class="WpfApp2.MainWindow":指定这个窗口的关联类是 WpfApp2.MainWindow
  • xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation":定义 XAML 的默认命名空间,用于 WPF 控件。
  • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml":定义 XAML 的 X 命名空间,用于 XAML 语言功能。
  • xmlns:d="http://schemas.microsoft.com/expression/blend/2008":定义设计时支持的命名空间。
  • xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006":定义标记兼容性的命名空间。
  • xmlns:local="clr-namespace:WpfApp2":定义本地命名空间 WpfApp2,用于引用同一个命名空间内的类型。
  • mc:Ignorable="d":指示设计时命名空间中的内容在运行时可以忽略。
  • Title="MainWindow":设置窗口的标题为 "MainWindow"。
  • Height="450"Width="800":设置窗口的高度为 450 像素,宽度为 800 像素。
    <Grid>
        <Button Content="DOG" HorizontalAlignment="Left" Height="67" Margin="71,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click"/>
        <Button Content="CAT" HorizontalAlignment="Left" Height="67" Margin="212,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_1"/>
        <Button Content="MAKESOUND" HorizontalAlignment="Left" Height="67" Margin="355,49,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click_2"/>
        <TextBlock x:Name="OutputTextBlock" HorizontalAlignment="Left" Height="183" Margin="71,140,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="404" FontSize="16"
             Text="{Binding 我的实验.显示串}"  />
    </Grid>
</Window>

解释

  • <Grid>:定义一个网格布局容器,用于组织其子元素。

  • <Button>:定义一个按钮控件。

    • Content="DOG":按钮上的文本为 "DOG"。
    • HorizontalAlignment="Left":按钮水平左对齐。
    • Height="67":按钮高度为 67 像素。
    • Margin="71,49,0,0":按钮的外边距,分别是左、上、右、下(左边距 71 像素,上边距 49 像素)。
    • VerticalAlignment="Top":按钮垂直顶部对齐。
    • Width="120":按钮宽度为 120 像素。
    • Click="Button_Click":单击按钮时调用 Button_Click 方法。
  • 第二个 <Button> 控件类似,只是内容为 "CAT",外边距不同(左边距 212 像素),单击事件处理方法为 Button_Click_1

  • 第三个 <Button> 控件内容为 "MAKESOUND",外边距不同(左边距 355 像素),单击事件处理方法为 Button_Click_2

  • <TextBlock>:定义一个文本块控件,用于显示文本。

    • x:Name="OutputTextBlock":设置控件的名称为 OutputTextBlock
    • HorizontalAlignment="Left":文本块水平左对齐。
    • Height="183":文本块高度为 183 像素。
    • Margin="71,140,0,0":文本块的外边距,分别是左、上、右、下(左边距 71 像素,上边距 140 像素)。
    • TextWrapping="Wrap":文本自动换行。
    • VerticalAlignment="Top":文本块垂直顶部对齐。
    • Width="404":文本块宽度为 404 像素。
    • FontSize="16":文本块的字体大小为 16 像素。
    • Text="{Binding 我的实验.显示串}":通过数据绑定将 我的实验 类的 显示串 属性绑定到文本块的文本属性。

二、实验结果

在这个过程中我依次点击了2次DOG、1次CAT、1次DOG、1次CAT,最后点击MAKESOUND使它们发出相同的行为,结果如下。

总结

这个项目通过 WPF (Windows Presentation Foundation) 实现了一个简单的动物管理应用程序,具有以下功能:

  1. 界面布局

    • 主窗口包含三个按钮和一个文本块,用于用户交互和显示结果。
  2. 按钮功能

    • “DOG” 按钮:点击后创建一个新的 Dog 对象,并将其添加到动物列表 Zoo 中。
    • “CAT” 按钮:点击后创建一个新的 Cat 对象,并将其添加到动物列表 Zoo 中。
    • “MAKESOUND” 按钮:点击后遍历 Zoo 列表,获取所有动物的名字、叫声和吃饭行为,并将这些信息显示在文本块中。
  3. 数据绑定

    • 使用 INotifyPropertyChanged 接口和数据绑定机制,实现数据的动态更新。具体来说,我的实验 类包含一个 显示串 属性,当其值发生变化时,通过数据绑定更新显示在界面上的文本块。

具体实现细节

  1. Animal 类及其派生类

    • Animal 类是一个基类,包含 NameAge 属性,以及虚方法 Makesound()吃饭()
    • Dog 类和 Cat 类继承自 Animal 类,分别重写了 Makesound()吃饭() 方法,提供各自特有的实现。
  2. MainWindow 类

    • 定义了主窗口的构造函数,初始化组件、动物列表 Zoo我的实验 类的实例。
    • 定义了三个按钮点击事件处理方法,分别用于添加 DogCat 对象,以及显示动物的名字、叫声和吃饭行为。
  3. 我的实验类

    • 实现 INotifyPropertyChanged 接口,包含一个 显示串 属性,当其值改变时,触发 PropertyChanged 事件通知界面更新。
  4. XAML 布局

    • 使用 XAML 定义主窗口布局,包括三个按钮和一个文本块。
    • 使用数据绑定机制,将 我的实验 类的 显示串 属性绑定到文本块的 Text 属性,实现动态数据展示。

项目功能总结

  • 添加动物:用户可以通过点击按钮向动物列表中添加 DogCat 对象,每个对象的名字包含当前秒数。
  • 显示动物信息:点击“MAKESOUND”按钮后,遍历动物列表,显示每个动物的名字、叫声和吃饭行为。
  • 数据绑定与动态更新:通过数据绑定机制和 INotifyPropertyChanged 接口,确保界面上的文本块能动态显示最新的动物信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【乐吾乐2D可视化组态编辑器】条件变化,触发告警动画

条件触发告警动画 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ 如图所示&#xff0c;左侧文本图元数值一直在变化&#xff0c;当数值大于等于50的时候&#xff0c;右侧矩形图元执行告警动画&#xff0c;当数值小于50的时候&#xff0c;右侧图元恢复正常。…

Blender雕刻建模_UV展开

UV展开的标准&#xff1a;展平&#xff0c;不重叠&#xff0c;均匀展开 ZenUV插件 切到边模式 -Mark&#xff0c;标记缝合边 -Unmark&#xff0c;取消标记 -Unmark All&#xff0c;全部取消标记 -Mirror Seams&#xff0c;镜像缝合边 -Zen Unwrap&#xff0c;全部展开 纹…

Python私教张大鹏 Vue3整合AntDesignVue之Checkbox 多选框

何时使用 在一组可选项中进行多项选择时&#xff1b; 单独使用可以表示两种状态之间的切换&#xff0c;和 switch 类似。区别在于切换 switch 会直接触发状态改变&#xff0c;而 checkbox 一般用于状态标记&#xff0c;需要和提交操作配合。 案例&#xff1a;多选框组件 核心…

Django中使用下拉列表过滤HTML表格数据

在Django中&#xff0c;你可以使用下拉列表&#xff08;即选择框&#xff09;来过滤HTML表格中的数据。这通常涉及两个主要步骤&#xff1a;创建过滤表单和处理过滤逻辑。 创建过滤表单 首先&#xff0c;你需要创建一个表单&#xff0c;用于接收用户选择的过滤条件。这个表单可…

Laravel 6 - 第十九章 模型文件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

基于JSP的超市管理系统

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP MyBatis 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 员工管理界面图 管…

香港户口需要什么条件?有学历要求吗?最新香港落户途径详解!

香港户口需要什么条件&#xff1f;有学历要求吗&#xff1f;最新香港落户途径详解&#xff01; 由于香港放开“落户”窗口&#xff0c;想去香港发展或者想拿香港身份的朋友都想抓住这个机会赶紧申请。 只是&#xff0c;香港户口办理是有条件的&#xff0c;而且有学历要求&…

方法分享 |公网IP怎么指定非433端口实现https访问

公网IP可以通过指定非443端口实现HTTPS访问。在网络配置中&#xff0c;虽然HTTPS协议默认使用443端口&#xff0c;但没有规定不能在其他端口上实施HTTPS服务。使用非标准端口进行HTTPS通信需要正确配置服务器和SSL证书&#xff0c;并确保客户端能够连接到指定的端口。下面说明如…

tracetcp下载 安装 使用 网络工具 windows trace工具 tcp协议

省流 Tracetcp是一个类似于Tracert的工具&#xff0c;使用如下&#xff1a; 1. 安装winpcap &#xff0c; 下载链接&#xff1a;WinPcap Download 2.下载tracetcp软件&#xff0c;下载链接&#xff1a; https://github.com/0xcafed00d/tracetcp/releases 命令&#xff1a;…

工业交换机的供电功率配置

在工业领域中&#xff0c;交换机作为网络设备中的重要组成部分&#xff0c;其供电功率配置必不可少。工业交换机的供电功率配置不仅关系到设备的稳定运行&#xff0c;还直接影响到整个工业生产系统的效率和安全性。因此&#xff0c;在选择工业交换机时&#xff0c;必须对供电功…

WPF视频学习-简单应用篇图书馆程序(一)

1.登录界面和主界面跳转 先把登录界面分为三行《Grid》 先添加两行&#xff1a; <Grid><!--//分三行&#xff0c;行排列--><Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition Height"auto"/><RowDef…

GD32 MCU超频后无法再次下载程序的解决办法

我们知道&#xff0c;MCU的系统时钟主频就相当于人的心跳或脉搏&#xff0c;为所有的工作单元提供时间基数&#xff0c;所以一般在程序最开始的地方都需要进行主频配置。 GD32固件库中提供了多种宏定义&#xff0c;可以很方便的将系统时钟配置为想要的频率。 GD32固件库中所用…

[C#]winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法

【训练源码】 https://github.com/albrateanu/LYT-Net 【参考源码】 https://github.com/hpc203/Low-Light-Image-Enhancement-onnxrun 【算法介绍】 一、研究动机 1.研究目标 研究的目标是提出一种轻量级的基于YUV Transformer 的网络&#xff08;LYT-Net&#xff09;&…

NVIDIA DeepStream SDK 说明及链接

NVIDIA DeepStream SDK DeepStream 的多平台支持为您提供了一种更快、更简单的方式来开发视觉AI应用程序和服务。您甚至可以在本地、边缘和云中部署它们&#xff0c;只需单击一个按钮。 开始 在Launchpad上试用 什么是 NVIDIA DeepStream&#xff1f; NVIDIA 的 DeepStream …

没有登录微信就不会截图了?这个方法你一定要学会

前言 前段时间小白在指导小伙伴的时候&#xff0c;发现他在电脑没有登录微信的时候就不会截图了。 这个可就难倒他了…… 所以他登录了个微信&#xff0c;然后截了张图&#xff0c;接着把微信退出了。这人可真是谨慎啊&#xff5e; 所以&#xff0c;小伙伴在使用电脑的时候…

linux shell查看24h内修改的文件

执行命令&#xff1a; find /path -type f -mtime 0

【JMeter接口测试工具】第二节.JMeter项目实战(下)【实战篇】

文章目录 前言一、接口弱压力测试二、高并发、高频率三、生成图形化报告总结 前言 一、接口弱压力测试 场景举例&#xff1a; 场景1:模拟半小时之内 1000 个用户访问服务器资源&#xff0c;要求平均响应时间在3000ms内&#xff0c;且错误率为0 实现步骤&#xff1a; 步骤一&am…

创新共享经济:探索Web3对新商业模式的启迪

随着Web3时代的到来&#xff0c;我们正在见证着一场数字经济的革命。在这个革命中&#xff0c;区块链技术作为一种基础设施&#xff0c;正为创新的共享经济模式提供新的契机。本文将深入探讨Web3对新商业模式的启迪&#xff0c;以及如何借助区块链技术构建更加开放、公平、高效…

go context 源码刨析(一)

Context 上下文context.Context 是用来设置截止时间、同步信号&#xff0c;传递请求相关值的结构体。 context.Context 定义了四个需要实现的方法&#xff1a; Deadline: 返回 context.Context 被取消的时间。Done: 返回一个 Channel&#xff0c;这个 Channel 会在当前工作完…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战九(整体布局02)

使用el-menu和el-sub-menu及el-menu-item导航 src/layout目录下新增components目录&#xff0c;components目录下新增PageSidebar.vue 代码基本思想为&#xff1a;读取router中定义的routes数组&#xff0c;渲染绑定到el-menu。 el-menu和el-sub-menu及el-menu-item的区别&…