当前位置: 首页 > news >正文

半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习

在半导体行业,工程师依靠 CP Yield(生产过程中芯片的合格率)、WAT(晶圆验收测试)和 Particle 的晶圆图模式来识别工艺问题。然而,在没有人工干预的情况下将这些晶圆图模式分类是一项重大挑战。许多论文都研究了这个问题,从这一篇纹章旗,我将和您一起来学习使用深度学习的技术来解决该问题的方法。

一、半导体质量控制概念

(1)CP Yield

CP Yield 是指 Critical Process Yield,即“关键工艺良率”。它衡量的是在半导体制造过程中特定关键工艺步骤的良品率,反映了该工艺步骤的生产效率和质量控制水平。

具体来说,CP Yield 聚焦于那些对最终产品质量和性能影响最大的工艺步骤,如掩膜制作、光刻、离子注入、化学机械抛光(CMP)等。这些工艺步骤被认为是生产过程中最为“关键”的环节,因为它们直接决定了最终芯片的性能、功能和良率。

关键点:

  1. 影响因素: CP Yield 受到多种因素的影响,包括设备精度、工艺参数的控制、环境条件(如温湿度)、原材料的质量等。

  2. 重要性: 高的 CP Yield 表示该工艺步骤具有较好的稳定性和可控性,能够生产出更多符合要求的合格芯片,降低了缺陷率和返工成本。相反,低的 CP Yield 可能意味着工艺中存在问题,需要调整或优化。

  3. 与总良率的关系: CP Yield 是影响整体生产良率(Total Yield)的重要因素,特别是在复杂的集成电路制造过程中,良好的 CP Yield 能显著提高整体良率。

(2)WAT

WAT 通常是指 Wafer Acceptance Test(晶圆验收测试)。WAT 是一种测试过程,用于评估和验证半导体晶圆在生产过程中是否符合质量标准,通常在晶圆的加工和封装过程之前进行。它通常包括以下几个方面:

  1. 电性能测试: 确保晶圆上的每个芯片是否正常工作,符合电气性能规格。这可能包括测量电流、电压、功耗等。

  2. 物理尺寸测量: 确保晶圆的物理尺寸、厚度等参数是否符合设计要求。

  3. 缺陷检测: 检查晶圆表面是否有任何可见的缺陷或污染物,例如划痕、裂纹、气泡等。

  4. 光学检查: 通过光学显微镜或其他仪器检测晶圆表面的质量,确认没有严重的缺陷。

WAT 的目的是在进入下游的封装、测试和最终出货之前,确保每片晶圆的质量符合规范,避免不良产品流入生产线或市场,节省后期处理的成本。

 

二、WM-811K Wafermap

(1) 简介

WM-811K Wafermap 数据集是一个用于缺陷检测和分类的公开数据集,主要用于研究半导体制造过程中的晶圆缺陷分析。这一数据集由许多晶圆的缺陷模式组成,其中每个晶圆被标记为正常或存在某种类型的缺陷模式。研究人员和从业者可以利用该数据集来开发和评估机器学习和深度学习算法,以自动化地检测和识别晶圆上的缺陷模式。

通常情况下,一片8英寸wafer上往往可以放置数百到上千颗芯片(die - 晶粒),具体视芯片的面积大小。

WM-811K Wafermap 数据集包含 811,457 幅图像,其中172,950 幅图像具有手动缺陷标签,总共包含 9 个缺陷标签:0、1、2、3、4、5、6、7 和 8。其中,标签 8(代表无模式 -no pattern)占总数的 85.2%。在wafer测试中。

9种缺陷标签分别是:0 中心(4294(2.5%))、1 甜甜圈(555(0.3%))、2 边缘位置(5189(3.0%))、3 边缘环(9680(5.6%))、4 局部( 3593(2.1%))、5随机(866(0.5%))、6 划痕(1193(0.7%))、7 接近满(149(0.1%))、8无(638507 (85.2%))。

WM-811k 数据集中半导体晶片故障类型的示例。

