Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model
Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model
2019 Design, Automation & Test in Europe Conference & Exhibition (DATE)
DOI: 10.23919/DATE.2019.8715126
目录
- Abstract
- 一、Introduction
- 二、PROBLEM FORMULATION AND PRELIMINARIES
- 2.1 Problem Formulation
- 2.2 Convolutional Neural Network
- 2.3 Transfer Learning
- 三、MACRO PLACEMENT WITH EMBEDDED ROUTABILITY PREDICTION MODEL
- 3.1 Feature Extraction
- 3.2 Routability Prediction
- 3.3 Simulated Annealing Optimization
- 四、EXPERIMENTAL RESULTS
- 4.1 Routability Prediction
- 4.2 Simulated Annealing Optimization
- 总结与思考
Abstract
一个芯片设计只有通过设计规则检查(DRC)后才能被贴出。 设计复杂度严重恶化了设计可路由性,这可以用详细路由阶段之后的DRC违规次数来衡量。 此外,由于知识产权的广泛使用,现代大型设计通常由许多巨大的宏组成。 根据经验,宏的布局在很大程度上决定了可路由性,但由于单元布局和路由的复杂性和不可预测性,目前还没有一个有效的成本指标来直接评估宏布局。 在本文中,我们提出了第一个基于深度学习的宏布局方法RoutabilityDriven。 提出了一种基于卷积神经网络(CNN)的可布线性预测模型,并将其嵌入到宏布线器中,通过模拟退火(SA)优化过程可以得到一个具有最小DRC违规的良好宏布线。
一、Introduction
现代大型设计通常由许多巨大的宏组成。 宏的数量急剧增加,这些巨大的宏可以占据芯片面积的70%以上。 从经验上看,宏的放置在很大程度上决定了可路由性,这可以从图中显示的示例布局中观察到,Fig. 1(a)和(b)给出了同一电路的两个不同宏位置。 ©和(d)分别给出了两个宏布局在单元布局和路由之后的布局,这两个布局是由商业EDA工具Enceence完成的。 白色表示DRV的位置,这是由违反DRC规则的路由网络造成的,如短路和间距违规。 据实验结果,在Fig.1©有4892次违规,而在图的布局 Fig.1(d)有65868次违规,这清楚地表明宏放置对设计可路由性有很大的影响。 在现代大规模设计中,单元布局和布线通常需要很长的时间,因此,在运行整个设计流程后,枚举给定设计的所有宏布局并找到最佳的宏布局是不现实的。
许多关于宏布局的研究已经被提出来解决这些设计挑战,这些研究可以分为三类:
(1)同时放置宏和标准单元的一阶段混合尺寸布局; 例如:MPL6[12],Ntuplace3[9],Hsu等。 [14]、Complex[17]、Maple[18]、ePlace-MS[19]和FastPlace3.0[27]。
(2)构造型MixedSize宏布局,在迭代过程中对宏进行划分并保持宏不重叠; 例如,CAPO[1]和FLOP[28]。 (3)三阶段混合尺寸布局,包括布局原型、宏布局和标准单元布局,如图所示 2; 例如,XDP[10],CG[8],Floorist[21],MP-Tree[11],CP-Tee[7],Chiou et al[5]。
三阶段方法由于其更好的性能和易于集成到大多数设计流程中而受到广泛的关注。 最近,MP-tree被提出来有效地打包宏[11]。 CP-tree继承了MP-tree的优点,并考虑了预置块[7]。 由于上述两种表示方法在处理宏重叠方面存在不足,本文提出了一种基于圆轮廓的基于角点序列的宏布局方法[20][5]。 然而,所有的三阶段宏观放置依赖于从一阶段混合尺寸放置生成的放置原型。 放置原型步骤不仅需要更多的运行时间来执行附加步骤,而且还可能导致以下方面的一些缺陷 :
- 如果初始的宏合法那么变化的空间有限,如果不合法布线变得不可控,宏放置可能不是最优。
由于放置器根据宏在原型中的位置估计线缆和布线成本,并在目标函数中最小化宏与原型的位移,因此最终的宏放置可以与原型中的宏放置非常相似。 换句话说,原型可能会限制优化解空间,成为决定优化宏布局轮廓的主要因素。 相反,如果将宏位移设置为目标函数中的次要优先级,使得宏放置器更灵活地生成显著不同的宏放置,则线形和可布线性估计变得不准确,并且生成的宏放置可能不是最优的。 - 现有的模型针对单元布局和局部路由,不适应宏布局阶段。
由于单元布局和路由的高度复杂性和不可预测性,没有有效的代价度量来直接评估宏布局,宏布局是一个可以合理地求助于机器学习的优化问题。 在物理设计过程中,已经有几个关于DRV预测的工作。 其中一些通过考虑全局路由或试路由后的拥塞图来预测给定小区位置的DRV和拥塞区域的数量[23],[29]。 然而,由于高级过程节点的设计规则越来越复杂,导致拥塞图与最终DRV图之间的不相关性[4]、[6]。 为了避免被不适当的特性所误导,并节省全局/试验路由的运行时间,其他的工作试图在没有拥塞映射的情况下预测布局的可路由性[4]、[6]、[25]、[26]。 [25]和[26]开发基于机器学习的方法来预测布局瓦片中是否发生短违规。 [6]提出的模型预测一个布局解是否可路由。 [4]提出了一种基于支持向量机(SVM)的DRVs位置预测方法。 然而,所有这些工作都是针对给定的单元布局进行局部可路由性预测,现有的模型不适用于宏布局阶段。
在本文中,提出了可路由驱动的宏布局与深度学习。 一种基于卷积神经网络(CNN)的可布线型预测模型,并嵌入到一个宏布局中的I预测模型,通过模拟退火(SA)优化过程可以得到一个具有最小DRC违规的良好宏观布局。 本文的主要贡献如下:
- 首次将机器学习应用于宏观布局阶段的可路由性预测。 构建了可路由性预测器来预测DRV的数量。 预测模型的输入只需要一个宏布局,不需要单元布局和路由信息。
- 采用迁移学习方法解决训练数据不足的问题。 使用预训练的VGG16[24]体系结构,并用我们的宏放置数据集进行微调。
- 将开发的基于机器学习的可路由性预测器嵌入到宏布局中。 此外,利用模拟退火优化算法,以最小的DRVs搜索最优的宏布局。
- 实验结果证明了预测模型的准确性和我们的可路由性驱动宏布局的有效性。
第二节介绍了问题的提出和CNN的初步研究。 在第三节中,建议的模型开发和宏观放置方法在每个小节中都有详细说明。 第四节给出了实验结果。 最后,我们在第五节结束我们的工作。
二、PROBLEM FORMULATION AND PRELIMINARIES
2.1 Problem Formulation
我们的工作目标是解决两个问题:(1)给定宏观布局的早期可路由性预测; (2)在设计规则违反最小的情况下寻找最佳的宏布局。
问题1: 在第一个问题中,任务是找到一个预测给定宏布局的DRVs(表示为#DRVs)数量的模型,该模型可以表示为函数f#DRVs如下:
f#DRVs:Si∈RW×H→yi∈Nf_{\# D R V s}: S_i \in \mathbb{R}^{W \times H} \rightarrow y_i \in \mathbb{N}f#DRVs:Si∈RW×H→yi∈N(1)
其中,放置的宏Si∈RW×HS_i \in \mathbb{R}^{W \times H}Si∈RW×H,其中W和H表示放置平面的宽度和高度。 我们的目的是找到一个最优函数f#DRVs∗f_{\# D R V s}^*f#DRVs∗使得f#DRVsf_{\# D R V s}f#DRVs最小。
f#DRVs∗=argminfLoss(f#DRVs(Si)−yi)f_{\# D R V s}^*=\underset{f}{\arg \min } \operatorname{Loss}\left(f_{\# D R V s}\left(S_i\right)-y_i\right)f#DRVs∗=fargminLoss(f#DRVs(Si)−yi)(2)
问题2: 在第二个问题中,输入PiP_iPi是由宏、标准单元和芯片区域W×H组成的布局实例。 我们的目标是找到一个设计的宏布局SiS_iSi,在单元布局和布线后,预测的#DRVs最小化; 也就是说,使用以下目标函数执行宏放置:
minf#DRVs∗(Si)∣Si∈RW×H\min f_{\# D R V s}^*\left(S_i\right) \mid S_i \in \mathbb{R}^{W \times H}minf#DRVs∗(Si)∣Si∈RW×H (3)
2.2 Convolutional Neural Network
CNN是一个神经网络,它是一个相互连接的人工神经元系统,具有卷积运算和相互交换信息。 在训练过程中调整连接的数值权重。 CNN在许多不同的研究领域得到了广泛的应用。 图 3是用于图像处理的通用CNN体系结构。 典型的CNN是由卷积层、池层和全连通层组成的前馈网络。
2.3 Transfer Learning
迁移学习在机器学习领域得到了广泛的应用,它将知识从一个已研究过的问题转移到一个不同但相关的问题[22]。 由于当可用的数据集不足以训练一个完整的网络时,从零开始训练一个模型(随机初始化)是非常困难的,所以使用一个已经用大量数据集训练过的现有网络(如ImageNet[13]),并用目标任务的有限数据集对其进行微调是更现实的。 在我们的工作中,为了预测#DRVs,需要完成整个设计流程才能得到最终的路由结果,因此获取大量的训练数据极其耗时。 表I显示了从2015 ISPD基准[2]生成每个电路的单个训练数据的平均运行时间(以秒为单位),其中gp、dp、gr和dr分别表示全局布局、详细布局、全局路由和详细路由。 从表中可以观察到,生成一个数据需要7-38分钟。 因此,我们采用VGG网络结构作为CNN模型的基础,并在合理的时间内利用有限的训练数据对其进行微调[22]。
三、MACRO PLACEMENT WITH EMBEDDED ROUTABILITY PREDICTION MODEL
3.1 Feature Extraction
在本工作中,宏布局的可路由性是由小区布局和路由后的DRVs来量化的,因此需要一个CNN模型来准确地预测给定宏布局的DRVs的数量。 作为CNN模型的输入,我们把一个宏布局的布局看作是一个三维的张量,由二维特征映射堆叠而成。 本工作中使用的三个特征图如下:
- 宏密度图:给定由宏放置器生成的宏位置,宏的位置是固定的,因此可以通过计算每个像素的宏覆盖率来导出密度图。
- 针密度图:在宏放置阶段,单元的位置是未定的。 因此,只计算宏管脚的密度分布。
- 连通性映射:宏引脚的连通性表示连接到该引脚的网络数量。 连通性映射给出了宏管脚在相应像素处的连通性。
图 6说明了作为CNN模型输入的三个二维特征图。 通过计算一个宏布局SiS_iSi的三个特征,独立生成尺寸为W×H的三个特征映射。 之后,将这三个特征映射叠加,构造出一个三维输入张量Xi∈RW×H×3X_i∈R^{W×H×3}Xi∈RW×H×3。 注意,特征规范化应用于每个特征映射。 这是因为如果特征映射之间存在较大的差异,某些特征可能对训练模型产生确定性影响,而另一些特征则不会。 因此,我们将每个特征映射归一化,使其值介于0和1之间。 归一化也有助于训练模型更快的收敛。
3.2 Routability Prediction
如2.3节所述,由于训练数据不足,我们采用迁移学习来训练我们的预测模型。 我们的工作采用了深度卷积神经网络VGG16,其中“16”表示配置的深度。 图 7给出了VGG16的体系结构,它可以分为两个部分:卷积部分和全连接部分。 卷积部分由卷积层和MaxPooling层叠加而成,每个卷积层中的“m,n×n conv”表示该层使用了m,n×n滤波器。 在完全连接的部分,完全连接层中的神经元与前一层中的所有激活都有完全连接。 最后,VGG16输出1000个浮点值,每个浮点值是输入图像属于1000个类之一的概率。
为了生成所需的数据,实现一个宏放置方案以导出一组不同的宏放置,而EDA工具Access被用于单元放置和路由[3]。 在设计规则检查后,报告每个案例的#DRVs。 生成的宏放置是我们的训练数据和测试数据,对应的#DRV作为标签。 由于VGG16的输入图像的维数固定为224×224,每个输入张量Xi∈RW×H×3X_i∈R^{W×H×3}Xi∈RW×H×3被重塑为Xi∈R224×224×3X_i∈R^{224×224×3}Xi∈R224×224×3。
此外,标签还被缩放,使得它们的值落在1和m之间,其中m是用户定义的数字。 主要原因可以用图8来解释:
- 其中对每个电路的300个案例的#DRVs进行排序和绘图。 从图中可以看出,在不同的电路中,#DRVs的分布非常不同,这是可以理解的,因为较大的电路通常比较小的电路遭受更多的DRVs。 这一现象意味着用单一的预测模型对所有电路进行精确的#DRVS预测是困难的。
- 考虑到宏观砂矿的目标,找到一个相对较低的#DRVs的良好宏观布局比准确预测实际DRVs数量更重要。 因此,标签(即#DRVs)首先被缩放到[1,m],使得该模型可以适用于任何输入电路。 图 9展示了可路由性预测器的训练流程。
数据准备完毕后,加载预训练的VGG16模型。 由于我们的训练数据量相对较小(与用于训练VGG16的ImageNet相比),我们固定了VGG16中图像处理能力较强的卷积部分,只对全连接部分进行微调。 我们将输出层从一个1000类分类器替换为一个回归器,该回归器输出一个表示缩放的#DRVs的单个数字。 所有隐层都配有激活函数整流线性单元(RELU)[15]。 采用均方对数误差(MSLE)作为损失函数,用ADAM进行优化[16]。 此外,卷积操作会使输入图像收缩,而由于宏通常放置在靠近边界的地方,因此丢失芯片边界信息是不可取的。 因此,采用填充,使输出具有相同的尺寸作为原始输入。 此外,以差分率0.25设置差分层以防止过拟合。
3.3 Simulated Annealing Optimization
我们工作的最终目标是为给定的电路找到预测的#DRVs最少的最佳宏位置。 因此,我们将3.3建立的预测模型嵌入到一个宏观放置中,并应用模拟退火(SA)算法全局搜索最优解。 我们实现了基于圆轮廓的宏放置器,它使用角点序列[20] 作为 宏放置的表示[5]。 给定当前解的一个角序列CS,在SA:
- OP1:交换CS中的第i和第j个宏时采用三种扰动操作。
- OP2:在CS中的第j个宏之后插入第i个宏。
- OP3:为每个宏分配不同的角。 迭代地执行扰动操作,直到导出合法的宏布局。
在推导出宏观布局S∈RW×HS∈R^{W×H}S∈RW×H的新解后,将其重塑张量X∈R224×224×3X∈R^{224×224×3}X∈R224×224×3输入预测模型。 如果S’的预测的#DRVs小于前一个解决方案S的#DRVs,则S’将被接受。 相反,如果S’比S差,则S’也可以被接受。输出将是SA算法在满足终止条件之前找到的最佳宏布局。
四、EXPERIMENTAL RESULTS
对于每个电路,我们使用所实现的宏放置器生成至少300个显著不同的宏放置,并保证每个电路类型的600个宏放置。 然后,利用EDA工具Cadence Encure完成单元布局和路由[3],并以DRC后报告的DRV数作为标记。
4.1 Routability Prediction
预测方案的与真实的基本吻合
为了验证所提模型的预测能力,对其中四个电路进行了训练,并对另一个电路进行了测试。 这就保证了测试电路是对训练过的机器学习模型的一种隐形设计,以满足工业中处理许多新的隐形设计的要求。 我们将每个测试电路的所有宏布局按其真的#DRVs升序排序,表示为T,我们还将宏布局按其预测的#DRVs升序排序,表示为P。由于我们对机器学习模型预测的那些顶级宏布局(带有较少的#DRVs)是否真的是好的解决方案感兴趣,我们报告了P的前N个宏布局中的最佳真秩。可以观察到,每个电路的第1或第2最佳宏放置可以被预测器在其Top-30候选中找到,大多数可以在Top10或Top-20候选中找到。 结果表明,该预测器在可路由性方面具有一定的预测宏布局质量的能力。
4.2 Simulated Annealing Optimization
我们将可路由性预测器嵌入到所实现的宏布局器中,并使用基于SA的优化方法来寻找具有最少的DRVs的最佳宏布局。 为了进行比较,我们在没有嵌入模型的情况下实现了一个基于基线圆形轮廓的宏配置方案[5]。 由于我们的工作没有考虑布局原型,所以在SA优化过程中,我们只考虑边界代价来实现基线宏Placer,从而使Placer专注于为标准单元保留更多的空间和路由区域的完整性。 由于随机方案,我们重复执行基于SA的优化,为每个电路以及我们的方案和基线方案获得100个宏位置。 将得到的#DRVs与开始时生成的数据集进行比较,用于模型训练和测试。 请注意,由于Acception许可证最近发生了变化,只为小于100K单元的学术设计提供服务,因此在本实验中只测试了两个较小的电路,因为它是在此之后进行的。 表IV显示了两个宏放置器的解决方案质量,其中“top-y”列中的x%报告了解决方案质量与数据集的top-y宏放置相当的宏放置的百分比。 根据表IV,基准砂矿生成的FFT A与数据集的Top-10、Top-20和Top-30的宏放置率分别只有2%、22%和34%,而我们砂矿的解与数据集的Top-10、Top-20和Top-30的宏放置率分别为75%、82%和84%。 在FFT b的统计中也可以发现类似的趋势。
此外,FFT A和FFT B的34%和24%的宏观位置甚至比数据集中最好的宏观位置更好,这表明训练的可路由性预测模型的预测能力有助于找到数据集中从未见过的更好的解。 分别从我们的砂矿和基准砂矿中获得的最佳宏观位置(最少的DRVs)的布局见图4(a)和(b)。 在完成单元布局和路由之后,基线宏布局导致2426个违规,而我们的宏布局只产生851个违规。 此外,平均总wirelength(TWL)和平均运行时间也在表四中报告。 对于这两个电路,我们的方案与基准方案相比,分别可以实现9.16%和5.35%的TWL降低,这应该是由于宏放置的更好的可布线性。 注意,我们的Placer需要更多的运行时间来进行可路由性预测,在每个SA迭代中执行位置重塑、特征提取和CNN推断。 然而,不仅运行时开销是可以接受的,而且所提出的流可以从运行整个后端流到只运行其中几十个宏,大大节省总体设计时间。
总结与思考
本文首次提出了基于可路由性驱动的深度学习宏布局方法。 构建了一个基于CNN的可路由性预测器,用于在没有单元布局和路由信息的宏布局阶段预测#DRVs。 此外,我们将可路由性预测器嵌入到宏放置器中,生成可路由性驱动的宏放置。 此外,应用SA优化来寻找一个最小化的宏布局。
相关文章:
Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model
Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE) DOI: 10.23919/DATE.2019.8715126 目录Abstract一、Introduction二、PROBLEM FORMULATION AND PRELIMINARIE…...
论一个上班族如何一次性通过PMP考试
PMP是我工作后考取的一个证书。从准备到通过,花了大约三个月的时间。我之前在某家互联网公司从事程序员的工作,工作一段时间后,天天敲着代码,改着bug,感觉比较迷茫,不知道未来的发展在哪里,都说…...
Web前端:使用Angular CLI时的最佳实践和专业技巧
在web开发业务中,构建高性能的应用程序是首要因素。此外,用开发人员最流行的语言开发一个健壮的网站将始终为构建高功能的网站提供适当的基础网站。相比之下,不可否认,Angular CLI是建立得最好且正在成长的框架之一。Angular CLI简…...
从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包
文章目录15.1 搜索软件包15.2 列出软件包清单15.3 显示RPM包信息15.4 安装RPM包15.5 下载软件包15.6 删除软件包DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸…...
【java】Spring Boot --spring boot项目整合xxl-job
文章目录1、源码下载地址2.文档地址3.源码结构4.初始化数据库脚本5.配置调度中心xxl-job-admin5.1 修改调度中心配置文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties5.2 启动调度中心5.3 访问调度中心管理界面6.创建执行器项目6.3 载入配置…...
视图、索引、存储过程、触发器
视图、索引、存储过程、触发器 group by补充: 规范来说,分组查询中,select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化,分组后如果某个字段的所有记录相同,同样可以select。 视图 视图是虚拟…...
ImportError: cannot import name ‘FlattenObservation‘ from ‘gym.wrappers‘ 解决方案
问题描述 今天在运行openai给出的ppo2的baseline的时候遇到了以下bug: File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module> from gym.wrappers import FlattenObservation, FilterObservation ImportErr…...
大件传输的9种方法
不知道你有没有试过用电子邮件进行大文件传输,由于文件大小的限制,往往会发送失败。同时,一些文件共享服务对传输的文件有大小限制,使得你无法与朋友分享电影片段或向客户展示你的工作样本。还有一些要求你注册一个账户࿰…...
将vue2的项目《后台管理模式》转变为vue3版本 (一)
本篇主要讲了将v2项目转变为v3版本,以本人经验愿于各位分享 希望大家可以一起交流!!!! 文章目录一、app 出口位置二 、 index.js 路由配置三、package.json 文件四、 main.js 既然安装插件那就需要引入五、 跨域问题总…...
苹果手机怎么下载手机铃声?图文教程,快速学会
很多小伙伴喜欢使用苹果手机,可是苹果手机里的铃声自己并不是很喜欢听,想要下载一些好听的歌曲更换自己的手机铃声。苹果手机怎么下载手机铃声?别着急,今天小编以图文的方式,教教大家如何使用苹果手机下载手机铃声。 苹…...
AJAX笔记(二)Fetch和axios
1、Fetch 1.1、XMLHttpRequest的缺陷 1.2、fetch的get写法 1.3、fetch的post写法 1.4、fetch的put写法 1.5、fetch的patch写法 1.6、fetch的delete写法 2、axios 2.1、axios的介绍 2.2、axios的get写法 2.3、axios的post写法(图一json写法和图二三form写法&#x…...
TOTOLINK NR1800X 系列 CVE 分析
漏洞简介 TOTOLINK NR1800X最近报了一些cve,现主要对其命令注入进行具体分析,以及对其登录绕过进行分析。 固件下载地址:https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html 环境搭建 固件提取 binwa…...
IDEA如何将代码进行上下左右移动,改变位置
鼠标光标定位快捷键 1.ctrl Home:定位到一页代码的行头 2.ctrl end :定位到一页代码的行末 3.home:定位到一行的行头 4.end:定位到一行的行末 有的小键盘可能没有home和end键,就需要自行修改IDEA中的快捷键或者使用键盘映射的方法修改。 将…...
【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢
HashMap中为什么引入红黑树,而不是AVL树呢1. 概述 开始学习这个知识点之前我们需要知道,在JDK1.8 以及之前,针对HashMap有什么不同。 JDK 1.7的时候,HashMap的底层实现是数组 链表JDK1.8的时候,HashMap的底层实现是数…...
深度学习Week15-common.py文件解读(YOLOv5)
目录 简介 一.基本组件 1.1autopad 1.2Conv 1.3 Focus 1.4Bottleneck 1.5BottleneckCSP 1.6 C3 1.7 SPP 1.8Concat 1.9Contract、Expand 二、重要类 2.1非极大值抑制(NMS) 2.2AutoShape 2.3 Detections 2.4 Classify 三、实验 …...
qemu的snapshot快照功能的详细使用介绍
快照功能还是蛮有趣的,就是资料比较少,这边万能菜道人特意整理了一下。参考内容:QEMU checkpoint(snapshot) 使用-pudn.comKVM&QEMU学习笔记(二)-蒲公英云 (dandelioncloud.cn)在线迁移存储 - 爱码网 (likecs.com)…...
谷歌关键词优化多少钱【2023年调研】
本文主要分享Google关键词排名优化的一些成本调研,方便大家参考。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 今年2023年了,谷歌关键词优化到底要多少钱? 答案是:价格在2w~25w左右…...
凸包及其算法
概念 凸包:一个能够将所有给定点围住的最小周长封闭图形。 稳定凸包:在当前组成凸包的点集 V0V_0V0 中新增一个不在凸包上的点,形成新点集 V1V_1V1,若可以使 V1V_1V1 中所有点都在 V1V_1V1 的点的凸包上,则这…...
计算机网络学习笔记(二)物理层
物理层(传输比特0/1)基本概念 物理层下的传输媒体 1. 导引型 同轴电缆,双绞线(绞合可抵御干扰),光纤,电力线 2. 非导引型(调制振幅 频率 相位) 无线电波,微…...
为什么职称要提前准备?
职称反映专业技术人员的学术和技术水平、工作能力的工作成就,具有学衔、岗位两种性质。目前中国现状下,职称主要代表社会地位,就业经验,职称等级越高,越容易得到更高的社会经济和福利待遇。 职称通过申报、评审的形式…...
MyBatis详解1——相关配置
一、什么是MyBatis 1.定义:是一个优秀的持久层框架(ORM框架),它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。 2.支持的操作方式:xml或者注解实现操作(xm…...
字节青训营——秒杀系统设计学习笔记(三)
限流算法 限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而…...
每天一道大厂SQL题【Day10】电商分组TopK实战
每天一道大厂SQL题【Day10】电商分组TopK实战 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…...
最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏
屏幕录制软件可让您捕获屏幕以与他人共享,创建与产品相关的视频、教程、课程、演示、视频等。这些软件是您能够从网络摄像头和屏幕录制视频。以下是精选的顶级屏幕录像机列表。 适用于 PC 的19 款免费录屏屏幕录像机软件 1)奇客免费录屏 奇客免费录屏&am…...
vb.net计算之.net core基础(2)-发布应用
目录 发布程序测试运行运行方式发布程序 首先,将编译配置改为Release 然后,发布应用,在生成菜单下。 选择发布到文件夹 继续选择文件夹 接着,完成 关闭 点击发布标签栏的发布按钮...
微服务项目【商品秒杀接口压测及优化】
生成测试用户 将UserUtils工具类导入到zmall-user模块中,运行生成测试用户信息,可根据自身电脑情况来生成用户数量。 UserUtils: package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…...
1997. 访问完所有房间的第一天
题目 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 n…...
通达信交易接口以什么形式执行下单的?
通达信程交易接口 以API形式来执行下单接口,一般不再需要通过接口系统之间进行连接,通过直接调用通达信dll交易函数的方式直接进行交易,包括下单,撤单,查询资金股份、当日委托、当日成交等方面都能很快的执行出来。以a…...
CobaltStrike上线微信通知
CobaltStrike上线微信通知 利用pushplus公众号(每天免费发送200条消息) http://www.pushplus.plus/push1.html 扫码登录后需要复制token 可以测试一下发送一下消息,手机会受到如下消息。可以在微信提示里将消息免打扰关闭(默认…...
喜茶、奈雪的茶“花式”寻生路
配图来自Canva可画 疫情全面开放不少人“阳了又阳”,电解质饮品成为热销品,梨子、橘子、柠檬等水果被卖断货,凉茶、黄桃罐头被抢购一空,喜茶的“多肉大橘”、奈雪的“霸气银耳炖梨”、蜜雪冰城的“棒打鲜橙”、沪上阿姨的“鲜炖整…...
长沙网站开发/天猫关键词排名怎么控制
Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和B、P两个字母。经阿狸研究发现,这个打字机是这样工作的:l 输入小写字母,打字机的一个凹槽…...
电子商务网站建设培训小结/临沂网站建设优化
有个统计需求,需要对IP进行分类统计,Mysql提供了INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。mysql> select inet_ntoa(3507806248);-----------------------| inet…...
做一网站/网上推销产品的软件
文章目录八、AR(p){\rm AR}(p)AR(p)序列与其自协方差函数1.AR(p){\rm AR}(p)AR(p)序列2.Yule-Walker方程3.自协方差函数的正定性回顾总结八、AR(p){\rm AR}(p)AR(p)序列与其自协方差函数 1.AR(p){\rm AR}(p)AR(p)序列 之前我们给出过AR(p){\rm AR}(p)AR(p)序列的定义…...
wordpress 迅影网/营销型网站的类型
来源:牛客网 有如下函数定义,执行结果正确的是? def dec(f): n 3 def wrapper(*args,**kw): return f(*args,**kw) * n return wrapper dec def foo(n): return n * 2 A foo(2) 12 B foo(3) 12 C foo(2) 6 D foo(3) 6...
专做服装的网站/网络推广公司服务内容
Win10系统已经跟大家见面3年左右了,越来越多的用户在当初充满质疑的争论中慢慢接受了,在使用的过程中难免会出现这样那样的问题,我们知道,win10系统本身就比较大,会占用一部分内存空间,再加上平时是用的过程…...
做任务的电脑网站/福州seo网站推广优化
爬取网页数据是python很长干的一件事情,不过做起来基本上都是很冗长的一段代码,看起来复杂,不宜理解。今天给大家分享一个小诀窍,利用python3中的requests类库进行爬取网页数据。我们先看一哈用这个requests类库做的效果本节分享技…...