java基础—集合类

在这里插入图片描述java集合框架包含两种类型的容器,一种是集合collection,另一种是图map。集合collection有三种子类型set,list,Queue。

set

set是一种无序且不包含重复元素的collection,set最多只有一个null

HashSet

HashSet是由哈希表实现,数据是无序的,只能放入一个null,其底层是hashMap,只使用了HashMap的key来存放数据。HashSet要求放入的对象必须实现hashcode方法,放入的对象是以hashcode码作为标识的,相同内容的String对象,hashcode相同,所以放入的内容不能相同,但同一个类的对象可以放入不同的实例。
HashSet中保证元素唯一的hashcode和equals方法进行判断。如果hashcode不同,则不用判断equals直接存在hashset中,如果hashcode相同,则需要用equals判断,相同则不存,不相同则存储。

TreeSet

TreeSet底层是自平衡的排序二叉树,可以保证快速检索指定节点。保证数据唯一性的方法是根据比较方法返回的结果是否为0,为0则相同,不加入TreeSet,不为0则为不同元素,进行存储,所以要求加入TreeSet的对象类要实现Comparable接口,否则会抛出异常。
TreeSet对元素的排序方式:
1)自然排序:元素本身具有排序功能,实现Comparable接口,重写compareTo方法
2)比较器排序:元素不具备排序功能,实现Comparator接口,覆盖compare方法
compareTo和compare方法
compareTo是java.lang.Comparable< T >接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable< T >接口,重写compareTo方法。
它强行将实现它的每一个接口进行整体排序------称为自然排序,实现此接口的对象列表和数组可以用Collections.sort和Arrays.sort进行自动排序。
只要实现了这个接口,其对象就拥有了排序能力,是一种内部排序方式,通过实现它唯一的方法compareTo。
compare是java.util.Comparator< T > 接口中的方法,实际上用的是待比较对象的compareTo方法,主要是针对一些没有比较能力的对象,为他们实现比较的功能,所以叫做比较器,是一种外部的东西,通过它定义比较的方式,再传到Collections.sort()和Arrays.sort()中对目标排序,而且通过自身的compare方法定义比较的内容和结果的升降序

      List<String> list = Arrays.asList("hello", "world", "welcome", "nihao");//按照字母排序Collections.sort(list);System.out.println(list);//按照字符串的长度.Collections.sort(list, (item1, item2) -> item1.length() - item2.length());System.out.println(list);//按照字符串的长度降序排序.Collections.sort(list, (item1, item2) -> item2.length() - item1.length());

list

list是有序的collection,能够精确控制每个元素插入的位置,用户能够使用索引(元素在list中的位置,类似数组中的下标)来访问list中的元素,类似于java的数组。
list允许有相同的元素,常用的实现类:Arraylist,linkedlist,Stack和vector

list的3种遍历方式

for(int i=0;i<list.size();i++){list.get(i);
}
for(String s:list){System.out.print(s);
}
Iterator<String> iter=list.iterator();
while(iter.hasNext()) String s=iter.next();

Iterator和ListIterator
Iterator是所有集合Collection类都可以使用的迭代器,ListIterator是专门为list设计的迭代器接口。ListIterator继承了Iterator接口。Iterator接口只支持hasNext(),next(),remove()3种操作,ListIterator支持更多操作。

ublic interface ListIterator<E> extends Iterator<E> {//继承自Iterator的接口boolean hasNext();         //后面是否有元素E next();                  //游标向后移动,取得后面的元素void remove();             //删除最后一个返回的元素//ListIterator新增的接口boolean hasPrevious();     //前面是否有元素E previous();              //游标往前移动,取得前面的元素int previousIndex();       //取得游标前的indexint nextIndex();           //取得游标后的indexvoid set(E e);             //将当前元素改设成evoid add(E e);             //增加一个元素
}

