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

Linux常见设备

linux上设备的分类? 

         设备分两种,字符设备和块设备。

  • 块设备(Block Device):以固定大小数据块访问的设备(如磁盘、SSD),通常挂载后使用。

  • 字符设备(Character Device):按字符流访问的设备(如键盘、串口),无需挂载。

怎么查看系统的所有设备?

通过 /dev 目录查看

  • /dev 是Linux系统中设备文件的默认目录,包含所有已识别的块设备和字符设备。

  • 运行以下命令列出所有设备:

    bash

  • ls -l /dev
  • 若要区分类型:

    • 块设备(如磁盘、分区)显示为 b,例如:

      bash

    • ls -l /dev/sd* /dev/nvme* # 查看常见的块设备(SCSI/SATA/NVMe磁盘)

  • 字符设备(如终端、串口)显示为 c,例如:

    bash

    ls -l /dev/tty* /dev/input/*  # 查看终端和输入设备

怎么查看系统挂载了那些设备?  

1. 使用 mount 命令

最直接的方式是运行 mount 命令,它会列出所有当前挂载的文件系统(包括磁盘、分区、虚拟文件系统等):

bash

mount

或格式化输出:

bash

mount -l

输出示例

/dev/sda2 on / type ext4 (rw,relatime)
/dev/sdb1 on /mnt/data type xfs (rw,noatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev)

2. 查看 /proc/mounts 文件

Linux内核会将挂载信息实时记录到 /proc/mounts 中:

bash

cat /proc/mounts

此文件内容与 mount 命令类似,但格式更机器友好(每行包含设备、挂载点、文件系统类型、挂载选项等)。

3. 使用 df 命令(查看磁盘使用情况附带挂载点)

df 命令主要用于显示磁盘空间使用情况,但也会列出挂载点:

bash

df -hT

参数说明

  • -h:人类可读的容量单位(如 GB/MB)。

  • -T:显示文件系统类型。
    输出示例

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      ext4       50G   20G   28G  42% /
/dev/sdb1      xfs       100G   30G   70G  30% /mnt/data

4. 使用 findmnt 命令(推荐)

findmntutil-linux 包提供的工具,能以树形结构清晰展示挂载关系:

bash

findmnt

或指定设备名:

bash

findmnt /dev/sda1

输出示例

TARGET    SOURCE         FSTYPE OPTIONS
/         /dev/sda2     ext4   rw,relatime
├─/boot   /dev/sda1     vfat   rw,fmask=0022
└─/mnt    /dev/sdb1     xfs    rw,noatime

5. 查看 /etc/fstab/etc/mtab

  • /etc/fstab:系统启动时自动挂载的静态配置(不一定是当前已挂载的):

    bash

  • cat /etc/fstab
  • /etc/mtab:当前已挂载的文件系统(动态更新,内容与 mount 命令一致):

    bash

  • cat /etc/mtab

6. 过滤特定类型的挂载设备

  • 只显示物理设备(排除虚拟文件系统)

    bash

  • mount | grep '^/dev'
  • 只显示 tmpfsnfs 等特定类型

    bash

mount -t tmpfs,nfs

怎么查看系统加载了那些设备驱动?

通过 /proc/devices 查看已加载的设备驱动

  • 该文件列出了内核已识别的块设备和字符设备(按设备号分类):

    bash

cat /proc/devices

输出示例:

Character devices:1 mem4 /dev/vc/0
Block devices:8 sd

怎么卸载设备?

在 Linux 中卸载(卸载)设备通常指 卸载(umount)已挂载的文件系统安全移除硬件设备(如 USB、磁盘)。

1. 卸载文件系统(umount)

(1) 基本卸载命令

bash

sudo umount <挂载点或设备>

示例

bash

sudo umount /mnt/usb      # 通过挂载点卸载
sudo umount /dev/sdb1     # 通过设备名卸载

(2) 如果卸载失败(target is busy

设备可能被某个进程占用,解决方法:

① 查找占用进程并结束

bash

sudo lsof +f -- <挂载点或设备>   # 查看占用进程
sudo fuser -vm <挂载点或设备>    # 查看占用进程(更简洁)

结束进程

bash

sudo kill -9 <PID>                # 强制结束单个进程
sudo fuser -km <挂载点或设备>     # 结束所有相关进程
② 延迟卸载(Lazy Unmount)

强制卸载,等设备不再使用时自动卸载:

bash

sudo umount -l <挂载点或设备>

2. 安全移除硬件设备(如 USB、磁盘)

(1) 确保设备未被占用

bash

sudo sync   # 确保所有数据写入设备
sudo umount /dev/sdb1  # 卸载文件系统

(2) 使用 udisksctl(适用于桌面环境)

bash

udisksctl unmount -b /dev/sdb1      # 卸载
udisksctl power-off -b /dev/sdb     # 安全移除(物理断电)

(3) 使用 eject(适用于光驱/USB)

bash

sudo eject /dev/sdb     # 弹出设备

3. 卸载 LVM/加密设备

(1) 卸载 LVM 逻辑卷

bash

sudo umount /dev/mapper/vg0-lv0   # 先卸载文件系统
sudo vgchange -an vg0             # 停用卷组

(2) 卸载加密设备(LUKS)

bash

sudo umount /mnt/encrypted        # 卸载文件系统
sudo cryptsetup close encrypted   # 关闭加密设备

4. 卸载网络文件系统(NFS/CIFS)

bash

sudo umount -f /mnt/nfs   # 强制卸载(NFS)
sudo umount -t cifs /mnt/smb  # 卸载 SMB/CIFS

5. 卸载内核模块(驱动)

如果设备关联内核模块(如 USB 驱动):

bash

lsmod | grep usb_storage   # 查看相关模块
sudo modprobe -r usb_storage  # 卸载模块(谨慎操作!)

常见问题

Q1: umount 报错 device is busy

  • 使用 lsoffuser 查找占用进程并结束。

  • 仍无法解决?尝试 umount -l(延迟卸载)。

Q2: USB 设备无法安全移除

  • 确保所有文件已关闭,终端未在挂载目录下。

  • 使用 udisksctl power-offeject

Q3: 卸载后设备仍显示(如 /dev/sdb

  • 这是正常的,设备节点仍存在,但数据已同步。

总结

场景命令
普通卸载sudo umount /mnt/usbsudo umount /dev/sdb1
强制结束占用进程sudo fuser -km /mnt/usbsudo lsof +f -- /mnt/usb
延迟卸载sudo umount -l /mnt/usb
安全移除硬件udisksctl power-off -b /dev/sdbsudo eject /dev/sdb
卸载 LVMsudo umount /dev/mapper/vg0-lv0sudo vgchange -an vg0
卸载加密设备sudo umount /mnt/encryptedsudo cryptsetup close encrypted

注意:卸载前确保数据已同步(sync),避免数据丢失


有哪些特殊的设备?

1. 设备分类

(1) 块设备(Block Device)

  • 特点

    • 按固定大小的数据块(如 512B、4KB)进行读写。

    • 支持随机访问(如磁盘、SSD)。

    • 通常用于存储设备,可以挂载文件系统。

  • 典型设备

    • /dev/sda(SATA/SCSI 磁盘)

    • /dev/nvme0n1(NVMe SSD)

    • /dev/loop0(回环设备,用于挂载镜像文件)

    • /dev/md0(RAID 设备)

(2) 字符设备(Character Device)

  • 特点

    • 按字节流(stream)访问,不支持随机寻址。

    • 通常用于串行通信、终端、输入设备等。

  • 典型设备

    • /dev/tty(终端设备)

    • /dev/null(黑洞设备,丢弃所有写入数据)

    • /dev/zero(提供无限 \0 字节)

    • /dev/random/dev/urandom(随机数生成器)

    • /dev/input/mice(鼠标输入)

2. 特殊设备

除了块设备和字符设备,Linux 还有一些特殊的设备:

(1) 网络设备(Network Device)

  • 特点

    • 不属于 /dev,而是由内核网络子系统管理。

    • 通过 ifconfigip addr 查看。

  • 典型设备

    • eth0(传统以太网卡)

    • wlan0(无线网卡)

    • lo(本地回环设备)

(2) 伪终端设备(PTY, Pseudo Terminal)

  • 特点

    • 模拟终端,用于 SSH、终端仿真器(如 xterm)。

  • 典型设备

    • /dev/pts/0(第一个伪终端)

    • /dev/tty1(第一个虚拟控制台)

(3) 虚拟设备(Virtual Device)

  • 特点

    • 不关联物理硬件,由内核或用户空间程序模拟。

  • 典型设备

    • /dev/null(丢弃所有写入,返回 EOF 读取)

    • /dev/zero(提供无限 \0 字节)

    • /dev/full(写入时返回 ENOSPC 错误,模拟满设备)

    • /dev/random/dev/urandom(随机数生成)

(4) 设备映射器(Device Mapper)

  • 特点

    • 用于 LVM、磁盘加密(LUKS)、快照等高级存储功能。

  • 典型设备

    • /dev/mapper/lvm-root(LVM 逻辑卷)

    • /dev/dm-0(Device Mapper 设备)

(5) 内存设备(Memory Device)

  • 特点

    • 直接操作内存,不涉及磁盘 I/O。

  • 典型设备

    • /dev/mem(直接访问物理内存,危险!)

    • /dev/kmem(访问内核虚拟内存)

    • tmpfs(内存文件系统)

(6) 音频设备(Audio Device)

  • 特点

    • 用于声音输入/输出。

  • 典型设备

    • /dev/snd/*(ALSA 音频设备)

    • /dev/dsp(旧版 OSS 音频设备)

(7) 视频设备(Video Device)

  • 特点

    • 用于摄像头、帧缓冲(framebuffer)。

  • 典型设备

    • /dev/video0(第一个摄像头)

    • /dev/fb0(帧缓冲设备,用于图形显示)

(8) 串口设备(Serial Device)

  • 特点

    • 用于串行通信(如 UART、RS-232)。

  • 典型设备

    • /dev/ttyS0(第一个串口)

    • /dev/ttyUSB0(USB 转串口设备)

3. 如何查看设备类型?

(1) 使用 ls -l /dev 查看设备类型

bash

ls -l /dev/sda /dev/tty1 /dev/null

输出示例

brw-rw---- 1 root disk 8, 0 May 10 10:00 /dev/sda   # b=块设备
crw-rw-rw- 1 root root 5, 2 May 10 10:00 /dev/pts/0 # c=字符设备
  • b 开头 → 块设备

  • c 开头 → 字符设备

(2) 使用 file 命令

bash

file /dev/sda

输出

/dev/sda: block special (8/0)  # 块设备

(3) 使用 stat 命令

bash

stat /dev/null

输出

Device: 5h/5d   Inode: 1       Links: 1 Device type: 1,3
  • Device type 中的 1,3 表示主设备号 1,次设备号 3。

4. 特殊设备的作用

设备类型用途
/dev/null字符设备丢弃所有写入,读取返回 EOF
/dev/zero字符设备提供无限 \0 字节
/dev/random字符设备真随机数(可能阻塞)
/dev/urandom字符设备伪随机数(不阻塞)
/dev/full字符设备写入返回 ENOSPC(模拟磁盘满)
/dev/loop0块设备挂载镜像文件(如 ISO)
/dev/mem字符设备直接访问物理内存(危险!)
/dev/tty字符设备当前进程的控制终端

5. 总结

  • 块设备:用于存储(磁盘、SSD、LVM)。

  • 字符设备:用于流式 I/O(终端、随机数、音频)。

  • 特殊设备

    • /dev/null/dev/zero/dev/random 常用于脚本和编程。

    • 网络设备(eth0wlan0)不由 /dev 管理。

    • 伪终端(/dev/pts/*)用于 SSH 和终端仿真。

    • 虚拟设备(/dev/loop/dev/mapper)用于高级存储管理。

这些设备在 Linux 系统中扮演重要角色,理解它们的用途有助于系统管理和故障排查


怎么查看设备被那个进程使用?

在 Linux 中,如果某个设备(如磁盘、USB、光驱等)正在被进程使用,可能会导致无法卸载(umount 失败)或出现 device is busy 错误。

1. 使用 lsof 命令(推荐)

lsof(List Open Files)可以列出所有打开的文件和设备的进程信息。
语法

bash

sudo lsof /dev/<设备名>      # 查看特定设备
sudo lsof <挂载点>          # 查看挂载目录

示例

bash

sudo lsof /dev/sdb1         # 查看谁在使用 /dev/sdb1
sudo lsof /mnt/usb          # 查看谁在访问 /mnt/usb

输出示例

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1234 root  cwd    DIR   8,17     4096    2 /mnt/usb
vim     5678 user    4u   REG   8,17     1024    3 /mnt/usb/file.txt
  • COMMAND:进程名(如 bashvim)。

  • PID:进程 ID,可以用 kill -9 <PID> 结束进程。

  • USER:运行该进程的用户。

  • FD:文件描述符(cwd=当前工作目录,mem=内存映射文件等)。

2. 使用 fuser 命令

fuser 可以显示正在使用某个设备或挂载点的进程 PID。
语法

bash

sudo fuser -v /dev/<设备名>    # 查看设备
sudo fuser -v <挂载点>        # 查看挂载目录
sudo fuser -vm /mnt/usb      # 显示详细信息

示例

bash

sudo fuser -v /dev/sdb1
sudo fuser -vm /mnt/usb

输出示例

                     USER        PID ACCESS COMMAND
/mnt/usb:            root     kernel mount /mnt/usbalice    1234 ..c.. bash
  • ACCESS 列:

    • c:当前目录在该挂载点。

    • f:打开的文件在该挂载点。

    • m:内存映射文件(如 lib 库或 mmap 文件)。

结束占用进程

bash

sudo fuser -km /mnt/usb    # 强制结束所有占用 /mnt/usb 的进程

3. 使用 lsblk + lsof 结合

如果想查看所有挂载的设备及其占用情况:

bash

lsblk                     # 查看块设备
sudo lsof /dev/sdb1       # 查看特定设备的进程

4. 特殊情况:umount 失败时如何查找进程

如果 umount 报错 target is busy,可以:

bash

sudo umount -l /mnt/usb   # 延迟卸载(lazy unmount),等设备不再使用时自动卸载

或者:

bash

sudo lsof +f -- /mnt/usb  # 强制检查挂载点
sudo fuser -vm /mnt/usb   # 查看占用进程

5. 检查内核模块占用的设备

如果是内核模块(如 nfsdmdadm)占用设备,可以:

bash

dmesg | grep <设备名>      # 查看内核日志
lsmod | grep nfs          # 查看是否 NFS 相关模块占用

总结

方法命令适用场景
lsofsudo lsof /dev/sdb1查看具体哪个进程打开了设备文件
fusersudo fuser -vm /mnt/usb快速查看占用进程并结束
umount -lsudo umount -l /mnt/usb延迟卸载,避免 device is busy
lsblk + lsoflsblk + lsof结合查看块设备和进程

如果设备被占用,可以:

  1. 结束进程kill -9 <PID>fuser -km

  2. 延迟卸载umount -l

  3. 检查内核模块dmesglsmod


怎么查看设备的详细信息?

使用 udevadm 获取设备的属性和信息:

bash

udevadm info --query=all --name=/dev/sda  # 替换为你的设备名

loop设备

1. 什么是 loop 设备?

  • loop 设备 允许将 普通文件(如 .iso.snap 当作 块设备(如 /dev/sda1 挂载。

  • 常用于:

    • 挂载 ISO 镜像(如安装系统)。

    • Snap 应用(Ubuntu 的沙盒化软件包)。

    • Docker 容器存储。

2. 为什么会有这么多 loop 设备?

你列出的 loop 设备大多与 Snap 应用 相关:

  • /snap/core20/snap/core22 → Ubuntu Core 系统基础组件。

  • /snap/gnome-42-2204 → GNOME 桌面环境 Snap 版。

  • /snap/lxd → LXD 容器管理工具。

  • /snap/snapd → Snap 守护进程。

每次安装或更新 Snap 应用时,可能会生成新的 loop 设备。

3. 如何管理 loop 设备?

(1) 查看所有 loop 设备

bash

losetup -a  # 查看所有活跃的 loop 设备

或:

bash

lsblk | grep loop  # 列出所有 loop 设备及其挂载点

(2) 手动挂载/卸载 loop 设备

  • 挂载 ISO 文件

    bash

  • sudo mount -o loop ubuntu.iso /mnt/iso
  • 卸载 loop 设备

    bash

  • sudo umount /snap/core20/2496  # 先卸载挂载点
    sudo losetup -d /dev/loop2     # 再释放 loop 设备

(3) 清理未使用的 loop 设备

bash

sudo apt purge --autoremove snapd  # 卸载 Snap(谨慎操作,可能影响系统)

或手动清理:

bash

sudo losetup -D  # 强制释放所有未使用的 loop 设备

4. 如何减少 loop 设备数量?

方法 1:限制 Snap 自动挂载

bash

sudo systemctl disable snapd.service  # 禁用 Snap 服务(谨慎)
sudo systemctl stop snapd.service

方法 2:改用传统 .deb

bash

sudo apt install gnome-software --install-recommends  # 用 apt 替代 Snap

方法 3:调整 loop 设备上限

bash

echo "options loop max_loop=16" | sudo tee /etc/modprobe.d/loop.conf  # 限制最多 16 个
sudo update-initramfs -u  # 更新内核配置
sudo reboot  # 重启生效

5. 常见问题

Q1: loop 设备占用太多空间?

  • Snap 应用会占用 /var/lib/snapd 空间,清理旧版本:

    bash

  • sudo snap remove --purge <package>  # 删除特定 Snap
    sudo snap list --all | grep disabled | awk '{print $1}' | xargs -n1 sudo snap remove --purge  # 清理旧版本

Q2: 能安全删除 loop 设备吗?

  • 不要直接删除 /dev/loopX,应该先卸载关联的 Snap:

    bash

  • sudo snap remove gnome-42-2204  # 示例

Q3: 为什么 df -h 显示很多 loop

  • Snap 应用默认挂载为 squashfs(只读压缩文件系统),df 会显示它们。

6. 总结

操作命令
查看 loop 设备losetup -a / lsblk | grep loop
卸载 loop 设备sudo umount /snap/xxx + sudo losetup -d /dev/loopX
清理 Snap 旧版本sudo snap remove --purge <package>
禁用 Snap 服务sudo systemctl disable --now snapd

如果你的系统 loop 设备过多,可以:

  1. 卸载不用的 Snap 应用

  2. 改用 apt 安装软件(减少 Snap 依赖)。

  3. 调整 max_loop 限制(避免无限增长)。


相关文章:

Linux常见设备

linux上设备的分类? 设备分两种&#xff0c;字符设备和块设备。 块设备&#xff08;Block Device&#xff09;&#xff1a;以固定大小数据块访问的设备&#xff08;如磁盘、SSD&#xff09;&#xff0c;通常挂载后使用。 字符设备&#xff08;Character Device&#xff09;&…...

AI大模型学习二十八、ACE-Step:生成式AI音乐大模型简介与安装(一)

一、说明 先来一首创作的歌&#xff1a; 在大模型和生成式AI模型大规模发达的今天&#xff0c;利用大模型生成音乐也是其中一个重要的发展方向。今天我们就介绍一个这样的音乐生成模型ACE-Step&#xff0c;可基于关键字和歌词生成歌曲&#xff1b;基于歌曲生成伴奏等等功能。 …...

AI时代新词-AI芯片(AI - Specific Chip)

一、什么是AI芯片&#xff1f; AI芯片&#xff08;AI - Specific Chip&#xff09;是指专为人工智能&#xff08;AI&#xff09;计算任务设计的芯片。与传统的通用处理器&#xff08;如CPU&#xff09;相比&#xff0c;AI芯片针对深度学习、机器学习等AI应用进行了优化&#x…...

【多智能体系统开发框架AutoGen解析与实践】

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心架构图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现案例1&#xff1a;基础问答系统案例2&#xff1a;多专家协作 运行结果验证 三、性能对比测试方法论量化…...

接口性能测试-工具JMeter的学习

接口登录链接http://111.230.19.204:8080/blog_login.html 一、JMeter基本使用流程 1、启动Jmeter 2、在“测试计划”下添加线程组 3、在“线程组”下添加“HTTP”取样器 4、填写“HTTP请求”的相关请求数据 5、在“线程组”下添加“查看结果树”监听器 6、点击“启动”按钮…...

python如何离线安装pandas,numpy

1.首先在有网的电脑上正常安装python&#xff08;和离线环境一样的版本&#xff09; 然后 pip install pandas &#xff08;不嫌麻烦的话也可以自己手动去pandas PyPI​​​​​​​ 一个个下载&#xff09; 安装好后导出相关包&#xff0c;使用如下指令 2.然后相关依赖包就…...

Java Swing 自定义JOptionPane

运行后的样式 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class demoB {public static void main(String[] args) {SwingUtilities.invokeLater(() -> {JFrame jf new JFrameDemo();jf.se…...

项目亮点 封装request请求模块

封装网络请求模块 统一管理和复用 在项目根目录的utils文件夹下 request模块更新 const http axios.create({baseURL: http://geek.itheima.net/v1_0,timeout: 5000 })定义根域名和超时时间 请求拦截器 请求发送之前拦截&#xff0c;做自定义的配置 // 添加请求拦截器 re…...

通过 Terraform 构建您的第一个 Azure Linux 虚拟机

欢迎来到 Azure Terraformer 第一期,我们将深入探讨如何在 Azure 上使用 Terraform 构建强大且可扩展的云解决方案。今天,我们将演示如何为 Azure Linux 虚拟机 (VM) 预配相关资源,例如资源组、公共 IP、网络接口和子网,以及如何从 Azure Key Vault 安全地获取 SSH 公钥。我…...

Linux连接服务器全攻略:从基础到进阶

在Linux系统下连接服务器是开发、运维人员的必备技能。无论是远程管理服务器、传输文件&#xff0c;还是进行开发调试&#xff0c;熟练掌握连接服务器的方法都能大幅提升工作效率。本文将从原理到实操&#xff0c;带你全面掌握Linux连接服务器的多种方式。 一、SSH协议基础 SSH…...

pg库分表操作步骤- PostgreSQL 分区表

原表结构 CREATE TABLE message (id VARCHAR(32) PRIMARY KEY,t_id VARCHAR(32),content TEXT,time TIMESTAMP,user_id VARCHAR(10),receive_user_id VARCHAR(10),type SMALLINT,send_flag SMALLINT,remark VARCHAR(50),receive_time TIMESTAMP );一、主表定义&#xff08;父表…...

讯飞AI相关sdk集成springboot

星火认知大模型对话&#xff1a;&#xff08;以spark 4.0 ultra 为例&#xff09; demo上的功能比较简陋&#xff0c;网络上搜到的比较残缺&#xff0c;很多功能缺失&#xff0c;我这里自己收集资料和运用编程知识做了整理&#xff0c;得到了自己想要的一些功能&#xff0c;比…...

在麒麟系统(Kylin OS)上安装`geckodriver`

在麒麟系统&#xff08;Kylin OS&#xff09;上安装geckodriver并配置其通过--connect-existing和--marionette-port 2828参数连接到已存在的Firefox实例&#xff0c;可以按照以下步骤操作&#xff1a; 1. 安装Firefox浏览器 在麒麟系统中&#xff0c;可以通过以下命令安装Fi…...

【图像大模型】Stable Diffusion XL:下一代文本到图像生成模型的技术突破与实践指南

Stable Diffusion XL&#xff1a;下一代文本到图像生成模型的技术突破与实践指南 一、架构设计与技术演进1.1 核心架构革新1.2 关键技术突破1.2.1 双文本编码器融合1.2.2 动态扩散调度 二、系统架构解析2.1 完整生成流程2.2 性能指标对比 三、实战部署指南3.1 环境配置3.2 基础…...

[闲谈]C语言的面向对象

C语言的面向对象 文章目录 C语言的面向对象一、面向对象编程的核心概念1. 封装2. 继承3. 多态 二、C语言实现封装的方法1. 定义结构体封装数据2. 实现成员方法3. 初始化对象4.应用场景5.注意事项 三、模拟继承的两种模式详解1. 组合模式&#xff08;Composition Pattern&#x…...

C 语言指针之手写内存深度剖析与手写库函数:带你从0开始手撸库 附录1.5 万字实战笔记

一、指针入门&#xff1a;从野指针到空指针 1.1 野指针的第一次暴击&#xff1a;沃日 哪里来的Segmentation Fault &#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 刚学指针时写过一段让我及其楠甭的代码,我x了xx的&#xff0c;最后才发现是为…...

C#高级:Winform桌面开发中CheckedListBox的详解

一、基础设置 单击触发选择效果&#xff1a;需要选择下面这个为True 二、代码实现 1.设置数据源 /// <summary> /// 为CheckBoxList设置数据源 /// </summary> /// <param name"checkedListBox1"></param> /// <param name"data&…...

【Java学习笔记】final关键字

final 关键字 一、final 关键字介绍 1. final可以修饰类、属性、方法和局部变量 2. final 的使用场景 &#xff08;1&#xff09;类不能被继承时&#xff0c;可以使用final修饰 &#xff08;2&#xff09;类的某个属性不可以被更改&#xff0c;可以使用final修饰 &#xff0…...

AI学习笔记二十八:使用ESP32 CAM和YOLOV5实现目标检测

若该文为原创文章&#xff0c;转载请注明原文出处。 最近在研究使用APP如何显示ESP32 CAM的摄像头数据&#xff0c;看到有人实现把ESP32 CAM的数据流上传&#xff0c;通过YOLOV5来检测&#xff0c;实现拉流推理&#xff0c;这里复现一下。 一、环境 arduino配置esp32-cam开发环…...

免费分享50本web全栈学习电子书

最近搞到一套非常不错的 Web 全栈电子书合集&#xff0c;整整 50 本&#xff0c;都是epub电子书格式&#xff0c;相当赞&#xff01;作为一个被期末大作业和项目 ddl 追着跑的大学生&#xff0c;这套书真的救我狗命&#xff01; 刚接触 Web 开发的时候&#xff0c;我天天对着空…...

【prometheus+Grafana篇】基于Prometheus+Grafana实现MySQL数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…...

全链路解析:影刀RPA+Coze API自动化工作流实战指南

在数字化转型加速的今天&#xff0c;如何通过RPA与API的深度融合实现业务自动化提效&#xff0c;已成为企业降本增效的核心命题。本文以「影刀RPA」与「Coze API」的深度协作为例&#xff0c;系统性拆解从授权配置、数据交互到批量执行的完整技术链路&#xff0c;助你快速掌握跨…...

高阶数据结构——哈希表的实现

目录 1.概念引入 2.哈希的概念&#xff1a; 2.1 什么叫映射&#xff1f; 2.2 直接定址法 2.3 哈希冲突&#xff08;哈希碰撞&#xff09; 2.4 负载因子 2.5 哈希函数 2.5.1 除法散列法&#xff08;除留余数法&#xff09; 2.5.2 乘法散列法&#xff08;了解&#xff09…...

window 显示驱动开发-报告渲染操作的可选支持

从 Windows 7 开始&#xff0c;显示微型端口驱动程序可以在 DXGK_PRESENTATIONCAPS 结构中设置其他成员&#xff0c;以指示驱动程序可以或不能支持的某些呈现操作。 从 Windows 7 开始&#xff0c;显示微型端口驱动程序可以通过 DXGK_PRESENTATIONCAPS 结构进一步声明其支持的…...

2025 年网络安全趋势报告

一、引言 自欧洲信息安全协会&#xff08;Infosecurity Europe&#xff09;首次举办活动的 30 年来&#xff0c;网络安全格局发生了翻天覆地的变化。如今&#xff0c;网络安全领导者必须应对众多威胁&#xff0c;维持法规合规性&#xff0c;并与董事会成员合作推进组织的网络安…...

uniapp 条件筛选

v3 版本 <template><view class"store flex "><view class"store_view"><view class"store_view_search flex jsb ac"><!-- <view class"store_view_search_select">全部</view> --><v…...

pytorch问题汇总

conda环境下 通过torch官网首页 pip安装 成功运行 后面通过conda安装了别的包 似乎因为什么版本问题 就不能用了 packages\torch_init_.py", line 245, in _load_dll_libraries raise err OSError: [WinError 127] 找不到指定的程序。 Error loading ackages\torch\lib\c…...

开发过的一个Coding项目

一、文档资料、人员培训&#xff1a; 1、文档资料管理&#xff1a;这个可以使用OnLineHelpDesk。 2、人员培训&#xff1a;可以参考Is an Online Medical Billing and Coding Program Right for You - MedicalBillingandCoding.org。 3、人员招聘、考核&#xff1a;可以在Onli…...

数据仓库维度建模详细过程

数据仓库的维度建模&#xff08;Dimensional Modeling&#xff09;是一种以业务用户理解为核心的设计方法&#xff0c;通过维度表和事实表组织数据&#xff0c;支持高效查询和分析。其核心目标是简化复杂业务逻辑&#xff0c;提升查询性能。以下是维度建模的详细过程&#xff1…...

python打卡day37

早停策略和模型权重保存 知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 是否过拟合&#xff0c;可以通过同步打印训练集和测试集的loss曲线…...