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

学习笔记069——Java集合框架

文章目录

  • 集合
    • 1、List 接口
    • 2、Set 接口
    • 3、Map
      • 3.1、Map 常用实现类

集合

需要创建多个对象,但是数量和类型不确定。

集合是 Java 提供的一种类型,功能和数组类似,但是长度和数据类型都是动态。

集合框架(包括很多类和接口)

可以分为 3 层,最上层是接口,继而是接口的实现类,接下来是对集合进行操作的各种工具类。

在这里插入图片描述

常用的接口

接口描述
ListCollection的子接口,存储一组有序,不唯一的数据
SetCollection的子接口,存储一组无序,唯一的数据
Collection集合框架最基础的接口
Map与 Collection 同级的接口,存储一组键值对象,无序,key 值唯一,value 可以不唯一
Iterator输出集合元素的接口,一般适用于无序集合,遍历集合中的数据

Collection 接口常用方法

方法描述
int size()获取集合长度
boolean isEmpty()判断集合是否为空
boolean contains(Object e)判断集合是否包含某个元素
Itreator iterator()获取迭代器(遍历集合)
Object[] toArray()集合转数组
boolean add(E e)向集合中添加元素
boolean remove(Object e)删除集合中的元素
boolean containsAll(Collection c)判断当前集合是否包含另外一个集合
boolean addAll(Collectino c)将集合添加到另外一个集合中
boolean removeAll(Collection c)从目标集合中删除子集合
void clear()清除集合中的所有元素
boolean equals(Object o)比较两个集合是否相等
int hashCode()获取集合的哈希值

子接口:

  • List
  • Set
  • Queue

1、List 接口

List 接口是 Collection 的子接口,常用的实现类有 ArrayList、LinkedList

ArrayList

ArrayList 实现了长度可变的数组,可以在内存中分配连续的空间,底层是基于索引的数据结构,所以查询效率很高,缺点是添加或删除数据效率较低,需要完成元素的移动。

在这里插入图片描述

在这里插入图片描述

重写 toString 方法,拼接数据

在这里插入图片描述

package com.htl.test;import java.util.ArrayList;
import java.util.Iterator;public class Test {public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add("Hello");arrayList.add("World");arrayList.add("JavaSE");arrayList.add("JavaME");arrayList.add("JavaEE");System.out.println(arrayList.toString());System.out.println("集合长度:"+arrayList.size());System.out.println("集合是否包含Hello:" + arrayList.contains("Hello"));Iterator iterator = arrayList.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}for (int i = 0; i < arrayList.size(); i++) {System.out.println(arrayList.get(i));}System.out.println("删除之前的集合是:" + arrayList);arrayList.remove(2);System.out.println("*****************************************");System.out.println("删除之后的集合是:" + arrayList);System.out.println("*****************************************");arrayList.remove("World");System.out.println("删除之后的集合是:" + arrayList);arrayList.add(2, "OK");System.out.println("添加之后的集合是:" + arrayList);arrayList.set(2, "TEST");System.out.println(arrayList);System.out.println(arrayList.indexOf("TEST2"));}
}

Vector 是一个早期的 List 实现类,用法基本和 ArrayList 一致。

package com.htl.test;import java.util.Iterator;
import java.util.Vector;public class Test2 {public static void main(String[] args) {Vector arrayList = new Vector();arrayList.add("Hello");arrayList.add("World");arrayList.add("JavaSE");arrayList.add("JavaME");arrayList.add("JavaEE");System.out.println(arrayList.toString());System.out.println("集合长度:"+arrayList.size());System.out.println("集合是否包含Hello:" + arrayList.contains("Hello"));Iterator iterator = arrayList.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}for (int i = 0; i < arrayList.size(); i++) {System.out.println(arrayList.get(i));}System.out.println("删除之前的集合是:" + arrayList);arrayList.remove(2);System.out.println("*****************************************");System.out.println("删除之后的集合是:" + arrayList);System.out.println("*****************************************");arrayList.remove("World");System.out.println("删除之后的集合是:" + arrayList);arrayList.add(2, "OK");System.out.println("添加之后的集合是:" + arrayList);arrayList.set(2, "TEST");System.out.println(arrayList);System.out.println(arrayList.indexOf("TEST2"));}
}