晶圆(wafer)是半导体材料(通常为硅)制成的薄片,是集成电路(IC)制造的基础。每个晶圆上可以切割出多个裸片(Die),每个裸片上都包含一个集成电路。为了测试这些集成电路的性能,自动检测机器会对晶圆上的每个IC进行测试,并生成晶圆图(或称映射图),通过这些图像可以识别出哪些芯片性能符合标准(合格),哪些芯片存在性能问题(不合格)。

晶圆图上,合格和不合格裸片的分布模式往往能够反映出制造过程中可能存在的特定问题。深度学习技术能够有效地分析大量晶圆图中的缺陷模式,从而帮助快速识别制造问题。这种方法可以及时调整制造流程,减少浪费,提高生产效率。

在晶圆测试分析中,一般会对单张晶圆上的数据进行分析,也会对多上晶圆叠加后,对单个die进行属性据分析,以此来筛选出异常值,判断工艺过程中的品质和良率。

(2)数据集PKL

经过上面的介绍,我想您一定已经基本了解了半导体测试中的数据分析概要,现在我们来使用这个数据集。为了方便学习,我们仍采用AI大杀器PYTHON来作为编程语言。所以采用的这个数据集是已经转化为 PKL文件的数据集。

这个数据集 ,你可以从这里下载:

http://mirlab.org/dataSet/public/

在 Python 中,很多数据集使用 PKL 格式(即 pickle 格式)存储,主要是因为 pickle 是 Python 内置的对象序列化模块,它非常方便地将 Python 对象转换为字节流,从而可以保存到文件中,或者将其传输到其他地方。具体来说,有以下几个原因:

  1. 支持存储复杂数据结构pickle 可以序列化几乎所有的 Python 数据结构,包括字典、列表、元组、类实例等复杂对象,因此,很多机器学习和数据处理框架(如 scikit-learn、TensorFlow 等)使用 pickle 格式来存储训练好的模型、数据集或者其他中间结果。

  2. 高效性:与其他格式(如 JSON 或 CSV)相比,pickle 在存储和加载数据时通常更加高效。它可以直接存储 Python 对象,不需要转换为字符串或其他格式,因此避免了额外的开销。

  3. 与 Python 环境兼容pickle 格式是 Python 专用的,因此能够无缝地与 Python 环境集成。当你使用 pickle 保存数据时,保存的对象将保持 Python 的原始数据类型和结构,这使得在相同的 Python 环境中加载时非常方便和直观。

  4. 简便性:使用 pickle 可以直接将数据或模型保存到文件中,且仅需要几行代码即可实现保存和加载操作。与其他格式(如 HDF5 或 Parquet)相比,pickle 格式在操作上通常更加简单。

  5. 广泛的应用:很多机器学习库(如 scikit-learn)将训练好的模型保存为 .pkl 文件。这样用户可以方便地将模型保存下来,以便在之后的时间点加载使用。

 (3) 基础用法

mp_file = "/data/public_lib/wm811k_wafer_map/in/LSWMD.pkl"
import pandas as pddf=pd.read_pickle(mp_file)
df.info()

首先我们将这个数据集放在一个固定的位置,然后引用它,并使用pandas 来读取。

上面代码的意思请看解释:

import pandas as pd
  • 这一行导入了 pandas 库,并给它起了个别名 pdpandas 是一个强大的数据分析和处理库,提供了很多方便的数据结构(如 DataFrame 和 Series)和数据处理功能。
df = pd.read_pickle(mp_file)
  • 这一行使用 pandasread_pickle 函数来加载存储在 mp_file 路径中的 pickle 文件,并将其内容加载到一个名为 df 的变量中。这个 df 可能是一个 pandas DataFrame 对象,通常用于存储表格数据。read_pickle 会自动反序列化 pickle 文件的内容,恢复为 Python 对象(在这里是一个 DataFrame)。 pandas DataFrame 对象是一个强大的数据结构方法。
df.info()
  • 这一行调用了 df 对象的 info() 方法,这个方法会打印出 DataFrame 的概述信息,包括:
    • 列的数量和名称
    • 每列的数据类型
    • 非空值的数量
    • 内存使用情况等 这些信息有助于了解数据的基本结构和数据完整性。

