当前位置: 首页 > news >正文

JavaSE学习笔记26-集合(Collection)

集合

Java 中的集合(Collection)是 Java 标准库中非常重要的一部分,用于存储和操作一组对象。Java 集合框架(Java Collections Framework)提供了一套丰富的接口和类,用于处理各种数据结构,如列表、集合、队列、映射等。以下是 Java 集合框架的详细介绍:


1. 集合框架的核心接口

Java 集合框架的核心接口位于 java.util 包中,主要包括以下几种:

(1) Collection 接口
  • 是所有集合类的根接口。

  • 定义了集合的基本操作,如添加、删除、遍历等。

  • 主要子接口:

    • List:有序集合,允许重复元素。

    • Set:无序集合,不允许重复元素。

    • Queue:队列,遵循先进先出(FIFO)或优先级规则。

(2) Map 接口
  • 存储键值对(key-value pairs)。

  • 键不允许重复,值可以重复。

  • 主要实现类:

    • HashMap:基于哈希表实现,无序。

    • TreeMap:基于红黑树实现,键有序。

    • LinkedHashMap:基于哈希表和链表实现,保持插入顺序。


2. 常用集合类

以下是 Java 集合框架中常用的实现类:

(1) List 接口的实现类
  • ArrayList

    • 基于动态数组实现。

    • 支持快速随机访问,但插入和删除元素较慢。

    • 线程不安全。

  • LinkedList

    • 基于双向链表实现。

    • 插入和删除元素较快,但随机访问较慢。

    • 可以用作队列或栈。

  • Vector

    • 类似于 ArrayList,但线程安全。

    • 性能较低,通常不推荐使用。

(2) Set 接口的实现类
  • HashSet

    • 基于哈希表实现。

    • 无序,不允许重复元素。

    • 性能较高。

  • TreeSet

    • 基于红黑树实现。

    • 元素有序(自然顺序或自定义顺序)。

    • 性能略低于 HashSet

  • LinkedHashSet

    • 基于哈希表和链表实现。

    • 保持插入顺序。

(3) Queue 接口的实现类
  • LinkedList

    • 可以用作队列或双端队列。

  • PriorityQueue

    • 基于堆实现。

    • 元素按优先级排序。

(4) Map 接口的实现类
  • HashMap

    • 基于哈希表实现。

    • 键无序,性能较高。

  • TreeMap

    • 基于红黑树实现。

    • 键有序。

  • LinkedHashMap

    • 基于哈希表和链表实现。

    • 保持插入顺序或访问顺序。


3. 集合的常用操作

以下是集合的常见操作示例:

(1) List 示例

import java.util.ArrayList;
import java.util.List;public class ListExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 遍历列表for (String fruit : list) {System.out.println(fruit);}// 获取元素System.out.println("第一个元素: " + list.get(0));// 删除元素list.remove("Banana");System.out.println("删除后的列表: " + list);}
}

(2) Set 示例 

import java.util.HashSet;
import java.util.Set;public class SetExample {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("Apple");set.add("Banana");set.add("Cherry");// 尝试添加重复元素set.add("Apple");// 遍历集合for (String fruit : set) {System.out.println(fruit);}}
}

 (3) Map 示例

import java.util.HashMap;
import java.util.Map;public class MapExample {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("Apple", 10);map.put("Banana", 20);map.put("Cherry", 30);// 遍历映射for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}// 获取值System.out.println("Apple 的数量: " + map.get("Apple"));}
}

4. 集合的线程安全性

  • 大多数集合类(如 ArrayListHashMap)是线程不安全的。

  • 如果需要线程安全的集合,可以使用以下方式:

    • Collections.synchronizedList():将 List 转换为线程安全的集合。

    • Vector:线程安全的 List 实现(不推荐使用)。

    • ConcurrentHashMap:线程安全的 Map 实现。

    • CopyOnWriteArrayList:线程安全的 List 实现。


