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

IC验证基础知识系列随笔

一、断言 and 和 和 intersect 区别

  1. And 指的是两个序列具有相同的起始点,终点可以不同。

  2. Intersect 指的是两个序列具有相同的起始点和终点。

  3. Or 指的是两个序列只要满足一个就可以

  4. Throughout 指的是满足前面要求才能执行后面的序列

二、Break;continue;return的含义,return之后,function里剩下的语句会执行吗

  1. break 语句结束整个循环。

  2. continue 立即结束本次循环,继续执行下一次循环。

  3. return语句会终止函数的执行并返回函数的值(如果有返回值的话)。

  4. return之后,function里剩下的语句不能执行,其是终止函数的执行,并返回函数的值。

三、组件之间的通信机制,analysis port和其它的区别

  1. 通信分为,单向通信,双向通信和多向通信

  • 单向通信:指的是从initiatortarget之间的数据流向是单一方向的

  • 双向通信:双向通信的两端也分为initiatortarget,但是数据流向在端对端之间是双向的

  • 多向通信:仍然是两个组件之间的通信,是指initiatortarget之间的相同TLM端口数目超过一个时的处理解决办法。

  1. blocking阻塞传输的方法包含:

  • Put():initiator先生成数据Tt,同时将该数据传送至target

  • Get():initiatortarget获取数据Tt,而target中的该数据Tt则应消耗。

  • Peek(): initiatortarget获取数据Tt,而target中的该数据Tt还应保留。

  1. 通信管道:

  • TLM FIFO:可以进行数据缓存,功能类似于mailbox,不同的地方在于uvm_tlm_fifo提供了各种端口(put、get、peek)供用户使用

  • analysis port:一端对多端,用于多个组件同时对一个数据进行处理,如果这个数据是从同一个源的TLM端口发出到达不同组件,则要求该端口能够满足一端到多端,如果数据源端发生变化需要通知跟它关联的多个组件时,我们可以利用软件的设计模式之一观察者模式实现,即广播模式

  • analysis TLM FIFO

a. 由于analysis端口提出实现了一端到多端的TLM数据传输,而一个新的数据缓存组件类uvm_tlm_analysis_fifo为用户们提供了可以搭配uvm_analysis_port端口uvm_analysis_imp端口和write()函数。

b.uvm_tlm_analysis_fifo类继承于uvm_tlm_fifo,这表明它本身具有面向单一TLM端口的数据缓存特性,而同时该类又有一个uvm_analysis_imp端口analysis_export并且实现了write()函数:

  • request & response通信管道 双向通信端口transport,即通过在target端实现transport()方法可以在一次传输中既发送request又可以接收response

四、类的public、protected和local的区别

  1. 如果没有指明访问类型,那么成员的默认类型是public,子类和外部均可以访问成员。

  2. 如果指明了访问类型是protected,那么只有该类或者子类可以访问成员,而外部无法访问。

  3. 如果指明了访问类型是local,那么只有该类可以访问成员,子类和外部均无法访问。

五、Uvm_component_utils有什么作用

UVM(Universal Verification Methodology)是一种用于验证集成电路设计的标准方法学,它提供了一套面向对象的验证框架和工具库,简化了验证环境的搭建和管理。UVM_component_utils是UVM中的一个宏定义,它的作用是简化UVM组件(component)的声明和注册流程。

在UVM中,组件是验证环境中的基本单元,可以是顶层环境、测试用例、序列等。UVM_component_utils宏定义了一个名为"uvm_component_registry"的类静态成员,该类用于将组件自动注册到验证环境中。通过在组件的定义中使用UVM_component_utils宏,可以省略手动编写的注册代码,提高验证环境代码的简洁性和可读性。

使用UVM_component_utils宏的示例代码如下:

class my_component extends uvm_component;// 组件定义// 使用UVM_component_utils宏进行组件注册`uvm_component_utils(my_component)// 其他组件代码
endclass

