一般网站图片尺寸/策划方案

一般网站图片尺寸,策划方案,做网站老板不发工资我拿尾款,上海新建设建筑设计有限公司网站1. ConcurrentHashMap 和 HashTable 有哪些区别 原理 HashTable:它继承自 Dictionary 类,是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如,在调用 put、get 等方法时&#xff…

1. ConcurrentHashMap 和 HashTable 有哪些区别

  • 原理

  • HashTable:它继承自 Dictionary 类,是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如,在调用 putget 等方法时,整个 HashTable 会被锁定,其他线程必须等待当前线程释放锁后才能访问该方法。

java

import java.util.Hashtable;public class HashTableExample {public static void main(String[] args) {Hashtable<String, Integer> hashtable = new Hashtable<>();// 线程安全的 put 操作hashtable.put("one", 1); }
}

  • ConcurrentHashMap
    1. Java 7 版本:采用分段锁机制,将整个哈希表分成多个 Segment(段),每个 Segment 相当于一个小的 HashTable,每个 Segment 都有自己的锁。不同的 Segment 可以被不同的线程同时访问,只要访问的不是同一个 Segment,就不会产生锁竞争,从而提高了并发性能。
    2. Java 8 版本:摒弃了分段锁,采用 CAS(Compare - And - Swap)和 synchronized 来保证并发操作的安全性。它使用数组 + 链表 + 红黑树的数据结构,在进行插入、删除和查找操作时,首先通过哈希值找到对应的桶,然后对桶首节点加锁,锁的粒度更小,性能更高。

java

import java.util.concurrent.ConcurrentHashMap;public class ConcurrentHashMapExample {public static void main(String[] args) {ConcurrentHashMap<String, Integer> concurrentHashMap = new ConcurrentHashMap<>();// 并发安全的 put 操作concurrentHashMap.put("one", 1); }
}

  • 要点

  1. 线程安全实现方式:HashTable 是全量同步,所有方法都加锁,同一时间只能有一个线程访问;ConcurrentHashMap 在 Java 7 中是分段同步,Java 8 中是细粒度同步,允许多个线程同时访问不同部分。
  2. 性能:在高并发场景下,ConcurrentHashMap 的性能远远优于 HashTable,因为 HashTable 的锁粒度太大,容易造成线程阻塞。
  3. 空值处理:HashTable 不允许键或值为 null,而 ConcurrentHashMap 同样不允许键为 null,如果插入 null 键会抛出 NullPointerException

  • 应用

  1. 可以深入了解 CAS 算法的底层原理,它是一种无锁算法,通过比较内存中的值和预期值,如果相等则更新,否则重试。
  2. 研究 Java 8 中 ConcurrentHashMap 在扩容、红黑树转换等方面的优化策略。

2. 什么是 LinkedHashMap

  • 原理

LinkedHashMap 继承自 HashMap,它在 HashMap 的基础上维护了一个双向链表。这个双向链表定义了元素的迭代顺序,默认情况下是插入顺序,即元素按照插入的先后顺序进行迭代;也可以通过构造函数将其设置为访问顺序,即最近访问的元素会被移动到链表尾部。

java

import java.util.LinkedHashMap;
import java.util.Map;public class LinkedHashMapExample {public static void main(String[] args) {// 创建一个按照插入顺序排序的 LinkedHashMapLinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();linkedHashMap.put("one", 1);linkedHashMap.put("two", 2);linkedHashMap.put("three", 3);for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

  • 要点

  1. 继承关系:继承自 HashMap,具备 HashMap 的基本特性,如快速的查找、插入和删除操作。
  2. 双向链表:通过双向链表维护元素顺序,使得元素可以按照插入顺序或访问顺序进行迭代。
  3. 访问顺序:如果设置为访问顺序,每次访问元素时,该元素会被移动到链表尾部,这在实现 LRU 缓存时非常有用。

  • 应用

  • 实现一个简单的 LRU 缓存,使用 LinkedHashMap 来存储缓存数据,当缓存满时,自动移除最久未使用的元素。

java

import java.util.LinkedHashMap;
import java.util.Map;public class LRUCache<K, V> extends LinkedHashMap<K, V> {private final int capacity;public LRUCache(int capacity) {// 第三个参数设置为 true 表示按照访问顺序排序super(capacity, 0.75f, true) {@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {return size() > capacity;}};this.capacity = capacity;}public static void main(String[] args) {LRUCache<Integer, Integer> cache = new LRUCache<>(2);cache.put(1, 1);cache.put(2, 2);System.out.println(cache.get(1)); // 返回 1cache.put(3, 3); // 该操作会使得关键字 2 作废System.out.println(cache.get(2)); // 返回 -1 (未找到)cache.put(4, 4); // 该操作会使得关键字 1 作废System.out.println(cache.get(1)); // 返回 -1 (未找到)System.out.println(cache.get(3)); // 返回 3System.out.println(cache.get(4)); // 返回 4}
}

3. LinkedHashMap 与 HashMap 有哪些区别

  • 原理

  • HashMap:基于哈希表实现,通过哈希函数将键映射到桶中,每个桶可以存储一个链表或红黑树(当链表长度超过 8 且数组长度大于 64 时,链表会转换为红黑树)。它不保证元素的顺序,每次迭代的顺序可能不同。

java

import java.util.HashMap;
import java.util.Map;public class HashMapExample {public static void main(String[] args) {HashMap<String, Integer> hashMap = new HashMap<>();hashMap.put("one", 1);hashMap.put("two", 2);hashMap.put("three", 3);for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}}
}

  • LinkedHashMap:除了使用哈希表存储元素外,还使用双向链表维护元素的插入顺序或访问顺序。在插入元素时,不仅会将元素存储到哈希表中,还会将其添加到双向链表的尾部;在访问元素时,如果是访问顺序,会将该元素移动到链表尾部。

  • 要点

  1. 顺序性:HashMap 不保证元素的顺序,而 LinkedHashMap 可以保证插入顺序或访问顺序。
  2. 性能:由于需要维护双向链表,LinkedHashMap 的插入和删除操作相对 HashMap 会稍慢一些,但在迭代元素时,LinkedHashMap 可以按照顺序快速迭代。
  3. 内存占用:LinkedHashMap 由于需要额外维护双向链表,会比 HashMap 占用更多的内存空间。

  • 应用

  1. 对比它们在不同场景下的性能差异,例如在大数据量插入和频繁迭代的场景下,测试 LinkedHashMap 和 HashMap 的性能表现。
  2. 分析在使用 LinkedHashMap 时,不同的访问顺序设置对性能和内存的影响。

4. 什么是 HashSet

  • 原理

HashSet 基于 HashMap 实现,它不允许存储重复的元素。HashSet 内部使用一个 HashMap 来存储元素,将元素作为键,值统一为一个静态常量对象 PRESENT。当向 HashSet 中添加元素时,实际上是将该元素作为键插入到内部的 HashMap 中,值为 PRESENT

java

import java.util.HashSet;public class HashSetExample {public static void main(String[] args) {HashSet<String> hashSet = new HashSet<>();hashSet.add("one");hashSet.add("two");hashSet.add("three");for (String element : hashSet) {System.out.println(element);}}
}

  • 要点

  1. 唯一性:不允许存储重复元素,通过 HashMap 的键的唯一性来保证。
  2. 实现基础:基于 HashMap 实现,利用 HashMap 的哈希算法和存储结构来实现快速的查找和插入操作。
  3. 无序性:不保证元素的顺序,每次迭代的顺序可能不同。

  • 应用

  • 了解 HashSet 在去重场景中的应用,例如对一个包含重复元素的列表进行去重操作。

java

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;public class DuplicateRemoval {public static void main(String[] args) {List<String> listWithDuplicates = new ArrayList<>();listWithDuplicates.add("one");listWithDuplicates.add("two");listWithDuplicates.add("one");HashSet<String> set = new HashSet<>(listWithDuplicates);List<String> listWithoutDuplicates = new ArrayList<>(set);for (String element : listWithoutDuplicates) {System.out.println(element);}}
}

5. HashMap 与 HashSet 有什么区别

  • 原理

  • HashMap:存储键值对,通过键的哈希值来确定存储位置,允许键和值为 null。它使用哈希表来存储元素,当发生哈希冲突时,会通过链表或红黑树来解决。

java

import java.util.HashMap;
import java.util.Map;public class HashMapExample {public static void main(String[] args) {HashMap<String, Integer> hashMap = new HashMap<>();hashMap.put("one", 1);hashMap.put("two", 2);System.out.println(hashMap.get("one"));}
}

  • HashSet:只存储元素,基于 HashMap 实现,元素作为键存储,值为一个固定的常量对象。它不允许存储重复元素,通过 HashMap 的键的唯一性来保证。

java

import java.util.HashSet;public class HashSetExample {public static void main(String[] args) {HashSet<String> hashSet = new HashSet<>();hashSet.add("one");hashSet.add("two");System.out.println(hashSet.contains("one"));}
}

  • 要点

  1. 存储内容:HashMap 存储键值对,HashSet 只存储元素。
  2. 用途:HashMap 用于根据键查找值,HashSet 用于判断元素是否存在。
  3. 空值处理:HashMap 允许键和值为 null,而 HashSet 允许存储一个 null 元素。

  • 应用

  1. 分析在不同业务场景下,如何选择使用 HashMap 或 HashSet,例如在存储用户信息(键为用户 ID,值为用户对象)时使用 HashMap,在存储不重复的单词列表时使用 HashSet。
  2. 研究 HashMapHashSet 在处理哈希冲突时的性能差异。

6. 什么是 Collections.sort,内部原理

  • 原理

Collections.sort 是 Java 集合框架中用于对列表进行排序的静态方法。它有两种重载形式:

  1. 对于实现了 RandomAccess 接口的列表(如 ArrayList),使用双轴快速排序(Dual - pivot Quicksort)。双轴快速排序是一种改进的快速排序算法,它选择两个轴元素,将数组分为三个部分,从而减少了比较和交换的次数,平均时间复杂度为 O(nlogn)。
  2. 对于未实现 RandomAccess 接口的列表(如 LinkedList),先将列表元素复制到一个数组中,对数组进行排序,再将排序后的元素复制回列表。

java

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class CollectionsSortExample {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(3);list.add(1);list.add(2);Collections.sort(list);for (Integer num : list) {System.out.println(num);}}
}

  • 要点

  1. 排序算法:根据列表类型选择不同的排序算法,对于随机访问列表使用双轴快速排序,对于非随机访问列表使用先复制到数组再排序的方式。
  2. 时间复杂度:平均为 O(nlogn),在最坏情况下为 O(n2),但双轴快速排序的最坏情况很少出现。
  3. 稳定性Collections.sort 是不稳定的排序算法,即相等元素的相对顺序可能会改变。

  • 应用

  1. 了解双轴快速排序的具体实现细节,以及它与传统快速排序的区别和优势。
  2. 研究其他排序算法(如归并排序、堆排序)的特点,并与双轴快速排序进行性能比较。

7. 什么是 hash 算法

  • 原理

哈希算法是一种将任意长度的输入数据转换为固定长度的输出数据的算法,输出数据通常称为哈希值或散列值。哈希算法具有以下特点:

  1. 确定性:相同的输入始终产生相同的输出。
  2. 高效性:计算哈希值的速度快,通常在常数时间内完成。
  3. 均匀性:输出值在哈希空间中均匀分布,尽量减少哈希冲突的发生。
  4. 抗碰撞性:尽量避免不同的输入产生相同的输出,但在理论上,由于输入空间无限大,输出空间有限,哈希冲突是不可避免的。

  • 要点

  1. 作用:用于数据的快速查找、存储和验证。例如,在哈希表中,通过哈希算法将键映射到桶中,实现快速的查找和插入操作;在文件验证中,通过计算文件的哈希值来验证文件的完整性。
  2. 特性:确定性、高效性、均匀性和抗碰撞性是哈希算法的重要特性。
  3. 应用场景:广泛应用于密码学、数据存储、缓存等领域。

  • 应用

  1. 了解常见的哈希算法(如 MD5、SHA - 1、SHA - 256)的原理和应用场景。例如,MD5 曾经广泛用于文件校验,但由于其存在安全漏洞,现在逐渐被弃用;SHA - 256 常用于区块链等领域。
  2. 研究哈希碰撞的处理方法,如开放寻址法、链地址法等。

8. 什么是迭代器 Iterator 和 Enumeration

  • 原理

  • Iterator:是 Java 集合框架中用于遍历集合元素的接口,它提供了 hasNext()next()remove() 方法。hasNext() 用于判断集合中是否还有下一个元素,next() 用于返回下一个元素,remove() 用于删除最后一次调用 next() 方法返回的元素。Iterator 可以在遍历过程中安全地删除元素。

java

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class IteratorExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("three");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String element = iterator.next();if (element.equals("two")) {iterator.remove();}}for (String element : list) {System.out.println(element);}}
}

  • Enumeration:是 Java 早期版本中用于遍历集合元素的接口,它只提供了 hasMoreElements()nextElement() 方法。hasMoreElements() 用于判断集合中是否还有更多元素,nextElement() 用于返回下一个元素。Enumeration 不支持在遍历过程中删除元素。