5. 集合的排序

  • 自然排序

    • 集合中的元素必须实现 Comparable 接口。

    • 例如:TreeSet 和 TreeMap 会自动对元素进行排序。

  • 自定义排序

    • 使用 Comparator 接口实现自定义排序规则。

    • 例如:Collections.sort(list, comparator)


6. 集合的性能比较

集合类实现方式随机访问插入/删除线程安全有序性
ArrayList动态数组不安全插入顺序
LinkedList双向链表不安全插入顺序
HashSet哈希表-不安全无序
TreeSet红黑树-中等不安全有序
HashMap哈希表不安全无序
TreeMap红黑树中等中等不安全有序

 练习代码1-平均气温

输入周一到周日七天的温度,输出这周的平均温度,这周温度最高的是哪天,最低的是哪天

使用List接口的ArrayList来存储最高和最低气温

package com.chao.array;
import java.util.*;//输入一周的气温,求平均气温,哪些天大于平均气温,哪些天小于平均气温
public class AverageTemperature {public static void main(String args[ ]) {//声明用到的变量int count;double sum,average;sum=0;double [ ]temperature=new double[7];//创建一个 Scanner 类的对象,用它来获得用户的输入Scanner sc=new Scanner(System.in);System.out.println("请输入七天的温度(从周一到周日):");for(count=0;count<temperature.length;count++){System.out.print(getDayOfWeek(count + 1) + "的气温:");//读取用户输入temperature[count]=sc.nextDouble();sum+=temperature[count];}average=sum/7;System.out.println("本周的平均气温为:"+average);//寻找最高和最低气温的天数double maxTemp = temperature[0];//最高气温double minTemp = temperature[0];//最低气温List<String> maxDays = new ArrayList<>();maxDays.add("周一");List<String> minDays = new ArrayList<>();minDays.add("周一");for (int i = 0; i < temperature.length; i++) {double current = temperature[i];//处理最高气温if (current > maxTemp) {maxTemp = current;maxDays.clear();maxDays.add(getDayOfWeek(i + 1));} else if (current == maxTemp) {maxDays.add(getDayOfWeek(i + 1));}//处理最低气温if (current < minTemp) {minTemp = current;minDays.clear();minDays.add((getDayOfWeek(i + 1)));} else if (current == minTemp) {minDays.add(getDayOfWeek(i + 1));}}//输出最高气温的天数System.out.print("最高气温出现在:");for (int i = 0; i < maxDays.size(); i++) {if (i > 0) {System.out.println("、");}System.out.println(maxDays.get(i));}
//        System.out.println();// 输出最低气温的天数System.out.print("最低气温出现在:");for (int i = 0; i < minDays.size(); i++) {if (i > 0) {System.out.print("、");}System.out.print(minDays.get(i));}System.out.println();//比较各天气温与平均气温for (count = 0; count < temperature.length; count++) {String dayOfWeek = getDayOfWeek(count + 1);if (temperature[count] < average)System.out.println(dayOfWeek + "的气温低于平均气温");else if (temperature[count] > average)System.out.println(dayOfWeek + "的气温高于平均气温");elseSystem.out.println(dayOfWeek + "的气温等于平均气温");}}// 根据天数返回星期几private static String getDayOfWeek(int day) {switch (day) {case 1:return "周一";case 2:return "周二";case 3:return "周三";case 4:return "周四";case 5:return "周五";case 6:return "周六";case 7:return "周日";default:return "";}}
}

代码整体功能

这段代码的主要功能是:

  1. 输入一周七天的气温(从周一到周日)。

  2. 计算平均气温

  3. 找出最高气温和最低气温对应的天数

  4. 比较每一天的气温与平均气温,输出哪些天高于、低于或等于平均气温。

  5. 输出结果,包括平均气温、最高气温和最低气温对应的天数,以及每一天的气温比较结果。


代码结构

代码分为以下几个部分:

  1. 变量声明和初始化

  2. 输入气温数据

  3. 计算平均气温

  4. 寻找最高气温和最低气温

  5. 输出结果

  6. 辅助方法 getDayOfWeek


详细解释

1. 变量声明和初始化
int count;
double sum, average;
sum = 0;
double[] temperature = new double[7];
  • count:用于循环计数。