执行结果如下:

 

从上面的结果来看,这个脚本运行时间比较长,总计35.5秒,这是因为数据集比较大,读取的时间比较长。 

df.info() 输出的结果提供了有关 DataFrame df 的一些基本信息。下面是详细的解释:

输出解析:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 811457 entries, 0 to 811456
  • <class 'pandas.core.frame.DataFrame'> 表示 df 是一个 pandas.DataFrame 对象,这是 Pandas 中用于存储表格数据的主要数据结构。
  • RangeIndex: 811457 entries, 0 to 811456 显示 DataFrame 包含了 811,457 行数据,索引范围从 0 到 811,456(即共有 811,457 个数据条目)。
Data columns (total 6 columns):#   Column          Non-Null Count   Dtype  
---  ------          --------------   -----  0   waferMap        811457 non-null  object 1   dieSize         811457 non-null  float642   lotName         811457 non-null  object 3   waferIndex      811457 non-null  float644   trianTestLabel  811457 non-null  object 5   failureType     811457 non-null  object 
  • Data columns (total 6 columns): 表示 DataFrame 中有 6 列数据。

  • Column 列显示了每一列的名称:

    • waferMap
    • dieSize
    • lotName
    • waferIndex
    • trianTestLabel
    • failureType
  • Non-Null Count 显示每一列非空(non-null)值的数量。在这个 DataFrame 中,所有列都有 811,457 个非空值,意味着每一列的所有数据都已填充,没有缺失值。

  • Dtype 列显示了每一列的数据类型:

    • waferMap, lotName, trianTestLabel, failureType 的数据类型为 object,表示它们是字符串类型(通常用于存储文本数据)。
    • dieSize, waferIndex 的数据类型为 float64,表示它们是浮动点数字(可能表示大小和索引等数值数据)。
dtypes: float64(2), object(4)
  • 表示 DataFrame 中有 2 列数据类型为 float64,4 列数据类型为 object
memory usage: 37.1+ MB
  • 显示了 DataFrame 占用的内存大小。该 DataFrame 占用约 37.1 MB 的内存。

上面的info,让我们对该数据集有了一个总体结构的了解。我们后面在使用这个数据集的时候,需要根据这个结构来调用想用的对象。

接下来,我们在程序后面加上一句:

df.head()

 执行后结果如下:

 它显示了这个数据集的前5行数据。

结果分析(各列解释):

  1. waferMap:

    • 内容:这列包含了类似 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...]] 这样的列表数据。
    • 解释waferMap 是一个二维数组或矩阵(以嵌套列表形式表示),它可能代表晶圆的一个映射或状态,表示每个位置的检测结果或者晶圆测试的结果。每个 0 可表示没有问题的位置,而其他值(例如 1 或其他)代表特定的检测结果。这里的数据用嵌套列表表示,所以每个晶圆或测试的状态以列表形式存储。
  2. dieSize:

    • 内容:这一列包含了 1683.0 等数值。
    • 解释dieSize 可能表示晶圆的尺寸或测试区域的大小。每一行的 dieSize 都是 1683.0,这表明所前5行的数据对应相同的尺寸,是固定的晶圆大小。
  3. lotName:

    • 内容:这一列包含了如 lot1 的字符串。
    • 解释lotName 表示数据的批次名称。lot1 表示前5行是第一个批次的数据,行的 lotName 都是 lot1,说明这些数据来自于同一个批次。
  4. waferIndex:

    • 内容:这一列包含了类似 1.0, 2.0, 3.0, 4.0, 5.0 等数值。
    • 解释waferIndex 表示晶圆的编号或在批次中的索引位置。每一行数据的 waferIndex 依次递增,表示批次中的不同晶圆。
  5. trianTestLabel:

    • 内容:这一列包含了类似 [[Training]] 的数据。
    • 解释:这一列的数据结构是一个嵌套的列表,表示与训练相关的标签。在这些行中,trianTestLabel 的值是 [[Training]],说明这些数据条目是标记为“训练”的数据集。
  6. failureType:

    • 内容:这一列包含了 [[none]] 的数据。
    • 解释:这一列也包含了嵌套的列表,表示故障类型。failureType 在这些行中的值是 [[none]],意味着这些数据没有出现任何故障或失败。

