Java中常用的七种队列你了解多少?
文章目录
- Java中常用的七种队列你了解多少?
- ArrayBlockingQueue队列如何使用?
- 添加元素到队列
- 获取队列中的元素
- 遍历队列
- LinkedBlockingQueue队列如何使用?
- 1. 创建SynchronousQueue对象
- 2. 添加元素到队列
- 3. 获取队列中的元素
- 4. 遍历队列
- SynchronousQueue队列如何使用?
- 创建SynchronousQueue对象
- 添加元素到队列
- 获取队列中的元素
- 遍历队列
- LinkedTransferQueue队列如何使用?
- 1. 创建LinkedTransferQueue对象
- 2. 添加元素到队列
- 3. 获取队列中的元素
- 4. 遍历队列
- ConcurrentLinkedQueue队列如何使用?
- 1. 创建DelayQueue对象
- 2. 添加元素到DelayQueue
- 3. 获取DelayQueue中的元素
- 4. 自定义元素类
- DelayQueue队列如何使用?
- 创建DelayQueue对象
- 添加元素到DelayQueue
- 获取DelayQueue中的元素
- 总结:
- 结语
Java中常用的七种队列你了解多少?
Java中常用的队列有以下几种:
ArrayBlockingQueue
:一个基于数组结构的有界阻塞队列,按照先进先出的原则对元素进行排序。LinkedBlockingQueue
:一个基于链表结构的有界阻塞队列,按照先进先出的原则对元素进行排序。PriorityBlockingQueue
:一个支持优先级排序的无界阻塞队列。DelayQueue
:一个支持延时获取元素的无界阻塞队列。SynchronousQueue
:一个不存储元素的阻塞队列,每个插入操作必须等待另一个线程的移除操作,否则插入操作一直处于阻塞状态。LinkedTransferQueue
:一个基于链表结构的无界阻塞队列,支持生产者消费者模式。ConcurrentLinkedQueue
:一个基于链表结构的无界并发队列,按照先进先出的原则对元素进行排序。
这些队列都实现了Queue接口或其子接口,可以根据不同的场景和需求选择合适的队列。在并发场景下,应当注意队列的线程安全性以及对并发操作的支持程度。
ArrayBlockingQueue队列如何使用?
ArrayBlockingQueue是Java中的一个线程安全的队列,它是一种基于数组实现的有界队列。下面介绍一下ArrayBlockingQueue队列的使用方法。
创建ArrayBlockingQueue对象
可以使用new关键字创建ArrayBlockingQueue对象。
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(capacity);
其中,capacity参数表示队列的容量。
添加元素到队列
可以使用add方法向队列中添加元素,如果队列已满,则会抛出IllegalStateException异常。
queue.add("wx:libin9iOak");
也可以使用offer方法向队列中添加元素,如果队列已满,则返回false。
boolean result = queue.offer("wx:libin9iOak");
还可以使用put方法向队列中添加元素,如果队列已满,则当前线程会被阻塞,直到有其他线程从队列中删除元素。
queue.put("wx:libin9iOak");
获取队列中的元素
可以使用take方法获取队列中的元素,如果队列为空,则当前线程会被阻塞,直到有其他线程向队列中添加元素。
String element = queue.take();
也可以使用poll方法获取队列中的元素,如果队列为空,则返回null。
String element = queue.poll();
还可以使用poll方法设置超时时间,如果在指定的时间内没有获取到元素,则返回null。
String element = queue.poll(timeout, unit);
遍历队列
可以使用迭代器遍历队列中的元素。
Iterator<String> iterator = queue.iterator();
while(iterator.hasNext()) {String element = iterator.next();// do something with the element
}
也可以使用for-each循环遍历队列中的元素。
for(String element : queue) {// do something with the element
}
ArrayBlockingQueue在生产者线程和消费者线程之间提供了一种同步交互的机制,能够有效地控制线程之间的交互。同时,由于它是一种有界队列,因此在使用时需要注意队列的容量,以免发生队列溢出。
LinkedBlockingQueue队列如何使用?
SynchronousQueue是Java中的一个线程安全的队列,它是一种没有缓冲的队列,其中每个插入操作必须等待另一个线程的删除操作,反之亦然。下面介绍一下SynchronousQueue队列的使用方法。
1. 创建SynchronousQueue对象
可以使用new关键字创建SynchronousQueue对象。
SynchronousQueue<String> queue = new SynchronousQueue<>();
2. 添加元素到队列
SynchronousQueue是一种没有缓冲的队列,因此不能直接将元素添加到队列中。它的插入操作必须等待另一个线程的删除操作。可以使用put方法向队列中添加元素,如果没有等待的消费者线程,则当前线程会被阻塞,直到有消费者线程来获取元素。
queue.put("wx:libin9iOak");
3. 获取队列中的元素
可以使用take方法获取队列中的元素,如果队列为空,则当前线程会被阻塞,直到有生产者线程添加元素。
String element = queue.take();
4. 遍历队列
SynchronousQueue是一种没有缓冲的队列,因此不支持遍历操作。
SynchronousQueue在生产者线程和消费者线程之间提供了一种同步交互的机制,能够有效地控制线程之间的交互。但是需要注意的是,由于它是一种没有缓冲的队列,因此在使用时需要确保生产者线程和消费者线程之间的数量平衡,否则可能会导致线程阻塞或队列溢出。
Regenerate response
SynchronousQueue队列如何使用?
SynchronousQueue是Java中的一个线程安全的队列,它是一种没有缓冲的队列,其中每个插入操作必须等待另一个线程的删除操作,反之亦然。下面介绍一下SynchronousQueue队列的使用方法。
创建SynchronousQueue对象
可以使用new关键字创建SynchronousQueue对象。
```
SynchronousQueue queue = new SynchronousQueue<>();
```
添加元素到队列
SynchronousQueue是一种没有缓冲的队列,因此不能直接将元素添加到队列中。它的插入操作必须等待另一个线程的删除操作。可以使用put方法向队列中添加元素,如果没有等待的消费者线程,则当前线程会被阻塞,直到有消费者线程来获取元素。
```
queue.put(“wx:libin9iOak”);
```
获取队列中的元素
可以使用take方法获取队列中的元素,如果队列为空,则当前线程会被阻塞,直到有生产者线程添加元素。
```
String element = queue.take();
```
遍历队列
SynchronousQueue是一种没有缓冲的队列,因此不支持遍历操作。
SynchronousQueue在生产者线程和消费者线程之间提供了一种同步交互的机制,能够有效地控制线程之间的交互。但是需要注意的是,由于它是一种没有缓冲的队列,因此在使用时需要确保生产者线程和消费者线程之间的数量平衡,否则可能会导致线程阻塞或队列溢出。
LinkedTransferQueue队列如何使用?
LinkedTransferQueue是Java中的一个线程安全的队列,它是基于链表实现的无界队列,支持高效的并发访问。相比于ConcurrentLinkedQueue,它多了一种阻塞等待的机制。下面介绍一下LinkedTransferQueue队列的使用方法。
1. 创建LinkedTransferQueue对象
可以使用new关键字创建LinkedTransferQueue对象。
LinkedTransferQueue<String> queue = new LinkedTransferQueue<>();
2. 添加元素到队列
可以使用add、offer或transfer方法将元素添加到队列中。
queue.add("wx:libin9iOak");
queue.offer("weix:libin9iOak");
queue.transfer("element3");
其中,add方法在队列已满时会抛出异常,而offer方法则会返回false。而transfer方法则是一种阻塞等待的机制,它会将元素立即转移给等待的消费者线程,如果没有等待的消费者线程,则当前线程会被阻塞,直到有消费者线程来获取元素。
3. 获取队列中的元素
可以使用poll方法获取队列中的元素,如果队列为空,则返回null。
String element = queue.poll();
也可以使用take方法获取队列中的元素,如果队列为空,则当前线程会被阻塞,直到有生产者线程添加元素。
String element = queue.take();
4. 遍历队列
可以使用forEach方法遍历队列中的元素。
queue.forEach(System.out::println);
也可以使用迭代器遍历队列中的元素。
Iterator<String> iterator = queue.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}
LinkedTransferQueue支持高效的并发访问,并且它提供了一种阻塞等待的机制,可以更加灵活地控制线程之间的交互。但是需要注意的是,由于它是基于链表实现的,因此在进行遍历或删除操作时,需要注意多线程并发修改的问题。
ConcurrentLinkedQueue队列如何使用?
DelayQueue是Java中的一个阻塞队列,它可以支持延时获取元素的功能。在DelayQueue中,每个元素都有一个过期时间,只有当元素的过期时间到了才能被获取,否则元素一直处于阻塞状态。下面介绍一下DelayQueue队列的使用方法。
1. 创建DelayQueue对象
可以使用new关键字或者工具类Executors创建DelayQueue对象。
DelayQueue<MyDelayedElement> delayQueue = new DelayQueue<>();
其中MyDelayedElement是自定义的实现了Delayed接口的元素类,实现getDelay方法用于返回元素的过期时间。
2. 添加元素到DelayQueue
可以使用add或offer方法将元素添加到DelayQueue中。
delayQueue.add(new MyDelayedElement("wx:libin9iOak", 1000));
delayQueue.offer(new MyDelayedElement("weix:libin9iOak", 2000));
其中,第二个参数是元素的过期时间,单位为毫秒。
3. 获取DelayQueue中的元素
可以使用take方法获取DelayQueue中的元素,如果没有可用的元素,则线程会一直处于阻塞状态。
MyDelayedElement element = delayQueue.take();
也可以使用poll方法获取DelayQueue中的元素,如果没有可用的元素,则返回null。
MyDelayedElement element = delayQueue.poll();
4. 自定义元素类
MyDelayedElement是一个自定义的实现了Delayed接口的元素类,下面是一个简单的示例代码。
public class MyDelayedElement implements Delayed {private String name; // 元素名称private long expireTime; // 过期时间public MyDelayedElement(String name, long delay) {this.name = name;this.expireTime = System.currentTimeMillis() + delay;}// 获取元素的过期时间@Overridepublic long getDelay(TimeUnit unit) {long diff = expireTime - System.currentTimeMillis();return unit.convert(diff, TimeUnit.MILLISECONDS);}// 按照过期时间排序@Overridepublic int compareTo(Delayed other) {long diff = this.getDelay(TimeUnit.MILLISECONDS) - other.getDelay(TimeUnit.MILLISECONDS);return Long.compare(diff, 0);}// 元素业务逻辑public void doBusiness() {System.out.println("Element " + name + " has expired");}
}
在上面的示例代码中,元素的过期时间是由创建元素时指定的delay参数和当前时间计算得出的。在getDelay方法中,返回元素的过期时间与指定时间单位的差值,这个差值会用于元素的排序。在compareTo方法中,按照过期时间从小到大排序。在doBusiness方法中,执行元素的业务逻辑。
总之,DelayQueue可以用于实现一些延时操作,例如定时任务调度、缓存失效等。在使用时,需要注意元素的过期时间和业务逻辑的处理。
DelayQueue队列如何使用?
DelayQueue是Java中的一个阻塞队列,它可以支持延时获取元素的功能。在DelayQueue中,每个元素都有一个过期时间,只有当元素的过期时间到了才能被获取,否则元素一直处于阻塞状态。下面介绍一下DelayQueue队列的使用方法。
创建DelayQueue对象
可以使用new关键字或者工具类Executors创建DelayQueue对象。
DelayQueue<MyDelayedElement> delayQueue = new DelayQueue<>();
其中MyDelayedElement是自定义的实现了Delayed接口的元素类,实现getDelay方法用于返回元素的过期时间。
添加元素到DelayQueue
可以使用add或offer方法将元素添加到DelayQueue中。
delayQueue.add(new MyDelayedElement("wx:libin9iOak", 1000));
delayQueue.offer(new MyDelayedElement("weix:libin9iOak", 2000));
其中,第二个参数是元素的过期时间,单位为毫秒。
获取DelayQueue中的元素
可以使用take方法获取DelayQueue中的元素,如果没有可用的元素,则线程会一直处于阻塞状态。
MyDelayedElement element = delayQueue.take();
也可以使用poll方法获取DelayQueue中的元素,如果没有可用的元素,则返回null。
MyDelayedElement element = delayQueue.poll();
自定义元素类
MyDelayedElement是一个自定义的实现了Delayed接口的元素类,下面是一个简单的示例代码。
public class MyDelayedElement implements Delayed {private String name; // 元素名称private long expireTime; // 过期时间public MyDelayedElement(String name, long delay) {this.name = name;this.expireTime = System.currentTimeMillis() + delay;}// 获取元素的过期时间@Overridepublic long getDelay(TimeUnit unit) {long diff = expireTime - System.currentTimeMillis();return unit.convert(diff, TimeUnit.MILLISECONDS);}// 按照过期时间排序@Overridepublic int compareTo(Delayed other) {long diff = this.getDelay(TimeUnit.MILLISECONDS) - other.getDelay(TimeUnit.MILLISECONDS);return Long.compare(diff, 0);}// 元素业务逻辑public void doBusiness() {System.out.println("Element " + name + " has expired");}}
在上面的示例代码中,元素的过期时间是由创建元素时指定的delay参数和当前时间计算得出的。在getDelay方法中,返回元素的过期时间与指定时间单位的差值,这个差值会用于元素的排序。在compareTo方法中,按照过期时间从小到大排序。在doBusiness方法中,执行元素的业务逻辑。
总之,DelayQueue可以用于实现一些延时操作,例如定时任务调度、缓存失效等。在使用时,需要注意元素的过期时间和业务逻辑的处理。
总结:
ArrayBlockingQueue是一种有界队列,它可以设定最大容量,当队列满时,新增元素会被阻塞;LinkedBlockingQueue是一种无界队列,它将新增元素放在队列的尾部,获取元素时从队列的头部开始获取;PriorityBlockingQueue是一种带有优先级的队列,它会根据元素的优先级顺序来进行排序;LinkedTransferQueue是一种基于链表实现的无界队列,它支持高效的并发访问,并且它提供了一种阻塞等待的机制;
ConcurrentLinkedQueue是一种基于链接节点的无界线程安全队列,支持高性能的并发操作。
结语
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏➕关注,您的支持是我坚持写作最大的动力。
相关文章:

Java中常用的七种队列你了解多少?
文章目录Java中常用的七种队列你了解多少?ArrayBlockingQueue队列如何使用?添加元素到队列获取队列中的元素遍历队列LinkedBlockingQueue队列如何使用?1. 创建SynchronousQueue对象2. 添加元素到队列3. 获取队列中的元素4. 遍历队列SynchronousQueue队列…...
<Java获取时间日期工具类>常见八种场景(一)
一:自定义时间日期工具类常用的八种方式(整理): 0,getTimeSecondNum:时间日期转成秒数,常用于大小比较 1,getLastYearMonthLastDay:获取去年当月最后一天的时间日期 2,getLastYearM…...
接上一篇 对多个模型环形旋转进行优化 指定旋转位置
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class ModelAnimal : MonoBehaviour { //记录鼠标滑动 public Vector2 lastPos;//鼠标上次位置 Vector2 currPos;//鼠标当前位置 Vector2 offset;//两次位置的偏移…...

Unity中获取地形的法线
序之前,生成了地形图:(42条消息) 从灰度图到地形图_averagePerson的博客-CSDN博客那末,地形的法线贴图怎么获取?大概分为两个部分吧,先拿到法线数据,再画到纹理中去。关于法线计算Unity - Scripting API: M…...

模型解释性:PFI、PDP、ICE等包的用法
本篇主要介绍几种其他较常用的模型解释性方法。 1. Permutation Feature Importance(PFI) 1.1 算法原理 置换特征重要性(Permutation Feature Importance)的概念很简单,其衡量特征重要性的方法如下:计算特征改变后模型预测误差的增加。如果打乱该特征的…...
spring常见面试题(2023最新)
目录前言1.spring是什么2.spring的设计核心是什么3.IOC和AOP面试题4.spring的优点和缺点5.spring中bean的作用域6.spring中bean的注入方式7.BeanFactory 和 ApplicationContext有什么区别?8.循环依赖的情况,怎么解决?9.spring中单例Bean是线程…...

华为OD机试题,用 Java 解【压缩报文还原】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

机器学习-BM-FKNCN、BM-FKNN等分类器对比实验
目录 一、简介和环境准备 二、算法简介 2.1四种方法类: 2.1.1FKNN 2.1.2FKNCN 2.1.3BM-FKNN 2.1.3BM-FKNCN 2.2数据预处理 2.3输出视图 2.4调用各种方法看准确率 2.4.1BM-FKNCN 2.4.2BM-FKNN 2.4.3FKNCN 2.4.4FKNN 2.4.5KNN 一、简介和环境准备 k…...

ChatGPT火了,对话式人工智能还能干嘛?
身兼数职的ChatGPT 从2022火到了2023 连日来一直是各大平台的热议对象 其实除了写诗、敲代码、处理文档 以ChatGPT为代表的 对话式人工智能 还有更重要的工作要做 对话式AI与聊天机器人 相信大多数人…...
十一、操作数栈的特点(Operand Sstack)
1.每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也可以称之为表达式栈。 2.操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据,或提取数据,即入栈ÿ…...
拆解瑞幸新用户激活流程,如何让用户“动”起来?
Aha时刻 一个产品的拉新环节,是多种方式并存的;新用户可能来自于商务搭建了新的渠道,运营策划了新的活动,企划发布了新的广告,销售谈下了新的客户,市场推广了新的群体,以及产品本身的口碑传播,功能更新带来的自然流量。 这是一个群策群力的环节,不同的团队背负不同的K…...

tkinter界面的TCP通信/开启线程等待接收数据
前言 用简洁的语言写一个可以与TCP客户端实时通信的界面。之前做了一个项目是要与PLC进行信息交互的界面,在测试的时候就利用TCP客户端来实验,文末会附上TCP客户端。本文分为三部分,第一部分是在界面向TCP发送数据,第二部分是接收…...

华为OD机试题,用 Java 解【任务混部】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
看linux内核启动流程需要的汇编指令解释
一、指令 0.MRS 和MSR MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。 1.adrp adrp x0, boot_args把boot_args的页基地址提取出来,放到x0中。 2.stp stp x21, x1, [x0]将 x21, x1 的值存入 x0寄存器记录的地址中…...

【巨人的肩膀】JAVA面试总结(二)
1、💪 目录1、💪1.0、什么是面向对象1.1、JDK、JRE、JVM之间的区别1.2、什么是字节码1.3、hashCode()与equals()之间的联系1.4、String、StringBuffer、StringBuilder的区别1.5、和equals方法的区别1.6、重载和重写的区别1.7、List和Set的区别1.8、Array…...

【网络安全入门】零基础小白必看!!!
看到很多小伙伴都想学习 网络安全 ,让自己掌握更多的 技能,但是学习兴趣有了,却发现自己不知道哪里有 学习资源◇瞬间兴致全无!◇ 😄在线找人要资料太卑微,自己上网下载又发现要收费0 🙃差点当…...
字节前端经典面试题(附答案)
有哪些可能引起前端安全的问题? 跨站脚本 (Cross-Site Scripting, XSS): ⼀种代码注⼊⽅式, 为了与 CSS 区分所以被称作 XSS。早期常⻅于⽹络论坛, 起因是⽹站没有对⽤户的输⼊进⾏严格的限制, 使得攻击者可以将脚本上传到帖⼦让其他⼈浏览到有恶意脚本的⻚⾯, 其注⼊⽅式很简…...

数据库管理工具的使用
目录 摘要 一、Navicat是什么? 二、使用步骤 1.如何下载与安装 2.如何连接远程数据库 总结 摘要 本文主要介绍数据库管理工具的使用 一、Navicat是什么? 它是一款数据库管理工具,将此工具连接数据库,你可以从中看到各种数据库的详细…...

让马斯克反悔的毫米波雷达,被国产雷达头部厂商木牛科技迭代到了5D时代
近日,特斯拉或将在其HW4.0硬件系统配置一枚高精度4D毫米波雷达的消息在外网刷屏。据分析,“纯视觉”信仰者马斯克之所以做出这样的决定,一方面是减配了雷达的特斯拉自动驾驶,表现不尽如人意;另一方面也跟毫米波雷达的技…...

MaxWell原理概述
文章目录1.MaxWell概述2.Maxwell输出数据格式3.Maxwell原理3.1 MySQL二进制日志3.2 MySQL主从复制1.MaxWell概述 Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、dele…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...