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

start DL from stratch (2)!!!

start DL from stratch (2)!!!

    • 一、CPU and GPU
      • cpu
      • GPU
      • 安培架构
      • 爱达·洛夫莱斯架构
    • 二、使用conda创建一个新的虚拟环境
    • 三、autodl操作先知
      • Linux复习
      • 目录
      • 文件和数据上传
      • 对于整个镜像的操作
      • 守护进程
      • Tips
    • 四、autodl租用
      • 创建实例
      • ==<big>没有所需要的版本的话<big>==
      • 连接pycharm
      • 配置环境
      • GitHub上项目
      • 开具发票
    • 五、ssh和sftp
    • 六、性能
      • nvidia-smi -l 1
      • 如果发现GPU利用率较低时可以按下述方法排查瓶颈
      • numpy
      • 其余经验

主要解决DL入门关于相关软件的配置问题,使用autodl远程使用实例。

续前节 Start DL from stratch(1) !!!

一、CPU and GPU

参考:::
CPU-GPU

cpu

CPU非常重要!尽管CPU并不直接参与深度学习模型计算,但CPU需要提供大于模型训练吞吐的数据处理能力。比如,一台8卡NVIDIA V100的DGX服务器,训练ResNet-50 ImageNet图像分类的吞吐就达到8000张图像/秒,而扩展到16卡V100的DGX2服务器却没达到2倍的吞吐,说明这台DGX2服务器的CPU已经成为性能瓶颈了。
理想情况下,模型计算吞吐随GPU数量线性增长,单GPU的合理CPU逻辑核心数分配可以直接线性扩展到多GPU上。每块GPU应配备至少4~8核心的CPU,以满足多线程的异步数据读取。

GPU

我们建议在实例上启用深度学习框架的混合精度训练来加速模型计算相较于单精度训练,混合精度训练通常能够提供2倍以上的训练加速。

GPU的数量选择与训练任务有关。一般我们认为模型的一次训练应当在24小时内完成,这样隔天就能训练改进之后的模型。以下是选择多GPU的一些建议:

1块GPU。适合一些数据集较小的训练任务,如Pascal VOC等。
2块GPU。同单块GPU,但是你可以一次跑两组参数或者把Batchsize扩大。
4块GPU。适合一些中等数据集的训练任务,如MS COCO等。
8块GPU。经典永流传的配置!适合各种训练任务,也非常方便复现论文结果。
我要更多!用于训练大参数模型、大规模调参或超快地完成模型训练。

内存和CPU配置的分配逻辑为按GPU的数量成倍数分配,比如在主机上看到的CPU和内存分配规则为:32GB/GPU、8核/GPU,那么租用1块GPU时实例的配置为1卡GPU; 8核CPU; 32GB内存,租用2块GPU时实例的配置为2卡GPU; 16核CPU; 64GB内存,依此类推。

在这里插入图片描述

安培架构

NVIDIA Ampere 架构
安培架构是继图灵(Turing)架构之后的下一代架构
用于其 RTX 30 系列显卡(如 RTX 3090、RTX 3080、RTX 3070 等)。

爱达·洛夫莱斯架构

NVIDIA Ada Lovelace架构
是继安培架构之后推出的下一代 GPU 架构,命名来源于 19 世纪数学家 Ada Lovelace,她被认为是世界上第一位计算机程序员
RTX 40 系列

二、使用conda创建一个新的虚拟环境

在这里插入图片描述

三、autodl操作先知

Linux复习

在AutoDL租用实例的系统默认为Linux Ubuntu发行版,因此熟悉使用基本的Linux命令对于训练模型非常有必要
Linux操作系统中,几乎所有的东西都以文件夹或文件形式存在,这些文件夹/文件有一个共同的根目录/。如果我们在某块磁盘A上(无其他分区)安装了Linux操作系统后,那么根目录下将会有此类默认的系统目录:

$ ls /
bin  etc  lib  mnt  proc  run  tmp  var  boot  dev  home  root  srv  sys   usr

具体命令如下:::

目录

