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{
解释:定义一个公共类 Animal。public 关键字表示这个类可以被其他命名空间中的代码访问。
public string Name { get; set; }
解释:定义一个公共属性 Name。string 是数据类型,表示这个属性存储字符串。{ get; set; } 是属性访问器,表示这个属性可以被读取和写入。
public int Age { get; set; }
解释:定义一个公共属性 Age。int 是数据类型,表示这个属性存储整数。{ get; set; } 同样表示这个属性可以被读取和写入。
public Animal(string name, int age){Name = name;Age = age;}
解释:定义一个构造函数 Animal。构造函数是一个特殊的方法,在创建类的实例时调用。public 关键字表示这个构造函数可以被其他代码调用。参数 string name 和 int age 用于初始化 Name 和 Age 属性。
public virtual string 吃饭(){return "我要吃饭";}
解释:定义一个公共的虚方法 吃饭,返回类型为 string。virtual 关键字表示这个方法可以在派生类中被重写。方法体返回一个字符串 "我要吃饭"。
public virtual string Makesound(){return "animal sound";}
解释:定义另一个公共的虚方法 Makesound,返回类型为 string。方法体返回一个字符串 "animal sound"。
public override string ToString(){return $"{Name} (Age:{Age})";}
解释:重写基类 Object 的 ToString 方法。override 关键字表示这是一个重写的方法。方法体返回一个格式化的字符串,包含 Name 和 Age 属性的值。$"{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,它接受两个参数 name 和 age,并将它们传递给基类 Animal 的构造函数。base(name, age) 调用基类的构造函数以初始化继承自基类的 Name 和 Age 属性。
public override string Makesound(){return "汪汪!";}
解释:重写基类 Animal 的虚方法 Makesound。override 关键字表示这是一个重写的方法。这个方法返回一个字符串 "汪汪!"。
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) 实现了一个简单的动物管理应用程序,具有以下功能:
-
界面布局:
- 主窗口包含三个按钮和一个文本块,用于用户交互和显示结果。
-
按钮功能:
- “DOG” 按钮:点击后创建一个新的
Dog对象,并将其添加到动物列表Zoo中。 - “CAT” 按钮:点击后创建一个新的
Cat对象,并将其添加到动物列表Zoo中。 - “MAKESOUND” 按钮:点击后遍历
Zoo列表,获取所有动物的名字、叫声和吃饭行为,并将这些信息显示在文本块中。
- “DOG” 按钮:点击后创建一个新的
-
数据绑定:
- 使用
INotifyPropertyChanged接口和数据绑定机制,实现数据的动态更新。具体来说,我的实验类包含一个显示串属性,当其值发生变化时,通过数据绑定更新显示在界面上的文本块。
- 使用
具体实现细节
-
Animal 类及其派生类:
Animal类是一个基类,包含Name和Age属性,以及虚方法Makesound()和吃饭()。Dog类和Cat类继承自Animal类,分别重写了Makesound()和吃饭()方法,提供各自特有的实现。
-
MainWindow 类:
- 定义了主窗口的构造函数,初始化组件、动物列表
Zoo和我的实验类的实例。 - 定义了三个按钮点击事件处理方法,分别用于添加
Dog和Cat对象,以及显示动物的名字、叫声和吃饭行为。
- 定义了主窗口的构造函数,初始化组件、动物列表
-
我的实验类:
- 实现
INotifyPropertyChanged接口,包含一个显示串属性,当其值改变时,触发PropertyChanged事件通知界面更新。
- 实现
-
XAML 布局:
- 使用 XAML 定义主窗口布局,包括三个按钮和一个文本块。
- 使用数据绑定机制,将
我的实验类的显示串属性绑定到文本块的Text属性,实现动态数据展示。
项目功能总结
- 添加动物:用户可以通过点击按钮向动物列表中添加
Dog和Cat对象,每个对象的名字包含当前秒数。 - 显示动物信息:点击“MAKESOUND”按钮后,遍历动物列表,显示每个动物的名字、叫声和吃饭行为。
- 数据绑定与动态更新:通过数据绑定机制和
INotifyPropertyChanged接口,确保界面上的文本块能动态显示最新的动物信息。
相关文章:
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…...
Docker面试整理-Docker容器与虚拟机比较,安全性如何?
Docker 容器与传统的虚拟机(VM)在许多方面都不同,其中之一是安全性。每种技术都有其特定的安全特点和潜在的风险。了解这些差异可以帮助你做出更好的决策,适当地使用它们来保障系统安全。 容器与虚拟机的安全性对比: 1. 隔离性: ● 虚拟机:提供较高的隔离性。每个虚拟机…...
Python私教张大鹏 Vue3整合AntDesignVue之Checkbox 多选框
何时使用 在一组可选项中进行多项选择时; 单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。 案例:多选框组件 核心…...
flutter 导出iOS问题3
更新flutter版本后 macminihaomacMiniaodeMini SocialIM % flutter --version Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git Framework • revision 4d9e56e694 (1 year, 2 months ago) • 2023-04-17 21:47:46 -0400 Engine • revision 1a6…...
用winform开发一个笔记本电脑是否在充电的小工具
笔记本充电状态有两种监测方式,一种是主动查询,另一种是注册充电状态变化事件 1,先说主动监控吧,建立一个线程,反复查询SystemInformation.PowerStatus.PowerLineStatus private void readPower(){while (true){this.…...
构建汛期智慧水利新生态:EasyCVR视频汇聚监控综合管理方案解析
一、项目背景与目标 随着我国水利事业的不断发展,水利设施的管理与维护工作愈发重要。随着夏季汛期的到来,水利管理工作面临着巨大的挑战。为确保水利设施的安全运行,及时应对可能出现的汛情,建设一套高效、智能的视频监控可视化…...
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
在Linux系统中,当你删除了HADOOP_HOME和JAVA_HOME环境变量后,它们依然指向旧目录,可能是因为这些变量在其他地方被设置了。以下是一些常见的原因和解决方法: 系统级配置文件: 检查系统级的环境变量配置文件,如/etc/profile、/etc/bashrc、/etc/environment,以及/etc/pro…...
C++中的结构体——结构体案例1_2
案例描述 学校正在做毕设项目,每位老师指导5名学生,总共有3名老师,需求如下 设计学生和老师的结构体,其中在老师的结构体中,有老师的姓名和一个存放5名学生的数组作为成员 学生的成员有姓名、考试分数,创…...
python接入汇率换算工具提高网站/小程序日活度
实时汇率换算工具可以帮助用户快速准确地计算不同货币之间最新的汇兑比例。无论是金融从业者或者是人们日常生活出行都会使用到,广泛用于国际结算、银行汇率查询应用、开展跨国贸易、投资等参考场景。 我们可以通过在网站或者小程序中接入这样一个小工具࿰…...
Ubuntu 网络重置
在 Ubuntu 中,如果遇到可以联网但是无法打开许多网页的问题,这可能是 DNS 设置不正确或者网络配置有误引起的。重置网络配置到默认设置可以帮助解决这类问题。以下是几种方法来重置 Ubuntu 的网络配置: ### 1. 重启网络服务 有时候简单地重启…...
防护DDoS攻击出现的常见误区
很多运维人员会通过自己的一些方式来缓解DDoS攻击,但效果却并不明显,今天蔡蔡就来说说防护DDoS攻击最容易出现哪些误区? 误区一:通过CDN防御DDoS攻击 经常有人认为高防IP这么贵,为什么不用几百块的CDN来预防DDoS&…...
入门 Axure RP 9 | 原型设计基础教程
选择正确的原型设计工具并非易事,Axure RP 9能够快速完成原型设计。原型设计是一种经过时间考验的方法,可以将你的设计快速放置在用户的设备并交到他们手中。替代Axure RP 9的原型设计工具即时设计是一个完全集成的协同设计工具,无需使用不同…...
一线大厂都在高薪抢AI产品经理?
哈喽,大家下午好呀~ 当AI的风吹到产品届,唯叹相见恨晚! 作为一名产品经理,日常写调研、需求分析、产品设计、项目管理、数据分析……每一项工作都需要投入大量的时间和精力。 但用上AI后,你会发现写个需…...
html实现粘贴excel数据,在页面表格中复制
录入数据时,有时候需要把excel中的数据一条条粘贴到页面中,当数据量过多时,这种操作很令人崩溃。本篇文章实现了从excel复制好多行数据后,可在页面粘贴的功能 具体实现代码 <!DOCTYPE html> <html lang"en"> <head…...
WPF视频学习-简单应用篇图书馆程序(一)
1.登录界面和主界面跳转 先把登录界面分为三行《Grid》 先添加两行: <Grid><!--//分三行,行排列--><Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition Height"auto"/><RowDef…...
Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码
Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问,并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…...
Mysql查询分析工具Explain的使用
一、前言 作为一名合格的开发人员,与数据库打交道是必不可少的,尤其是在业务规模和数据体量大规模增长的条件下,应用系统大部分请求读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的&…...
OpenCV中的圆形标靶检测——findCirclesGrid()(一)
如前所述,OpenCV中可以使用findCirclesGrid()实现圆形标靶的检测,该函数的计算流程分为1)斑点形状的检测,和2)基于规则的斑点形状的过滤与定位。第一步将类似圆斑形状的区域检测出来,但可能存在一些误检测的噪声,第二步则利用圆斑的分布规则(M*N排列)进行进一步的过滤…...
2025广州眼博会,2025广东省眼睛健康及眼科产业展览会
广州全国眼睛健康产业博览会暨眼科医学大会,将于2025年4月在广州南丰国际会展中心盛大举办; 广州2025全国眼睛健康产业博览会暨眼科医学大会(全国眼博会) National Eye Health Industry Expo and Ophthalmic Medicine Conference…...
Vue3 自定义渲染器 API createRenderer()(七)
createRenderer() createRenderer() 是一个高级 API,它允许你创建自定义的渲染器。这个 API 主要是为了支持 Vue 的非 DOM 渲染目标,如 WebGL、Canvas、Web Workers、自定义 DOM 实现等。在实际使用中,自定义渲染器是一个复杂的任务…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