注意,一边遍历一边用Iterator和ListIterator做删除或增加的工作,不会影响list的结果。但如果不使用迭代器,而直接在遍历中对list进行增删会报错。Java容器有一种保护机制,能防止多个进程同时修改同一个容器的内容。遍历过程中,另一个进程对其容器对象进行修改操作会抛出ConcurrentModificationException。在遍历过程中都调用了checkForConmodification来判断当前arraylist是否同步。每次对容器对象修改时会执行一次modCount加一操作,遍历时把modCount传入,arraylist在checkForConmodification中验证modcount和expectedModCount是否一致。而是用迭代器进行remove等操作是允许的,因为其操作的不是list对象,而是Iterator对象。
Linkedlist查找元素较慢,一般使用ListIterator来进行查找。

ArrayList

ArrayList实现了可变大小的数组,允许所有元素包括null,底层采用动态数组的存储模式,遍历效率高,但arraylist是线程不安全的。
size,isEmpty,get,set方法运行时间为常数,add方法的开销为分摊的常数,添加n个元素需要O(n)时间,其他方法运行时间运行为线性。
每个arraylist实例都有一个容量capacity,用于存储元素的数组大小,这个容量可随着不断添加元素而自动增加。当插入大量元素时,可通过ensureCapacity方法来增加arraylist的容量,以提高插入效率。
arrayList的初始容量系统默认为10,每次按照1.5倍通过copyOf方式扩容。

ArrayList的浅拷贝和深拷贝

浅拷贝
ArrayList<Integer> list2=new ArrayList<>(l1);
list2.addAll();
ArrayList<Integer> list2=(ArrayList<Integer>)l1.clone()
Collections.copyOf(list2,list1);
深拷贝
1.需要对泛型类实现序列化

public static <T>List<T> depCopy(List<T> srcList){ByteArrayOutputStream byteOut=new ByteArrayOutputStream();try{ObjectOutputStream out=new ObjectOutputStream(byteOut);out.writeObject(srcList);ByteArrayInputStream byteIn=new ByteArrayInputStream(byteOut.toByteArray());ObjectInputStream in=new ObjectInputStream(byteIn);List<T> destList=(List<T>)in.readObject();return destList;}catch(IOException e){e.printStackTrace();}catch(ClassNotFoundException e){e.printStackTrace();}return null;
}

2.泛型类实现cloneable接口,重写clone方法,有限制,要先声明list保存的对象,对象中有list集合不行

public static List<Address> depCopy(List<Address> addresses){List<Address> destAddress=new ArrayList<>();for(Address ad:addresses){destAddress.add((Address)ad.clone());}
}

LinkedList

LinkedList底层是基于双向循环链表,且头节点不存放数据。
LinkedList是继承AbstractSequentialList的双向链表,可以被当做堆栈,队列或双端队列进行操作。
LinkedList实现了list接口,能进行队列操作。
LinkedList实现Deque接口,能将其当做双端队列使用。
LinkedList实现了Cloneable接口,覆盖了函数clone(),能克隆。
LinkedList实现了java.io.Serializable接口,所以linkedList支持序列化,能通过序列化去传输。
LinkedList是非同步的。

LinkedList和ArrayList的区别

ArrayList实现了基于动态数组的数据结构,LinkedList实现了基于链表的数据结构。
对于随机访问,ArrayList优于LinkedList,LinkedList要移动指针
对于新增和删除操作,LinkedList优于ArrayList,因为ArrayList要移动数据。

Vector

vector是通过Sychronized实现线程安全的动态数组。

Stack

Stack继承Vector。实现后进先出的堆栈,Stack提供额外5个方法,使得vector可以当做堆栈使用。基本的push和pop方法,peek(),empty(),search()检测一个元素在堆栈中的位置。

栈和队列