在这里插入图片描述
在AutoDL实例中安装的系统软件以及用内置的miniconda安装的python依赖,都是安装在了**系统盘中。 系统盘( 即系统环境
数据盘 temp 可存放读写IO要求高的数据 ,所以叫做数据盘,但是不能保存至镜像中以及进行实例迁移。

文件存储会挂载文件存储至实例**/root/autodl-fs**
平台内置的所有镜像都安装了Miniconda,安装路径为/root/miniconda3/

JupyerLab的工作路径是/root,数据盘、网盘、公共数据目录都在/root目录下,因此进入JupyterLab后可直接看到这些平台默认创建的目录

题外话:::JupyterLab在关闭终端/Notebook选项卡后默认不会终止,仍然在运行
在这里插入图片描述
所以右键复制路径之后::没有带root的,所以需要自己手动加上/root/

文件和数据上传

  1. 公网网盘,直接使用阿里云盘、百度网盘上传下载数据,一般推荐
    (阿里云盘在2024年7月左右对三方应用进行了限制,需要购买三方权益包才能获得良好的上传下载速度
    百度网盘由于规则调整,不再支持个人认证及个人创建应用功能,需要企业认证才可开通应用)
  2. JupyterLab上传,和网盘类似,优点简单,但是只支持文件不支持文件夹 推荐
  3. scp命令支持文件和文件夹上传下载,由于是命令行执行,上手难度稍高
  4. FileZilla软件支持文件和文件夹,拖拉拽即可上传下载,推荐使用(免费、全平台(Mac、Linux、Windows))
  5. XShell软件支持管理SSH连接,而且集成了xftp,支持拖拉拽上传下载文件夹/文件(但是付费版软件)啊啊啊
  6. AutoDL文件存储 上传数据,优点简单而且不用开实例,缺点是网页不支持上传文件夹
    (当只是需要上传一个zip压缩包时,或者其他类型的单个文件时,建议直接进入到文件存储中上传。因为这样可以少了连接到Xftp这个步骤,以及可以少费点钱。)
    上传数据的时候选择无卡开机模式,可以减少费用

对于整个镜像的操作

您在一个实例中配置好了环境等,在更换主机以及开新的实例时希望复用该环境,以及长期留存该环境以备日后使用,那么保存镜像将是最好的选择,还支持共享镜像给其他用户之后的保存镜像请在我的镜像菜单中查看

重置系统->更换镜像,都是系统盘清空,数据盘不动

克隆实例把整个都给复制一份
点击克隆实例后,在创建实例页面选择一台新主机创建实例即可。

Tips:如果您在克隆时忘了勾选同时拷贝数据盘,那么可以在新实例创建完成后,在原实例的更多操作中点击【跨实例拷贝数据】,再对数据盘进行拷贝

守护进程

远程执行程序时,那么请注意开守护进程来执行程序,避免因为SSH连接中断导致程序终止
最简单的方式是通过jupyterlab的终端来执行,只要jupyterlab不出现重启(几乎不会),jupyterlab的终端就会一直运行,无论是本地主机断网还是关机!!!!!

Tips

  1. 可以在pycharm 中调试好 ,然后再 jupyterlab的终端 执行,这样页面可以关闭去做其他事情
  2. 按量计费实例在关机后会释放GPU给其他用户租用,如果想一直占有GPU,可选择变更计费方式为包年包月
  3. 有时候抢不到服务器,可以提前租用多个实例,等到15天快结束的时候开机一会,又可以延时了

四、autodl租用

更多详细参考:-> Autodl

创建实例

首先平台镜像中有没有您需要的Torch、TensorFlow等框架的相应版本,如果有首选平台内置的镜像
如果平台中没有合适的Torch、TensorFlow等框架版本,那么查询自己的框架需要什么CUDA版本,比如PyTorch=1.9.0需要CUDA=11.1,那么可以选择Miniconda/CUDA=11.1的平台镜像,然后在镜像内安装自己需要的框架,免去安装cudatoolkit的麻烦。(平台内置的CUDA均带.h头文件,如有二次编译代码的需求更方便)

没有所需要的版本的话

安装其他版本的Python: 参考


安装其他版本的CUDA: 参考


安装PyTorch: 参考


安装TensorFlow: 参考

方法一:::可随便挑选一个Miniconda镜像,在开机后自行安装相关框架、CUDA、甚至其他版本的Python。(miniconda镜像即内部未安装任何深度学习框架,保持运行环境干净)

方法二:::在连接ssl的时候选择conda 环境
在这里插入图片描述
这个就相当于你

conda create -n Untrack python=3.7           # 构建一个虚拟环境
conda init bash && source /root/.bashrc # 更新bashrc中的环境变量
conda activate Untrack                       # 切换到创建的虚拟环境

注意创建位置/envs里面,此外 在编译器这里就是用的他的环境,如下:::
在这里插入图片描述
但是在termial中:::还是显示的base环境+root目录

在这里插入图片描述

综上,所以说开始不选miniconda也是可以的,就是新建一个环境,但是在克隆实例,保存镜像什么的时候会很大的,相当与有两份了
那python interpreter 怎么换到base里面呢,还是在ssl配置那里,选择已有的base conda环境就可以了,注意路径就是图中的 /root/miniconda3

那怎么Notebook环境切换呢??
–>参考<–

# 创建Conda新的虚拟环境(如已创建,请忽略!)
conda create -n tf python=3.7             # 构建一个虚拟环境,名为:tf
conda init bash && source /root/.bashrc   # 更新bashrc中的环境变量# 将新的Conda虚拟环境加入jupyterlab中
conda activate tf                         # 切换到创建的虚拟环境:tf
conda install ipykernel
ipython kernel install --user --name=tf   # 设置kernel,--user表示当前用户,tf为虚拟环境名称

在这里插入图片描述

具体例子,参考我的另一篇->>>

连接pycharm

选择File—Settings,点击Add interpreter----On SSH即可。
在这里插入图片描述

或者 Tools -> Deployment -> Configuration点击…进入SSH Configurations
在这里插入图片描述
检验:::
在这里插入图片描述

配置环境

在PyCharm中进入终端,或者在通过JupyterLab进入终端------>>>>编辑文件+刷新,使得能使用conda的一些其他命令,比如conda activate 环境,以进行后续的环境配置
否则报错
在这里插入图片描述
怎么办呢::::::

输入:vim ~/.bashrc
开始进行编辑:输入i
光标移动到文件的最后一行,插入source /root/miniconda3/etc/profile.d/conda.sh
保存文件并退出:按Esc键,输入:wq,再回车
输入bash重启终端(即刷新一下)

在这里插入图片描述
重新输入命令:::
进来啦::在这里插入图片描述

参考AutoDL
Autodl

GitHub上项目

  1. 记得下面两个文件加上目录,就可以直接install
  2. 如果项目提供了 requirements.txt,你可以直接使用以下命令安装依赖:
pip install -r requirements.txt
  1. 使用 conda
    若项目有 environment.yml 文件,可以用以下命令创建 conda 环境:
conda env create -f environment.yml

开具发票

发票抬头请填写真实姓名,统一社会信用代码请填写身份证号之后会发送到邮箱电子版的
单次开票金额满10元可开票
在这里插入图片描述
autod开具的都是具有增值税的,没有 普通的个人发票貌似嘞
在这里插入图片描述

五、ssh和sftp

  1. SSH (Secure Shell)
    作用:SSH 是一种安全的远程登录协议,主要用于通过不安全的网络(例如互联网)安全地访问和管理远程计算机。它允许用户通过命令行界面(CLI)连接到远程服务器,执行命令、管理文件和执行其他管理任务。
    加密:SSH 使用加密技术(如对称加密、非对称加密、哈希算法等)来确保数据传输的安全性,因此,它比传统的 Telnet 或 FTP 更加安全。
    主要功能:
    远程登录:使用终端在远程服务器上执行命令。
    安全的文件传输:SSH 本身并不直接用于文件传输,但它可以与 SCP 或 SFTP 一起使用
  2. SFTP (Secure File Transfer Protocol)
    作用:SFTP 是一种通过 SSH 提供的安全文件传输协议。它用于通过安全的加密通道,在远程计算机和本地计算机之间传输文件。与 FTP 相比,SFTP 是加密的,因此数据在传输过程中不会被窃取或篡改。
    加密:SFTP 使用 SSH 协议进行加密,确保传输过程中的文件和命令的保密性和完整性。

六、性能

nvidia-smi -l 1

NVIDIA System Management Interface
-l 1:是该工具的一个参数,表示以每秒 1 次的loop刷新输出

  1. GPU 信息:
    GPU:表示 GPU 的编号。例如,GPU 0、GPU 1 等,这个编号通常是按照设备的插槽顺序分配的。
    GPU-Name:显示 GPU 的具体型号,例如 Tesla T4、GeForce RTX 3090 等。
    Bus-Id:表示 GPU 在系统中的 PCI 总线地址(例如 00000000:00:1E.0),可以帮助区分不同的 GPU。
    Disp.A:表示是否有显示器连接到该 GPU。如果显示器连接,通常显示 On,如果没有显示器连接,显示 Off。
  2. GPU 使用情况:
    GPU-Util:表示 GPU 的当前计算利用率,范围从 0% 到 100%。显示 GPU 在进行计算时的负载情况。如果 GPU 没有进行计算或处于空闲状态,值通常为 0%。
    Memory-Usage:显示 GPU 显存的使用情况。格式通常为 XMiB / YMiB,其中 X 是已用的显存,Y 是总显存大小。例如 100MiB / 8192MiB 表示已用显存为 100MiB,总显存为 8GB。
    GPU Temp:表示 GPU 当前的温度,单位是摄氏度(°C)。GPU 温度过高可能会影响性能,并且可能会自动降低性能以避免过热。
    Power-Usage:显示 GPU 当前的功耗,单位为瓦特(W)。这表明 GPU 在运行时的功率消耗情况。
    Fan Speed:表示 GPU 风扇的转速,单位是 RPM(转/分钟)。如果 GPU 温度过高,风扇转速通常会增大,以提供更多的冷却。
  3. 计算进程(Processes):
    PID (Process ID):显示正在使用 GPU 的进程的 ID。每个正在运行的程序都会有一个唯一的进程 ID。
    User:显示启动该进程的用户。例如,root 或 user。
    GPU Memory Usage:显示该进程使用的 GPU 显存大小。例如,100MiB 表示该进程已使用了 100MB 显存。
    Type:显示该进程是计算任务(C)还是显示任务(G)。例如,C 表示该进程在执行计算任务,G 表示该进程用于显示或渲染图形。
    Process Name:显示该进程的名称,通常是启动该进程的应用程序的名称,如 python、tensorflow 等。
    Memory-Usage:显示该进程占用的显存量。如果该值较高,表示该进程正在进行大型计算任务。
  4. 驱动与 CUDA 版本:
    Driver Version:显示当前系统安装的 NVIDIA 驱动版本。例如,460.39 表示安装了 NVIDIA 460.39 版本的驱动。
    CUDA Version:显示当前系统支持的 CUDA 版本。

如果发现GPU利用率较低时可以按下述方法排查瓶颈

如果GPU占用率为0说明代码可能没有使用GPU,需检查代码。

如果GPU占用率忽高忽低、占用率峰值在50%以下,那么可能是数据预处理跟不上GPU的处理速度 数据处理和CPU挂钩

如果CPU占用率远没有达到N00%的,说明您的代码没有把CPU的算力压榨出来,一般可以通过修改Torch Dataloader中的worker_num提高CPU负载,经验值num_worker = 略小于核心数量,最好测试不同worker num值对性能的影响。

numpy

NumPy会使用OpenBlas或MKL做计算加速。Intel的CPU支持MKL,AMD CPU仅支持OpenBlas。

如果使用Intel的CPU,MKL会比OpenBlas有几倍的性能提升(部分矩阵计算),对最终的性能影响非常大。一般来说AMD CPU使用OpenBlas会比Intel的CPU使用OpenBlas更快,因此不用过份担心AMD CPU使用OpenBlas的性能差。
在使用清华等国内的Conda源时,安装NumPy时默认会使用OpenBlas的加速方案
我的设备是:::

在这里插入图片描述
所以不用修改了
修改的话参考:::Pref

# 第一步:卸载当前的NumPy
pip uninstall numpy (如果是conda安装的, conda uninstall numpy)
# 第二步:删除国内的Conda源
echo "" > /root/.condarc
# 第三步:重新安装NumPy
conda install numpy

其余经验

如果您在使用单机多卡并行,并且使用了PyTorch框架,那么一般将torch.nn.DataParallel (DP)更换为torch.nn.DistributedDataParallel (DDP) 能提升性能。官方原文是:DistributedDataParallel offers much better performance and scaling to multiple-GPUs.

相关文章:

start DL from stratch (2)!!!

start DL from stratch &#xff08;2&#xff09;!!! 一、CPU and GPUcpuGPU安培架构爱达洛夫莱斯架构 二、使用conda创建一个新的虚拟环境三、autodl操作先知Linux复习目录文件和数据上传对于整个镜像的操作守护进程Tips 四、autodl租用创建实例<big>没有所需要的版本的…...

【深入浅出:Core-JS Legacy 的降级兼容指南】

深入浅出&#xff1a;Core-JS Legacy 的降级兼容指南 &#x1f6e0;️ &#x1f30d; 背景与核心概念 为什么需要 Polyfill&#xff1f; 随着 ECMAScript 标准的快速迭代&#xff08;ES6/ES2015&#xff09;&#xff0c;现代浏览器对新特性的支持存在碎片化问题。旧版浏览器&am…...

通义灵码插件安装入门教学 - IDEA(安装篇)

在开发过程中&#xff0c;使用合适的工具和插件可以极大地提高我们的工作效率。今天&#xff0c;我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件&#xff0c;这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者&#xff0c;本文都将为你提供…...

STM32之时钟树

左边是时钟产生电路&#xff0c;右边是时钟分配电路。中间的SYSCLK就是系统时钟72MHz&#xff0c;在产生电路有四个时钟源&#xff0c;分别是内部8MHz高速RC振荡器&#xff0c;外部的4-16MHz高速石英晶体振荡器&#xff0c;这个一般接8MHz,第三个是外部的32.768kHz低速晶振&…...

Unity插件-Mirror使用方法(一)Mirror介绍

目录 一、使用介绍 二、插件介绍 1、简述 2、核心功能与特点 基于组件的高层抽象 服务器-客户端架构 序列化与同步 可扩展性与灵活性 跨平台支持 社区与生态 3、典型应用场景 4、基本使用示例 安装 设置 NetworkManager 同步变量与 RPC 5、优缺点对比 6、为什…...

HVAC 设计:使用 Ansys Discovery 探索更好的设计

通过 Ansys Discovery 及其 2025 年新功能利用 CFD&#xff0c;通过 Computational Insights 应对 HVAC 行业的挑战。 挑战 HVAC 行业在设计高效可靠的管道系统方面面临多项挑战&#xff1a; 压力损失&#xff1a;设计不当的管道会增加能耗并降低热性能。复杂的几何形状&…...

ChatGPT 提示词框架

作为一个资深安卓开发工程师&#xff0c;我们在日常开发中经常会用到 ChatGPT 来提升开发效率&#xff0c;比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力&#xff0c;我们需要掌握一些提示词&#xff08;Prompt&#xff09;的编写技巧&#xff0c;并…...

004-利用Docker安装Mysql

利用Docker安装Mysql 一、在镜像仓库找到 Mysql1.镜像仓库地址2.复制命令3.下载Mysql镜像4.查看镜像 二、创建实例并启动三、用本地工具连接数据库四、设置 Mysql 配置 一、在镜像仓库找到 Mysql 1.镜像仓库地址 https://hub.docker.com 2.复制命令 docker pull mysql:8.0…...

Dify使用和入门

第一步&#xff1a;了解 Dify 在开始之前&#xff0c;先简单了解一下 Dify 是什么&#xff1a; Dify 是一个开源的 LLM 应用开发平台&#xff0c;专注于帮助开发者快速构建生产级的生成式 AI 应用。它支持知识库集成、RAG&#xff08;检索增强生成&#xff09;技术、复杂工作…...

高效管理 React 状态和交互:我的自定义 Hooks 实践

高效管理 React 状态和交互&#xff1a;自定义 Hooks 实践 在 React 中&#xff0c;Hooks 是一种使我们能够在函数组件中使用状态和副作用的强大工具。随着项目的增大&#xff0c;重复的逻辑可能会出现在多个组件中&#xff0c;这时使用自定义 Hooks 就非常合适。它们帮助我们…...

ESP 32控制无刷电机2

import machine import time import socket import network from machine import I2C, Pin, ADC def start_ap(): """ 启动ESP32的AP模式 """ ap network.WLAN(network.AP_IF) ap.active(True) ssid ESP32_APTest …...

揭开人工智能中 Tokens 的神秘面纱

揭开人工智能中 Tokens 的神秘面纱 在人工智能&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;"tokens" 是一个频繁出现且至关重要的概念。对于理解语言模型如何处理和理解人类语言&#xff0c;tokens 起着基础性的作用。那么&#xff…...

萌新学 Python 之 random 函数

random 模块&#xff1a;主要用来生成随机数 先导入包&#xff1a;import random randint(a, b)&#xff0c;生成 [a, b] 之间的整数&#xff0c;包含边界 a 和 b&#xff0c;a 和 b 为整数 random()&#xff0c;生成的是 [0,1) 之间的浮点数&#xff0c;包含 0 不包含 1 r…...

2-2linux系统IO

文章目录 linux系统文件io1 open /close1.1 open1.2 close1.3 示例1.3.1 打开已经存在的文件 2 read/write2.1 read2.2 write使用 遗留问题&#xff1a;新创建的文件权限很奇怪3 lseek3.1 文件指针的移动3.2 文件拓展 perror函数 linux系统文件io 系统函数是系统专有的函数&am…...

周边游平台设计与实现(代码+数据库+LW)

摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对旅游信息管理的提升&#xff0c…...

视频批量分段工具

参考原文&#xff1a;视频批量分段工具 选择视频文件 当您启动这款视频批量分段工具程序后&#xff0c;有两种便捷的方式来选择要处理的视频文件。其一&#xff0c;您可以点击程序界面中的 “文件” 菜单&#xff0c;在下拉选项里找到 “选择视频文件” 按钮并点击&#xff1b…...

Android -- 使用Sharepreference保存List储存失败,原因是包含Bitmap,drawable等类型数据

1.报错信息如下&#xff1a; class android.content.res.ColorStateList declares multiple JSON fields named mChangingConfigurations 2.Bean类属性如下&#xff1a; data class AppInfoBean( val appName: String?, val appIcon: Drawable, val appPackage: String?,…...

java项目之基于ssm的图书馆书库管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的图书馆书库管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 该系统可以实现图书信息管理…...

编写一个程序,输入一个数字并输出其阶乘(Python版)

编写一个程序&#xff0c;输入一个数字并输出其阶乘 要计算一个数字的阶乘&#xff0c;可以编写一个简单的 Python 程序&#xff0c;使用循环或者递归来实现: 1. 使用 for 循环计算阶乘 # 输入一个数字 num int(input("请输入一个数字: "))# 初始化阶乘结果 facto…...

dify基础之prompts

摘要&#xff1a;在大型语言模型&#xff08;LLM&#xff09;应用中&#xff0c;Prompt&#xff08;提示词&#xff09;是连接用户意图与模型输出的核心工具。本文从概念、组成、设计原则到实践案例&#xff0c;系统讲解如何通过Prompt解锁LLM的潜能&#xff0c;提升生成内容的…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...