上述代码中,my_component继承自uvm_component类,并使用了UVM_component_utils宏来注册my_component类到验证环境中。

通过使用UVM_component_utils宏,验证工程师可以更方便地声明和管理UVM组件,提高了代码的可重用性和可维护性,进而提高了验证环境的开发效率。

五、为什么要配置is_active呢?


比如你在模块级做验证时,拿验APB接口为例,你需要用一个APB VIP,包含master agent和 slave agent。master通过APB的接口进行读写操作,slave是通过APB接口去响应操作,所以需要 master agent和slave agent里面都要有driver,maser_driver来模拟从APB总线上发起读或写的操作(控制paddr、pwrite和pwdata等),slave_driver模拟从APB总线上做响应,返回predata,pready和pslverr信号。
但是当你这个APB接口的模块验证环境被集成到一个更大的模块时,有真正的master模块设计连接着APB总线,设计里面自己会去对总线做操作,也有slave模块通过APB总线做响应。那这个时候,我就不需要你APB VIP里面的master agent 里面的 driver 和 sequencer 来模拟master去发送激励了,因为这个时候我有真正的master连在总线上。同样,我也有真正的slave模块来响应。但这个时候,我们仍然想监测APB总线上数据的来来回回,但又不需要发送激励,这时候我们就可以通过对APB VIP的 master agent 和 slave agent 配置UVM_PASSIVE,也就是不例化 driver 和 sequencer ,只例化monitor,实现了模块级环境复用到更高级别的环境中

六、在数字验证工作中,常见的一些bug包括:

  1. 时序问题:时钟和时序路径错误,导致数据传输不完整或乱序。
  2. 数据不匹配:期望值与实际值不匹配,可能是因为设计问题或验证环境问题。
  3. 边界条件错误:未正确处理各种边界条件,导致错误情况未覆盖或处理不正确。
  4. 接口问题:接口配置错误或接口信号连接错误,导致数据无法正确传输。
  5. 错误的时序约束:时序约束设置错误,导致无法满足设计的时序要求。
  6. 数据溢出或截断:数据宽度错误导致数据溢出或截断,结果不正确。
  7. 波形形状错误:波形形状错误或时序不一致,导致验证失败。
  8. 任务或进程协作错误:任务或进程之间的通信或同步问题导致错误的行为。
  9. 配置错误:配置参数或寄存器设置错误,导致不正确的配置行为。
  10. 仿真工具或工作流问题:仿真工具或工作流本身的问题导致错误结果。

这些是数字验证工作中常见的一些bug,当进行验证时需要注意并仔细排查以确保验证正确性。

七、你在做验证时的流程是怎么样的,你是怎么做的。

对于流程的话

  1. 第一步先去查看spec文档,将模块的功能和接口总线时序搞明白,尤其是工作的时序,这对于后续写TB非常重要; 这一步一般和designer一起,可以加快理解,如果有分歧可以找有经验的同事一起review。

  2. 第二步我会根据功能点去划分我的TB应该怎么搭建,我的case大致会有哪些,这些功能点我应该如何去覆盖,时序应该如何去检查,总结列出这样的一个清单;此时进行testplan和verification plan的编写,并同designer一起review,检查功能点是否全部考虑到,确保验证计划的完备。

  3. 第三步开始去搭建我们的TB,包括各种组件和VIP(例化VIP接口,集成到环境中,确保后面可以正常工作),和一些基础的 sequence还有test,暂时先就写一两个基础的sequence,然后还有一些环境配置参数的确定等,最后能够将TB正常运行,保证无误;

  4. 第四步就是根据清单去编写sequence和 case,然后去仿真,保证仿真正确性,收集覆盖率;验证工程师大部分时间在反复调试测试用例,发现RTL的bug,report给designer并协助designer去debug。

  5. 第五步就是分析收集的覆盖率,然后查看覆盖率报告去分析还有哪些没有被覆盖,去写一些定向case,和更换不同的seed去仿真;在收集覆盖率前,一般要根据设计功能去编写func coverage,然后通过regression收集code coverage 和func coverage。

  6. 第六步就是回归测试regression,通过不同的 seed去跑,收集覆盖率和检测是否有其它bug;

  7. 第七步就是review验证工作,找有经验的工程师前辈,一起查看验证tb和testcase,一方面查看是否有验证遗漏,另一方面可以借鉴前辈的经验优化验证环境。