ArrayList 和 Vector 的区别是什么?

Vector 是线程安全的,ArrayList 是线程不安全的

Vector

在这里插入图片描述

ArrayList

在这里插入图片描述

Stack 是 Vector 的子类,实现了栈的数据结构,先进后出、后进先出

package com.htl.test;import java.util.Stack;public class Test3 {public static void main(String[] args) {Stack stack = new Stack();stack.push("Hello");stack.push("JavaSE");stack.push("JavaME");stack.push("JavaEE");System.out.println(stack);//将栈顶元素的值取出,但是栈顶元素不会删除System.out.println(stack.peek());//直接弹出栈顶元素System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());}
}

LinkedList 实现了链表的数据结构,“先进先出”,元素的存储空间是不连续的,随机分散在内存中的,元素和元素之间通过存储彼此的位置信息来形成连接关系,通过位置信息找到前后节点的关系。

优势是增删效率高,缺点是查询效率低,与 ArrayList 形成对比,它们的特性都是由于底层的存储结构决定的。

在这里插入图片描述

package com.htl.test;import java.util.LinkedList;public class Test4 {public static void main(String[] args) {LinkedList linkedList = new LinkedList();linkedList.add("Hello");linkedList.add("World");linkedList.add(1,"OK");System.out.println(linkedList);linkedList.addFirst("TEST");linkedList.addLast("Success");System.out.println(linkedList);System.out.println("**********************************");System.out.println(linkedList.peekFirst());System.out.println(linkedList.peekLast());System.out.println(linkedList.peek());System.out.println(linkedList.poll());System.out.println(linkedList.pollFirst());System.out.println(linkedList.pollLast());}
}

2、Set 接口

和 List 一样,也是 Collection 的子接口,Set 中的元素没有顺序,但是不能重复。

List 存入有序,可重复的元素。

Set 常用实现类包括 HashSet、LinkedHashSet、TreeSet。

HashSet 底层是 HashMap 实现的

HashSet

存储一组无序且唯一的元素

package com.htl;import java.util.HashSet;
import java.util.Iterator;public class HashSetTest {public static void main(String[] args) {HashSet hashSet = new HashSet();hashSet.add("Hello");hashSet.add("World");hashSet.add("Java");hashSet.add("Hello");System.out.println(hashSet.size());System.out.println(hashSet);System.out.println("***************************************");Iterator iterator = hashSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}hashSet.remove("Hello");System.out.println(hashSet);}
}

LinkedHashSet

存储一组有序且唯一的元素

有序和 List 的有序不是一回事

List 的有序是指存入集合的元素是有下标的,可以通过下标访问任意元素。

LinkedHashSet 的有序并不是说元素有下标,是指元素的存储顺序和遍历顺序是一致的。