java

import java.util.Enumeration;
import java.util.Vector;public class EnumerationExample {public static void main(String[] args) {Vector<String> vector = new Vector<>();vector.add("one");vector.add("two");vector.add("three");Enumeration<String> enumeration = vector.elements();while (enumeration.hasMoreElements()) {String element = enumeration.nextElement();System.out.println(element);}}
}

  • 要点

  1. 功能差异:Iterator 支持删除元素,Enumeration 不支持。
  2. 使用场景:Iterator 是推荐的遍历方式,适用于大多数集合类;Enumeration 主要用于旧代码的兼容性,在新代码中尽量避免使用。
  3. 线程安全Enumeration 是线程安全的,因为它没有 remove() 方法,不会改变集合的结构;而 Iterator 在多线程环境下使用时需要注意线程安全问题。

  • 应用

  1. 了解迭代器模式的原理和应用,它是一种行为设计模式,用于提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
  2. 研究 Iterator 的子类(如 ListIterator)的特点,ListIteratorIterator 的子接口,它可以双向遍历列表,并且支持在遍历过程中添加、修改和删除元素。

9. 什么是 LIST,ArrayList,LinkedList 和 Vector 的区别和实现原理

  • 原理

  • ArrayList:基于动态数组实现,它会自动扩容以容纳更多元素。当元素数量超过数组容量时,会创建一个更大的数组,并将原数组元素复制到新数组中。默认初始容量为 10,每次扩容为原来的 1.5 倍。