  • sum:用于累加七天气温的总和。

  • average:用于存储平均气温。

  • temperature:一个长度为7的数组,用于存储每天的气温(从周一到周日)。


2. 输入气温数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入七天的温度(从周一到周日):");for (count = 0; count < temperature.length; count++) {System.out.print(getDayOfWeek(count + 1) + "的气温:");temperature[count] = sc.nextDouble();sum += temperature[count];
}
  • Scanner sc = new Scanner(System.in):创建一个 Scanner 对象,用于从控制台读取用户输入。

  • System.out.println("请输入七天的温度(从周一到周日):"):提示用户输入七天的气温。

  • for 循环

    • 循环7次(temperature.length 为7),依次输入每天的气温。

    • getDayOfWeek(count + 1):调用辅助方法 getDayOfWeek,将天数(1到7)转换为星期几(如“星期一”)。

    • System.out.print(getDayOfWeek(count + 1) + "的气温:"):动态生成每一天的输入提示(如“星期一的气温:”)。

    • temperature[count] = sc.nextDouble():读取用户输入的气温,并存储到 temperature 数组中。

    • sum += temperature[count]:累加每天的气温,用于后续计算平均气温。


3. 计算平均气温
average = sum / 7;
System.out.println("平均气温为:" + average);
  • average = sum / 7:计算七天的平均气温。

  • System.out.println("平均气温为:" + average):输出平均气温。


4. 寻找最高气温和最低气温
double maxTemp = temperature[0];
double minTemp = temperature[0];
List<String> maxDays = new ArrayList<>();
maxDays.add(getDayOfWeek(1));
List<String> minDays = new ArrayList<>();
minDays.add(getDayOfWeek(1));for (int i = 1; i < temperature.length; i++) {double current = temperature[i];// 处理最高气温if (current > maxTemp) {maxTemp = current;maxDays.clear();maxDays.add(getDayOfWeek(i + 1));} else if (current == maxTemp) {maxDays.add(getDayOfWeek(i + 1));}// 处理最低气温if (current < minTemp) {minTemp = current;minDays.clear();minDays.add(getDayOfWeek(i + 1));} else if (current == minTemp) {minDays.add(getDayOfWeek(i + 1));}
}
  • maxTemp 和 minTemp:分别用于存储最高气温和最低气温的初始值(初始值为第一天的气温)。

  • maxDays 和 minDays:分别用于存储最高气温和最低气温对应的天数(星期几)。

  • for 循环

    • 从第二天开始遍历气温数组。

    • 处理最高气温

      • 如果当前气温 current 大于 maxTemp,则更新 maxTemp,并清空 maxDays 列表,将当前天数加入列表。

      • 如果当前气温等于 maxTemp,则将当前天数加入 maxDays 列表。

    • 处理最低气温

      • 如果当前气温 current 小于 minTemp,则更新 minTemp,并清空 minDays 列表,将当前天数加入列表。

      • 如果当前气温等于 minTemp,则将当前天数加入 minDays 列表。


5. 输出结果
// 输出最高气温的天数
System.out.print("最高气温出现在:");
for (int i = 0; i < maxDays.size(); i++) {if (i > 0) {System.out.print("、");}System.out.print(maxDays.get(i));
}
System.out.println();// 输出最低气温的天数
System.out.print("最低气温出现在:");
for (int i = 0; i < minDays.size(); i++) {if (i > 0) {System.out.print("、");}System.out.print(minDays.get(i));
}
System.out.println();// 比较各天气温与平均气温
for (count = 0; count < temperature.length; count++) {String dayOfWeek = getDayOfWeek(count + 1);if (temperature[count] < average)System.out.println(dayOfWeek + "的气温低于平均气温");else if (temperature[count] > average)System.out.println(dayOfWeek + "的气温高于平均气温");elseSystem.out.println(dayOfWeek + "的气温等于平均气温");
}
  • 输出最高气温的天数

    • 遍历 maxDays 列表,输出所有最高气温对应的星期几。

    • 如果有多天,用顿号(“、”)分隔。

  • 输出最低气温的天数

    • 遍历 minDays 列表,输出所有最低气温对应的星期几。

    • 如果有多天,用顿号(“、”)分隔。

  • 比较各天气温与平均气温

    • 遍历气温数组,依次比较每一天的气温与平均气温。

    • 根据比较结果,输出“低于”、“高于”或“等于”平均气温。