栈与队列的相同点
1.都是线性结构。
2.插入操作都是限定在表尾进行。
3.都可以通过顺序结构和链式结构实现。、
4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
5.多链栈和多链队列的管理模式可以相同。
栈与队列的不同点
1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
3.顺序栈能够实现多栈空间共享,而顺序队列不能。
栈共享空间的思想是:让一个栈的栈底为数组的开始端,即下标为0处,另一个栈的栈底为数组的末端,即下标为数组长度的n-1出,这样,两个栈如果增加元素,就是两端点向中间延伸。当两个栈见面之时,也就是两个指针相差1时,即top1 + 1 == top2时为栈满。

Queue

Queue模拟队列这种数据结构,遵循先进先出原则
(1)添加元素
boolean add(E e); boolean offer(E e);
//这两个方法都在尾部添加一个值为e的元素。如果队列没有满,将给定的元素添加到这个队列的尾部并返回true。不同的是如果队列满了,add方法会抛出一个IllegalStateException异常,而offer方法返回false。
(2)删除并返回元素
E remove(); E poll();
这两个方法删除队列头部的元素。如果队列非空,这两个方法删除头部元素后并返回这个元素。不同的是如果队列是空的,remove方法抛出一个NoSuchElementException异常,而poll方法返回false。
(3) 获得头部元素
E element(); E peek();
这两个方法都会返回头部的元素,而都不删除头部元素。不同的是如果队列是空的,element方法抛出一个NoSuchElementException异常,而peek方法返回null。

Deque双端列表

(1)添加元素
void addFirst(E e); void addLast(E e); boolean offerFirst(E e); boolean offerLast(E e);
这四个方法在头部或尾部添加给定的元素。如果队列满了,前两个方法将抛出一个IllegalStateException异常,后两个方法返回false。
(2)删除并返回元素
E removeFirst(); E removeLast(); E pollFirst(); E pollLast();
这四个方法删除头部或尾部的元素并返回。如果队列为空,前两个方法将抛出一个NoSuchElementException异常,后两个方法返回null。
(3)返回但不删除元素
E getFirst(); E getLast(); E peekFirst(); E peekLast();
这四个方法返回头部或尾部的元素,但不删除。如果队列为空,前两个方法将抛出一个NoSuchElementException异常,后两个方法返回null。

PriorityQueue

PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示(任意一个非叶子节点的权值,都不大于其左右子节点的权值)
大顶堆

PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(DEFAULT_INITIAL_CAPACITY ,new Comparator<Integer>(){@Overridepublic int compare(Integer i1 , Integer i2){return i2 - i1;
}
});

LinkedList

LinkedList同时实现了Deque, Queue, List三个接口

map

Map没有继承Collection接口,Map提供key到value的映射,一个map不能含有相同的key,每个key只能映射一个value。

HashMap

JDK1.7:数组+链表
JDK1.8:数组+链表+红黑树:链表长度>=8,链表转为红黑树。

HashTable

HashTable继承Dictionary,实现了Map,Cloneable,Serializable接口,实现了key-value映射表,任何非空对象都可作为key和value。
HashTable采用"拉链法"实现哈希表,它定义了几个重要的参数:table、count、threshold、loadFactor、modCount。
table:为一个Entry[]数组类型,Entry代表了“拉链”的节点,每一个Entry代表了一个键值对,哈希表的"key-value键值对"都是存储在Entry数组中的。

count:HashTable的大小,注意这个大小并不是HashTable的容器大小,而是他所包含Entry键值对的数量。

threshold:Hashtable的阈值,用于判断是否需要调整Hashtable的容量。threshold的值=“容量*加载因子”。

loadFactor:加载因子。

