【Java多态】:灵活编程的核心
🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:【Java】内容概括
【前言】
在Java面向对象编程的世界中,多(Polymorphism) 是一个核心概念,它赋予了程序强大的灵活性和扩展性。无论是编写大型企业级应用,还是开发小型工具,多态的合理运用都能让代码更加简洁、优雅且易于维护。本文将深入探讨Java多态的概念、实现方式,并通过丰富的代码示例、图片和表格,带您全面掌握这一重要特性。
文章目录:
- 一、什么是多态?
- 1.多态实现条件
- 2.代码示例
- 二、重写
- 1.什么是重写
- 2.重写与重载的区别
- 三、向上转型和向下转型
- 1.向上转型
- 2.向下转型
- 四、 多态的优缺点
- 1.优点
- 2.缺点
- 五、总结
一、什么是多态?
多态
字面意思就是多种状态,在Java中,多态
就是指不同类型的对象去完成某种行为时的不同状态
在这里举一个例子:我的家里同时养了一只猫和一只狗(
两个对象
),吃饭(同一行为
)时,猫吃的是一条鱼,狗吃的是一根骨头(两种状态
)
1.多态实现条件
- 必须在
继承
体系下- 子类要对父类方法进行
重写
- 通过父类的引用
调用
父类重写的方法
2.代码示例
还是举上面那个例子:猫和狗吃饭,一个吃的是鱼,一个吃的是骨头
父类
public class Animal {public void eat(){System.out.println("吃饭");}
}
Dog子类
public class Dog extends Animal{@Overridepublic void eat(){System.out.println("啃骨头");}
}
Cat子类
public class Cat extends Animal {@Overridepublic void eat(){System.out.println("吃一条鱼");}
}
public class Test {public static void main(String[] args) {Animal animal = new Dog();Animal animal1 = new Cat();animal.eat();animal1.eat();}
}
执行结果:
在这个程序中,
Animal
是父类,Dog
和Cat
是两个子类,这就确定了它的继承
关系,然后子类也对父类的eat方法进行了重写
,在运行时,通过父类的引用调用
了重写的方法,而执行不同的状态,这就是多态
。
二、重写
1.什么是重写
重写(override)
:也称为覆盖。重写是⼦类对⽗类⾮静态
、⾮private修饰
,⾮final修饰
,⾮构造⽅法
等的实现过程进⾏重新编写,返回值和形参都不能改变。即外壳不变,核⼼重写!重写的好处在于⼦类可以根据需要,定义特定于⾃⼰的⾏为。 也就是说⼦类能够根据需要实现⽗类的⽅法。
【重写的规则】
- 子类与父类的返回值类型,方法名(参数列表)要一致;
- 被重写的方法返回值类型可以不同,但是必须具有父子关系;
- 父类被static,private 修饰的方法,构造方法都不能被重写;
- 重写的方法可以用@Override注解来显示指定,它可以帮我们进行校验(如果你的方法名写错,就会报错)
2.重写与重载的区别
⽅法重载
是⼀个类的多态性表现⽅法重写
是⼦类与⽗类的⼀种多态性表现。
区别 | 重写 | 重载 |
---|---|---|
参数列表 | 不能修改 | 必须修改 |
返回类型 | 不能修改(除非是父子关系) | 可以修改 |
访问限定符 | 不能做更严格的限制 | 可以修改 |
静态绑定
:也称为前期绑定(早绑定),即在编译时,根据⽤⼾所传递实参类型就确定了具体调⽤那个⽅法。典型代表函数重载。动态绑定
:也称为后期绑定(晚绑定),即在编译时,不能确定⽅法的⾏为,需要等到程序运⾏时,才能 够确定具体调⽤那个类的⽅法。
三、向上转型和向下转型
向上转型
和向下转型
是面向对象编程中关于对象类型转换的两个重要概念,主要应用于继承关系中。它们分别描述了将对象从子类类型转换为父类类型,以及从父类类型转换回子类类型的过程。
1.向上转型
向上转型
是指将子类对象赋值给父类引用变量的过程。这种转换是隐式的,不需要显式地进行类型转换,因为子类继承了父类的所有属性和方法,因此子类对象可以被视为父类对象。
语法格式:父类类型 对象名=new 子类类型()
Animal animal = new Dog("旺财",10);
我们还是举上面那个例子
public class Test {public static void main(String[] args) {Animal animal = new Cat();//子类对象赋值给父类对象animal.eat();Animal animal1 = new Dog();//子类对象赋值给父类对象animal1.eat();}
}
我们将子类Dog和Cat类赋值给父类Animal中的引用变量animal,这就是
向上转型
。通过animal引用变量可以调用eat()方法,而在运行时,实际执行的是子类Dog和Cat中重写的eat()方法
2.向下转型
向下转型
是指将父类对象转换为子类类型的操作。这种转换是显式的,需要使用类型转换操作符。向下转型是不安全的,因为父类对象可能并不是子类的实例,因此在向下转型时需要进行类型检查,以避免 ClassCastException 异常。
代码示例:
public class Test {public static void main1(String[] args) {Animal animal = new Cat();//子类对象赋值给父类对象animal.eat();Animal animal1 = new Dog();//子类对象赋值给父类对象animal1.eat();if(animal instanceof Cat){//animal是否引用了Cat类型的对象Cat cat = (Cat) animal;//向下转型cat.eat();}else {System.out.println("animal not instanceof Cat");}}
}
animal 对象被向下转型为Cat类,因为animal实际指向的Cat,所以将他还原为Cat类是可以的,即向下转型。如果强制还原为Dog,就会出现下面的
报错
,因为animal1指向的Dog
所以说向下转型是不安全的,万⼀转换失败,运⾏时就会抛异常。Java中为了提⾼向下转型的安全性,引⼊了
instanceof
,如果该表达式为true,则可以安全转换
四、 多态的优缺点
1.优点
提高代码的可扩展性
多态允许在不修改现有代码的情况下扩展系统功能。通过继承和接口实现,可以轻松添加新的子类或实现类,而无需修改父类或接口的代码。例如,在一个图形绘制程序中,可以通过添加新的子类(如圆形、三角形)来扩展支持的图形类型,而无需修改现有的绘制逻辑。
增强代码的可维护性
多态将具体实现与接口分离,使得代码结构更加清晰。通过统一的接口调用不同的实现,减少了代码的重复性,降低了维护成本。例如,在支付系统中,可以通过统一的支付接口调用不同的支付方式(如支付宝、微信支付),而无需在业务逻辑中硬编码每种支付方式的具体实现。
提高代码的灵活性
多态使得程序可以在运行时动态决定调用哪个方法,从而适应不同的场景需求。例如,在游戏开发中,可以根据玩家的选择动态加载不同的角色类,而无需在代码中预先定义所有可能的角色类型。
支持代码复用
通过继承和多态,子类可以复用父类的代码,同时可以根据需要重写或扩展父类的方法。例如,在动物类中定义通用的行为(如移动、进食),子类(如猫、狗)可以复用这些行为,并根据自身特点进行扩展。
2.缺点
增加代码的复杂性
多态引入了继承和接口等概念,可能使代码结构变得更加复杂,尤其是当继承层次较深或接口实现较多时。例如,在一个复杂的系统中,可能需要跟踪多个类的继承关系,增加了理解和调试的难度。
性能开销
多态通常需要在运行时进行动态绑定,这可能导致一定的性能开销。例如,在Java中,虚方法调用需要通过虚方法表(vtable)进行查找,比直接调用静态方法稍慢。
可能导致设计过度抽象
过度使用多态可能导致设计过于抽象,增加了不必要的复杂性。例如,在一个简单的应用中,如果过度使用接口和抽象类,可能会使代码变得难以理解和维护。
继承的脆弱性
多态依赖于继承,而继承可能导致父类的修改影响所有子类。例如,如果父类的方法签名或行为发生改变,所有子类可能需要相应调整,增加了维护的难度。
难以调试
由于多态允许在运行时动态绑定方法,调试时可能难以确定实际调用的方法。例如,在一个多态调用链中,可能需要跟踪多个类的实现,增加了调试的复杂性。
五、总结
- 多态是Java面向对象编程的灵魂,它让代码具备更高的抽象层次和灵活性。通过继承和接口,我们可以将不同的实现细节封装在子类中,使用父类或接口统一管理,从而降低代码复杂度。在实际开发中,合理运用多态能够显著提升系统的可维护性和扩展性。
- 希望本文的讲解和示例能帮助您深入理解Java多态的原理与应用!如果有任何疑问,欢迎在评论区交流讨论~
相关文章:
【Java多态】:灵活编程的核心
🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 【前言】 在Java面向对象编程的世界中,多(Polymorphism) 是一个核…...
k8s容器入门(1)有状态服务 vs 无状态服务 核心区别
本质区别 维度有状态服务 (Stateful)无状态服务 (Stateless)数据存储服务内部维护持久化数据不保存客户端会话数据请求关联性后续请求依赖之前请求的状态每个请求独立处理典型示例数据库/消息队列/文件存储Web API/计算服务/负载均衡 技术实现对比 #mermaid-svg-hoKO2gnZ8Gvms…...
BERT框架:自然语言处理的革命性突破
引言 在自然语言处理(NLP)领域,2018年Google推出的BERT(Bidirectional Encoder Representations from Transformers)框架无疑是一场革命。作为基于Transformer架构的双向编码器表示模型,BERT通过预训练学习…...
基于FPGA控制电容阵列与最小反射算法的差分探头优化设计
在现代高速数字系统测试中,差分探头的信号完整性直接影响测量精度。传统探头存在阻抗失配导致的信号反射问题,本文提出一种通过FPGA动态控制电容阵列,结合最小反射算法的优化方案,可实时调整探头等效容抗,将信号反射损…...
珠宝课程小程序源码介绍
这款珠宝课程小程序源码,基于ThinkPHPFastAdminUniApp开发,功能丰富且实用。ThinkPHP提供稳定高效的后台服务,保障数据安全与处理速度;FastAdmin助力快速搭建管理后台,提升开发效率;UniApp则让小程序能多端…...
DAY33
简单的神经网络 PyTorch和cuda的安装 查看显卡信息的命令行命令(cmd中使用) cuda的检查 简单神经网络的流程 1.数据预处理(归一化、转换成张量) 2.模型的定义 1.继承nn.Module类 2.定…...
AI相关的笔记
推荐视频: https://www.bilibili.com/video/BV1aeLqzUE6L/?share_sourcecopy_web&vd_source3d0a14a267c9cbda8f2a6184dd8c564d AI Agent AI Agent(人工智能代理) AI Agent 是一种具备自主决策和执行能力的智能程序,能够像…...
Python训练营---Day33
知识点回顾: PyTorch和cuda的安装查看显卡信息的命令行命令(cmd中使用)cuda的检查简单神经网络的流程 数据预处理(归一化、转换成张量)模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义损失函数和优化器定…...
window 显示驱动开发-指定 GDI 硬件加速渲染操作
调用 DxgkDdiRenderKm 函数时,操作系统指定要通过 pRenderKmArgs 参数执行的 GDI 硬件加速呈现操作的类型。 DirectX 图形内核子系统的显示端口驱动程序 (Dxgkrnl.sys) 将 pRenderKmArgs-pCommand> 成员设置为指向包含可变大小DXGK_RENDERKM_COMMAND结构数组的命…...
什么是VR展馆?VR展馆的实用价值有哪些?
VR展馆,重塑展览体验。在数字化时代浪潮的推动下,传统的实体展馆经历前所未有的变革。作为变革的先锋,VR展馆以无限的潜力,成为展览行业的新宠。 VR展馆,即虚拟现实展馆,是基于VR(Virtual Real…...
uniapp实现H5、APP、微信小程序播放.m3u8监控视频
目录 1.APP播放.m3u8监控视频 2.H5播放.m3u8监控视频 3.微信小程序播放.m3u8监控视频 最近在写一个uniapp实现h5、app、微信小程序兼容三端的播放监控视频功能,我原本以为一套代码多处运行,但事实并非如此,h5可以运行,微信小程…...
CAD如何导出PDF?PDF如何转CAD?详细教程来了
浩辰CAD看图王是一款功能强大的CAD图纸查看与编辑工具,其核心功能之一便是支持CAD与PDF格式的互转。下面是CAD看图王输出PDF和PDF转CAD功能的详细介绍及操作步骤: 一、输出PDF功能 看图王可以将CAD图纸转换为PDF格式,是文件在不同的设备上显…...
微信小程序学习基础:从入门到精通
文章目录 第一章:微信小程序概述1.1 什么是微信小程序1.2 小程序与原生APP、H5的区别1.3 小程序的发展历程与现状 第二章:开发环境搭建2.1 注册小程序账号2.2 安装开发者工具2.3 开发者工具界面介绍2.4 第一个小程序项目 第三章:小程序框架与…...
[免费]微信小程序宠物医院管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序宠物医院管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibi…...
乘最多水的容器 | 算法 | 给定一个整数数组。有n条垂线。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
在我们日常生活中,蓄水似乎是一个极为朴素的物理行为:两堵墙之间,注入水,看谁能装得更多。可如果换个角度,从算法的视角去看这个问题,它会变得怎样?你是否意识到,这样一个简单的问题…...
英伟达有意入股 PsiQuantum,释放战略转向量子计算的重要信号
内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨浪味仙 行业动向:1800字丨5分钟阅读 “十五年太早,三十年又太晚,但如果说二十年,我想很多人都会相信。” emmmm,…...
【Ubuntu修改串口延时(Latency Timer)为1毫秒(设备拔插或系统重启后自动生效)】
Ubuntu修改串口延时Latency Timer为1毫秒-设备拔插或系统重启后自动生效 在Ubuntu系统中,串口设备的延时参数(latency_timer)可以通过udev规则永久修改。以下是完整步骤: 创建udev规则文件 sudo vim /etc/udev/rules.d/99-ftdi-low-latency.rules添加以…...
《量子计算实战》PDF下载
内容简介 在加密、科学建模、制造物流、金融建模和人工智能等领域,量子计算可以极大提升解决问题的效率。量子系统正变得越来越强大,逐渐可用于生产环境。本书介绍了量子计算的思路与应用,在简要说明与量子相关的科学原理之后,指…...
Win 系统 conda 如何配置镜像源
通过命令添加镜像源(推荐) 以 清华源 为例,依次执行以下命令: # 添加主镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main # 添加免费开源镜像源 conda config --add channels http…...
[密码学实战]使用C语言实现TCP服务端(二十九)
[密码学实战]使用C语言实现TCP服务端(二十九) 引言 TCP(传输控制协议)是互联网通信中最核心的协议之一,它提供可靠的、面向连接的数据传输服务。通过C语言的标准Socket API,开发者可以灵活地实现TCP客户端和服务端程序。本文将详细讲解TCP通信的原理,并提供完整的代码…...
打卡Day34
问题: 背景: 剩余时长 总时长 - 必须的计算时长(3秒)。记录间隔、记录次数和剩余时长的关系需要进一步分析。 数据观察: 当总epoch为20000时,不同记录间隔对应的记录次数和剩余时长如下: 记…...
谷歌开源医疗领域AI语言模型速递:medgemma-27b-text-it
一、模型概述 MedGemma 是由谷歌开发的一个医疗领域 AI 模型系列,基于 Gemma 3 架构,旨在加速医疗保健相关 AI 应用的开发。该模型系列包含两个主要变体:4B 多模态版本(支持文本和图像理解)以及 27B 纯文本版本&#…...
C++ JSON解析技术详解
一、JSON基础与解析流程 1.1 JSON数据结构 JSON包含两种核心结构(): 对象:{}包裹的键值对集合数组:[]包裹的值序列 1.2 解析流程 flowchart TDA[加载JSON数据] --> B{数据来源}B -->|字符串…...
多维应用场景的落地实践的智慧园区开源了
智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界…...
第三次中医知识问答模型微调
本次参数 llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path /home/qhyz/zxy/LLaMA-Factory/model \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template deepseek3 \ --flash_attn fa2 \ --dataset_dir data \ --dataset …...
基于SpringBoot的美食分享平台设计与开发(Vue MySQL)
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
开闭原则 (Open/Closed Principle, OCP)
定义:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展 问题由来:任何软件都需要面临一个很重要的问题,即它们的需求会随时间的推移而发生变化。因为变化,升级和维护等原因&…...
在 “Linux 9“ 系统快速安装配置RabbitMQ
这是在 “Linux 9” 系统(如 RHEL 9、AlmaLinux 9、Rocky Linux 9)上安装和配置 RabbitMQ 的中文指南。 前提条件: 你拥有 sudo 权限。你的系统已连接到互联网。firewalld 是你当前活动的防火墙(在基于 RHEL 的系统上很常见&…...
【brpc】安装与使用
brpc安装与使用 1. brpc是什么2. 安装3. 类与接口介绍3.1 日志输出类与接口3.2 protobuf 类与接口3.3 服务端类与接口3.4 客户端类与接口 4. 使用4.1 同步调用4.2 异步调用 1. brpc是什么 brpc 是用 c语言编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、…...
C++:关联容器set容器,multiset容器
set与map不一样之处在于set的键值和时值是一样的,且个元素的值不能重复,容器会根据键的大小默认按升序排序,set底层也是红黑树。 multiset则允许键重复。 例如: #include<iostream> #include<set> using namespace…...
Java 调用 GitLab API
前言: 上一篇我们使用了 webhook 的方式获取用户提交代码的信息,本篇我简单分享一下使用 GitLab API 来获取用户提交代码的信息。 业务分析: 我们需要统计每一个用户的提交代码的信息,那 GitLab 是否有这样的接口呢?…...
“智”斗秸秆焚烧,考拉悠然以科技之力筑牢生态安全防线
清晨,薄雾笼罩着辽阔的田野,农民们开始了一天的劳作。然而,随着收割季的到来,秸秆焚烧问题也逐渐浮现,成为威胁空气质量与生态安全的隐患。传统监管方式往往显得力不从心,效率低下的困境亟待突破。在此背景…...
数据库基础面试题(回答思路和面试建议)
以下是针对这些数据库基础问题的详细回答思路和面试回答建议,结合理论、应用场景和实际项目经验展开说明: 1. 数据库三大范式是什么?实际项目中是否需要严格遵循? 回答思路: 先解释三大范式(逐层递进&…...
数据库blog5_数据库软件架构介绍(以Mysql为例)
🌿软件的架构 🍂分类 软件架构总结为两种主要类型:一体式架构和分布式架构 ● 一体化架构 一体式架构是一种将所有功能集成到一个单一的、不可分割的应用程序中的架构模式。这种架构通常是一个大型的、复杂的单一应用程序,包含所…...
mysql可重复读隔离级别下的快照读和当前读
在MySQL的可重复读隔离级别下,快照读和当前读是两种不同的读取方式,它们的特点和应用场景有所不同。 快照读 定义:快照读是指在事务中读取数据时,读取的是事务开始时的历史版本数据,而非当前最新的数据。实现原理&…...
MySQL 单表与多表操作详解
🎈边走、边悟🎈迟早会好 目录 一、单表查询整合 (一)通用模板展示 (二)举例说明 1. 简单查询 2. 条件查询 3. 高级查询 (三)注意事项 (四)Mapper 简…...
Spring概念问题详解
一、Bean的生命周期 1.1 BeanDefinition Spring容器在进行实例化时,会将xml配置的<bean>的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean。 beanClassName:be…...
使用pm2 部署react+nextjs项目到服务器
记录一下 next.config.js中: output: standalone,package.json配置: "scripts": {"dev": "cross-env NODE_OPTIONS--inspect next dev","build": "next build","start": "cp -r .nex…...
JVM常量池(class文件常量池,运行时常量池,字符串常量池)
文章目录 问题JVM运行时数据区JVM中的常量池Class文件常量池运行时常量池字符串常量池创建了几个对象String的定义intern()问题 超过1W字深度剖析JVM常量池(全网最详细最有深度) - 跟着Mic学架构 - 博客园 问题 jdk1.8之后 元空间是独立存在的…...
Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
光谱相机在地质勘测中的应用
一、矿物识别与蚀变带分析 光谱特征捕捉 通过可见光至近红外(400-1000nm)的高光谱分辨率(可达3.5nm),精确识别矿物的“光谱指纹”。例如: 铜矿:在400-500nm波段反射率显著低于围…...
深入解析Java泛型:从定义到实战应用
目录 🚀前言🤔泛型的定义🐧泛型类🌟泛型接口✍️泛型方法、通配符、上下限💯泛型方法💯 通配符与上下限⚙️通配符(Wildcard)⚙️泛型上下限⚙️应用场景 🦜泛型支持的类…...
数据结构:绪论之时间复杂度与空间复杂度
作者主页 失踪人口回归,陆续回三中。 开辟文章新专栏——数据结构,恳请各位大佬批评指正! 文章目录 作者主页 数据结构的基本知识数据:数据元素:数据对象:数据类型:数据结构:逻辑结…...
ARM Linux远程调试
准备 虚拟机既能ping通开发板,又能ping通外网,还要能ping通Windows主机(如果你有上位机通信(tftp、vsftp、ssh)的需求) VMware 添加网络适配器2用作桥接网卡,原有的网络适配器保持为NAT模式 打开虚拟网络编辑器,配置VMnet0为桥接模式,外部连接设置为Realtek PCIe G…...
PostgreSQL 14 pacemaker 高可用集群
核心架构原理 集群组成(典型三节点结构): [Node1] PostgreSQL Pacemaker Corosync pcsd [Node2] PostgreSQL Pacemaker Corosync pcsd [Node3] PostgreSQL Pacemaker Corosync pcsd ↕ ↕ ↕ ← Corosync 多…...
英语学习5.21
Far from sensible 表示“很不明智的”、“离明智相去甚远”。这是一个固定表达,结构是 far from adj.,意思是“根本不……”,常见例子: far from perfect(远非完美) far from acceptable(远…...
实现了TCP的单向通信
1. 客户端代码:Client.java package com.xie.javase.net1;import java.io.*; import java.net.*;public class Client {public static void main(String[] args) {Socket socket = null;BufferedWriter bw = null;try {// 1. 获取本机IP地址对象InetAddress localHost = Inet…...
华为云Flexus+DeepSeek征文 | 基于ModelArts Studio和Cherry Studio快速构建午餐管家助手
目录 一、前言 二、ModelArts Studio(MaaS)介绍与应用场景 2.1ModelArts Studio(MaaS)介绍 2.2 ModelArts Studio(MaaS)使用场景 2.3 开通MaaS服务 2.4 开通DeepSeek-V3商用服务 三、Cherry Studio简介和安…...
Spring AI 1.0 GA 正式发布
Spring AI 1.0 GA 正式发布 快速入门核心特性1. **增强型 LLM(大语言模型)**2. **MCP 协议支持**3. **RAG(检索增强生成)**4. **评估与监控**5. **智能代理(Agents)** 下一步计划 VMware Spring 团队 Mark …...
【计算机网络 第8版】谢希仁编著 第五章运输层 题型总结1 UDP和TCP报文格式
UDP报文 5.13 这一题可以先问AI: 但是问了AI,肯定想知道:这些知识点在书上哪里?怎么这么难找? 没错这题主要是靠IP地址,所以应该在第四章。 P136 P137 省流: 1.UDP的首部格式是8个字节&…...