八、在寄存器模型中加入后门访问

        在IP验证工作中,我们通常会引入寄存器模型,针对寄存器模型的功能是否正确,我们会有专门的case进行测试,通常测试寄存器的读写功能,采用寄存器前门访问先写后读的方式,但是有些寄存器的偏移地址错误的情况,这种先写后读的方式并不能检查出来,此时需要换一种方式,比如采用前门写入,后门读出,进行检查。为此我们需要在寄存器模型中加入后门访问路径:

在寄存器模型中加入后门访问的一种常见方式是通过添加特殊的控制寄存器或位来实现。后门访问可以是一种特权访问,可以用于调试、测试或特殊操作。

以下是一种可能的实现方式:

  1. 定义一个特殊的控制寄存器或位,用于表示后门访问的使能或状态。
  2. 修改寄存器模型的访问逻辑,使用这个特殊的控制寄存器或位来判断是否允许后门访问。
  3. 在访问寄存器的逻辑中添加额外的逻辑判断,以便在后门访问使能时执行相应的操作。
  4. 根据后门访问的需求,可能需要在寄存器模型中添加一些特殊的操作,例如读取或写入特定的寄存器值,执行特殊的操作序列等。

需要注意的是,后门访问是一种特权操作,需要根据设计要求和安全考虑来谨慎使用。同时,在寄存器模型中加入后门访问时,需要确保相关的验证和仿真工作也能正确处理后门访问的逻辑。

        假设我们有一个简单的寄存器模型,其中包含一个32位的控制寄存器 control_reg,我们希望为管理员用户添加后门访问权限。

        首先,我们可以在寄存器模型的寄存器类中添加一个额外的配置字段 admin_access,用于标识是否具有管理员访问权限。这可以通过修改寄存器类的定义来实现:

class my_register extends uvm_reg;
  bit admin_access;

  function new(string name = "my_register");
    super.new(name, 32, UVM_NO_COVERAGE);
  endfunction

  virtual function bit can_read(uvm_reg_map map = null, uvm_reg_item item = null);
    if (admin_access && !uvm_reg::default_map.has_write_access(UVM_BACKDOOR))
      return 0;
    return 1;
  endfunction

  virtual function bit can_write(uvm_reg_map map = null, uvm_reg_item item = null);
    if (admin_access && !uvm_reg::default_map.has_write_access(UVM_BACKDOOR))
      return 0;
    return 1;
  endfunction

endclass
 

在上面的示例中,我们重写了 can_read() 和 can_write() 函数,以检查是否具有管理员访问权限,并且不仅检查默认映射的访问权限,还检查是否具有后门访问权限。

然后,在使用寄存器模型的环境中,我们可以根据需要设置 admin_access 字段,为管理员用户启用后门访问权限。示例代码如下:

my_register my_reg;initial begin// 创建寄存器模型实例my_reg = new();// 模拟环境中启用管理员后门访问权限my_reg.admin_access = 1;// 环境中的其他代码...
end

在上面的示例中,我们创建了 my_register 的实例 my_reg 并将 admin_access 字段设置为 1,从而启用了管理员用户的后门访问权限。

这只是一个简单的示例,实际情况中可能涉及更复杂的权限控制和访问策略。根据具体需求,可以根据寄存器模型的设计灵活地实现后门访问机制。

相关文章:

IC验证基础知识系列随笔

