直接映射例题及解析
目录
基本单位换算
例题一
📁 Tag Directory(标签目录) 是什么?
例题二
例题三
例题四
串行访问还是并行访问的选择
例题五
例题六
例题七
🔵 P1:(按行访问)
🔴 P2:(按列访问)
为什么一定会有miss?
为什么按行访问和按列访问的 Miss 不一样?
例题八
地址冲突
在正式解题之前,我们要先理解相关单位和基本概念,建立一个坚实的知识基础。
基本单位换算
这里我们要分清楚两个“进制体系”:
-
十进制单位(以1000为基准,常用于网络带宽等)
-
二进制单位(以1024为基准,常用于内存、缓存容量)
1. 十进制(以1000为基数)
中文 | 英文前缀 | 换算关系 | 表示意义 |
---|---|---|---|
千 | Kilo | 1 K = 1000 = 10³ | 一千个单位 |
兆 | Mega | 1 M = 1000 K = 10⁶ | 一百万个单位 |
吉 | Giga | 1 G = 1000 M = 10⁹ | 十亿个单位 |
这种用法常见于:网络带宽(Mbps)、硬盘厂商标注容量等场景
比如:
-
1 Gbps = 1,000,000,000 bits(十亿位)
2. 二进制(以1024为基数)👉 更常用于内存、缓存
中文 | 英文缩写 | 换算关系 | 二进制指数表示 |
---|---|---|---|
千字节 | KB | 1 KB = 1024 Bytes | 2¹⁰ Bytes |
兆字节 | MB | 1 MB = 1024 KB = 2²⁰ B | |
吉字节 | GB | 1 GB = 1024 MB = 2³⁰ B |
这种定义广泛用于计算机系统、操作系统、编译器、主存/缓存等
比如:
-
1 MB = 1,048,576 Bytes (而不是 1,000,000)
位(bit)和字节(Byte)
单位 | 英文 | 大小关系 | 注释 |
---|---|---|---|
位 | bit | 最小单位 | 可取 0 或 1 |
字节 | Byte | 1 Byte = 8 bits | 一个 ASCII 字符通常是 1 Byte |
📏 容量单位(Capacity Units)
单位(中文) | 单位(英文) | 十进制定义 | 二进制定义 |
---|---|---|---|
千字节 | Kilobyte (KB) | 1 KB = 1000 Bytes | 1 KB = 2¹⁰ = 1024 Bytes |
兆字节 | Megabyte (MB) | 1 MB = 1000 KB | 1 MB = 2²⁰ = 1,048,576 Bytes |
吉字节 | Gigabyte (GB) | 1 GB = 1000 MB | 1 GB = 2³⁰ = 1,073,741,824 Bytes |
字节 | Byte (B) | 1 Byte = 8 bits | - |
位 | Bit (bit) | 最小的信息单位 | - |
例题一
📘 1. 物理地址(PA, Physical Address)
物理地址是CPU发出访问内存的真实地址。以**位数(bits)**表示其寻址范围:
-
若物理地址有
n
位,则最大可寻址空间为2ⁿ
Bytes。
📘 2. 主存大小(MM Size)
题目给出 MM Size = 4GB,也就是:
4 GB = 4 × 2³⁰ B = 2² × 2³⁰ = 2³² Bytes
=> 所以物理地址长度 PA = 32 bits
📘 3. 块大小(Block Size)
每次从内存载入Cache的一单位是一个块(Block):
-
题目中:Block Size = 4 KB = 2¹² Bytes
-
所以:一个Block中的 Block Offset 需要 12 bits 来寻址
📘 4. 缓存大小(Cache Size)
Cache的总容量为:1 MB = 2²⁰ Bytes
因为每个Block为2¹² Bytes,所以Cache中可以容纳的Block数为:
Number of Blocks in Cache = 2²⁰ Bytes / 2¹² Bytes = 2⁸ Blocks
=> Index 位数 = 8 bits
📘 5. 直接映射(Direct Mapping)
在直接映射结构中,一个内存块只能映射到Cache中的某一个固定位置:
-
物理地址 PA 被划分为三个字段:
[ Tag | Index | Block Offset ]
PA Bits Split(物理地址位分割)
我们已经有:
-
总物理地址位数 = 32 bits
-
Block Offset = 12 bits(由 Block Size 决定)
-
Index = 8 bits(由 Cache block 数量决定)
-
所以剩下的是:Tag = 32 - 8 - 12 = 12 bits
字段(中文) | 字段(英文) | 位数(bits) | 来源说明 |
---|---|---|---|
标签位 | Tag Bits | 12 bits | PA剩余位 |
索引位 | Index Bits | 8 bits | 2⁸ 个block |
块内偏移 | Block Offset | 12 bits | 4 KB block |
📁 Tag Directory(标签目录) 是什么?
标签目录是缓存中用于记录哪个主存块现在存放在 Cache 的哪个行的标签表。
它确实是“按 cache 行组织”的,也就是:
每一个 Cache Line(缓存行),都对应一条 Tag Directory 的记录!
我们记录的是,当前每个 Cache Line 对应的 Memory Block 的 Tag。
更严谨一点说:
-
主存块数 >> Cache 行数
-
所以多个主存块可能映射到同一个 Cache Line
-
为了区分是谁占了这个 Cache Line,就要存下那个主存块的 “Tag”
每一条记录通常包含:
-
Tag(标签):用来标识当前Cache Block对应的内存块
-
Valid Bit(有效位):表示该块是否有效
-
(可选)Dirty Bit(脏位):在写回法中表示是否被修改
🔸 本题只要求考虑 Tag 本身,忽略 Valid/Dirty 位。
📐 Tag Directory 的大小计算方法
步骤一:计算 Cache 行数(即 Cache lines)
每行存一个 Block:
Cache lines = Cache size / Block size= 2²⁰ / 2¹²= 2⁸
所以 Cache 有 256 行(2⁸)
步骤二:Tag 位数计算
-
物理地址总长:32 bits
-
Block Offset = 12 bits(由块大小决定)
-
Index = 8 bits(由 Cache 行数决定)
Tag 位数 = 32 - Index - Block Offset= 32 - 8 - 12= 12 bits
步骤三:Tag Directory 大小
只记录 Tag 位(不考虑 Valid/Dirty):
Tag Directory size = Number of cache lines × Tag bits= 2⁸ × 12 bits= 256 × 12 = 3072 bits= 384 Bytes
例题二
因为 Block Size = Line Size,你可以直接用下面这个公式算:
Tag 位数 = log₂(MM Size / Cache Size)
因为由MM Size : Cache Size 的值,我们可以知道映射到Cache某一行(line)的有多少块(Block)。
上图的实例表明,4个块映射到同一行。
例题三
例题四
一个直接映射缓存(Direct Mapped Cache)大小为 1MB,块大小为256字节(Bytes)。
-
缓存命中时的访问时间是 3纳秒(ns)。
-
缓存命中率为 94%。
-
当发生 缓存未命中(miss) 时:
-
第一个字从主存中传输需要 20ns
-
其余每个字的传输时间为 5ns/字
-
-
一个字(Word)的大小是 64位 = 8字节
问题: 求平均内存访问时间(Average Memory Access Time, AMAT),精确到小数点后1位。
串行访问还是并行访问的选择
在计算主存访问时间时,如果题目中给出的是:
-
“first word takes X ns”
-
“each subsequent word takes Y ns”
就要问自己:
❓ 是并行加载所有字,还是一个接一个串行加载?
这道题的正确思路是:
🔸 这是串行传输(Serial Transfer)!
理由如下:
-
题目中明确说:
-
第一字传输用 20ns
-
后续每字用 5ns
-
-
如果是并行传输,那就应该是一次性所有字只用最长那个时间。但这里强调“每个”说明是串行!
关于这方面(串行访问与并行访问)的具体内容,可以在这篇文章中查看:
计算机组成与体系结构:内存接口(Memory Interface)-CSDN博客
例题五
例题六
例题七
一台 CPU 配备了一个32KB大小的直接映射(Direct-Mapped)缓存,块大小为128字节。
现在有一个二维数组 A,尺寸是512 × 512,每个元素占用8字节。
考虑下面两个独立执行的 C 代码段 P1 和 P2:
P1:按 行优先(row-major)顺序访问数组。
P2:按 列优先(column-major)顺序访问数组。
初始条件: A数组一开始不在缓存中,i、j、x 都在寄存器中。
问题:
执行P1时,缓存未命中次数记为 M1。执行P2时,缓存未命中次数记为 M2。
计算并选择 M1/M2 的值
一个 Cache Block 可存储:
128 Bytes / 8 Bytes per element = 16 elements
即一个块可以装下连续16个元素(在内存中连续的)。
🔵 P1:(按行访问)
特点:
-
内存是行优先存储(Row-Major),
-
A[i][j]
和A[i][j+1]
在内存中是连续的。 -
一个 Cache Block 可以放下 16 个元素。
一次 miss 后,可以利用的连续缓存:
-
第一次访问
A[i][0]
:miss -
然后
A[i][1]
~A[i][15]
:全是 hit!(因为它们都在同一个缓存块中) -
直到访问到
A[i][16]
,再 miss。
所以:
每访问 16 个元素只 miss 1 次
每一行有 512 个元素,划分成:512 / 16 = 32块
每一行就有 32 次 miss。
M1 = 512 × 32 = 16,384 次
🔴 P2:(按列访问)
特点:
-
列优先访问,但是内存按行优先存储。
-
A[j][i]
与A[j+1][i]
在内存中 不连续。 -
A[0][i]
和A[1][i]
分别在不同的行,相隔 512×8=4096 Bytes。 -
它们肯定不在同一个 Cache Block。
所以:
-
每访问一个元素
A[j][i]
,都会导致 一次 miss! -
因为访问的是不同缓存块(地址跳得太大),缓存局部性被破坏了。
全局总miss:
-
总访问次数 = 512 × 512 = 262,144 次
-
每次都 miss
所以:
M2 = 262,144 次
为什么一定会有miss?
实际上 miss 并不是一定存在的,它取决于当时 Cache 里的数据和你访问的数据是不是吻合。
但是,在某些特定情况下,一开始访问必然会miss,比如:
特别情况:
-
题目明确说了:"数组A一开始不在缓存中"。
-
所以当我们第一次访问数组A的任意元素时,必然miss!
-
后续如果继续访问已经加载到Cache里的数据,就可能hit。
为什么按行访问和按列访问的 Miss 不一样?
这要结合访问方式来看:
在按行访问(P1)时:
-
因为元素在内存中是连续的。
-
一个 Cache Block 可以放 16 个元素。
-
第一个元素 miss,后面 15 个元素 hit(空间局部性好)。
-
所以不是每次访问都 miss,每16个元素只miss 1次。
在按列访问(P2)时:
-
访问顺序是跳着走的:
-
A[0][i]
→A[1][i]
→A[2][i]
……
-
-
每次跳跃4096 Bytes(因为数组按行存,每行512×8=4096 Bytes)。
-
跳得太远,Cache块根本无法覆盖这么远的跨度。
-
而且是直接映射缓存,不同地址很容易映射到同一个Cache行,导致原来装的数据被替换掉。
因此在列访问中:
每次访问基本都是新的块,所以每次访问都会miss!
例题八
考虑一台主存为 2^16 字节、按字节寻址(byte-addressable)的计算机。
系统中使用一个直接映射(Direct Mapped)数据缓存,缓存由32行(lines)组成,每行大小为64字节。
有一个大小为 50×50 的二维字节数组,存储在主存中,从地址 1100H(十六进制)开始。
假设:
-
数据缓存初始为空。
-
完整访问这个数组两遍。
-
在两次访问之间,缓存内容不会变化(不会刷新)。
问题:
i. 访问两遍数组,总共有多少次缓存未命中(Cache Miss)?
选项:
-
(A) 40
-
(B) 50
-
(C) 56
-
(D) 59
ii. 在第二次访问数组时,会替换缓存中哪些行?
选项:
-
(A) line 4 到 line 11
-
(B) line 4 到 line 12
-
(C) line 0 到 line 7
-
(D) line 0 到 line 8
基础参数
第一次访问:
从地址1100H 开始,依次访问 2500个元素。
因为一个 Cache Block 装64个字节,
-
向上取整 → 需要 40个块(因为最后一块可能不满,但仍然需要加载)。
所以第一次访问会造成 40次miss(每次加载一个新的缓存块)。
地址冲突
第二次访问:
-
由于"缓存内容不会变化",所以如果之前访问的数据仍然在 Cache 中,就不会miss。
-
但是!因为是直接映射,地址冲突可能导致 Cache Line 被替换!
相关文章:
直接映射例题及解析
目录 基本单位换算 例题一 📁 Tag Directory(标签目录) 是什么? 例题二 例题三 例题四 串行访问还是并行访问的选择 例题五 例题六 例题七 🔵 P1:(按行访问) …...
MAVLink协议:原理、应用与实践
目录 1. 前言 2. MAVLink 协议的基本概念 2.1 协议概述 2.2 消息格式 2.3 协议版本 3. MAVLink 协议的适应场景 3.1 无人机地面站与飞行器通信 3.2 飞行器与传感器通信 3.3 无人机集群通信 3.4 飞行模拟与测试 4. 基于 Python 的 MAVLink 协议编程实践 4.1 开发环境…...
【记一次亚马逊普华永道审计流程】
1、2025年2月21日 收到审计邮件 2、2025年2月25日未及时关注注册开发者的邮箱导致一直未回复 3、2025年3月4日亚马逊警告邮件-依旧未回复 4、2025年3月13日APP正式被亚马逊开发者商店下架 停用影响: APP从官方商店下架,不能授权新店铺 停用原因: 由于此邮箱为注册…...
Java 异常处理全解析:从基础到自定义异常的实战指南
Java 异常处理全解析:从基础到自定义异常的实战指南 一、Java 异常体系:Error 与 Exception 的本质区别 1. 异常体系核心架构 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许…...
二、UI自动化测试02--元素定位方法
目录 一、定位⼀组元素⽅法二、XPath 定位⽅法1. 路径策略1.1 路径值获取⽅法 2. 利⽤元素属性策略利⽤元素属性策略的注意事项 3. 属性和逻辑结合4. 层级和属性结合策略5. XPath 延伸⽅法 三、CSS 定位⽅法1. CSS 策略: id选择器/class选择器/元素选择器/属性选择器2. 属性选择…...
第二章 信息技术发展(2.1 信息技术及其发展)
2.1 信息技术及其发展 2.1.1 计算机软硬件 计算机硬件 (Computer Hardware) 是指计算机系统中由电 、机械和光电元件等组成 的各 种物理装置的总称计算机软件 (Computer Software) 是指计算机系统中的程序及其文档,程序是计 算任务的处理对象和处理规则的描述;文档是为了便千…...
【SwitchyOmega安装教程】
目录 一、插件安装 1. 下载安装文件 2. 打开浏览器扩展安装页面 3. 安装插件 二、界面详情 三、配置信息 3.1 设置IP 1、查看IP地址信息 2、批量测试IP是否有效 3、点击扩展程序,选择 Proxy SwitchyOmega 4、 点击选项进行配置 5、配置页面 一、插件安装 1…...
驱动开发硬核特训 · Day 21(上篇加强版):深入理解子系统机制与实战初探
📅 日期:2025-04-27 📚 技术平台:嵌入式Jerry(B站) 1. 为什么要有子系统?(深度版) 在 Linux 内核发展早期,设备管理较为混乱,每种设备࿰…...
GoFly快速开发框架新增UI素材库-帮助开发者快速开发管理后台UI基于ArcoDesign框架开发
说明: 为开发者提供管理台的UI素材,社区将持续为开发开发后台系统常用UI界面,让开发时能有一半的界面可以直接从UI库获取,减少开发者自己排版界面的时间,帮助开发者快速开发后台业务。 使用的前端版本要求࿱…...
Unity-Shader详解-其二
前向渲染和延迟渲染 前向渲染和延迟渲染总的来说是我们的两种主要的渲染方式。 我们在Unity的Project Settings中的Graphic界面能够找到渲染队列的设定: 我们也可以在Main Camera这里进行设置: 那这里我们首先介绍一下两种渲染(Forward R…...
Windows 安装 Neo4j 教程
Windows 安装 Neo4j 教程 Neo4j 是一个开源的图数据库,它以图形结构存储数据,适合用于处理高度连接的数据,广泛应用于社交网络、推荐系统、欺诈检测等场景。本文将为你介绍如何在 Windows 系统上安装和配置 Neo4j 数据库。 一、安装前准备 …...
Neo4j 常用查询语句
Neo4j 常用查询语句 Neo4j 是一个图数据库,查询语言是 Cypher,它类似于 SQL 但针对图形数据进行了优化。Cypher 语法直观易懂,适合用来处理图数据。本文将介绍一些 Neo4j 中常用的查询语句,帮助你快速掌握图数据的操作方法。 一…...
机器学习(10)——神经网络
文章目录 1. 神经网络基本原理1.1. 什么是神经网络1.2. 核心思想 2. 基础组件3. 前向传播(Forward Propagation)4. 反向传播(Backpropagation)5. 激活函数对比6. 网络架构类型7. 优化策略8. Python示例(PyTorch&#x…...
Qt软件开发-摄像头检测使用软件V1.1
系列文章目录 Qt软件开发-摄像头检测使用软件V1.1 文章目录 系列文章目录前言一、V1.1增加了哪些功能?二、代码构成1.总体结构2. 代码内容 三、效果展示图总结 前言 之前,在Qt软件开发-摄像头检测使用软件:https://blog.csdn.net/xuming204…...
AI日报 - 2025年04月26日
🌟 今日概览(60秒速览) ▎🤖 模型竞赛 | OpenAI与Google新模型在Arena榜单激烈角逐,性能指标各有千秋。 OpenAI发布o3/o4-mini等新模型,Gemini 2.5 Pro紧随其后,数学、编程能力成焦点。 ▎💼 商业动向 | 并…...
ES6 Map/WeakMap/Set/WeakSet 全解指南
一、设计思想与核心概念 1. 解决传统结构的痛点 Object:键只能是字符串/Symbol、无序、无size属性Array:查找效率低(O(n))、无自动去重机制核心突破:// 传统方式 vs ES6方式 const obj { [{}]: value }; // 键会被转为"[object Obje…...
【Python】使用uv管理python虚拟环境
本文介绍了python虚拟环境管理工具uv,包括uv的作用、uv的常用命令等等。 参考:UV - 管理Python 版本、环境、第三方包 1. 介绍uv 官网:https://docs.astral.sh/uv/ uv是一个python虚拟环境管理工具,可以用来替代pip、pyenv、vir…...
求解,如何控制三相无刷电机?欢迎到访评论
问题:通过一个集成的TF2104芯片控制H桥上桥臂和下桥臂,如何控制?还是说得需要PWM_UH和PWM_UL分开控制?...
002 六自由度舵机机械臂——姿态解算理论
00 DH模型的核心概念 【全程干货【六轴机械臂正逆解计算及仿真示例】】 如何实现机械臂的逆解计算-机器谱-robotway DH模型是机器人运动学建模的基础方法,通过四个参数描述相邻关节坐标系之间的变换关系。其核心思想是将复杂的空间位姿转换分解为绕轴旋转…...
部署大模型需要多少GPU显存?以DeepSeek R1部署为例
引言 部署大型语言模型(LLM)时究竟需要多少GPU显存?本文将进行一次简单测算。 如何计算 算法1 可以用一个简单的公式来计算显存占用(单位GB): 参数说明如下: 符号 含义 M 所需的 GPU 显存…...
C++?类和对象(下)!!!
一、前言 在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数,在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识,如果需要再了解之前的知识的话,链接奉上:C?类和对象࿰…...
function,bind,lambda的用法
C中的std::function、std::bind与Lambda表达式详解 一、std::function std::function是C11标准引入的类模板,用于封装任意类型的可调用对象,例如函数指针、Lambda表达式、函数对象等。通过std::function可以实现不同形式可调用对象的统一存储与调用…...
Maven的聚合工程与继承
目录 一、为什么需要使用Maven工程 二、聚合工程的结构 三、聚合工程实现步骤 四、父工程统一管理版本 五、编译打包 大家好,我是jstart千语。想着平时开发项目似乎都是用maven来管理的,并且大多都是聚合工程。而且在maven的聚合工程中,…...
C/C++对时间的处理
1. 两种数据结构 time_t 是一个在C和C++编程语言中用于表示时间的类型。time_t类型通常是一个长整型(long int)或整数类型,用于表示从特定参考点(通常是1970年1月1日00:00:00 UTC)经过的秒数。 time_t定义在<ctime>头文件中,通常用于记录时间戳,比如获取当前时间…...
Spring Boot 支持政策
🧑💻 Spring Boot 支持政策 ✒️ Andy Wilkinson 于2023年12月7日编辑本页 32次修订 📌 核心政策 🛡️ VMware Tanzu 开源支持政策 Spring Boot 针对关键错误和安全问题提供支持 📆 版本支持周期 1️⃣ 主要版本&a…...
实验四 进程调度实验
一、实验目的 1、了解操作系统CPU管理的主要内容。 2、加深理解操作系统管理控制进程的数据结构--PCB。 3、掌握几种常见的CPU调度算法(FCFS、SJF、HRRF、RR)的基本思想和实现过程。 4、用C语言模拟实现CPU调度算法。 5、掌握CPU调度算法性能评价指…...
静态多态和动态多态的区别
C多态机制深度解析 多态是面向对象编程的核心特性,允许通过统一接口执行不同实现。在C中,多态表现为基类指针或引用调用虚函数时,根据实际对象类型执行对应派生类的函数逻辑。 基础实现示例 定义基类与派生类,演示动态绑定…...
现代化Android开发:Compose提示信息的最佳封装方案
在 Android 开发中,良好的用户反馈机制至关重要。Jetpack Compose 提供了现代化的 UI 构建方式,但提示信息(Toast/Snackbar)的管理往往显得分散。本文将介绍如何优雅地封装提示信息,提升代码可维护性。 一、基础封装方案 1. 简单 Snackbar …...
Android学习总结之Retrofit篇
1. 注解原理概述 在 Java 里,注解是一种元数据,它为代码提供额外信息但不影响程序的实际逻辑。注解可以在类、方法、字段等元素上使用,并且能在编译时、运行时通过反射机制被读取。Retrofit 充分利用了 Java 注解机制,通过自定义…...
Python 第 12、13 节课 - 元组和列表
- 第 94 篇 - Date: 2025 - 04 - 26 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 Python 第 12、13 节课 - 元组和列表 上课时间: 2025-04-21(12) 2025-04-24(13) 文章目录 Python 第 12、13 节课 - 元组和列表一 元组1 元组的…...
新特性版本升级指引
✨ 升级到新特性版本时的配置迁移 1️⃣ 🔧 配置迁移工具说明 当您将应用升级到新特性版本时,可能需要处理部分配置属性的重命名或移除问题。 2️⃣ 🚀 启用方法 Spring Boot 提供了环境分析工具: 应用启动时打印诊断信息运行时…...
6.1 客户服务:智能客服与自动化支持系统的构建
随着企业数字化转型的加速,客户服务作为企业与用户交互的核心环节,正经历从传统人工服务向智能化、自动化服务的深刻变革。基于大语言模型(LLM)和智能代理(Agent)的技术为构建智能客服与自动化支持系统提供…...
从新手到高手:小程序开发进阶技巧分享
小程序开发从入门到精通需要经历技术积累、架构优化和工程化实践等多个阶段。以下是结合真实项目经验的进阶路线与核心技术要点,涵盖性能优化、架构设计、跨平台开发等关键领域: 一、性能调优实战技巧 1. 首屏渲染加速方案 // 预请求关键数据ÿ…...
S参数的含义
S参数的含义: 在低速设计时代,工程界普遍使用等效集总电路模型来描述互连通道的过孔、连接器等各部分。对于上升时间达到几个ns的低速数字信号,甚至可以使用一个0Ω电阻代替连接器,分析的结果也不会和实际情况有太大的差别。但是当…...
职场十二法则-马方
马方老师的《职场十二法则》,献给初入职场工作中迷茫的自己。 1.挣钱是能力的副产品,能力比挣钱重要,让自己值钱比有钱更重要。成长比赚钱重要,年轻时把成长放第一位,挣钱放第二位,通过提升能力实现长期收益。 2.成长…...
安装docker,在docker上安装mysql,docker上安装nginx
目录 一.安装docker 1.1查看Linux版本的命令这里推荐两种: 1.2查看内核版本有三种方式: 2.安装 2.1 如果之前安装了docker,先删除旧版本的doker 2.2 安装需要的软件包,yum-util提供yum-config-manager功能,另外两…...
Java基础第五章、面向对象程序设计
1.package包 如果引入的不同包里面有相同的类名时,需要对要使用的类进行完整的限定名指定。 2.访问修饰符 子类对父类的方法重写也遵循上面的原则 一个java文件中最多只能有一个public(和文件同名)的类。 3.初始化块 //Driver.java public class Driver {private lo…...
RD电子实验记录本选用贴士A-B-C
传统的实验记录本,令人又爱又恨本 如何挑选电子实验室记录本(ELN)的品牌/服务商/供应商? 电子实验记录本,又名为ELN,Electronic lab notebook,enotebook,研发电子管理系统…...
Python 第 11 节课 - string 与 random 的方法
- 第 93 篇 - Date: 2025 - 04 - 26 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 Python 第 11 节课 - string 与 random 的方法 上课时间: 2025-04-14 文章目录 Python 第 11 节课 - string 与 random 的方法一 string 的方法1 s.split()2 s.find()3 s.replace()4 s.strip…...
proxychains4系统代理for linux(加速国内github下载速度,pip安装)
1.proxychains4代理安装: sudo apt-get install proxychains42.找到配置文件/etc/proxychains4.conf在[ProxyList]后面添加以下内容: socks5 127.0.0.1 10808 配置如下: 3.使用proxychains4(git clone): proxychains4 git c…...
LLM基础之源码一
transformers 核心源码梳理 Trainer部分: __init__() 初始化函数: def __init__(xxx):if args is None:output_dir "tmp_trainer"args TrainingArguments(output_diroutput_dir) self.args argsself.compute_loss_func compute_loss_fun…...
蛮荒tv桌面永不升级版app下载-蛮荒桌面安卓电视版下载
蛮荒桌面是一款具有丰富桌面内容的生活应用软件,可以连接电视上使用,用户将需要的软件添加到桌面上,系统就会自动分类管理软件,小编今天为大家推荐一款功能更大强大的电视桌面应用——乐看家桌面。 乐看家桌面功能亮点: 1.官网下载刷入机顶盒…...
2025蓝桥省赛c++B组第二场题解
前言 这场的题目非常的简单啊,至于为什么有第二场,因为当时河北正在刮大风被迫停止了QwQ,个人感觉是历年来最简单的一场,如果有什么不足之处,还望补充。 试题 A: 密密摆放 【问题描述】 小蓝有一个大箱子࿰…...
c#简易超市充值卡程序充值消费查余额
开发背景 本软件是给克什克腾旗某公司开发的一个简易的超市充值卡程序 # 功能 1、充值卡的充值、消费、查询余额 github下载:https://github.com/oyangxizhe/cash.git...
使用FME生成Delaunay三角形
目录 背景与应用场景 前置条件与数据准备 操作流程详解 3.1 点要素矢量化3.2 设置坐标系3.3 生成Delaunay三角形...
三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!
在这个数字化时代,总有些工具能让人眼前一亮。今天李师傅大家精选三款实用工具,从图片优化到格式转换,解决日常创作中的痛点,让数字生活更得心应手。 在这个数字化时代,总有些工具能让人眼前一亮。今天为大家精选三款…...
文本预处理(NLTK)
1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...
泰迪杯实战案例学习资料:生产线的故障自动识别和人员配置优化
(西南石油大学,第十二届泰迪杯特等奖案例) (深度扩展版) 一、案例背景与目标 1.1 问题背景 在制造业中,生产线设备故障可能导致以下问题: 停机损失:每小时停机成本可达数万元(视行业而定)。 资源浪费:人工排班不合理导致高技能员工闲置或低效分配。 安全隐患:未及…...
dijkstra
open_set是当前正在计算的节点; 每次从当前open_set集合中找出cost最小的节点进行计算更新:从open_set中去除该节点,保存到close_set中; 运动更新可以根据运动模型选择合适的节点运动方式; 【代价的计算方式是&…...
【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard
SSH 连接远程服务器时的命令: ssh -L 8001:localhost:8001 usrnameserverip-L: 这是指定进行本地端口转发的选项。也就是说,要将本地机器的一个端口通过 SSH 隧道转发到远程服务器上的某个服务。 8001:localhost:8001: 第一个 80…...