modCount:用来实现“fail-fast”机制的(也就是快速失败)。所谓快速失败就是在并发集合中,其进行迭代操作时,若有其他线程对其进行结构性的修改,这时迭代器会立马感知到,并且立即抛出ConcurrentModificationException异常。
默认构造函数,容量为11,加载因子为0.75。.用指定初始容量和指定加载因子构造一个新的空哈希表。其中initHashSeedAsNeeded方法用于初始化hashSeed参数,其中hashSeed用于计算key的hash值,它与key的hashCode进行按位异或运算。这个hashSeed是一个与实例相关的随机值,主要用于解决hash冲突。
HashTable是同步的,所有的读写等操作都进行了锁(synchronized)保护。
1. put方法
先获取synchronized锁。
put方法不允许null值,如果发现是null,则直接抛出异常。
计算key的哈希值和index
遍历对应位置的链表,如果发现已经存在相同的hash和key,则更新value,并返回旧值。
如果不存在相同的key的Entry节点,则调用addEntry方法增加节点。
addEntry方法中,如果需要则进行扩容,之后添加新节点到链表头部。
2. get方法
先获取synchronized锁。
计算key的哈希值和index。
在对应位置的链表中寻找具有相同hash和key的节点,返回节点的value。
如果遍历结束都没有找到节点,则返回null。
3.rehash扩容方法
数组长度增加一倍(如果超过上限,则设置成上限值)。
更新哈希表的扩容门限值。
遍历旧表中的节点,计算在新表中的index,插入到对应位置链表的头部。
4.remove方法
先获取synchronized锁。
计算key的哈希值和index。
遍历对应位置的链表,寻找待删除节点,如果存在,用e表示待删除节点,pre表示前驱节点。如果不存在,返回null。
更新前驱节点的next,指向e的next。返回待删除节点的value值。

TreeMap

TreeMap继承AbstractMap,通过comparator接口我们可以对TreeMap的内部排序进行精密的控制。

ConcurrentHashMap

1.7ConcurrentHashMap
底层是一个segment数组。segment类,其属性有一个hashEntry数组。
并发级别默认16指segment的大小
Capacity默认16用于计算hashEntry的大小
每个segment里hashEntry数组的大小最小是2,也是2的整数幂
底层是UNSAFE直接操作
先计算key的hash值得到segment下标,访问该位置,从UNSAFE类中获取该位置的segment对象,如果不存在就用UNSAFE的CAS新建一个,保证线程安全

其实就是将HashMap分为多个小HashMap,每个Segment元素维护一个小HashMap,目的是锁分离,本来实现同步,直接可以是对整个HashMap加锁,但是加锁粒度太大,影响并发性能,所以变换成此结构,仅仅对Segment元素加锁,降低锁粒度,提高并发性能。
扩容:只针对segment内部,segment之间不相关
put操作
对于插入操作,需要两次Hash映射去定位数据存储位置
首先通过第一次hash过程,定位Segment位置,然后通过第二次hash过程定位HashEntry位置
Segment继承ReentrantLock,在数据插入指定HashEntry过程的时候会尝试调用ReentrantLock的tryLock方法获取锁,如果获取成功就直接插入相应位置,如果有线程获取该Segment的锁,当前线程就会以自旋方式去继续调用tryLock方法去获取锁,超过指定次数就挂起,等待唤醒。
Trylock:true,false,不会阻塞
Lock:false 阻塞

get操作
也是两次Hash映射,相对于put操作,少了加锁过程
ConcurrentHashMap为什么读的时候不加锁?
ConcurrentHashMap是分段并发分段进行读取数据的。
Segment 里面有一个Count 字段,用来表示当前Segment中元素的个数 它的类型是volatile变量。所有的操作到最后都会在最后一部更新count 这个变量,由于volatile变量 happer-before的特性。导致get 方法能够几乎准确的获取最新的结构更新。