java

import java.util.ArrayList;
import java.util.List;public class ArrayListExample {public static void main(String[] args) {List<String> arrayList = new ArrayList<>();arrayList.add("one");arrayList.add("two");System.out.println(arrayList.get(0));}
}

  • LinkedList:基于双向链表实现,每个节点包含数据和指向前一个节点和后一个节点的引用。插入和删除操作只需要修改节点的引用,不需要移动大量元素,因此在插入和删除操作频繁的场景下性能较好。

java

import java.util.LinkedList;
import java.util.List;public class LinkedListExample {public static void main(String[] args) {List<String> linkedList = new LinkedList<>();linkedList.add("one");linkedList.add("two");System.out.println(linkedList.get(0));}
}

  • Vector:也是基于动态数组实现,与 ArrayList 类似,但它是线程安全的,所有方法都使用 synchronized 关键字进行同步。默认初始容量为 10,每次扩容为原来的 2 倍。

java

import java.util.Vector;
import java.util.List;public class VectorExample {public static void main(String[] args) {List<String> vector = new Vector<>();vector.add("one");vector.add("two");System.out.println(vector.get(0));}
}

  • 要点

  1. 数据结构:ArrayList 和 Vector 是数组,支持随机访问,通过索引可以快速访问元素;LinkedList 是链表,不支持随机访问,需要从头节点或尾节点开始遍历。
  2. 线程安全:Vector 是线程安全的,ArrayList 和 LinkedList 不是。在多线程环境下,如果需要线程安全的列表,可以使用 Vector 或使用 Collections.synchronizedList 方法将 ArrayList 转换为线程安全的列表。
  3. 性能:ArrayList 和 Vector 随机访问速度快,插入和删除操作在尾部以外的位置较慢;LinkedList 插入和删除操作快,随机访问速度慢。
  4. 内存占用:ArrayList 和 Vector 由于是数组,会预先分配一定的内存空间,可能会造成内存浪费;LinkedList 每个节点需要额外的引用,会占用更多的内存空间。