接着,我们在后面再加上一句:

df.tail()

执行结果如下:

df.tail() 显示了 DataFrame 的最后 5 行数据。

和前5行不同的是,failureType:故障类型标签,部分行有标注(如 Edge-Ring, Edge-Loc),者对应了我们前面列出的9中故障模式。有些行没有标注故障类型(空列表 [])。

这些行数据展示了同一批次(lot1)中多个晶圆的状态,包含了晶圆的映射、尺寸、索引以及相关的训练标签和故障类型。

好的,今天我们就熟悉到这里,通过理解半导体测试开始,熟悉这个数据集,然后使用python来初步了解这个数据集的结构,为我们后面玩转这个数据集做准备。

你学会了吗? 

相关文章:

半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习

在半导体行业&#xff0c;工程师依靠 CP Yield&#xff08;生产过程中芯片的合格率&#xff09;、WAT&#xff08;晶圆验收测试&#xff09;和 Particle 的晶圆图模式来识别工艺问题。然而&#xff0c;在没有人工干预的情况下将这些晶圆图模式分类是一项重大挑战。许多论文都研…...

mongodb安装并设置用户验证登录

下载地址 https://www.mongodb.com/try/download/community-kubernetes-operator 偶数版是稳定版&#xff0c;基数版是开发版 &#xff0c;对32位支持不好 --------------------------------CentOS下安装mongodb--------------------------------------------------- 解压安装包…...

《零基础Go语言算法实战》【题目 1-16】字符串的遍历与比较

《零基础Go语言算法实战》 【题目 1-16】字符串的遍历与比较 给出两个字符串&#xff0c;请编写程序以确定能否将其中一个字符串重新排列后变成另一个字符串&#xff0c; 并规定大小写是不同的字符&#xff0c;空格也作为字符考虑。保证两个字符串的长度小于或等于 5000。 …...

VUE3封装一个Hook

在 Vue 3 中&#xff0c;Composition API 让我们能够封装和复用代码逻辑&#xff0c;尤其是通过 setup 函数进行组件间的复用。为了提高代码的可复用性&#xff0c;我们可以把一些常见的 API 请求和状态管理逻辑封装到一个单独的 hook 中。 以下是一个简单的例子&#xff0c;我…...

【Linux】Linux常见指令(上)

个人主页~ 初识Linux 一、Linux基本命令1、ls指令2、pwd命令3、cd指令4、touch指令5、mkdir指令6、rmdir指令7、rm指令8、man指令9、cp指令10、mv命令 Linux是一个开源的、稳定的、安全的、灵活的操作系统&#xff0c;Linux下的操作都是通过指令来实现的 一、Linux基本命令 先…...

嵌入式 C 语言:一维数组

目录 一、定义 二、内存布局 三、数组的初始化 3.1. 完全初始化 3.2. 部分初始化 3.3. 不指定大小初始化 四、使用数组 4.1. 访问数组元素 4.1.1. 通过索引访问数组元素 4.1.2. 通过指针访问数组元素 4.2. 遍历数组 4.3. 数组作为函数参数 五、应用场景 5.1. 数据…...

NineData云原生智能数据管理平台新功能发布|2024年12月版

本月发布 7 项更新&#xff0c;其中重点发布 2 项、功能优化 5 项。 重点发布 数据库 Devops - Oracle 非表对象支持可视化创建与管理 Oracle 非表对象&#xff0c;包括视图&#xff08;View&#xff09;、包&#xff08;Package&#xff09;、存储过程&#xff08;Procedur…...

iOS - 自旋锁

在 Objective-C 运行时中大量使用自旋锁&#xff0c;主要有以下几个原因&#xff1a; 1. 性能考虑 上下文切换成本 // 自旋锁实现 static ALWAYS_INLINE void OSSpinLockLock(volatile OSSpinLock *lock) {do {while (lock->value ! 0) {__asm__ volatile ("pause&q…...