一、断言 and 和 和 intersect 区别 And 指的是两个序列具有相同的起始点,终点可以不同。 Intersect 指的是两个序列具有相同的起始点和终点。 Or 指的是两个序列只要满足一个就可以 Throughout 指的是满足前面要求才能执行后面的序列 二、Break;co…...

网络测速工具

1. SPEEDTEST https://www.speedtest.net/ 2. 测速网 测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR,全屋Wi-Fi - SpeedTest.cn 3. 字节比特换算 bps(bits per second) 字节和比特的换算…...

windows将文件推给Android真机/实机

记录一下 因为以前只试过从真机实机中将文件推给windows 但是从windows只简单复制粘贴的话会一直报错。 1.电脑安装adb 2.手机开启开发者模式 usb调试 3.usb连接选择文件传输 4.推送命令adb push 文件路径 /sdcard/download 步骤1和2和3不作赘述,可以搜相关配置教程…...

Scratch教学作品 | 3D飞行模拟器——体验飞行的无限乐趣! ✈️

今天为大家推荐一款令人惊叹的Scratch作品——《3D飞行模拟器》!由BamBozzle制作,这款游戏完全用Scratch构建,带你体验开放世界飞行的自由与乐趣。从起飞到降落,每一步都需要你的精准操作!更棒的是,这款游戏…...

nonolog转化为ctf的困难

nonolog转化为ctf的困难 nanolog分析的中间的总结二者之间的差别 nanolog分析的中间的总结 如果目标是转nanolog为CTF格式,最重要的应该是meta的定义的转换的问题了。 目前我是稍有气馁。 感觉这不是一个好的方向。 如果领导能给连续的时间,完全开发自定…...

Sqoop导入数据(mysql---->>hive)