应用

  1. 分析在不同场景下如何选择使用 ArrayList、LinkedList 和 Vector,例如在需要频繁随机访问元素时使用 ArrayList,在需要频繁插入和删除元素时使用 LinkedList,在多线程环境下使用 Vector。
  2. 研究 ArrayList 和 Vector 在扩容机制上的差异对性能的影响。

10. 什么是 volatile 和 synchronized,有什么区别

  • 原理

  • volatile:是一个关键字,用于修饰变量。它保证了变量的可见性,即当一个线程修改了被 volatile 修饰的变量的值,其他线程能够立即看到最新的值。这是因为 volatile 变量会直接从主内存中读取和写入,而不是从线程的本地缓存中读取和写入。但它不保证原子性,例如对 volatile 变量进行自增操作不是原子操作。

java

public class VolatileExample {private static volatile int counter = 0;public static void main(String[] args) {Thread t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter++;}});Thread t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {counter++;}});t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(counter);}
}

  • synchronized:是一个关键字,用于修饰方法或代码块。它可以保证在同一时间只有一个线程可以访问被 synchronized 修饰的方法或代码块,从而保证了线程安全,既保证了可见性,也保证了原子性。当一个线程进入 synchronized 方法或代码块时,会获得对象的锁,其他线程必须等待该线程释放锁后才能进入。