域名备案页面模板

域名备案模板&#xff0c;首页底下正中央位置需要有备案号。 主要是给不太擅长于前端样式的人提供一个备案模板&#xff0c;直接把这个H5放到nginx的index.html就可以访问了 <html><body><div class"login-container"><h2>登录</h2>&…...

【socketioxide和axum集成-实现websocket实时通信-Rust点滴】

socketioxide的axum集成 启动socketio依靠examle里的layer一. 使用可变State依靠axum里的example二.提取client,IP1. 非代理,tcp,socket对方地址2.代理情况下socket.req_parts. 三. axum的handle中使用emit发送消息.1. io,存入State解决.2.把io存入初始设定作为唯一单例3.http-…...

计算机网络(第8版)第3章--PPP课后习题

【3-09】 一 个PPP 帧的数据部分(用十六进制写出)是7 D 5EFE 277D 5D7D 5D657D 5E。 试问真正的数据是什么(用十六进制写出)? 解答&#xff1a;把由转义符7D开始的2字节序列用下画线标出&#xff1a; 7D 5E FE 27 7D 5D 7D 5D 65 7D 5E 7D 5E应当还原成为7E。 7D5D 应…...

通过Android Studio修改第三方jar包并重新生成jar包

最近接手了来自公司其他同事的一个Unity项目,里面有一个封装的jar包要改动一下,无奈关于这个jar包的原工程文件丢失了,于是自己动手来修改下jar包,并做下记录。 一、导入第三方jar包 1、新建项目EditJarDemo(项目名随便取) 2、新建libs文件夹,把你要修改的third.jar 复制…...

Rabbitmq 业务异常与未手动确认场景及解决方案

消费端消费异常&#xff0c;业务异常 与 未手动确认是不是一个场景&#xff0c;因为执行完业务逻辑&#xff0c;再确认。解决方案就一个&#xff0c;就是重试一定次数&#xff0c;然后加入死信队列。还有就是消费重新放入队列&#xff0c;然后重新投递给其他消费者&#xff0c;…...

3D机器视觉的类型、应用和未来趋势

3D相机正在推动机器视觉市场的增长。很多制造企业开始转向自动化3D料箱拣选&#xff0c;专注于使用3D视觉和人工智能等先进技术来简化操作并减少开支。 预计3D相机将在未来五年内推动全球机器视觉市场&#xff0c;这得益于移动机器人和机器人拣选的强劲增长。到 2028 年&#…...

LabVIEW在反馈控制时如何解决带约束的控制问题

在LabVIEW中&#xff0c;解决带约束的反馈控制问题通常需要使用先进的控制算法或特定的方法来满足约束条件&#xff0c;同时保证控制系统的性能和稳定性。以下是解决这类问题的一些常用方法和步骤&#xff1a; ​ 1. 定义控制问题及约束条件 确定被控对象的动态特性&#xff08…...

PHP 在 2025 年的现状与展望

PHP 在 2025 年依然强劲&#xff0c;继续为超过 77% 使用已知服务器端编程语言的网站提供动力。这并非仅仅依靠遗留代码&#xff0c;像 WordPress、Shopify 和 Laravel 这样的主流平台持续推动 PHP 的发展&#xff0c;使其保持着 актуальность 并不断进化。 为什么…...

QT c++ 自定义按钮类 加载图片 美化按钮

如果你有需要利用图片美化按钮的情况&#xff0c;本文能帮助你。 鼠标左键按下按钮和松开&#xff0c;按钮显示不同的图片。 1.按钮类 //因为此类比较简单&#xff0c;1个头文件搞定&#xff0c;没有cpp文件 #ifndef CUSTOMBUTTON_H #define CUSTOMBUTTON_H #include <Q…...

夯实前端基础之HTML篇

知识点概览 HTML部分 1. DOM和BOM有什么区别&#xff1f; DOM&#xff08;Document Object Model&#xff09; 当网页被加载时&#xff0c;浏览器会创建页面的对象文档模型&#xff0c;HTML DOM 模型被结构化为对象树 用途&#xff1a; 主要用于网页内容的动态修改和交互&…...