目录 数据传输流程脚本报错和异常说明1. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf2. 数据导入hive后显示NULL 数据传输流程 mysql---->>hdfs---->>hive 数据从mysql表中取出,放到hdfs上(由targ…...

vivado bd文件复制

不同工程是无法进行BD文件复制的,可以通过将被复制的BD文件添加到需要复制的BD文件的工程中,然后再工程内进行复制...

2024年深圳杯数学建模C题编译器版本的识别问题解题全过程文档及程序

2024年深圳杯数学建模 C题 编译器版本的识别问题 原题再现: 作为一种重要的工具,电子计算机自诞生以来,经历了极为快速的发展。区区百年的时间内,无论从体积、能耗、计算速度,还是应用能力等方面,电子计算…...

介绍一下希尔排序法(c基础)

hi , I am 36 适合对象c语言初学者 希尔排序(Shell Sort)是一种改进的插入排序算法,它通过将原始数据分成多个子序列来改善插入排序在处理大规模无序数组时性能较差的情况。 基本原理 希尔排序的基本思想是先将整个待排序的记录序列分割成为…...

SQL,根据数据的时间跨度进行不同粒度的统计

MSSQL 的某个视图会生成时间跨度不同的数据,当时间跨度小于 30 天时: idbranchIdtotalPricecreatedAt8512718.662022-07-03 08:49:27.7272613832.692022-07-06 09:08:06.8808919569.852022-07-07 04:13:09.2308011523.622022-07-07 04:38:29.3131512500…...

OPenCV 图片局部放大

m_image cv::imread("C:/Code/JPG/1.jpg");if (m_image.empty()) return;cv::imshow("原始图像", m_image); // TODO: 在此添加控件通知处理程序代码int width m_image.cols;int height m_image.rows;// 确定要放大的区域(这里是图像中心部分…...

【C#设计模式(19)——备忘录模式(MementoPattern)】

前言 备忘录模式:将想要备份的信息交给备忘录对象来管理。通过设置初始、备份、修改、恢复等状态展示备忘录模式的使用。 代码 //备忘录类 public class Memento {private string state;public string State { get>state;}public Memento(string state){this.st…...

使用 Nginx 在同一端口部署两个前端项目并配置子路径

在现代 Web 开发中,我们经常需要在同一台服务器上部署多个前端项目。这不仅可以节省资源,还可以简化管理。本文将指导你如何使用Nginx在同一端口上部署两个前端项目,并通过配置子路径来区分它们。 环境准备 首先,我们需要准备两…...

CISC和RISC的区别

CISC是什么 CISC是一种指令集设计方式,全程叫复杂指令集,这种指令设计模式包含大量的复杂指令和复杂的寻址方式, 以下是CISC架构的一些主要特点: 丰富的指令集:CISC处理器通常包含大量的指令,这些指令覆盖…...

学生信息管理系统(简化版)后端接口

目录 allAPI __init__.py是空文件,目的让python知道这个文件夹是个包 ClassInfo.py from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from API.database import get_db, Base from sqlalchemy import Column, String,…...

一、开启 GD32 单片机的学习之门

文章目录 一、开启GD32单片机的学习之门二、筑牢根基:GD32单片机基础知识全解析(一)单片机概述 三、开发环境搭建(一)软件下载与安装(二)安装GD32F450设备支持包(三)编译…...

计算生成报价单小程序系统开发方案

计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…...

高效整合聚水潭库存数据至MySQL的实现

聚水潭数据集成到MySQL:商品库存查询案例分享 在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将聚水潭的商品库存数据高效、可靠地集成到MySQL数据库中。具体方案为“聚水潭-商品库存查询-->BI彩度-商品库存表”&#xff0…...

深入理解 JVM 的栈帧结构

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

爬虫基础之HTTP基本原理

URL和URI 我们先了解一下 URI和 URL。URI的全称为 Uniform Resource ldentifer,即统一资源标志符;URL的全称为 Universal Resource Locator,即统一资源定位符。它们是什么意思呢?举例来说,https:/github.com/favicon.ico 既是一个 URI,也是…...

PyQt5:一个逗号引发的闪退血案

【日常小计】 在开发PyQt5程序时,调用了一个写入excel表格的后端方法,但是每次打开页面点击对应的动作,窗口就会闪退,而且Python后台也没有提示出任何的异常堆栈,后来经过在后端一点一点的单点测试,终于发…...

python学opencv|读取图像(五)读取灰度图像像素

【1】引言 前序学习了图像的基本读取,掌握了imread()、imshow()和imwrite()函数的基本功能和使用技巧,参考文章链接为: python学opencv|读取图像-CSDN博客 然后陆续掌握了彩色图像保存、图像放大和缩小以及对imshow()函数的大胆尝试技巧&a…...

LiDAR点云 反射强度 常见物体反射强度

1.激光点云发射的点无法全部被反射回来的原因 激光点云发射的点无法全部被反射回来的原因主要包括以下几点: 目标物表面特性:某些物体表面具有高反射率,导致激光雷达接收到的反射能量过强,从而产生噪点,影响点云数据的…...

零基础微信小程序开发——WXML 模板语法之事件绑定(保姆级教程+超详细)

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…...

qt QNetworkAccessManager详解

1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类,它允许应用程序发送网络请求并接收响应。该类是网络通信的基石,提供了一种方便的方式来处理常见的网络协议,如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…...

在2023idea中如何创建SpringBoot

目录 一.下载和安装 Maven 1.前往 https://maven.apache.org/download.cgi 下载最新版的 Maven 程序 2.将文件解压到D:Program FilesApachemaven目录 3.新建环境变量MAVEN_HOME,赋值D:Program FilesApachemaven 4.编辑环境变量Path,追加%MAVEN_HOME…...

R语言医学数据分析实践-R语言的数据结构

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中,数据结构是非常关键的部分,它提…...

PID算法

PID算法是闭环控制中的核心算法之一,它结合了比例(P)、积分(I)和微分(D)三种控制策略,能够实现对被控对象的精确控制。以下将详细介绍PID算法,并针对P、I、D分别举出三个…...

C++day2

1.利用函数重载&#xff0c;实现对整形数组的冒泡排序&#xff0c;对浮点型数组的冒泡排序 #include <iostream>using namespace std;int bubblesort(int a[]) {int i,j,temp;for(i1;i<5;i){for(j0;j<5-i;j){if(a[j]>a[j1]){temp a[j];a[j] a[j1];a[j1] tem…...

RFdiffusion ContigMap类初始化方法解读

功能概述 __init__ 方法是 ContigMap 类的初始化函数,其核心任务是构建和管理一个蛋白质序列和结构的映射系统,处理用户提供的输入数据(如片段信息、参考序列、掩码等),并生成内部所需的各种索引和映射,以便在蛋白质设计中有效地定义、解析和操作不同区域的结构和序列。…...

LeetCode 每日一题 2024/12/2-2024/12/8

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/2 52. N 皇后 II12/3 3274. 检查棋盘方格颜色是否相同12/4 2056. 棋盘上有效移动组合的数目12/5 3001. 捕获黑皇后需要的最少移动次数12/6 999. 可以被一步捕获的棋子数…...

5G模组AT命令脚本-关闭模组的IP过滤功能

关闭模组的IP过滤功能 关闭模组的IP过滤功能 5G 模组通常使用nat方式为 下挂设备或上位机提供上网服务&#xff0c;默认情况&#xff0c;不做NAt的包无法经由 模组转发&#xff0c;如果禁掉这个限制 &#xff0c;可使用本文中的配置命令本脚本用于关闭模组的IP过滤功能&#xf…...

得力DL-720C(new)标签热敏打印机

特点 适配标签宽度20-90mm的热敏标签纸&#xff0c;无需碳带。不适用于使用碳带上色的热转印纸&#xff08;如铜版纸&#xff09;。标签纸类型支持&#xff1a; 间隙纸&#xff08;靠间隙定位&#xff09;。得力自配的纸就是间隙纸&#xff0c;不透明。黑标纸&#xff08;靠背…...

openjdk17 jvm加载class文件,解析字段和方法,C++源码展示

##构造方法ClassFileParser&#xff0c;parse_stream解析文件流 ClassFileParser::ClassFileParser(ClassFileStream* stream,Symbol* name,ClassLoaderData* loader_data,const ClassLoadInfo* cl_info,Publicity pub_level,TRAPS) :_stream(stream),_class_name(NULL),_load…...

基于 AutoFlow 快速搭建基于 TiDB 向量搜索的本地知识库问答机器人

导读 本文将详细介绍如何通过 PingCAP 开源项目 AutoFlow 实现快速搭建基于 TiDB 的本地知识库问答机器人。如果提前准备好 Docker、TiDB 环境&#xff0c;整个搭建过程估计在 10 分钟左右即可完成&#xff0c;无须开发任何代码。 文中使用一篇 TiDB 文档作为本地数据源作为示…...

Vue项目实战-新能源汽车可视化(二)(持续更新中)

一.项目代码 1.DataSceen <template><div id"app-content"><div class"containerBox"><!-- 左边区域 --><div classleft><!-- 车辆情况 --><div class"item"></div><!-- 历史数据 -->&…...

CSS border 0.5px 虚线

border 0.5px 存在很多兼容问题&#xff0c;很多设备都会默认展示 1px 如果是实线可以用 background 和 height 1px 然后transform scaleY(0.5) 去实现。 但是虚线怎么办呢。 .ticket-line::before {content: ;position: absolute;top: 0;left: 0;right: 0;bottom: 0;width: …...

利用最大流算法解决Adam教授的双路径问题

利用最大流算法解决Adam教授的双路径问题 Adam教授的烦恼问题描述与转换转换步骤伪代码C代码示例解释Adam教授的烦恼 Adam教授有两个儿子,可不幸的是,他们互相讨厌对方。随着时间的推移,问题变得如此严重,他们之间不仅不愿意一起走到学校,而且每个人都拒绝走另一个人当天…...

c#如何开发后端

1选择开发框架 在 C# 中&#xff0c;用于后端开发最常用的框架是ASP.NET。它提供了构建 Web 应用程序、Web API 和微服务等多种后端服务所需的功能。ASP.NET有不同的模式&#xff0c;如ASP.NET MVC&#xff08;Model - View - Controller&#xff09;和ASP.NET Web API。ASP.NE…...

05_掌握Python3.11新特性-模式匹配

学习完本篇内容,你将掌握以下技能: 了解 Python 3.11 中的模式匹配新特性掌握如何使用模式匹配来简化代码和提高代码的可读性熟练掌握并应用到实际编程中python3.11新特性-模式匹配 在 Python 3.11 中,引入了模式匹配(pattern match...

【AI日记】24.12.09 kaggle 比赛 Titanic-12

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 内容&#xff1a; 学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster学习机器学习&#xff08;pandas&#xff0c;numpy&#xff0c;sklearn&#xff09;&#xff0c;数据可视化&#xff…...

Linux,如何要定位并删除占用磁盘空间的大文件?

Linux&#xff0c;如何要定位并删除占用磁盘空间的大文件&#xff1f; 要定位并删除占用磁盘空间的大文件主要有以下这些步骤&#xff1a; 1. 使用 du 命令查找大文件或目录 du&#xff08;Disk Usage&#xff09;命令可以帮助你查找占用空间较大的文件或目录。 du -ah --…...

【Java】—— 图书管理系统

基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统” 在控制台界面中实现用户与程序交互 任务目标&#xff1a; 1、系统中能够表示多本图书的信息 2、提供两种用户&#xff08;普通用户&#xff0c;管理员&#xff09; 3、普通用户…...

初识Linux · 线程同步

目录 前言&#xff1a; 认识条件变量 认识接口 快速使用接口 生产消费模型 前言&#xff1a; 前文我们介绍了线程互斥&#xff0c;线程互斥是为了防止多个线程对临界资源访问的时候出现了对一个变量同时操作的情况&#xff0c;对于线程互斥来说&#xff0c;我们使用到了锁…...

游戏引擎学习第40天

仓库 : https://gitee.com/mrxiao_com/2d_game 整理了一些需要完成的任务&#xff0c;确保所有内容都已清理完成&#xff0c;因为需要为后续的数学部分打好基础。下一步将认真开始处理数学相关内容&#xff0c;因此在此之前&#xff0c;需要彻底梳理未完成的事项&#xff0c;清…...

概率论——假设检验

解题步骤&#xff1a; 1、提出假设H0和H1 2、定类型&#xff0c;摆公式 3、计算统计量和拒绝域 4、定论、总结 Z检验 条件&#xff1a; 对μ进行检验&#xff0c;并且总体方差已知道 例题&#xff1a; 1、假设H0为可以认为是570N&#xff0c;H1为不可以认为是570N 2、Z…...

【Pandas】pandas isnull

Pandas2.2 General Top-level missing data 方法描述isna(obj)用于检测数据中的缺失值isnull(obj)用于检测数据中的缺失值notna(obj)用于检测数据中的非缺失值notnull(obj)用于检测数据中的非缺失值 pandas.isnull() pandas.isnull() 是 Pandas 库中的一个函数&#xff0c;…...

Rust HashMap使用

Rust 的 HashMap 是一个功能强大的数据结构&#xff0c;它结合了哈希表的高效性和 Rust 编程语言的内存安全特性。通过提供常数时间复杂度的查找、插入和删除操作&#xff0c;以及丰富的 API&#xff0c;它在许多实际应用中都非常有用。 示例代码&#xff1a; use std::colle…...

Spring Boot如何实现防盗链

一、什么是盗链 盗链是个什么操作&#xff0c;看一下百度给出的解释&#xff1a;盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面&#xff08;如广告&#xff09;&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的…...

TIM输入捕获---STM

一、简介 IC输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存在CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...