package com.htl;import java.util.Iterator;
import java.util.LinkedHashSet;public class LinkedHashSetTest {public static void main(String[] args) {LinkedHashSet linkedHashSet = new LinkedHashSet();
//        linkedHashSet.add("Hello");
//        linkedHashSet.add("World");
//        linkedHashSet.add("Java");
//        linkedHashSet.add("Hello");for (int i = 0; i < 100; i++) {linkedHashSet.add(i);}System.out.println(linkedHashSet);Iterator iterator = linkedHashSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}}
}

equals 和 hashCode 一般是配合起来使用,来共同决定两个对象是否相等。

1、在比较的时候,首先比例两个对象的 hashCode,如果不相等,则直接判断两个对象不是同一个对象。

2、如果相等,此时不能决定两个对象是否相等,需要再次利用 equals 方法来判断,如果 equals 返回 true,则认为两个对象相等,否则认为两个对象不相等。

package com.htl;import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Objects;public class LinkedHashSetTest {public static void main(String[] args) {LinkedHashSet linkedHashSet = new LinkedHashSet();linkedHashSet.add(new A(1));linkedHashSet.add(new A(2));System.out.println(linkedHashSet);
//        linkedHashSet.add("Hello");
//        linkedHashSet.add("World");
//        linkedHashSet.add("Java");
//        linkedHashSet.add("Hello");
//        for (int i = 0; i < 100; i++) {
//            linkedHashSet.add(i);
//        }
//        System.out.println(linkedHashSet);
//        Iterator iterator = linkedHashSet.iterator();
//        while (iterator.hasNext()){
//            System.out.println(iterator.next());
//        }}
}class A{private int num;public A(int num) {this.num = num;}@Overridepublic String toString() {return "A{" +"num=" + num +'}';}@Overridepublic boolean equals(Object o) {return false;}@Overridepublic int hashCode() {if(num == 1) return 1;if(num == 2) return 1;return 0;}
}

TreeSet

TreeSet 存储一组有序,唯一的元素,这里的有序和 List、LinkedHashSet 都不同

TreeSet 的有序是指集合会自动对存入 TreeSet 中的元素按照升序进行排列。

package com.htl;import java.util.TreeSet;public class TreeSetTest {public static void main(String[] args) {TreeSet treeSet = new TreeSet();treeSet.add(1);treeSet.add(3);treeSet.add(6);treeSet.add(2);treeSet.add(5);treeSet.add(4);treeSet.add(1);System.out.println(treeSet);}
}

输出结果:[1, 2, 3, 4, 5, 6]

TreeSet 内部会自动按照升序对元素进行排列,所以添加到 TreeSet 集合中的元素必须具备排序的功能。

package com.htl;import java.util.TreeSet;public class TreeSetTest {public static void main(String[] args) {TreeSet treeSet = new TreeSet();treeSet.add(new B(1));treeSet.add(new B(3));treeSet.add(new B(6));treeSet.add(new B(2));treeSet.add(new B(5));treeSet.add(new B(4));treeSet.add(new B(1));System.out.println(treeSet);}
}class B implements Comparable{private int num;public B(int num) {this.num = num;}@Overridepublic int compareTo(Object o) {/*** A.compareTo(B)* 1表示A大于B* 0表示A等于B* -1表示A小于B*/B b = (B) o;if(this.num > b.num) return 1;if(this.num == b.num) return 0;if(this.num < b.num) return -1;return 0;}@Overridepublic String toString() {return "B{" +"num=" + num +'}';}
}

3、Map

Map 和 Collection 没有关系,是独立于 Collection 的另外一个体系

Set、List、Collection 只能操作单个元素,但是 Map 操作的是一组元素

Map 中存储的是键值对形式的数据,key-value 的映射关系。

Map 中常用的方法

方法描述
int size()获取集合长度
boolean isEmpty()判断集合是否为空
boolean containsKey(Object key)判断集合中是否存在某个key值
boolean containsValue(Object value)判断集合中是否存在某个value值
V get(Object key)通过key取value
V put(K key,V value)存入一组数据
V remove(Object key)通过可以删除value
void clear()清空集合
Set keySet()取出集合中的所有key,返回一个Set
Collection values()取出集中的所有value,返回一个Collection
Set enrtySet()将Map集合转换为Set集合
int hashCode()获取集合的哈希值
boolean equals()判断两个集合是否相等

3.1、Map 常用实现类

HashMap:存储一组无序,key不可以重复,value可以重复的数据

Hashtable:存储一组无序,key不可以重复,value可以重复的数据

TreeMap:存储一组有效,key不可以重复,value可以重复的数据,按照key进行排序

package com.htl;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class HashMapTest {public static void main(String[] args) {HashMap hashMap = new HashMap();hashMap.put("h", "Hello");hashMap.put("w", "World");hashMap.put("j", "Java");hashMap.put("s", "JavaSE");hashMap.put("m", "JavaME");hashMap.put("e", "JavaEE");hashMap.put("j", "Jack");System.out.println(hashMap);System.out.println("***********************************");Set set = hashMap.entrySet();Iterator<Map.Entry> iterator = set.iterator();while (iterator.hasNext()) {Map.Entry next = iterator.next();System.out.println(next.getKey());System.out.println(next.getValue());}}
}

相关文章:

学习笔记069——Java集合框架

文章目录 集合1、List 接口2、Set 接口3、Map3.1、Map 常用实现类 集合 需要创建多个对象&#xff0c;但是数量和类型不确定。 集合是 Java 提供的一种类型&#xff0c;功能和数组类似&#xff0c;但是长度和数据类型都是动态。 集合框架&#xff08;包括很多类和接口&#…...

JIS-CTF: VulnUpload靶场渗透

JIS-CTF: VulnUpload来自 <https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/> 1,将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 靶机IP地址192.168.23.162&#xff0c;攻击机IP地址192.168.23.140…...

2024年食堂采购系统源码技术趋势:如何开发智能的供应链管理APP

本篇文章&#xff0c;小编将与大家一同探讨2024年食堂采购系统的技术趋势&#xff0c;并提供开发更智能的供应链管理APP的策略。 一、2024年食堂采购系统的技术趋势 1.人工智能与机器学习的深度应用 在2024年&#xff0c;AI和机器学习在食堂采购系统中的应用将更加普遍。这些…...

Flink CDC实时同步mysql数据

官方参考资料&#xff1a; https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/mysql-cdc/ Apache Flink 的 Change Data Capture (CDC) 是一种用于捕获数据库变化&#xff08;如插入、更新和删除操作&#xff09;的技术。Flink CDC…...

解决MAC装win系统投屏失败问题(AMD显卡)

一、问题描述 电脑接上HDMI线后&#xff0c;电脑上能显示有外部显示器接入&#xff0c;但是外接显示器无投屏画面 二、已测试的方法 1 更改电脑分辨&#xff0c;结果无效 2 删除BootCamp&#xff0c;结果无效 3更新电脑系统&#xff0c;结果无效 4 在设备管理器中&#…...

【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;实现二叉排序树的基本算法。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;二叉树的创建、查找和删除算法。具体如下&#xff1a; (1)由…...

【NumPy进阶】:内存视图、性能优化与高级线性代数

目录 1. 深入理解 NumPy 的内存视图与拷贝1.1 内存视图&#xff08;View&#xff09;1.1.1 创建视图1.1.2 视图的特点 1.2 数组拷贝&#xff08;Copy&#xff09;1.2.1 创建拷贝1.2.2 拷贝的特点 1.3 视图与拷贝的选择 2. NumPy 的优化与性能提升技巧2.1 向量化操作示例&#x…...

[C++]多态

1. 什么是多态性&#xff1f; 1.定义 多态性是指同一个函数或操作在不同对象上表现出不同的行为。 2.分类 C 中的多态性主要分为两种&#xff1a; 1.编译时多态性&#xff08;静态多态性&#xff09;&#xff1a; 编译时决定调用哪个函数。通过 函数重载 和 运算符重载 实…...

文本编辑器与正则表达式

1. VIM 编辑器 1.1 VIM 基本概念 VIM 是一个高度可定制的文本编辑器&#xff0c;广泛用于程序员的日常开发中。与传统的文本编辑器不同&#xff0c;VIM 基于模式操作&#xff0c;具有以下几个主要特点&#xff1a; 普通模式&#xff1a;用于浏览和修改文本。插入模式&#x…...

鲲鹏麒麟安装Kafka-v1.1.1

因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1&#xff0c;因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…...

scala基础_数据类型概览

Scala 数据类型 下表列出了 Scala 支持的数据类型&#xff1a; 类型类别数据类型描述Scala标准库中的实际类基本类型Byte8位有符号整数&#xff0c;数值范围为 -128 到 127scala.Byte基本类型Short16位有符号整数&#xff0c;数值范围为 -32768 到 32767scala.Short基本类型I…...

【重生之我要苦学C语言】文件操作

文件操作 为什么使用文件 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化的保…...

Python中PyTorch详解

文章目录 Python中PyTorch详解一、引言二、PyTorch核心概念1、张量&#xff08;Tensor&#xff09;1.1、创建张量1.2、张量操作 2、自动求导&#xff08;Autograd&#xff09;2.1、自动求导示例 三、构建神经网络1、使用nn模块2、优化器&#xff08;Optimizer&#xff09; 四、…...

Codigger SIDE之Helix编辑器

在Codigger的多维世界中&#xff0c;Helix编辑器以其卓越的性能和灵活性&#xff0c;成为开发者手中的利剑。基于Rust构建&#xff0c;Helix不仅继承了Vim编辑器的经典特性&#xff0c;更以其现代化的功能&#xff0c;重新定义了代码编辑的边界。 模式切换的艺术 Helix的模式切…...

vue3+echarts+websocket分时图与K线图实时推送

一、父组件代码&#xff1a; <template> <div class"chart-box" v-loading"loading"> <!-- tab导航栏 --> <div class"tab-box"> <div class"tab-list"> <div v-for"(item, index) in tabList…...

Maven常用插件清单

Maven 是一个强大的项目管理和构建工具&#xff0c;它使用插件来执行各种构建生命周期任务。以下是常用的一些 Maven 构建插件及其主要用途&#xff1a; 1. Maven Compiler Plugin 用途&#xff1a;编译Java源代码。配置示例&#xff1a;<build><plugins><plu…...

敏捷项目管理

虽然一直在践行敏捷开发&#xff0c;包括站会、尝试使用Confluence做知识wiki、每周分享等等&#xff0c;当然项目日常使用的coding、禅道、jira 项目管理和 jenkins 、git之类的CICD工具更不必说&#xff0c;但确实没有系统地去学习过敏捷开发管理。昨天被人问到敏捷开发到底是…...

牛客小白月赛107(A~E)

文章目录 A Cidoai的吃饭思路code B Cidoai的听歌思路code C Cidoai的植物思路code D Cidoai的猫猫思路code E Cidoai的可乐思路code 牛客小白月赛107 A Cidoai的吃饭 思路 签到题&#xff0c;按题意模拟即可 code void solve(){int n,a,b,c;cin >> n >> a &g…...

【传感器技术】第6章 压电式传感器,压电材料,压电效应,电压放大器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

基于Python深度学习的【猫狗宠物识别】系统设计实现

一、简介 宠物识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;基于TensorFlow搭建卷积神经网络算法&#xff0c;并收集了37种常见的猫狗宠物种类数据集【‘阿比西尼亚猫&#xff08;Abyssinian&#xff09;’, ‘孟加拉猫&#xff08;Bengal&#xff09;’…...

网站多语言前端翻译translate.js 在vue项目中的使用方法

网站多语言前端翻译translate.js 在vue项目中的使用方法 需求 客户网站&#xff0c;想要多语言版本的&#xff0c;通常的解决办法有两种&#xff1a; 1、最直接的办法&#xff1a;编写两种&#xff0c;或者多种语言版本的网站&#xff0c;也就是一个网站有几种语言&#xff0…...

HTML技术贴:深入理解与实践

1. 引言 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是构建网页和网上应用的标准标记语言。它定义了网页内容的结构和意义&#xff0c;由一系列元素组成&#xff0c;这些元素告诉浏览器如何展示内容。本技术贴旨在深入探讨HTML的核心技…...

在SQL Server中使用hash join来提高表连接的性能

在SQL Server中使用hash join来提高表连接性能时&#xff0c;需要考虑数据集的大小、索引情况以及查询的具体需求。 在SQL Server中使用hash join来提高表连接性能的情况主要包括以下几种&#xff1a; • 两个表都没有合适的索引&#xff1a;Hash join通常适合当两个表都没有索…...

一键学懂BurpSuite(8)

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…...

系统思考—战略决策

别用管理上的勤奋&#xff0c;来掩盖经营上的懒惰。 日本一家物业公司&#xff0c;因经营不善&#xff0c;面临生死存亡的危机。老板为了扭转局面&#xff0c;采取了很多管理手段——提高员工积极性&#xff0c;推行业绩与绩效挂钩&#xff0c;实施各种考核制度。然而&#xf…...

mybatis,mysql之collection 与 association 不生效问题(仅是个人常犯错误)

因为自己马大哈&#xff0c;经常犯这个错误&#xff0c;原以为是拷贝的代码问题&#xff0c;最后发现是自己的遗漏问题&#xff01; 看代码&#xff0c;先看不生效的 <resultMap type"Price" id"PriceResult"><id property"priceId&qu…...

探索 Echarts 绘图:数据可视化的奇妙之旅

目录 一、Echarts 初印象 二、搭建 Echarts 绘图环境 三、绘制第一个图表&#xff1a;柱状图的诞生 四、图表的美化与定制&#xff1a;让数据更具吸引力 1. 主题切换&#xff1a;一键变换风格 2. 颜色调整&#xff1a;色彩搭配的艺术 3. 标签与提示框&#xff1a;丰富信…...

Python粉色圣诞树

系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…...

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…...

嵌入式驱动开发详解15(电容触摸屏gt9147)

文章目录 前言电容触摸屏特点MT触摸消息电容触摸屏协议电容屏触摸时序Type A 触摸点信息上报时序Type B 触摸点信息上报时序 多点触摸所使用到的API函数 驱动部分驱动框图设备树节点修改设备树引脚配置设备节点配置 具体驱动开发I2C驱动框架I2C框架内部实现 参考文献 前言 随着…...

supervision - 好用的计算机视觉 AI 工具库

Supervision库是一款出色的Python计算机视觉低代码工具&#xff0c;其设计初衷在于为用户提供一个便捷且高效的接口&#xff0c;用以处理数据集以及直观地展示检测结果。简化了对象检测、分类、标注、跟踪等计算机视觉的开发流程。开发者仅需加载数据集和模型&#xff0c;就能轻…...

软件安装不成功,一直出现“chrome_elf.dll丢失”问题是什么原因?“chrome_elf.dll丢失”要怎么解决和预防?

软件安装遇阻&#xff1a;“chrome_elf.dll丢失”问题全解析与解决方案 在软件安装与运行的过程中&#xff0c;我们时常会遇到各式各样的错误提示&#xff0c;其中“chrome_elf.dll丢失”便是较为常见的一种。这个错误不仅阻碍了软件的正常安装&#xff0c;也给用户带来了不小…...

10篇--图像噪点消除

概念 何为噪点&#xff1f; 噪点&#xff1a;指图像收到的一些干扰因素&#xff0c;通常是由图像采集设备、传输信道等因素造成的&#xff0c;表现为图像中随机的亮度&#xff0c;也可以理解为有那么一些点的像素值与周围的像素值格格不入。 常见的噪声类型 高斯噪声&#…...

在 Vue 2 中,在 <el-table> 中为每一行动态插入对应的 echart 组件

更新数据结构:确保每一行数据都包含需要绘制图表的数据(例如 demandRespList 和 timeList),以便为每行生成不同的图表。 修改 getTableDataPreview 方法:在获取数据后,您需要为每一行创建对应的图表配置。 在 <el-table-column> 中使用 slot-scope:使用 slot-scop…...

protobuf c++开发快速上手指南

1、环境准备 在c环境使用 protobuf&#xff0c;需要安装protobuf runtime以及protobuf的编译器&#xff1a;protoc&#xff0c;其作用如下表格&#xff1a; 需要安装的环境作用protoc将proto文件编译成c源码protobuf runtime编译c源码需要链接到protobuf库 注意&#xff1a;…...

【HTML】HTML动画时钟

今天分享一个比较有趣的HTML动画时钟&#xff0c;感兴趣的小伙伴可以自行上手体验一番&#xff0c;操作也非常简单&#xff0c;如下&#xff1a; 1. 实操 实践操作步骤&#xff1a; 创建一个文本文件 clock.txt将上述代码粘贴到 clock.txt 中。修改文件后缀&#xff0c;将文…...

2024年全国仿真创新应用大赛 | MWORKS助力“复杂系统数字仿真”赛道,获奖名单公布

2024年全国仿真创新应用大赛全国总决赛于近日圆满落幕。大赛由工业和信息化部人才交流中心主办&#xff0c;以“创新引领&#xff0c;铸就未来”为主题&#xff0c;来自全国的参赛院校、企业、医学科学单位、军事科学单位及仿真领域的科研院所共计422家、近1300余人参加了此次总…...

ionic V6 安装ios所需

npm install capacitor/ios添加ios平台 ruby要求3.0以上 rvm use ruby-3.1.0 --default npx cap add ios打开xcode看看创建的项目 npx cap open ios没有capacitor指定的位置, 估计之前pod(cocoapods)安装搞得Ruby环境很乱了......cocoapods整的我麻了... App/App/capacitor…...

Docker Compose 多应用部署 一键部署

介绍 Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器&#xff0c;帮助我们实现多个相互关联的Docker容器的快速部署。 如&#xff1a;springbootmysqlnginx 如果一个个去部署他会非常的麻烦&#xff0c;这时候可以选择Docker …...

ubuntu20.04安装qt creator

以上三种&#xff0c;选择其一安装即可 回答1&#xff1a; 您可以按照以下步骤在ubuntu 20.04上安装Qt Creator&#xff1a; 打开终端并输入以下命令以更新软件包列表&#xff1a; sudo apt update 安装Qt Creator和Qt库&#xff1a; sudo apt install qtcreator qt5-def…...

经典NLP案例 | 推文评论情绪分析:从数据预处理到模型构建的全面指南

NLP经典案例&#xff1a;推文评论情绪提取 项目背景 “My ridiculous dog is amazing.” [sentiment: positive] 由于所有推文每秒都在传播&#xff0c;很难判断特定推文背后的情绪是否会影响一家公司或一个人的品牌&#xff0c;因为它的病毒式传播&#xff08;积极&#xff0…...

蓝卓生态说 | 捷创技术李恺和:把精细管理和精益生产做到极致

成功的产品离不开开放式创新和生态协同的力量。近年来&#xff0c;蓝卓坚持“平台生态"战略&#xff0c;不断加码生态&#xff0c;提出三个层次的开源开放生态计划&#xff0c;举办"春风行动”、“生态沙龙"等系列活动&#xff0c;与生态伙伴共生、共创、共同推…...

启发式搜索算法和优化算法的区别

启发式搜索算法和优化算法在计算机科学中都有广泛的应用&#xff0c;但它们之间存在一些明显的区别。 一、定义与核心思想 启发式搜索算法 定义&#xff1a;启发式搜索算法是一类基于经验和直觉的问题求解方法&#xff0c;通过观察问题的特点&#xff0c;并根据某种指…...

生成树协议STP工作步骤

第一步&#xff1a;选择根桥 优先级比较&#xff1a;首先比较优先级&#xff0c;优先级值越小的是根桥MAC地址比较&#xff1a;如果优先级相同&#xff0c;则比较MAC地址。MAC地址小的是根桥。 MAC地址比较的时候从左往右&#xff0c;一位一位去比 第二步&#xff1a;所有非根…...

批量合并多个Excel到一个文件

工作中&#xff0c;我们经常需要将多个Excel的数据进行合并&#xff0c;很多插件都可以做这个功能。但是今天我们将介绍一个完全免费的独立软件【非插件】&#xff0c;来更加方便的实现这个功能。 准备Excel 这里我们准备了两张待合并的Excel文件 的卢易表 打开的卢易表软件…...

如何在vue中实现父子通信

1.需要用到的组件 父组件 <template><div id"app"><BaseCount :count"count" changeCount"cahngeCount"></BaseCount></div> </template><script> import BaseCount from ./components/BaseCount.v…...

强化学习Q-learning及其在机器人路径规划系统中的应用研究,matlab代码

一、Q-learning 算法概述 Q-learning 是一种无模型的强化学习算法&#xff0c;它允许智能体&#xff08;agent&#xff09;在没有环境模型的情况下通过与环境的交互来学习最优策略。Q-learning的核心是学习一个动作价值函数&#xff08;Q-function&#xff09;&#xff0c;该函…...

【算法】EWMA指数加权移动平均绘制平滑曲线

EWMA&#xff08;Exponentially Weighted Moving Average&#xff0c;指数加权移动平均&#xff09;是一种常用的时间序列平滑技术&#xff0c;特别适用于对过去数据给予不同的权重。以下是对EWMA算法的详细介绍&#xff1a; 一、核心思想 EWMA算法的核心思想是通过指数衰减来…...

jenkins harbor安装

Harbor是一个企业级Docker镜像仓库‌。 文章目录 1. 什么是Docker私有仓库2. Docker有哪些私有仓库3. Harbor简介4. Harbor安装 1. 什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub&#xff0c;而与Dock…...

行为树详解(4)——节点参数配置化

【分析】 行为树是否足够灵活强大依赖于足够丰富的各类条件节点和动作节点&#xff0c;在实现这些节点时&#xff0c;不可避免的&#xff0c;节点本身需要有一些参数供配置。 这些参数可以分为静态的固定值的参数以及动态读取设置的参数。 静态参数直接设置为Public即可&…...