.NET 9 已发布,您可以这样升级或更新
.NET 9 已经发布,您可能正在考虑更新您的 ASP.NET Core 应用程序。
我们将介绍更新应用程序所需的内容。从更新 Visual Studio 和下载 .NET SDK 到找出可能破坏应用程序的任何重大更改。
下载 .NET 9 SDK
这些是下载 .NET 9 SDK 所需的步骤。
更新 Visual Studio
如果您是 Windows 用户并使用 Visual Studio 2022,则需要将其更新至 17.12 或更高版本。为此,您可以转到“帮助”并检查更新。如果有任何更新,它会提示您下载并安装它们。
将 Visual Studio 2022 社区版更新至 17.12.0
更新 Visual Studio 应该会自动安装 .NET 9 SDK,因此无需任何进一步的步骤。
Linux 和 Mac 用户
如果您是 Linux 或 Mac 用户,或者不使用 Visual Studio,则需要从 Microsoft 网站下载 .NET 9 SDK。
SDK 适用于 Windows、Linux 和 macOS。选择适合您操作系统的下载。
请记住下载 SDK 而不是 Runtime。Runtime 安装在运行应用程序的 Web 服务器上。
检查 .NET 9 SDK 是否已安装
此时,最好检查.NET 9 SDK 是否已成功安装在您的机器上。
在 PowerShell 窗口中,您可以键入以下命令行:
dotnet --list-sdks
如果有以 9 开头的版本,则表示 .NET 9 SDK 已成功安装。这意味着我们可以更新我们的应用程序。
将应用程序更新到 .NET 9
将您的应用程序更新到.NET 9 是一个简单的步骤。
在您的项目中,打开 .csproj
文件并将属性更新TargetFramework
为net9.0
。您需要对引用 ASP.NET Core 应用程序的任何项目执行此操作。
通过更新 .csproj 中的 TargetFramework 将 .NET 项目更新到 .NET 9
此外,如果您使用的是 .NET 8,则需要更新在版本 8 上运行的任何 Microsoft NuGet 包,或者与您正在使用的 .NET 版本相对应的任何版本。例如,如果您使用的是Microsoft.EntityFrameworkCore
NuGet 包,则需要将其更新到版本 9。
如果你是 Visual Studio 用户,最好的方法是转到工具、包和管理解决方案的 NuGet 包。这将为你提供需要更新的所有 NuGet 包的列表。
如果您使用 Docker,则需要更新Dockerfile并将 SDK 和 Runtime 版本更改为9.0
。
更新 Dockerfile 以使用 .NET 9
重大变更
希望您的应用程序能够成功构建并运行。但如果没有,则可能是您的应用程序有一些需要解决的重大更改。
微软列出了 .NET 9 的所有重大变化。让我们重点介绍一下 .NET 9 中的一些关键变化。
FromKeyedServicesAttribute 不再注入非键控参数
如果您正在使用.NET 8 中引入的键控服务,则依赖注入中对它们的解析方式会发生变化。
在 .NET 8 中,如果您注入了一个未作为依赖注入的一部分注册的键控服务,但是您有一个具有相同接口的非键控服务,则该非键控服务将被解析。
在这个例子中,如果我们没有注册vipCustomerService
为密钥服务,而是注册ICustomerService
为非密钥服务,那么非密钥服务将得到解析。
public CustomerService([FromKeyedServices("vipCustomerService")] ICustomerService vipCustomerService ...) { }
但是在 .NET 9 中,行为已经改变,InvalidOperationException
如果我们尝试解析尚未注册的键控服务,则总是会抛出一个。
HttpClientFactory 日志记录默认删除标头值
默认日志记录HttpClientFactory
包括Trace
输出所有请求和响应标头的级别日志。
通过包含RedactLoggedHeaders
方法,您可以指定哪些是敏感的并从日志中删除。
services.AddHttpClient("MyEngine", ...) .RedactLoggedHeaders(h => h.StartsWith("X-"));
在 .NET 8 中,如果您不包含该RedactLoggedHeaders
方法,则日志值将保持原样。
但是从 .NET 9 开始,如果您不包含该 RedactLoggedHeaders
方法,则默认情况下将删除所有日志值。只有当您指定方法时,RedactLoggedHeaders
未包含在其中的标头才会保持原样。
支持空环境变量
添加了支持,以便能够使用Environment.SetEnvironmentVariable
键和值参数将环境变量设置为空字符串。
在 .NET 8 中,如果您使用SetEnvironmentVariable
并将值参数指定为string.Empty
或null
,则会删除环境变量。如果您曾经将ProcessStartInfo.Environment
环境变量的值设置为string.Empty
或null
,它会将其设置为空值。
但在 .NET 9 中,行为已经改变。将 中的值设置Environment.SetEnvironmentVariable
为string.Empty
将使其设置为空值。将其设置为null
将删除环境变量。如果您使用ProcessStartInfo.Environment
将变量的值设置为string.Empty
,它将使其设置为空值。将其设置为null
将删除环境变量。
您应该更新到.NET 9吗?
如果您的应用程序使用的是 .NET 7 或 .NET 6 以下的任何版本,那么您应该进行更新,因为这些版本不久前已经过期。这意味着它们不再受 Microsoft 支持。
在 .NET 9 发布的同一天,.NET 6 也终止了使用,这意味着它也不再受 Microsoft 支持。但你为什么要更新呢?
新功能
您可以利用后续 .NET 版本中包含的一些新功能。
在 .NET 9 中,支持 OpenAPI 以及新的 LINQ 表达式,例如 CountBy
表达式。在此示例中,CountBy
表达式用于列出每个姓氏的所有客户数量。
public record Customer(string Forename, string Surname);
public class MyClass
{
List<Customer> customers =
[
new("Donald", "Trump"),
new("Joe", "Biden"),
new("Judd", "Trump")
];
public Dictionary<string, int> GetCountForEachSurname()
{
var surnameCount = new Dictionary<string, int>();
foreach (var s in customers.CountBy(p => p.Surname))
{
surnameCount.Add(s.Key, s.Value);
}
return surnameCount;
}
}
通过更新到 .NET 9,您还可以利用 .NET 8 中的新功能,例如键控服务和新的全局处理异常中间件。
安全更新
您还可以利用较新 .NET 版本中提供的安全更新。Microsoft 经常发布针对拒绝服务漏洞的更新,以帮助防止 DDoS 攻击。DDoS 攻击会用虚假流量淹没您的应用程序,从而使您的应用程序运行非常缓慢,甚至无法供真实用户访问,因此您应该认真对待这一点。
长期支持(LTS)还是短期支持(STS)?
在本文发表时,.NET 8 和 .NET 9 是 Microsoft 支持的两个 .NET 版本。
.NET 8 于 2023 年 11 月发布,但有三年的支持,这意味着它将被支持到 2026 年 11 月。尽管 .NET 9 一年后发布,但它只有 18 个月的支持,这意味着它将在 .NET 8 之前六个月达到使用寿命。
版本 | 发布日期 | 终止日期 | 支撑长度 |
---|---|---|---|
.NET 8(LTS) | 2023 年 11 月 14 日 | 2026 年 11 月 10 日 | 3 年 |
.NET 9(STS) | 2024 年 11 月 12 日 | 2026 年 5 月 12 日 | 18个月 |
因此,是否更新到 .NET 8 或 .NET 9 确实取决于您的情况。如果您有一个大型项目,需要大量时间进行更新和测试,那么您可能值得坚持使用 .NET 8 提供的长期支持。但是,如果您有一个较小的项目,不需要很长时间进行更新,请随时升级到 .NET 9 并利用所提供的新功能。
部署应用程序
如果您使用 Azure YAML CI/CD 管道,则可能需要将 .NET 9 SDK 下载到 Azure 代理上。如果 .NET 9 刚刚发布,这一点尤其重要,因为 Azure 代理可能尚未安装 .NET 9 SDK。
您可以通过将此任务包含在 YAML 管道中来实现这一点:
- task: UseDotNet@2
name: 'UseDotNet9SDK'
displayName: '.NET 9 SDK install'
inputs:
packageType: sdk
version: 9.x
installationPath: $(Agent.ToolsDirectory)/dotnet
您还需要将服务器上安装的 ASP.NET Core 运行时版本更新为版本 9。如果您使用 IIS,请确保使用 Windows Hosting Bundle 安装程序。
下载 ASP.NET Core 运行时以获得 IIS 支持时,请选择“Windows 托管捆绑包”
参考原文:.NET 9 has been released and this is how you update
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
相关文章:
.NET 9 已发布,您可以这样升级或更新
.NET 9 已经发布,您可能正在考虑更新您的 ASP.NET Core 应用程序。 我们将介绍更新应用程序所需的内容。从更新 Visual Studio 和下载 .NET SDK 到找出可能破坏应用程序的任何重大更改。 下载 .NET 9 SDK 这些是下载 .NET 9 SDK 所需的步骤。 更新 Visual Studi…...
VMware ubuntu16.04怎么设置静态IP联网
1.将VMware桥接到当前电脑使用的网络上面; 2.点击网络符号,编辑连接; 3.双击有线连接1; 4.选择IPv4设置,将地址,子网掩码,网关,DNS服务器设置好,保存; 5.在终…...
#渗透测试#漏洞挖掘#红蓝攻防#js分析(上)
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
.NET 6.0 中接入 Log4net 和 NLog
一、接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文件内容为 <?xml version"1.0" encoding"utf-8"?> <log4net> <!-- Define some output appe…...
linux从frame buffer中将qt界面拷贝出来放到u盘的操作方法
使用的是gsnap工具,源码可以在百度上搜,以Imx6为例的使用方法 rootimx6qsabresd:~# rootimx6qsabresd:~# rootimx6qsabresd:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 289293 197510 76423 73% / devtmpfs …...
最新全开源IM即时通讯系统源码(PC+WEB+IOS+Android)部署指南
全开源IM(即时通讯)系统源码部署是一个复杂但系统的过程,涉及多个组件和步骤。以下是一个详细的部署指南,旨在帮助开发者或系统管理员成功部署一个全开源的IM系统,如OpenIM。 IM即时通讯系统源码准备工作 …...
使用Linux的logrotate工具切割日志:Tomcat、NGINX(journal文件清理)
文章目录 引言I Tomcat日志切割配置轮转参数验证码II NGINX访问文件的配置和切割access.log 访问日志的配置使用Linux的logrotate工具切割日志验证文件切割III /run/log/journaljournalctl文件清理引言 journal文件清理: 只保留过去两天,清理之前的文件 journalctl --vacuu…...
shell脚本1
运行脚本 1、先创建一个sh脚本文件,里面输入一个输出网站的命令,比如echo www.baidu.com vim 1.sh2、可以利用以下三种方式、这三种其实不管哪种脚本解释器最后调用的还是这个dash,下面是解释为什么调用都是dash,我们ls可以发现最后目录都是指向了dash…...
Qt-chart 画折线图(以时间为x轴)
上图 代码 #include <iostream> #include <random> #include <qcategoryaxis.h>void MainWindow::testLine() {//1、创建图表视图QChartView* view new QChartView(this);//2.创建图表QChart* chart new QChart();//3.将图表设置给图表视图view->setCh…...
【kubernetes】kubectl get nodes报NotReady
目录 1. 说明2. 问题描述3. kube-flannel.yml 1. 说明 1.这里k8s的版本是v1.17.4。2.若kube-flannel.yml中的镜像拉取不下来,可以下载本文章的文件资源,手动docker load -i ***.tar的方式。3.v1.17.4的kube-flannel.yml参考下面代码。4.通过kubectl get…...
分布式开发学习
1、kratos的特点 gRPC:Kratos 默认支持 gRPC,提供高性能的远程调用能力,适用于微服务间通信。 HTTP :同时支持 HTTP/1.1 和 HTTP/2,方便微服务与外部系统交互。 Protocol Buffers: protoc 工具生…...
软件测试的几种方法详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并…...
C语言---int r 与 int r=数的区别
int r 在这里面声明了一个变量r,创建了内存空间 int r 2 声明了一个整数类型的变量r,并给它赋值(初始值)为2,创建内存空间并赋值。...
matlab测试ADC动态性能的原理
目录 摘要: 简介: 动态规范和定义 动态规格: 双面到单边的功率谱转换 摘要: 模数转换器(adc)代表了接收器、测试设备和其他电子设备中的模拟世界和数字世界之间的联系。正如本文系列的第1部分中所概述…...
XDOJ 877 图的深度优先遍历
题目:图的深度优先遍历 问题描述 已知无向图的邻接矩阵,以该矩阵为基础,给出深度优先搜索遍历序列,并且给出该无向图的连通分量的个数。在遍历时,当有多个点可选时,优先选择编号小的顶点。(即…...
内网穿透讲解
什么是内网穿透 内网穿透是一种网络技术,它允许外网或者其他局域网的用户来访问这个局域网的服务器资源,让资源的利用率更高,更加灵活,但是也要确保网络安全。 工作原理 如果你在公司,但是你需要使用到你家里的那台电…...
怎么规划一个呼叫中心大模型呼入部门?设置哪些岗位?
怎么规划一个呼叫中心大模型呼入部门?设置哪些岗位? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 规划一个呼叫中心大模型呼入部门是一个复杂而细致的过程,涉及多个层面的…...
企业级Nginx Web服务优化实战(上)
一 ,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说 ,软件的漏洞都和版本有关 ,这个很像汽车的缺陷 ,同一批次的要有问题就 都有问题 ,别的批次可能就都是好的。 因此 ,我们应尽量隐藏或…...
Redisson常用方法
Redisson 参考: 原文链接 定义:Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点:很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...
【树莓派4B】MindSpore lite 部署demo
一个demo,mindspore lite 部署在树莓派4B ubuntu22.04中,为后续操作开个门! 环境 开发环境:wsl-ubuntu22.04分发版部署环境:树莓派4B,操作系统为ubuntu22.04mindspore lite版本:mindspore-li…...
ESP32-S3模组上跑通ES8388(30)
接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…...
网络安全渗透测试概论
渗透测试,也称为渗透攻击测试是一种通过模拟恶意攻击者的手段来评估计算机系统、网络或应用程序安全性的方法。 目的 旨在主动发现系统中可能存在的安全漏洞、脆弱点以及潜在风险,以便在被真正的恶意攻击者利用之前,及时进行修复和加固&…...
.NET6 WebAPI从基础到进阶--朝夕教育
1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器( IIS ) 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器( Docker 部署使用) …...
opencv通过3种算子进行边缘提取
Scharr算子是效果比较好的,但从肉眼看sobel算子比较顺眼 # 导入OpenCV库,用于图像处理 import cv2 import numpy as np # 从matplotlib库中导入pyplot模块,用于绘制图像 from matplotlib import pyplot as plt # 创建一个名为window的窗口,窗…...
【KodExplorer】可道云KodExplorer-个人网盘安装使用
说明:安装kodExplorer (不是Kodbox);Kodbox需求服务器至少2核4G内存,要求环境具备php/redis/mysql/。安装kodExplorer 就是比较方便简单部署,个人版免费。 一、安装环境需求 服务器: Windows,…...
并查集基础
abstract 并查集(Union-Find Set)是一种数据结构,主要用于处理动态连通性问题(Dynamic Connectivity Problem),例如在图论中判断两点是否属于同一个连通分量,以及动态地合并集合。 它广泛应用…...
FPGA 16 ,Verilog中的位宽:深入理解与应用
目录 前言 一. 位宽的基本概念 二. 位宽的定义方法 1. 使用向量变量定义位宽 ① 向量类型及位宽指定 ② 位宽范围及位索引含义 ③ 存储数据与字节数据 2. 使用常量参数定义位宽 3. 使用宏定义位宽 4. 使用[:][-:]操作符定义位宽 1. 详细解释 : 操作符 -: 操作符 …...
day2 数据结构 结构体的应用
思维导图 小练习: 定义一个数组,用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息,删除后调用显示学…...
原创 传奇996_55——后端如何点击npc隐藏主界面
点击图片退出,举例: |linkexit Img|ax0.5|ay0.5|percentx50|percenty50|imgpublic/touming2.png|hideMain1|linkexit <Img|x0|y0|esc1|show4|bg1|move0|imgcustom/new/longhun/bg.png|loadDelay0|reset1|hideMain1>...
java+springboot+mysql法律咨询网
项目介绍: 使用javaspringbootmysql开发的法律咨询网(文书),系统包含管理员、用户角色,功能如下: 管理员:登录系统;用户管理;文章管理(法律知识)…...
【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!
还记得第一次使用ChatGPT时,那种既兴奋又困惑的心情吗?我是从一个对AI一知半解的普通用户,逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就,而是通过不断的探索和实践,掌握了一系列高效使用的技巧。今天&#…...
HarmonyOS-高级(四)
文章目录 应用开发安全应用DFX能力介绍HiLog使用指导HiAppEvent 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月11日11点18分 应用开发安全 应用隐私保护 隐私声明弹窗的作…...
国科大智能设备安全-APK逆向分析实验
APK逆向分析实验 使用APK常用逆向分析工具,对提供的移动应用程序APK文件进行逆向分析,提交逆向后代码和分析报告。具体任务如下: 任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Updat…...
Batch Normalization和 Layer Normalization
Batch Normalization和 Layer Normalization Batch Normalization (BN) 和 Layer Normalization (LN) 是深度学习中常用的归一化技术,它们的主要目的是加速训练、提高模型的收敛速度和稳定性。以下是对这两种归一化技术的详细讲解: 1. Batch Normalizat…...
数据结构——顺序表
顺序表的简单介绍 顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 特点:顺序表的特点是可以通过元素的索引快速访问数据,其访问时间复杂度…...
C语言中互斥锁、信号量和条件变量的所有相关函数、参数、返回值和说明
1. 互斥锁(Mutex)的使用 互斥锁用于保护共享数据,防止多个线程同时修改它。 #include <pthread.h> #include <stdio.h> #include <stdlib.h> // 定义一个全局共享变量 int shared_counter 0; // 定义一个互斥锁 pthrea…...
(前序 简单)leetcode 226翻转二叉树
代码随想录说用前序遍历和后序遍历方便,而中序遍历比较绕。 活用自定义函数使程序结构更为清晰 这里用的是前序遍历,根结点root指向left和root,交换root的左右指向 执行过程: 也就是交换下例的 2 ,7 使得交换后&…...
搭建springmvc项目
什么是springmvc MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 View视图 Controller控制层 springmvc框架是spring框架的一个分支。它是按照mvc架构思想设计的一款框架。 springmvc的主要作用: 接收浏览器的请求数据,对数据进行处理,…...
解惑(一) ----- super(XXX, self).__init__()到底是代表什么含义
转载:self参数 - __ init__ ()方法 super(Net, self).__init__()是什么_super(net, self).init()-CSDN博客 相信大家在很多场合特别是写神经网络的代码的时候都看到过下面的这种代码: import torch import torch.nn as nn import torch.nn.functional …...
23种设计模式之责任链模式
目录 1. 简介2. 代码2.1 AbstractLogger(抽象处理者)2.2 InfoLogger (具体处理者)2.3 DebugLogger (具体处理者)2.4 ErrorLogger (具体处理者)2.5 Test (测试)…...
电感2222
1 电感 1电感是什么 2 电感的电流不能突变:电容是两端电压不能突变 3 电感只是限制电流变化速度...
车牌识别OCR授权:助力国产化升级,全面提升道路监控效率
政策背景:国产化升级,推动道路监控产业转型 随着国家对信息安全的重视,国内各大公安、政企机构已进入全面升级国产化平台的实施阶段。根据最新的政策要求,公安和政府部门必须在未来三年内完成平台的国产化替换工作。这一举措不仅…...
【人工智能-中级】卷积神经网络(CNN)的中阶应用:从图像分类到目标检测
文章目录 卷积神经网络(CNN)的中阶应用:从图像分类到目标检测1. 图像分类:CNN的基础应用CNN结构概述经典网络架构2. 目标检测:从分类到定位基于区域的目标检测方法单阶段目标检测方法边界框回归与NMS(Non-Maximum Suppression)3. 深度学习中的目标检测挑战与解决方案4. …...
从资产流动分析WIF市场潜力X.game深究其他未知因素
近日,两则关于WIF最新消息引起了投资者们的注意。据报道,11月28日Vintermute在过去13小时内累计从Binance交易所提取了价值533万美元的WIF,此举不仅彰显了其强大的资金实力,更在某种程度上推动了WIF币价的反弹;另一方面…...
【工具变量】上市公司企业经营困境指数数据(Zscore、Oscore、RLPM、Merton DD)2000-2021年
一、资料范围:包括Zscore、Oscore、RLPM、Merton DD,经营困境说明如下:(1)Zscore:以2.67和1.81作为临界值计算样本得分所处的范围。Zscore>2.67 为财务状况良好,发生破产的可能性较小。Zscor…...
freeswitch(监听、旁听)
亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch使用场景: 比如A和B在通话,C想监听他们通话内容,其他设备是不知道有人在监听的使用方法: 进入dialplan/default.xml 在配置表添加 <…...
php基础:命名空间
1.PHP 命名空间可以解决以下两类问题: 1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,以提高源代码的可读…...
SAP FICO物料分类账实操
物料分类账所涉及到的差异从采购入库的时候就可能已经产生,接下来从创建物料主数据开始对可能产生差异地方进行分析。其中有些操作步骤在标准价格估算这一篇博文中已经有过演示,可以先做了解。 其中的某些创建在有直接可用的情况下是非必须的࿰…...
【信息系统项目管理师】高分论文:论信息系统项目的整合管理(移动警务通系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 正文1、制定项目章程2、制定项目管理计划3、指导与管理项目工作4、管理项目知识5、监控项目工作6、实施整体变更控制7、结束项目或阶段正文 2022年2月,我有幸作为项目经理参加了“某市公安移动警务通系统”项…...
学习笔记069——Java集合框架
文章目录 集合1、List 接口2、Set 接口3、Map3.1、Map 常用实现类 集合 需要创建多个对象,但是数量和类型不确定。 集合是 Java 提供的一种类型,功能和数组类似,但是长度和数据类型都是动态。 集合框架(包括很多类和接口&#…...