基础篇:JAVA集合,面试专用
没啥好说的,在座的各位都是靓仔
- List 数组
- Vector 向量
- Stack 栈
- Map 映射字典
- Set 集合
- Queue 队列
- Deque 双向队列
关注公众号,一起交流,微信搜一搜: 潜行前行
- 一般队列的通用方法
操作方法 | 抛出异常 | 阻塞线程 | 返回特殊值 | 超时退出 |
---|---|---|---|---|
插入元素 | add(e) | put(e) | offer(e) | offer(e, timeout, unit) |
移除元素 | remove() | take() | poll() | pull(timeout, unit) |
检查 | element() | peek() | 无 | 无 |
1 List 数组
- 元素按进入先后有序保存,可重复
- List有两种底层实现,一种是数组,一种是链表,而链表的实现继承了 Collection。数组和集合的区别:
- 数组大小是固定,集合是可变的
- 数组的元素可以基本类型也可以是引用类型,而集合只能是引用类型
ArrayList
- ArrayList底层是使用一个可动态扩容的数组,与普通数组的区别就是它是没有固定大小的限制,可以添加或删除元素
- 它的特点就是读速度、更新快,增删慢;内存相邻,根据Index读取的时间复杂度是O(1);可以存储重复元素,但线程不安全
- ArrayList 的扩容机制
//ArrayList openJDK 13
private void add(E e, Object[] elementData, int s) {if (s == elementData.length) //放不下了elementData = grow(); // 扩容elementData[s] = e;size = s + 1;
}
private Object[] grow() {return grow(size + 1);
}
private Object[] grow(int minCapacity) {int oldCapacity = elementData.length;if (oldCapacity > 0 || elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {int newCapacity = ArraysSupport.newLength(oldCapacity,minCapacity - oldCapacity, // minCapacity - oldCapacity == 1oldCapacity >> 1 ); // oldCapacity == 1/2 oldCapacityreturn elementData = Arrays.copyOf(elementData, newCapacity);} else {return elementData = new Object[Math.max(DEFAULT_CAPACITY, minCapacity)];}
}
- 如果当前元素放不下,则扩容至 1.5 倍,且大于等于 1
// ArraysSupport.newLength
public static int newLength(int oldLength, int minGrowth, int prefGrowth) {//prefGrowth 是 oldLength 的 1/2,minGrowth 是 1。因此 newLength = 1.5 oldLengthint newLength = Math.max(minGrowth, prefGrowth) + oldLength;if (newLength - MAX_ARRAY_LENGTH <= 0) { // MAX_ARRAY_LENGTH = Integer.MAX_VALUE - 8return newLength;}return hugeLength(oldLength, minGrowth);
}
LinkedList
- LinkedList的节点并不是存储真实的数据,而是存下数据的引用对象,而且节点之间使用引用相关联
- LinkedList实现了Queue、Deque接口,可作为队列使用;查找慢,增删快,可以存储重复元素,但线程不安全
- 使用 LinkedList 实现LRU
public static class LRU<T> {//默认的缓存大小private int CAPACITY = 0;//引用一个双向链接表private LinkedList<T> list;//构造函数public LRU(int capacity) {this.CAPACITY = capacity;list = new LinkedList();}//添加一个元素public synchronized void put(T object) {if (list != null && list.contains(object)) {list.remove(object);}removeLeastVisitElement();list.addFirst(object);}//移除最近访问次数最少的元素private void removeLeastVisitElement() {int size = list.size();//注意,这儿必须得是CAPACITY - 1否则所获的size比原来大1if (size > (CAPACITY - 1)) {Object object = list.removeLast();}}//获取第N个索引下面的元素public T get(int index) {return list.get(index);}
}
- LinkedList 的 API
public E getFirst() //获取第一个元素
public E getLast() //获取最后一个元素
public E removeFirst() // 移除第一个元素,并返回
public E removeLast() // 移除最后一个元素,并返回
public void addFirst(E e) //加入头部
public void addLast(E e) //加入尾部
public void add(E e) //加入尾部
public boolean contains(Object o) //是否包含 元素 o
public E peek() //获取头部第一个元素
public E element() // 获取头部第一个元素,不存在则报错
public E poll() //获取头部第一个元素,并移除
public boolean offer(E e) // 调用 add(E e)
public boolean offerFirst(E e) // 调用 addFirst
public boolean offerLast(E e) // 调用 addLast
public void push(E e) //在头部压入一个元素
public E pop() //弹出第一个元素,并移除。不存在则报错
- ArrayList 和 LinkedList 使用场景
- 频繁访问列表中的某一个元素,或者需要在列表末尾进行添加和删除元素操作,用ArrayList
- 频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作,用LinkedList
Iterator 和 fast-fail、fail-safe机制
- Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 List 和 Set 等集合,主要有hashNext(),next(),remove()三种方法
- fail-fast 是Java集合(Collection)的一种错误机制。当多个线程对同一个集合进行修改结构操作,使用集合的迭代器iterator,会首先检测是否有对集合的并发修改,进而产生ConcurrentModificationException 异常提示
- fail-safe:保证在对任何集合结构的修改操作都基于 《复制-修改》 进行的,即先copy一个新的集合对象,然后对新的集合对象进行修改,最后将新的集合对象替换掉老的集合对象(老的集合对象的地址指向新的集合对象)。java.util.concurrent包下采用的是fail-safe机制。
- 缺点1-对集合的复制copy会产生大量的对象,造成内存空间的浪费。
- 缺点2-无法保证集合迭代过程中获取的集合数据是最新的内容
CopyOnWriteArrayList
- CopyOnWriteArrayList 的线程安全:CopyOnWriteArrayList 在写的时候会加锁,为了保证写安全,会在写操作时复制一个新数组来操作,然后覆盖旧的数组;不会影响读的性能
public class CopyOnWriteArrayList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {//可重入锁final transient ReentrantLock lock = new ReentrantLock();//数组,仅通过get和set方法操作private transient volatile Object[] array; ....public boolean add(E e) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();//拿到当前数组int len = elements.length;//获得长度//拷贝当前数组Object[] newElements = Arrays.copyOf(elements, len + 1);newElements[len] = e;setArray(newElements); //调用set方法将新数组设置为当前数组return true;} finally {lock.unlock();//解锁}}
- CopyOnWriteArrayList 的缺点
- CopyOnWrite 在进行写操作的时候,内存里会同时驻扎两个对象的内存,导致内存的浪费
- CopyOnWrite 容器只能保证数据的最终一致性,不能保证数据的实时一致性。如果你希望写入的的数据,马上能读到,请不要使用CopyOnWrite容器,没有阻塞等待的概念
- CopyOnWriteArrayList 和 Collections.synchronizedList 区别
- CopyOnWriteArrayList 的写操作性能较差,而多线程的读操作性能较好
- Collections.synchronizedList的写操作性能比CopyOnWriteArrayList在多线程操作的情况下要好很多,而读操作因为是采用了 synchronized关键字的方式,其读操作性能并不如CopyOnWriteArrayList
线程安全的List
- A:使用 Vector;B:使用 Collections.synchronized() 返回线程安全的 List;C:使用 CopyOnWriteArrayList
List的API示例
boolean contains(Object o) // 是否包含 o
boolean isEmpty(); // 是否为空
int size(); //集合元素
Iterator<E> iterator(); // 返回迭代器
Object[] toArray(); // 转为 Object数组
<T> T[] toArray(T[] a); // 转为具体类型数组
boolean add(E e); // 加入尾部
boolean remove(Object o); // 移除 o
boolean containsAll(Collection<?> c); //是否报考 集合 c
boolean addAll(Collection<? extends E> c);// 合并 c
boolean retainAll(Collection<?> c);//保留只存在集合 c 的元素
void clear(); // 清除集合元素
void sort(Comparator<? super E> c) //根据 Comparator 排序
E get(int index); // 根据下标获取 元素
E set(int index, E element); // 设置第 index 的元素
E remove(int index); // 移除 第 index 的元素
<E> List<E> of(E e1.....) // jdk 9
List<E> copyOf(Collection<? extends E> coll) // 复制
2 Vector(向量)
ArrayList 和 Vector、LinkedList 的区别
- Vector 相当于是 ArrayList 线程安全的翻版
- Vector 继承实现List 特点: 底层数据结构是数组,查询快,线程安全
Vector 的API示例
boolean synchronized contains(Object o);
boolean synchronized isEmpty();
boolean synchronized containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
public synchronized boolean add(E e)
public synchronized E get(int index);
public synchronized E set(int index, E element);
public synchronized E firstElement()
public synchronized void removeElementAt(int index)
public synchronized E lastElement()
public synchronized void setElementAt(E obj, int index)
public synchronized E remove(int index)
public void clear()
Iterator<E> iterator();
3 Stack(栈)
- Stack 是 Vector提供的一个子类,用于模拟"栈"这种数据结构(LIFO后进先出)
- 线程安全,允许 null 值
Stack 的API示例
public E push(E item) //推入栈顶
public synchronized E pop() // 弹出栈顶元素,不存在则报错
public synchronized E peek() // 获取栈顶元素,不移除
public boolean empty() // 栈是否为空
public synchronized int search(Object o) // 搜索元素
4 Map
- Map 用于保存具有映射关系的数据,Map里保存着两种映射的数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value
- 请注意!!!Map 没有继承 Collection 接口
TreeMap(1.8JDK)
- 继承 AbstractMap,TreeMap 是基于红黑树实现,可保证在
log(n)
时间复杂度内完成 containsKey,get,put 和 remove 操作,效率很高。(红黑数的原理这里不展开讲,后面会专门写一篇) - 另一方面,由于 TreeMap 基于红黑树实现,因此 TreeMap 的键是有序的
HashMap
- HashMap 继承AbstractMap类实现了Map,是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序
- HashMap如何处理hash冲突,hash冲突的几种解决方法
- 开放定址法
- 线性探查在散列的时候,如果当前计算出的位置已经被存储,那么就顺序的向后查找,知道找到空位置或则是所有位置均不为空失败
- 二次探查使用一个辅助散列函数,使得后续的探查位置在前一个探查位置上加上一个偏移量,该偏移量以二次方的形式依赖于探查号i。二次探查的散列函数形式为:h(k,i)=(h’(k,i)+c1*i + c2 * i^2) mod m
- 双重散列使用两个辅助散列函数h1和h2,初始的散列位置是h1(k),后续的散列位置在此基础上增加一个偏移量h2(k)*i mod m
- 链地址法
- 链地址法-如果存在 hash 碰撞,则创建一链表存储相同的元素
- 开放定址法容易导致 hash 碰撞,查询慢
- 开放定址法
- HashMap 底层实现是数组+链表+红黑树。空参的HashMap初始容量是16,默认加载因子为0.75。取值0.75是因为 0.5 容易浪费空间,取值 1 则需要填满每一个桶,实际情况很难达到,会产生大量的哈希碰撞。因此取中间值
- HashMap 的容量一般是 2 的幂次方,可直接使用“位与”计算 hash 值,相对取模计算 hash 快
Hashtable
- 继承于Dictionary,现在基本已被淘汰
- HashTable的操作几乎和HashMap一致,主要的区别在于HashTable为了实现多线程安全,在几乎所有的方法上都加上了synchronized锁,而加锁的结果就是HashTable操作的效率十分低下
- HashMap允许有一个键为null,允许多个值为null;但HashTable不允许键或值为null
- Hash映射:HashMap的hash算法通过非常规设计,将底层table长度设计为2的幂,使用位与运算代替取模运算,减少运算消耗;而HashTable的hash算法首先使得hash值小于整型数最大值,再通过取模进行散射运算
LinkedHashMap
- LinkedHashMap的元素存取过程基本与HashMap基本类似,只是在细节实现上稍有不同。当然,这是由LinkedHashMap本身的特性所决定的,因为它额外维护了一个双向链表用于保持迭代顺序。此外,LinkedHashMap可以很好的支持LRU算法。HashMap和双向链表合二为一即是LinkedHashMap
WeakHashMap
- WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是 null
- WeakHashMap的键是“弱键”。在 WeakHashMap 中,当某个 key 不再被强引用使用时,会被从WeakHashMap中被 JVM 自动移除,然后它对应的键值对也会被从WeakHashMap中移除。JAVA引用类型和ThreadLocal
ConcurrentHashMap(1.8JDK)
- ConcurrentHashMap 是 HashMap 的多线程安全版本。它使用了细粒度锁 和 cas 提高了在多线程环境的安全性和高并发
- 底层数据结构是 数组 + 链表/红黑树(后面专门写一篇介绍)
ConcurrentSkipListMap 了解一波
- ConcurrentSkipListMap 则是基于跳跃链表的实现的 map,使用了 cas 技术实现线程安全性,高并发
- ConcurrentSkipListMap 相比 ConcurrentHashMap 的优点
- ConcurrentSkipListMap 的key是有序的。
- ConcurrentSkipListMap 支持更高的并发。ConcurrentSkipListMap的存取时间是log(N),和线程数几乎无关。也就是说在数据量一定的情况下,并发的线程越多,ConcurrentSkipListMap 越能体现出它的优势
NavigableMap 和 ConcurrentNavigableMap 操作 key 值的范围区间
- TreeMap 实现了 NavigableMap 。ConcurrentNavigableMap 高并发线程安全版的 TreeMap
- NavigableMap 提供了针对给定搜索目标返回最接近匹配项的导航方法。直接看API
K lowerKey(K key) // 找到第一个比指定的key小的值
K floorKey(K key) // 找到第一个比指定的key小于或等于的key
K ceilingKey(K key) // 找到第一个大于或等于指定key的值
K higherKey(K key) // 找到第一个大于指定key的值
Map.Entry<K,V> firstEntry() // 获取最小值
Map.Entry<K,V> lastEntry() // 获取最大值
Map.Entry<K,V> pollFirstEntry() // 删除最小的元素
Map.Entry<K,V> pollLastEntry() // 删除最大的元素
NavigableMap<K,V> descendingMap() //返回一个倒序的Map
// 返回值小于 toKey 的 NavigableMap
NavigableMap<K,V> headMap(K toKey, boolean inclusive)
// 返回值大于 fromKey 的 NavigableMap
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive)
// 返回值小于 toKey 大于 的 fromKey NavigableMap
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
5 Set(集合)
- Set特点:元素无放入顺序,元素不可重复,如果加入重复元素,会保留最先加入的对象。存取速度快
Set 的几种实现子类和各自特点
- TreeSet:底层数据结构采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写 hashCode 和 equals()方法,二叉树结构保证了元素的有序
- 根据构造方法不同,分为自然排序(无参构造)和比较器排序(有参构造),自然排序要求元素必须实现Compareable接口,并重写里面的compareTo()方法
- HashSet:是哈希表实现的,HashSet中的数据是无序的,可以放入 null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
- HashSet 是基于 HashMap 算法实现的,其性能通常都优于TreeSet
- 为快速查找而设计的Set,我们通常都会用到HashSet,若需要排序的功能时,才使用TreeSet
- LinkedHashSet:底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性,效率高。但线程不安全
ConcurrentSkipListSet
- 基于 ConcurrentSkipListMap 实现
CopyOnWriteArraySet
- 基于 CopyOnWriteArrayList 实现
BitSet
- BitSet是位操作的对象,值只有 0 或 1 即false和true,内部维护了一个long数组,初始只有一个long,所以BitSet最小的size是64,当随着存储的元素越来越多,BitSet内部会动态扩充,最终内部是由N个long来存储
- 如统计40亿个数据中没有出现的数据,将40亿个不同数据进行排序等。\
- 现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来
void and(BitSet set) // 两个BitSet 做与操作,结果并存入当前 BitSet
void andNot(BitSet set) // 两个BitSet 与非操作
void flip(int index) // 反转某一个指定 index
boolean intersects(BitSet bitSet) // 是否有交集
int cardinality() //返回 true/1 的个数
void clear() // 重置
void clear(int startIndex, int endIndex) // startIndex~endIndex 重置
int nextSetBit(int startIndex) //检索在startIndex之后出现为1的第一位的索引
int nextClearBit(int startIndex) //检索在startIndex之后出现为0的第一位的索引
6 Queue(队列)
- Queue的概念 队列是一种特殊的线性表,只允许元素从队列一端入队,而另一端出队(获取元素),就像我们平时排队结算一样(懂文明讲礼貌不插队)。Queue 的数据结构和 List 一样,可以基于数组,链表实现,队列通常都是一端进(offer),另一端出(poll),有序性
PriorityQueue
- PriorityQueue是按优先级排序的队列,也就是说 vip 可以插队。优先队列要求使用 Java Comparable 和 Comparator 接口给对象排序,并且在排序时会按照优先级处理其中的元素
- PriorityBlockingQueue 是线程安全的PriorityQueue
BlockingQueue
- BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。常用于线程的任务队列
- DelayQueue
- DelayQueue是一个没有边界BlockingQueue实现,加入元素必需实现Delayed接口。当生产者线程调用put之类的方法加入元素时,会触发 Delayed 接口中的compareTo方法进行排序
- 消费者线程查看队列头部的元素,注意是查看不是取出。然后调用元素的getDelay方法,如果此方法返回的值小0或者等于0,则消费者线程会从队列中取出此元素,并进行处理。如果getDelay方法返回的值大于0,则消费者线程阻塞到第一元素过期
Queue 的 API
boolean add(E e); //加入队列尾部
boolean offer(E e); // 加入队列尾部,并返回结果
E remove(); //移除头部元素
E poll(); // 获取头部元素,并移除
E element(); // 获取头部元素,不存在则报错
E peek(); // 获取头部元素,不移除
7 Deque(双向队列)
- Deque接口代表一个"双端队列",双端队列可以同时从两端来添加、删除元素,因此Deque的实现类既可以当成队列使用、也可以当成栈使用
- Deque 的子类 LinkedList,ArrayDeque,LinkedBlockingDeque
Deque的 API
void addFirst(E e); //加入头部
void addLast(E e); //加入尾部
boolean offerFirst(E e); //加入头部,并返回结果
boolean offerLast(E e); //加入尾部,并返回结果
E removeFirst(); // 移除第一个元素
E removeLast(); // 移除最后一个元素
E getFirst(); //获取第一个元素,不存在则报错
E getLast(); //获取最后一个元素,不存在则报错
E pollFirst(); //获取第一个元素,并移除
E pollLast(); //获取最后一个元素,并移除
E peekFirst(); //获取第一个元素
E peekLast(); // 获取最后一个元素
void push(E e); //加入头部
E pop(); //弹出头部元素
欢迎指正文中错误
参考文章
- java集合超详解
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 西游记中唐僧师徒的不同性格
西游记中唐僧师徒的不同性格 我们知道西游记中大唐高僧唐三藏受观世音菩萨点化,受唐王指令,去往西天拜佛求经,他在去往西天途中收得孙悟空,猪八戒和沙僧做他的徒弟,保护他去西天取经,小白龙做他的坐骑&…...
2024/4/29 0:36:34 - kafka之消息生成者基本知识
文章目录生产者一 消息提供者开发1.1 过程1.2 代码实现1.3 重点配置参数1.4 消息的发送二 原理解析2.1基本知识2.2 拦截器2.2.1 基本结构2.2.2 自定义拦截器2.3 序列化器2.3.1 基本方法2.3.2 自定义序列化器2.4 分区器2.4.1 基本方法2.4.2 自定义分区器2.5 消息累加器2.1 基本知…...
2024/4/28 8:15:04 - 五分钟精通正则表达式,如果没精通,那就再加两分钟
五分钟搞定正则表达式,如果没搞定,那就再加两分钟 一、正则表达式介绍 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一…...
2024/4/28 2:55:58 - AB1561、AB1568、AB1568A 蓝牙5.2
AB1561、AB1568、AB1568A 是一款支持TWS蓝牙5.2版本、低功耗、低延时、更是一款开放式的蓝牙耳机芯片。 深圳市明佳达电子有限公司是一家全球知名品牌电子元器件回收商,长期以高价现金回收个人库存、工厂库存、海关扣押、寄售、代销、清仓等深度垂直服务࿰…...
2024/4/6 10:45:24 - FastWAAM v1.0.0发布
FastWAAM v1.0.0 发布 FastWAAM是一款专业化软件,用于基于机器人焊接平台的增材制造路径计算,软件的主要功能点如下 基于STL网格模型的切片; 对切片结果自动分域并计算域内填充路径; 针对切片以及路径的编辑功能; …...
2024/4/15 18:51:49 - android外接USB扫码器应用闪退,外接U盘正常的情况
问题: 最近在项目开发的过程中android设备需要外接USB扫码器,神奇的就是在插拔USB扫码器的时候应用都会自动闪退,查看日志(如下图),并没有发现crash的相关异常呀,同时在接入U盘使用的时候也是正常的 分析:…...
2024/4/6 10:45:22 - ZooInspector zookeeper图形化的客户端
参考文章: https://blog.csdn.net/xuruanshun/article/details/102733259 1、zookeeper图像化客户端工具的下载地址: https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 2、下载完后解压压缩包,打开ZooInspect…...
2024/4/15 18:51:44 - 快速幂算法
快速幂 题目描述 求 a 的 b 次方对 p 取模的值。说到求解a的b次幂时,我们会想到幂运算的定义 然后就会自然而然地敲下一串的循环来计算这个值。但是这样实在是太慢了,如果指数比较大的话,就要好长好长的时间… 我们可以利用二进制的特点来减…...
2024/4/6 10:45:20 - Python总结与对应练习(一)
一、变量及简单的数据类型 (一)变量 1、python是一门弱数据类型语言。 print()函数——打印输出 type()函数——查看类型 2、变量命名规范 (1)变量名只能包括字母、数字和下划线,且不能以数字开头…...
2024/4/15 18:51:49 - liunx设置环境变量,任何目录都可以操作命令
设置环境变量和window设置环境变量一样,liunx是在etc/profile里,mysql为例,如下: 为了可以在任意目录上都可以使用mysql命令登录mysql,将mysql安装目录配置到环境变量中,在/etc/profile文件的末尾添加以下代…...
2024/4/15 18:51:44 - 纯JAVA实现Mybatis管理derby数据库
目录 0.项目结构 1.导入jar包 2.编写创建数据库业务代码 3.创建实体类 4.配置mybatis配置文件mybatis-config.xml 5.编写mapper sql语句文件 6.编写实体类业务代码 7.测试 0.项目结构 1.导入jar包 2.编写创建数据库业务代码 嵌入式数据库 package com.hmgzs.db;import j…...
2024/4/19 14:04:25 - Hloc- cvg/ Hierarchical-LocalizationPublic
遇到的问题: gnutls_handshake() failed: The TLS connection was non-properly terminated 如果使用Https 访问http启动的项目,会出现此错误, 改用http git clone --recursive https://github.com/cvg/Hierarchical-Localization/改为: …...
2024/4/15 18:51:49 - linux集群分发文件shell
#!/bin/bash# 无参数 if [ $# lt 1]thenecho “no enough Arguments!”exit; fi# 遍历集群中的所有机器 for host in 192.168.179.20 192.168.179.30 192.168.179.31 doecho $host# 遍历入参中的所有目录for file in $do#判断文件是否存在if [ -e $file ]then# 获取文件的父目录…...
2024/4/15 18:51:54 - HTML概览
一.HTML5概述 WWW指万维网(WWWURLHTTPHTML),是1990年由李爵士发明的,17年被颁发图灵奖 WWW的直观感受,如何使用万维网:你输入网址,看到网页,看不见的部分由HTTP搞定。 HTML5权威指南 MDN 李爵士做了啥? 自己写了第一个浏览器&…...
2024/4/15 18:51:44 - Mybatis框架(入门篇)
什么是框架 框架(Framework):整个或部分系统的可重用设计,表现为一组抽象构建实例间交互的方法;是应用开发者定制的应用骨架(软件开发的一套解决方案)。优点:框架封装了很多的细节&…...
2024/4/19 16:57:34 - Effective C++ 笔记(五)
五:实现 条款26:尽可能延后变量定义式的出现时间 "尽可能延后"的真正意义:不只应该延后变量的定义,直到非得使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初值实参为止。如果这样࿰…...
2024/4/16 22:50:33 - Python作业3
第三天作业 作业1: 控制台输入两个变量,交换这两个变量的值【使用异或完成】 num1 int(input("请输入第一个数")) num2 int(input("请输入第二个数")) num1 num1 ^ num2 num2 num1 ^ num2 num1 num1 ^ num2 print(num1,num2)…...
2024/4/15 18:51:29 - 大数据时代的 9 大Key-Value存储数据库
在过去的十年中,计算世界已经改变。现在不仅在大公司,甚至一些小公司也积累了TB量级的数据。各种规模的组织开始有了处理大数据的需求,而目前关系型数据库在可缩放方面几乎已经达到极限。 一个解决方案是使用键值(Key-Value)存储数据库,这是一种NoSQL(非关系型数据库)模…...
2024/4/15 18:51:34 - 谁说Java架构不能速成的,Java架构速成笔记:1425页考点,七大专题,挑战P8岗
前言 我们都知道,在程序员的职业生涯中,有多个发展方向,不过就数据表明,近年来选择架构师方向的开发人员也越来越多。 对于架构师的发展前途,我相信是已经没有争议的,但这个“概念”对于很多开发人员来说…...
2024/4/18 17:21:37 - 基于标记的形态学分水岭算法
基于标记的形态学分水岭算法 import cv2 as cv import numpy as np# 标准形态学分水岭算法 # 针对灰度图像,使用灰度值最低的像素点作为起始点,从起始点开始淹没 # 基于标记的形态学分水岭算法 # 使用灰度值最低的像素点作为起始点,也可以将…...
2024/4/18 8:41:54
最新文章
- 03-MVC执行流程-参数解析与Model
重要组件 准备Model,Controller Configuration public class WebConfig {ControllerAdvicestatic class MyControllerAdvice {ModelAttribute("b")public String bar() {return "bar";}}Controllerstatic class Controller1 {ResponseStatus(H…...
2024/4/29 1:27:47 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - C++ typeid运算符介绍
在 C 中,typeid() 是一个运算符,用于获取表达式的类型信息。typeid() 运算符在 C 中是一个强大的工具,可以用于获取对象的类型信息、类型比较、多态类型判断、异常处理以及类型转换安全检查等场景中。 1. 类型比较: 可以使用 ty…...
2024/4/28 13:37:26 - 算法四十天-删除排序链表中的重复元素
删除排序链表中的重复元素 题目要求 解题思路 一次遍历 由于给定的链表是排好序的,因此重复的元素在链表中的出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。 具体地,我们从指针cur指向链表的头节…...
2024/4/23 6:25:37 - 用html实现在页面底部养鱼的效果
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>在网页底部养鱼</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"fi…...
2024/4/24 17:02:47 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/28 15:57:13 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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