pytest 参数介绍

命令行参数描述常见使用案例-v / --verbose显示每个测试用例的详细信息&#xff0c;包括测试名称和状态pytest -v-s / --captureno禁用输出捕获&#xff0c;允许 print() 输出显示pytest -s-q / --quiet安静模式&#xff0c;减少输出&#xff0c;仅显示每个测试的通过/失败结果…...

蓝桥杯训练

1对于一个字母矩阵&#xff0c;我们称矩阵中的一个递增序列是指在矩阵中找到两个字母&#xff0c;它们在同一行&#xff0c;同一列&#xff0c;或者在同一 45 度的斜线上&#xff0c;这两个字母从左向右看、或者从上向下看是递增的。 例如&#xff0c;如下矩阵中 LANN QIAO有…...

maven的简单介绍

目录 1、maven简介2、maven 的主要特点3、maven的下载与安装4、修改配置文件5、私服(拓展) 1、maven简介 Maven 是一个广泛使用的项目管理和构建工具&#xff0c;主要应用于 Java 项目。Maven 由 Apache 软件基金会开发和维护&#xff0c;它提供了一种简洁且一致的方法来构建、…...

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题&#xff0c;可以利用Github Action将需要的镜像转存到阿里云私有仓库&#xff0c;然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址&#xff1a;使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…...

Kafka优势剖析-消费者组、并行消费

目录 1. 消费者组&#xff08;Consumer Group&#xff09; 1.1 什么是消费者组&#xff1f; 1.2 消费者组的工作原理 1.3 消费者组的优势 2. 并行消费&#xff08;Parallel Consumption&#xff09; 2.1 什么是并行消费&#xff1f; 2.2 并行消费的工作原理 2.3 并行消…...

MATLAB语言的多线程编程

MATLAB语言的多线程编程 引言 随着计算机技术的不断发展&#xff0c;尤其是在大数据和高性能计算领域&#xff0c;多线程编程逐渐成为一种重要的编程范式。MATLAB作为一种广泛应用于科学计算和工程模拟的高级编程语言&#xff0c;其强大的数学计算功能和丰富的工具箱&#xf…...

强化学习入门

RL学习路径 理解DQN原理 理解 标准版的策略梯度算法(Vanilla Policy Gradient) 模仿学习实践 Actor-Critic原理 从大模型机器人到imitation Learning与diffusion policy、ACT(Action Chunking with Transformers)的关系 大模型与机器人 tmp: 强化学习中的优势函数&#…...

Unity 2d描边基于SpriteRender,高性能的描边解决方案

目标 以Unity默认渲染管线为例&#xff0c;打造不需要图片内边距&#xff0c;描边平滑&#xff0c;高性能的描边解决方案 前言 在2d游戏中经常需要给2d对象添加描边&#xff0c;来突出强调2d对象 当你去网上查找2d描边shader&#xff0c;移植到项目里面&#xff0c;大概率会…...

2025第2周 | JavaScript中的Symbol

目录 1. Symbol是个什么东东&#xff1f;1.1 语法 2. 为什么需要Symbol?3. 怎么使用Symbol?3.1 定义对象字面量3.2 新增对象属性3.3 使用 Object.defineProperty方式3.4 遍历 4. 静态方法4.1 Symbol.for(key)4.2 Symbol.keyFor(symbol) 2025&#xff0c;做想做的事&#xff0…...

Unity学习之UGUI进阶

一、事件监听接口 1、作用 用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑 2、事件监听接口类型 &#xff08;1&#xff09;常用事件接口 &#xff08;2&#xff09;不常用事件接口 3、使用事件监听接口 &#…...

IT面试求职系列主题-Jenkins

想成功求职&#xff0c;必要的IT技能一样不能少&#xff0c;先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统&#xff0c;并在发生更改时启动和监视构建系统。 2&#xff09;Maven、Ant和Jenkins有什么区别…...

Allure 集成 pytest