size操作
size操作就是计算ConcurrentHashMap的大小,有两种方案
给每个Segment都加上锁(相当于给整个Map加上锁),然后计算size返回
不加锁的模式,尝试多次计算ConcurrentHashMap的size,最多三次,比较前后计算的结果,结果一致就认为当前没有元素加入,计算结果是准确的。(查看计算出size的前后modCount的数值有没有发生变化,modCount的值用于记录元素变化的操作。如put,remove,clear)
1.8 ConcurrentHashMap
jdk1.8ConcurrentHashMap是数组+链表,或者数组+红黑树结构,并发控制使用,只有一个Node数组通过Synchronized关键字和CAS操作完成并发控制。扩容时,synchronized对头结点加锁,加完锁判断是否是之前的那个节点
binCount:链表的节点数
树化:TreeBin对象,里面有个红黑树
为什么要生成treeBin?如果依然是TreeNode对象,有可能红黑树的根节点会发生变化,但线程的锁锁住的是根节点,所以用TreeBin对象封装一颗红黑树,这样里面怎么变
putValue函数,首先调用spread函数,计算hash值,之后进入一个自旋循环过程,直到插入或替换成功,才会返回。如果table未被初始化,则调用initTable进行初始化。之后判断hash映射的位置是否为null,如果为null,直接通过CAS自旋操作,插入元素成功,则直接返回,如果映射的位置值为MOVED(-1),则直接去协助扩容,排除以上条件后,尝试对链头Node节点f加锁,加锁成功后,链表通过尾插遍历,进行插入或替换。红黑树通过查询遍历,进行插入或替换。之后如果当前链表节点数量大于阈值,则调用treeifyBin函数,转换为红黑树最后通过调用addCount,执行CAS操作,更新数组大小,并且判断是否需要进行扩容

HashMap,HashTable和concurrentHashMap区别