java

public class SynchronizedExample {private static int counter = 0;public static synchronized void increment() {counter++;}public static void main(String[] args) {Thread t1 = new Thread(() -> {for (int i = 0; i < 1000; i++) {increment();}});Thread t2 = new Thread(() -> {for (int i = 0; i < 1000; i++) {increment();}});t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(counter);}
}

  • 要点

  1. 功能:volatile 保证可见性,synchronized 保证可见性和原子性。
  2. 使用场景:volatile 适用于一个变量被多个线程读取,一个线程写入的场景,例如状态标志位;synchronized 适用于多个线程对共享资源进行读写操作的场景,例如多线程对计数器进行自增操作。
  3. 性能:volatile 的性能开销较小,因为它不会阻塞线程;synchronized 的性能开销较大,因为它会导致线程阻塞。

  • 应用

  1. 了解 Java 内存模型(JMM)中关于可见性和原子性的原理,以及 volatilesynchronized 在 JMM 中的实现机制。
  2. 研究 volatilesynchronized 在不同并发场景下的优化使用,例如使用 volatile 结合 CAS 操作实现无锁算法。

友情提示:本文已经整理成文档,可以到如下链接免积分下载阅读

https://download.csdn.net/download/ylfhpy/90498379

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/74184.shtml

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

相关文章

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图&#xff08;可视&#xff09;模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…

Linux:基础IO---文件描述符

文章目录 1. 前言1.1 C语言文件知识回顾 2. 文件2.1 文件基础知识 3. 被打开的文件3.1 以C语言为主&#xff0c;先回忆一下C文件接口3.2 过渡到系统&#xff0c;认识文件系统调用3.3 访问文件的本质3.4 重定向&&缓冲区 序&#xff1a;在深入了解了进程的内容后&#xf…

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…

批量图片压缩工具,高效减小文件大小并保持质量

在处理大量图片时&#xff0c;如何高效压缩文件大小并保持画质是个常见难题。今天为大家推荐一款专业工具——JPGC&#xff0c;它专为图片批量处理设计&#xff0c;能快速压缩JPG/JPEG格式图片&#xff0c;在减小文件体积的同时尽可能保留画质&#xff0c;尤其适合处理数码相机…

软考中级-软件设计师 准备

软考中级-软件设计师 准备 一、软考相关1.1、考试时间1.2、考试时长1.3、题型和分值&#xff1a; 二、软考备考2.1、相关书籍2.2、推荐课程&#xff1a;B站up主zst_20012.3、学习路线 一、软考相关 1.1、考试时间 一年有两次软考&#xff0c;一般是五月末和十一月的中旬 以下…

【数据挖掘】Python基础环境安装配置

【数据挖掘】Python基础环境安装配置 一、摘要二、安装Python3.13.2三、安装Jupyter Notebook四、安装Numpy和Pandas以及matplotlib五、安装scikit-learn库和seaborn库 一、摘要 本文主要介绍如何在Windows上安装Python3.13.2&#xff0c;然后基于该Python版本安装Jupyter not…

OpenLayers集成天地图服务开发指南