Allure 是一个强大的测试报告工具&#xff0c;与 pytest 集成可以生成详细的测试报告&#xff0c;包括测试步骤、测试数据、截图、错误堆栈等。 1. 安装 Allure 和相关依赖 安装 pytest-allure-adaptor 插件&#xff1a; pip install allure-pytest确保本地已安装 Allure 工具。…...

Redis高频知识点

Redis 目录 1 Redis是AP的还是CP的&#xff1f;2 介绍一下Redis的集群方案&#xff1f;3 什么是Redis的数据分片&#xff1f;4 Redis为什么这么快&#xff1f;5 Redis 的事务机制是怎样的&#xff1f;7 Redis的持久化机制是怎样的&#xff1f;8 Redis 的过期策略是怎么样的&a…...

【电子通识】PWM驱动让有刷直流电机恒流工作

电机的典型驱动方法包括电压驱动、电流驱动以及PWM驱动。本文将介绍采用PWM驱动方式的恒流工作。 首先介绍的是什么是PWM驱动的电机恒流工作&#xff0c;其次是PWM驱动电机恒流工作时电路的工作原理。 PWM驱动 当以恒定的电流驱动电机时&#xff0c;电机会怎样工作呢&#xff1…...

PyMysql 02|(包含项目实战)数据库工具类封装

目录 七、数据库工具类封装 1、封装的目的 2、设计数据库工具类 3、实现类方法 1️⃣获取、关闭连接 2️⃣查询一条记录 3️⃣增删改数据 4️⃣完整封装代码实现 七、数据库工具类封装 1、封装的目的 将常用的数据库操作&#xff0c;封装到一个方法。 后续再操作数据…...

Pixel 6a手机提示无法连接移动网络,打电话失败!

1、开启VoLTE 2、如果没有&#xff0c;下载shizuku和PixelIMS应用。 shizuke Releases RikkaApps/Shizuku GitHub PixellMS Release v1.2.8 kyujin-cho/pixel-volte-patch GitHub 3、安装shizuke启动&#xff0c;开通root可以直接点击下面的启动&#xff0c;如果没有就…...

ubuntu20.04 在线安装postgresql 扩展postgis

基础配置 /etc/apt/sources.list # 添加pg官方基础配置deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main# 添加ubuntu官方依赖&#xff08;防止下载依赖错误&#xff09;deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse de…...

fitz获取pdf内容

1.获取pdf单页&#xff0c;及所有内容 import fitz # PyMuPDF# 打开 PDF 文件 pdf_path r"/data2/ljsang/0106/0725_Self-organization-of-plasticity-and-specialization-in-a-primi_2022_Cell-Syst.pdfπσΣ╕╖σσ║Θ║∩╝Φ╛τ▒│σ¡τ╛π.pdf" d…...

LabVIEW软件Bug的定义与修改

在LabVIEW软件开发过程中&#xff0c;bug&#xff08;程序错误或缺陷&#xff09;指的是程序中导致不符合预期行为的任何问题。Bug可能是由于编码错误、逻辑漏洞、硬件兼容性问题、系统资源限制等因素引起的。它可能会导致程序崩溃、功能无法正常执行或输出结果不符合预期。理解…...

Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开

element文档链接&#xff1a; https://element-plus.org/zh-CN/component/form.html 一、el-table表格行展开关闭箭头替换成加减号 注&#xff1a;Vue3在样式中修改箭头图标无效&#xff0c;可能我设置不对&#xff0c;欢迎各位来交流指导 转变思路&#xff1a;隐藏箭头&…...

HTML 音频(Audio)

HTML 音频(Audio) HTML5 引入了新的音频标签 <audio>,使得在网页上嵌入音频文件变得更加简单。在此之前,播放音频通常需要依赖于第三方插件,如 Flash。但随着 HTML5 的普及,浏览器原生支持音频播放,极大地提升了用户体验和网页性能。 基本用法 要使用 HTML5 的音…...

linux音视频采集技术: v4l2