6. 辅助方法 getDayOfWeek
private static String getDayOfWeek(int day) {switch (day) {case 1:return "星期一";case 2:return "星期二";case 3:return "星期三";case 4:return "星期四";case 5:return "星期五";case 6:return "星期六";case 7:return "星期日";default:return "";}
}
  • 功能:将天数(1到7)转换为对应的星期几(如“星期一”)。

  • 实现

    • 使用 switch 语句,根据输入的 day 值返回对应的星期几。

    • 如果 day 不在1到7范围内,返回空字符串(不会发生,因为输入已经限制为7天)。


总结

这段代码通过以下步骤实现了功能:

  1. 输入数据:动态生成中文提示词,逐天输入气温。

  2. 计算平均气温:累加气温并计算平均值。

  3. 寻找最高和最低气温:遍历数组,记录最高和最低气温及其对应的天数。

  4. 输出结果:格式化输出平均气温、最高气温和最低气温的天数,以及每一天的气温比较结果。

相关文章:

JavaSE学习笔记26-集合(Collection)

集合 Java 中的集合&#xff08;Collection&#xff09;是 Java 标准库中非常重要的一部分&#xff0c;用于存储和操作一组对象。Java 集合框架&#xff08;Java Collections Framework&#xff09;提供了一套丰富的接口和类&#xff0c;用于处理各种数据结构&#xff0c;如列…...

本地开发用ASP.NET Core Web API项目创建及测试

1. 服务端代码&#xff08;C#&#xff09; 1.1 创建ASP.NET Core Web API项目 打开Visual Studio 2022。 选择“创建新项目”。 选择“ASP.NET Core Web API”模板&#xff0c;点击“下一步”。 输入项目名称&#xff08;如OracleApi&#xff09;&#xff0c;选择项目位置&…...

Redis——用户签到BitMap,UV统计

目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器&#xff08;Bloom Filter&#xff09; BitMap介绍 Redis中的使用 Redis功能示例 添加&#xff1a; 获取&#xff1a; 批量获取&#xff1a; java中实现 统计本月连续签到次数 UV统计 UV 统计…...

一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系

对于装系统的老手而说一直想研究一下装系统的原理&#xff0c;以及面对一些问题时的解决思路&#xff0c;故对以前的方法进行原理上的解释&#xff0c;主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导&#xff0c;我们可以看一下微pe制作的启动盘&#…...

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 &#xff08;1&#xff09;提取较亮区域 - pass1 &#xff08;2&#xff09;高斯模糊 - pass2&3 &#xff08;3&#xff…...

小迪安全-24天-文件管理,显示上传,黑白名单,访问控制

上节课回顾&#xff0c;token问题 没有更新token值&#xff0c;造成了复用 加上这段代码就好了&#xff0c;就不会复用了 文件管理-文件上传 upload.html文件&#xff0c;找ai生成就行 uoload.php接受文件上传的信息 这里在写个临时文件存储换个地方 因为上面临时文件存在c盘…...

java23种设计模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;学习笔记 1. 模式定义 建造者模式是一种创建型设计模式&#xff0c;通过分步构建复杂对象的方式&#xff0c;将对象的构建过程与表示分离。允许使用相同的构建过程创建不同的对象表示。 2. 适用场景 ✅ 需要创建包含多个…...

JMeter 中实现 100 个用户在 3 秒内并发登录

在 JMeter 中实现 100 个用户在 3 秒内并发登录,需要合理配置线程组、定时器和测试逻辑。以下是具体步骤: 1. 创建测试计划 打开 JMeter。右键点击“Test Plan”,选择 Add > Threads (Users) > Thread Group。 : 设置为 100(模拟 100 个用户)。 : 设置为 3...