以下是一份面向GIS初学者的OpenLayers开发详细教程&#xff0c;深度解析代码&#xff1a; 一、开发环境搭建 1.1 OpenLayers库引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…

【免费】2000-2019年各省地方财政房产税数据

2000-2019年各省地方财政房产税数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政房产税 4、范围&#xff1a;31省 5、指标说明&#xff1a;房产税是对个人和单位拥有的房产征收的一种…

使用Python将视频转化为gif

使用Python将视频转化为gif 一、前言二、准备三、测试 一、前言 最近想把喜欢的视频片段作成gif&#xff0c;就试着用Python做了下&#xff0c;感觉效果还行&#xff0c;这里做个记录。 二、准备 先下载安装对应的库&#xff0c;命令如下&#xff1a; pip install moviepy …

SPI 机制与 Spring Boot AutoConfiguration 对比解析

一、架构效率革命性提升 1.1 类加载效率跃升 Spring Boot 2.7引入的AutoConfiguration.imports采用清单式配置加载&#xff0c;对比传统SPI机制&#xff1a; 传统SPI扫描路径&#xff1a;META-INF/services/** Spring Boot新方案&#xff1a;META-INF/spring/org.springfram…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的异常处理:全局异常与自定义异常

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…

moveit2基础教程上手-使用xarm6演示

0、前置信息 开发环境&#xff1a;wsl。 ros版本&#xff1a;jazzy&#xff0c;ubuntu版本&#xff1a;24.04 xarm-ros2地址 1、启动Rviz&#xff0c;加载 Motion Planning Plugin&#xff0c;实现演示功能 Getting Started — MoveIt Documentation: Rolling documentation…

第十六届蓝桥杯模拟二

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

晶鑫股份迈向敏捷BI之路,永洪科技助力启程

数据驱动的时代&#xff0c;每一次技术的创新和突破都在为企业的发展注入新的动力。而敏捷性也不再是选择&#xff0c;是企业生存与发展的必要条件。作为连续5年获得中国敏捷BI第一名的永洪科技&#xff0c;通过不断地在数据技术领域深耕细作&#xff0c;再次迎来了行业内的关注…

基于CAMEL 的Workforce 实现多智能体协同工作系统

文章目录 一、workforce 简介1.架构设计2.通信机制 二、workforce 工作流程图示例1.用户角色2.工作流程 三、workforce 中重要函数说明1.__init__函数2.add_single_agent_worker 函数3.add_role_playing_worker 函数4.add_workforce 函数 四、基于workforce实现多智能体协调&am…

每日一题力扣2974.最小数字游戏c++

2974. 最小数字游戏 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> numberGame(vector<int>& nums) {vector<int> arr(nums.size());sort(nums.begin(),nums.end());for(size_t i0;i<nums.size();i2){arr[i]nums[i1]…

Adobe After Effects 操作

Adobe After Effects &#xff08;AE&#xff09;可以实现将多个元素进行合成&#xff0c;实现特殊效果。AE的项目文件是aep&#xff0c;可以将素材、层、效果等一切信息&#xff0c;保存在这个项目文件中。 AE的原理&#xff0c;和PS的原理非常类似。 操作界面 操作界面如…

【React】基于自定义Hook提取公共逻辑

目录 自定义Hook自定义Hook 1自定义Hook 2使用 注意事项 自定义Hook 作用&#xff1a;提取封装一些公共的处理逻辑 玩法&#xff1a;创建一个函数&#xff0c;名字需要是 useXxx &#xff0c;后期就可以在组件中调用这个方法&#xff01; 自定义Hook 1 页面加载的时候修改浏…

AUTOSAR与arxml的文档解析

如下是文档脑图 一、文档概述 该文档是 AUTOSAR 经典平台的应用接口用户指南&#xff0c;主要解释 **Al Table&#xff08;应用接口表&#xff09;** 的结构、方法论及相关技术细节&#xff0c;帮助开发者理解如何通过标准化接口实现软件组件的互操作性。 关键内容 目的&#…

油候插件、idea、VsCode插件推荐(自用)

开发软件&#xff1a; 之前的文章&#xff1a; 开发必装最实用工具软件与网站 推荐一下我使用的开发工具 目前在用的 油候插件 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 让查询变成多列&#xff0c;而且可以流式翻页 Github 增强 - 高速下载 github下载 TimerHo…