1.继承不同,HashMap继承AbstractMap,Hashtable继承Dictionary,ConcurrentHashMap继承AbstractMap,也实现了concurrentMap接口。
2.HashMap非安全,HashTable和concurrentHashMap实现同步方法,concurrentHashMap降低锁粒度。
3.key-value:concurrentHashMap和hashtable不允许value,key为null,HashMap允许唯一key为null,多个value为null
4.哈希算法:HashMap和1.8的concurrentHashMap的算法一致是使用key的hashcode进行高16位和低16位异或,再取模长度,hashtable直接对key的hashcode值取模。
5.扩容,concurrentHashMap和hashmap的扩容和初始容量一致,扩两倍,初始为16,hashtable初始为11,扩容2倍+1
6.失败机制,concurrentHashMap支持安全失败,hashtable和hashmap支持快速失败
7.concurrentHashMap和hashtable支持contains,hashmap不支持。
8.concurrentHashMap支持Enumeration迭代。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 精读论文:Unifying Multi-Domain Multi-Task Learning: Tensor and Neural Network Perspectives(附翻译)

    Unifying Multi-Domain Multi-Task Learning:Tensor and Neural Network Perspectives 目录Unifying Multi-Domain Multi-Task Learning:Tensor and Neural Network Perspectives一、总结二、翻译0. 摘要1. 引言Multi-Domain 和 Multi-Task Learning域自适应和域泛化2. 方法——…...

    2024/4/11 21:31:09
  2. learnOpenGL 1.8 坐标系统

    一个物体从被我们创建到在屏幕上显示出来,需要经过多个坐标空间。 我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐…...

    2024/4/11 21:31:08
  3. HTTP第二阶段笔记

    HTTP经典五层模型低三层物理层:主要作用是定义物理设备如何传输数据 数据链路层:在通信的实体间建立数据链路连接 网络层:为数据在结点之间传输创建逻辑链路传输层向用户提供可靠的端到端(End-to-End)服务 传输层向高层屏蔽了下层数据通信的细节应用层为应用软件提供了很多服…...

    2024/4/11 21:31:07
  4. Python下载腾讯非VIP视频(末尾附赠VIP付费视频爬虫教程)

    开发工具 **Python版本:**3.6.4 相关模块: PIL模块; requests模块; click模块; 以及一些Python自带的模块。 相关文件 关注公众号“python工程狮”回复‘腾讯’获取。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 原理简介 做之前随手Google了一下…...

    2024/4/19 18:06:44
  5. 如何判断一个三位数是否包含某个数字?

    /* * 数组元素求和 * 有这样的一个数组,元素是{768,27,95,88,171,996,51,210}。 * 求出该数组中满足要求的元素和, * 要求是:求和的元素个位、十位、百位都不能是7,并且只能是偶数. */ public class Exercise6 {public static void main(String[] args) {int[] ints = {768…...

    2024/4/11 19:30:42
  6. 正则表达式,json表达式

    jmeter-关联(正则表达式) 一:什么时候需要关联关联是请求与请求之间存在数据依赖关系,需要从上一个请求中获取下一个请求中需要回传回去的数据 服务器返回的动态变化而且队业务有影响的需要关联 看下脚本是否正确,检查脚本是否有动态数据影响 一大串字符串,每次请求的参数…...

    2024/4/10 11:19:48
  7. java如何自定义全局查找整个项目文件

    前几天老大给了个excel,里面有从其他公司购买的一些数据表,让我统计一下有哪些表我们的系统有用到,这个excel里面有上千个表名,手工用idea的全局搜索一个一个的查找显然是不可能的,这样也不符合我们作为程序员的身份,于是我想到了以下的解决方案,记录一下。其实方案也是…...

    2024/4/10 11:19:47
  8. 【论文笔记】Unsupervised Information Extraction: Regularizing Discriminative Approaches with RelDist loss

    文章目录Unsupervised Information Extraction: Regularizing Discriminative Approaches with Relation Distribution Losses导读Abstract1. Introduction2. Related Work3. Model description3.1 Unsupervised relation classifier3.2 Link PredictorNegative Sampling3.3 Re…...

    2024/4/11 21:31:06
  9. 简单工厂

    序:学习设计模式也有好长时间了 是时候总结一波了 就先拿我们最先接触的简单工厂来做一些总结吧 什么是简单工厂 首先简单工厂并不是一种设计模式,而是一个最简单的工厂模式 它可以根据不同的参数,创建并返回不同的类,其中这些类具有一个公共的父类或者同一个接口。 简单工…...

    2024/4/11 21:31:05
  10. less基本使用

    1、less中的注释: 以//开头的注释,不会被编译到css文件中 以/**/包裹的注释会被编译到css文件中 2、less中的变量: a、使用@来声明一个变量:例 @red:red b、作为普通属性值来使用:直接使用@red c、作为选择器和属性名使用:#@{selector}的形式 d、作为url:@{url} e、变量…...

    2024/4/11 21:31:05
  11. argument not a density mechanism name.错误解决办法

    在神经元类加入离子机制section.insert(’…’) 运行时出现 argument not a density mechanism name.错误 解决办法: 重新编译相应机制文件mod.file 重启后解决...

    2024/4/11 21:31:06
  12. leetcode算法题-剑指Offer篇(16)

    1、最长不含重复字符的子字符串 1.1 题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。1.2 题解 1.2.1 动态规划 + 哈希表public int lengthOfLongestSubstring(String s) {Map<Character, Integer> dic = new HashMap<>…...

    2024/4/19 22:48:40
  13. Docker 一篇文章总结Docker的网络模式

    Docker网络现状为了解决容器网络性能低下、功能不足的问题,Docker启动了子项目“Libnetwork”。Libnetwork提出了新的容器网络模型(Container Network Model,简称CNM),定义了标准的API用于为容器配置网络,其底层可以适配各种网络驱动(如图Docker-network01所示)。CNM有…...

    2024/4/11 21:31:01
  14. scanf和scanf_s

    从入门到放弃,c语言的入门 目前不知scanf的不安全性...

    2024/4/11 21:31:00
  15. Mybatis-XML复杂映射基础讲解

    复杂映射XML方式 为了快速学习,快速上手,这里只对常用基本映射方式讲解,如需学习全特性,请参考结果映射章节结果映射章节 一对一关键标签:<association><!--id: 是上下文唯一id,<select resultMap="id">引用,type:类似select标签中resultType…...

    2024/4/11 21:30:59
  16. numpy的广播

    #造数 k=np.arange(0,11) #修改类型 修改为3行4列 k=k.reshape(3,4) #修改为一列 k=np.arange(12).reshape(12,1)简单的加减法与相同类型的数组的加法与不同类型的数组的的加减法(存在列或行相同)...

    2024/4/11 21:30:58
  17. 睡前故事

    爱而不得 我尽力了,从特别关心到取消,从置顶聊条到取消,从单独分组到大众分组,从都是你名字的地方到删除,从互相关注的软件到取消,从哪里都是你的东西到清空。 后来,我的生活里再也没有出现你了,想哭又哭不出想笑也笑不出来,每天还要装作若无其事的样子,不过这样也好…...

    2024/4/11 21:30:57
  18. Jni:使用openssl库进行rsa加密解密(Linux编译篇)

    前面两篇中,已经介绍过如何搭建jni环境以及编写自己的一个jni调用(包括引入第三方类库 如openssl) Jni:使用openssl库进行rsa加密解密 (环境搭建篇) Jni:使用openssl库进行rsa加密解密(实现篇) 下面我们要说的是,如何在linux下面编译出我们需要的c++类库,也就是 libxxx…...

    2024/4/11 21:30:56
  19. jmeter参数化

    参数化 函数参数化进入jmeter页面,点击选项将生成的函数字符串拷贝到需要的参数里面CSV参数化在脚本的根目录下面创建一个CSV文件(也可以创建TXT文档) 引用变量可以加一个debug调试器 一定要加循环次数正则表达式正则表达式:取值首先确定边界值要取的数据用(.*?)代替分析接…...

    2024/4/11 21:30:55
  20. Maven下载及配置环境变量

    1.下载下载对应版本号的压缩文件解压到一个专门放环境变量的文件夹中2.配置环境变量在setting中配置本地仓库3.在IDEA中配置...

    2024/4/11 21:30:54

最新文章

  1. vue快速入门(三十二)局部与全局注册组件的步骤

    注释很详细&#xff0c;直接上代码 上一篇 新增内容 局部注册组件全局注册组件 文件结构 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div><h1>又可以愉快的学习啦</h1></div> </template><script>export d…...

    2024/4/20 7:21:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. OpenHarmony实战:Combo解决方案之ASR芯片移植案例

    本方案基于 OpenHarmony LiteOS-M 内核&#xff0c;使用 ASR582X 芯片的 DEV.WIFI.A 开发板进行开发移植。作为典型的 IOT Combo&#xff08;Wi-FiBLE&#xff09;解决方案&#xff0c;本文章介绍 ASR582X 的适配过程。 编译移植 目录规划 本方案的目录结构使用 Board 和 So…...

    2024/4/17 22:11:45
  4. 【蓝桥杯嵌入式】13届程序题刷题记录及反思

    一、题目分析 考察内容&#xff1a; led按键&#xff08;短按&#xff09;PWM输出&#xff08;PA1&#xff09;串口接收lcd显示 根据PWM输出占空比调节&#xff0c;高频与低频切换 串口接收&#xff08;指令解析&#xff09;【中断接收】 2个显示界面 led灯闪烁定时器 二…...

    2024/4/17 8:32:30
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/19 19:02:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/19 11:51:49
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/19 11:33:34
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/19 11:52:08
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/19 2:38:12
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/20 7:01:14
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/19 11:52:49
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/19 18:52:15
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/19 23:08:02
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/20 0:22:23
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/19 23:04:54
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/20 1:12:38
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/19 3:53:57
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/19 19:50:16
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/20 1:43:00
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/19 11:54:11
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/19 23:35:17
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/19 10:00:05
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/20 6:45:17
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/20 3:28:04
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57