SOME/IP-SD -- 协议英文原文讲解2

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.2 S…...

IntelliJ IDEA中Maven配置全指南

一、环境准备与基础配置 1.1 Windows 环境下载并配置 Maven 见此篇博文&#xff1a;环境配置 1.2 IDEA配置步骤 打开设置面板&#xff1a;File → Settings → Build → Build Tools → Maven 关键配置项&#xff1a; Maven home path E:\apache-maven-3.9.9 &#xff08;…...

第438场周赛:判断操作后字符串中的数字是否相等、提取至多 K 个元素的最大总和、判断操作后字符串中的数字是否相等 Ⅱ、正方形上的点之间的最大距离

Q1、判断操作后字符串中的数字是否相等 1、题目描述 给你一个由数字组成的字符串 s 。重复执行以下操作&#xff0c;直到字符串恰好包含 两个 数字&#xff1a; 从第一个数字开始&#xff0c;对于 s 中的每一对连续数字&#xff0c;计算这两个数字的和 模 10。用计算得到的新…...

20-R 绘图 - 饼图

R 绘图 - 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, l…...

【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新

note &#xff08;1&#xff09;未来的工作需亟待解决&#xff1a; 支持大规模 RL 训练&#xff08;PPO、GRPO 等&#xff09;的开源基础框架用于稳定训练的 GRPO 训练超参的自动化调优RL 训练数据的配比&#xff08;难度、领域、任务等&#xff09;基于 Instruct 模型训练 R…...

Linux 内核网络设备驱动编程:私有协议支持

一、struct net_device的通用性与私有协议的使用 struct net_device是Linux内核中用于描述网络设备的核心数据结构,它不仅限于TCP/IP协议,还可以用于支持各种类型的网络协议,包括私有协议。其原因如下: 协议无关性:struct net_device的设计是通用的,它本身并不依赖于任何…...

20241130 RocketMQ本机安装与SpringBoot整合

目录 一、RocketMQ简介 ???1.1、核心概念 ???1.2、应用场景 ???1.3、架构设计 2、RocketMQ Server安装 3、RocketMQ可视化控制台安装与使用 4、SpringBoot整合RocketMQ实现消息发送和接收? ? ? ? ? 4.1、添加maven依赖 ???4.2、yaml配置 ???4.3、…...

FFmpeg进化论:从av_register_all手动注册到编译期自动加载的技术跃迁

介绍 音视频开发都知道 FFmpeg,因此对 av_register_all 这个 API 都很熟悉,但ffmpeg 4.0 版本开始就已经废弃了,是旧版本中用于全局初始化的重要接口。 基本功能 核心作用:av_register_all() 用于注册所有封装器(muxer)、解封装器(demuxer)和协议处理器(protocol),…...

Http升级为Https - 开发/测试服环境

1.应用场景 主要用于开发/测试服环境将http升级为https, 防止前端web(浏览器)出现Mixed Content报错; 2.学习/操作 1.文档阅读 deepseek 问答; 2.整理输出 报错信息: Mixed Content: The page at <URL> was loaded over HTTPS, but requested an insecure XMLHttpRequ…...

C语言预编译

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…...

算法刷题-字符串-151.反转单词

题目 给一串字符串&#xff0c;里面有若干单词&#xff0c;以空格界定单词的结束&#xff0c;翻转其中的单词 输入&#xff1a;s " hello world " 输出&#xff1a;“world hello” 需要注意的是&#xff0c;给定的字符串可能存在头空格、尾空格以及中间的空格数量…...

单片机裸机编程:状态机与其他高效编程框架

在单片机裸机编程中&#xff0c;状态机是一种非常强大的工具&#xff0c;能够有效管理复杂的逻辑和任务切换。除了状态机&#xff0c;还有其他几种编程模式可以在不使用 RTOS 的情况下实现高效的程序设计。以下是一些常见的方法&#xff1a; 1. 状态机编程 状态机通过定义系统…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...