简介 在 Linux 系统中&#xff0c;视频设备的支持和管理离不开 V4L2&#xff08;Video for Linux 2&#xff09;。作为 Linux 内核的一部分&#xff0c;V4L2 提供了一套统一的接口&#xff0c;允许开发者与视频设备&#xff08;如摄像头、视频采集卡等&#xff09;进行交互。无…...

基于高斯混合模型的数据分析及其延伸应用(具体代码分析)

一、代码分析 &#xff08;一&#xff09;清除工作区和命令行窗口 clear; clc;clear;&#xff1a;该命令用于清除 MATLAB 工作区中的所有变量&#xff0c;确保代码运行环境的清洁&#xff0c;避免之前遗留的变量对当前代码运行产生干扰。例如&#xff0c;如果之前运行的代码中…...

内网基础-防火墙-隧道技术

内网对抗-网络通讯篇&防火墙组策略&入站和出站规则&单层双层&C2正反向上线 关闭第一个防火墙&#xff1a; 第一个上线就走反向或者正向 第二个上线走反向&#xff08;第二个防火墙阻止入站&#xff09; 关闭第二个防火墙&#xff1a; 第一个上线就走反向&a…...

123.【C语言】数据结构之快速排序挖坑法和前后指针法

目录 1.挖坑法 执行流程 代码 运行结果 可读性好的代码 2.前后指针法(双指针法) 执行流程 单趟排序代码 将单趟排序代码改造后 写法1 简洁的写法 3.思考题 1.挖坑法 执行流程 "挖坑法"顾名思义:要有坑位,一开始将关键值放入临时变量key中,在数组中形成…...

【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动

终极解读《沉默的羔羊》&#xff1a;弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支&#xff0c;主要关注人类行为背后的无意识动机和冲突。…...

Bytebase 3.0.1 - 可配置在 SQL 编辑器执行 DDL/DML

&#x1f680; 新功能 新增环境策略&#xff0c;允许在 SQL 编辑器内直接执行 DDL/DML 语句。 支持为 BigQuery 数据脱敏。 在项目下新增数据访问控制及脱敏管理页面。 在数据库页面&#xff0c;支持回滚到变更历史的某个版本。 &#x1f514; 兼容性变更 禁止工单创建…...

从零手写线性回归模型:PyTorch 实现深度学习入门教程

系列文章目录 01-PyTorch新手必看&#xff1a;张量是什么&#xff1f;5 分钟教你快速创建张量&#xff01; 02-张量运算真简单&#xff01;PyTorch 数值计算操作完全指南 03-Numpy 还是 PyTorch&#xff1f;张量与 Numpy 的神奇转换技巧 04-揭秘数据处理神器&#xff1a;PyTor…...

git使用指南-实践-搭建git私服

一.创建git私服的核心基础 所谓的git私服&#xff0c;其实就是在一个服务器上创建一个个的git仓库&#xff0c;并且这些仓库允许其在一个网络上被其他用户访问。 创建一个最素的git私服&#xff1a;随便找一台linux服务器&#xff0c;这里假设其ip为192.168.0.6&#xff0c;使…...

Node.js JXcore 打包教程

Node.js JXcore 打包教程 介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许开发者使用 JavaScript 编写服务器端和网络应用程序。JXcore 是一个流行的 Node.js 发行版,它支持将 Node.js 应用程序打包成单一的可执行文件,使得部署和分发变得更加容易…...

Xshell 8 最新中文免安装绿色版

前言 Xshell8是一个非常受欢迎的远程连接管理软件&#xff0c;它的界面简单易懂&#xff0c;用起来特别方便。能支持好多种连接方式&#xff0c;比如SSH1、SSH2、SFTP、TELNET等等&#xff0c;还有串行协议和其他一些高级功能&#xff0c;基本上你想连什么都能满足。而且&…...

结构型模式4.装饰器模式

结构型模式 适配器模式&#xff08;Adapter Pattern&#xff09;桥接模式&#xff08;Bridge Pattern&#xff09;组合模式&#xff08;Composite Pattern&#xff09;装饰器模式&#xff08;Decorator Pattern&#xff09;外观模式&#xff08;Facade Pattern&#xff09;享元…...