查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息

在这里插入图片描述

文章目录

  • 摘要
    • 1. 查询CPU使用率命令:top -bn1 | grep \"Cpu(s)\" | awk '{split($0,arr,\" \");print 100-arr[8]}'
    • 2. 查询内存命令(单位:G):top -bn1 | grep \"KiB Mem\" | awk '{split($0,arr,\" \");print arr[4]/1024/1024,arr[8]/1024/1024}'
    • 3.查询磁盘命令:df -h / | tail -n +2 | grep -v "Filesystem" | awk '{split($0,arr," ");print arr[2],arr[3],arr[5]}'
    • 4.查询网络IO命令:ifstat
    • 5.查询文件服务器中数据库空间占用大小命令:df -h /home/ems/3rdparty/mysql/data
    • 6.查询每秒存储队列信息命令:vmstat -d|grep sda|awk '{print $11}'
    • 7.查询IOPS信息命令:iostat -d|grep sda|awk '{print $3" "$4}'
    • 8.查询文件系统中磁盘使用情况命令:df -BG
  • 代码

摘要

1. 查询CPU使用率命令:top -bn1 | grep “Cpu(s)” | awk ‘{split($0,arr," ");print 100-arr[8]}’

[root@unm5800 ~]# top -bn1 | grep "Cpu(s)" | awk '{split($0,arr," ");print 100-arr[8]}'
8.7

2. 查询内存命令(单位:G):top -bn1 | grep “KiB Mem” | awk ‘{split($0,arr," ");print arr[4]/1024/1024,arr[8]/1024/1024}’

[root@unm5800 ~]# top -bn1 | grep "KiB Mem" | awk '{split($0,arr," ");print arr[4]/1024/1024,arr[8]/1024/1024}'
15.1709 9.70124

3.查询磁盘命令:df -h / | tail -n +2 | grep -v “Filesystem” | awk ‘{split($0,arr," ");print arr[2],arr[3],arr[5]}’

[root@unm5800 ~]# df -h / | tail -n +2 | grep -v "Filesystem" | awk '{split($0,arr," ");print arr[2],arr[3],arr[5]}'
296G 153G 55%

4.查询网络IO命令:ifstat

[root@unm5800 ~]# ifstat
#kernel
Interface        RX Pkts/Rate    TX Pkts/Rate    RX Data/Rate    TX Data/Rate  RX Errs/Drop    TX Errs/Drop    RX Over/Rate    TX Coll/Rate  
lo                10764K 0        10764K 0      18446744070881M 0      18446744070881M 0      0 0             0 0             0 0             0 0      
enp91s0f0          9181K 0        19534K 0      18446744071947M 0       220464K 0      0 0             0 0             0 0             0 0      
enp91s0f1              0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
eno1              609746 0         1161K 0       128777K 0       940272K 0      0 4546          0 0             0 0             0 0      
enp91s0f2              0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
eno2                   0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
enp91s0f3              0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
enp0s20f0u1u6      31847 0             0 0         2316K 0             0 0      0 0             0 0             0 0             0 0      
virbr0                 0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
docker0                0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
br-070bd1b4b466        0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
br-08fd260a964c        0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
br-67b9049e39d6     1494 0          1494 0         59760 0        170316 0      0 0             0 0             0 0             0 0      
br-e3d56b9f14ab        0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
br-014f940f0996        0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
vethf216528            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
veth930c642            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
veth5bb57ee            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
veth154692a            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
vethc30949a         1494 0          1494 0         80676 0        170316 0      0 0             0 0             0 0             0 0      
veth821f11e            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
veth6bb839e            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0      
veth9671271            0 0             0 0             0 0             0 0      0 0             0 0             0 0             0 0

这些字段是用于描述ifstat命令输出结果中的网络接口的信息。下面是对这些字段的介绍:

  • ifstat <网络接口名称>
  • Interface(接口):网络接口的名称。
  • RX Pkts/Rate(接收数据包数/速率):接收的数据包数量和速率。
  • TX Pkts/Rate(发送数据包数/速率):发送的数据包数量和速率。
  • RX Data/Rate(接收数据量/速率):接收的数据量(以字节为单位)和速率。
  • TX Data/Rate(发送数据量/速率):发送的数据量(以字节为单位)和速率。
  • RX Errs/Drop(接收错误/丢弃):接收过程中产生的错误和丢弃的数据包数量。
  • TX Errs/Drop(发送错误/丢弃):发送过程中产生的错误和丢弃的数据包数量。
  • RX Over/Rate(接收溢出/速率):接收缓冲区溢出次数和速率。
  • TX Coll/Rate(发送冲突/速率):发送时发生碰撞的次数和速率。 这些字段提供了关于网络接口的

详细统计信息,包括数据包数量、数据量、速率、错误情况、丢弃情况、溢出情况和碰撞情况等。通过观察这些字段的数值,可以了解网络接口的使用情况、性能状况和可能存在的问题。

5.查询文件服务器中数据库空间占用大小命令:df -h /home/ems/3rdparty/mysql/data

[root@unm5800 ~]# df -h /home/ems/3rdparty/mysql/data
文件系统        容量    已用    可用   已用%   挂载点
/dev/sda1       296G  153G  128G   55%         /

6.查询每秒存储队列信息命令:vmstat -d|grep sda|awk ‘{print $11}’

[root@unm5800 ~]# vmstat -d|grep sda|awk '{print $11}'
28415
vmstat -d命令
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors      ms  total merged sectors      ms    cur    sec
sda   6321733 2992979 326537984 192604637 16335233 11611252 558374392 397953929      0 159463
dm-0  2017377      0 126201641 106958407 7052267      0 129722136 163552294      0  85875
dm-1  4396348      0 35174488 92541369 10793514      0 86348112 1687958320      0  21982
dm-2  3184149      0 165098377 75003459 6532775      0 342299704 396611035      0  89434

根据您提供的 vmstat -d 命令输出,磁盘统计信息中显示了以下设备:

  • sda:这是一个磁盘设备的名称,通常代表物理磁盘。它可能是你的系统上的主要硬盘。
  • dm-0、dm-1、dm-2:这些是表示设备映射(Device Mapper)的块设备名称。在 Linux 系统中,dm- 表示逻辑卷(Logical Volume)或软件 RAID(Redundant Array of Independent Disks)。
    Device Mapper 是 Linux 内核提供的一个模块,用于进行逻辑卷管理、软件 RAID、加密存储等操作。这些逻辑卷或软件 RAID 经过设备映射后,可以在操作系统中当作普通块设备使用。
    因此,vmstat -d 命令输出显示了系统上的物理磁盘 sda 和经过设备映射的逻辑卷或软件 RAID dm-0、dm-1、dm-2 的磁盘统计信息。

根据您提供的 vmstat -d 命令输出中的 sec 值为 159463,它表示每秒的输入/输出操作数。这个值是计算从系统启动到当前时刻的累积值。

在 vmstat -d 命令的输出中,sec 表示系统每秒钟处理的输入和输出操作的数量。这包括从磁盘读取的数据量、向磁盘写入的数据量以及其他可能的输入/输出操作(如网络数据传输等)。
因此,sec 值代表每秒的输入/输出操作数,既包括读取操作也包括写入操作。

7.查询IOPS信息命令:iostat -d|grep sda|awk ‘{print $3" "$4}’

[root@unm5800 ~]# iostat -d|grep sda|awk '{print $3" "$4}'
220.44 3219.56
iostat -d  是一个 Linux 命令,用于显示块设备的输入/输出统计信息。该命令会提供有关磁盘和存储设备的各种性能指标。
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain)    2023年08月16日  _x86_64_        (4 CPU)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              17.50       126.18       215.67  163243972  279015092
dm-0              7.00        48.77        50.08   63099436   64789492
dm-1             11.74        13.59        33.37   17587244   43174056
dm-2              7.51        63.79       132.21   82525552  171049324

运行 iostat -d 命令会显示如下信息:

  • Device(设备):列出了系统中的每个块设备,如硬盘驱动器、固态硬盘等。
  • tps(每秒传输请求数):表示每秒传输到设备的 I/O 请求的数量。包括读请求和写请求。
  • kB_read/s(每秒读取数据量):表示每秒从设备读取的数据量。
  • kB_wrtn/s(每秒写入数据量):表示每秒写入设备的数据量。
  • kB_read(读取的总数据量):表示自系统启动以来从设备读取的总数据量。
  • kB_written(写入的总数据量):表示自系统启动以来写入设备的总数据量。

这些指标可以帮助你了解块设备的性能状况,包括每秒的传输请求数量、读写速度以及设备的总体活动情况。

8.查询文件系统中磁盘使用情况命令:df -BG

[root@unm5800 ~]# df -BG
文件系统       1G-块  已用  可用 已用% 挂载点
devtmpfs          8G    0G    8G    0% /dev
tmpfs             8G    1G    8G    1% /dev/shm
tmpfs             8G    1G    7G   11% /run
tmpfs             8G    0G    8G    0% /sys/fs/cgroup
/dev/sda1       296G  153G  128G   55% /
overlay         296G  153G  128G   55% /var/lib/docker/overlay2/a42d4eb53de76f220eadbacbeecf268c53bc130615f5faf1b0472801bcae4492/merged
overlay         296G  153G  128G   55% /var/lib/docker/overlay2/59b75e561bd8b29088b503779940edbd2a0ad5518994e55a01db625407dfcf12/merged
overlay         296G  153G  128G   55% /var/lib/docker/overlay2/c7a3fd966d533eff6c199de317f6e815d6a1147665a7d81370fa71f4320df410/merged
overlay         296G  153G  128G   55% /var/lib/docker/overlay2/e3c1fe4e379a56b230e40d07d17cce6ba0330aebf3d25e85aa5d9e09ed2ee30a/merged
overlay         296G  153G  128G   55% /var/lib/docker/overlay2/2a5ea591d02955647e5f6c9e566b5c6a99d6ebed817bdc4c410e7b627c690622/merged
shm               1G    0G    1G    0% /var/lib/docker/containers/d6ad7cbc285e3e8d15477c891aded41533f6032c0a46297123a013ef35c12bd6/mounts/shm
shm               1G    0G    1G    0% /var/lib/docker/containers/f3ac596eb8e7a8a0454c8a90f3c1b23e52c5aab23911b335cbba3f5ed7f98574/mounts/shm
shm               1G    0G    1G    0% /var/lib/docker/containers/ccc00bbe149d20d0af4b8ccc581eebed79488742b06c21a93d1e4854d1ff0c83/mounts/shm
shm               1G    1G    1G    1% /var/lib/docker/containers/78f5e497c3104bd442776a272aac2d08abc1a2cdd8e8b917b44ee49e3b7f407a/mounts/shm
shm               1G    0G    1G    0% /var/lib/docker/containers/19835c87c59e5f6bb3f96f929b70076dc3d418089afe80aec63a7692a994b546/mounts/shm
tmpfs             2G    0G    2G    0% /run/user/0

代码

package com.util;import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import util.bean.MonitorPo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.DecimalFormat;public class StringUtilsTests2 {private static Logger log = LoggerFactory.getLogger(StringUtilsTests2.class);@Testvoid parseString1() {MonitorPo monitorPo = new MonitorPo();InputStream in = null;BufferedReader read = null;Process pro = null;String cmd = "";String[] cmds = null;try {getCPUInfo(cmd, cmds, monitorPo, pro, in, read);getMemoryInfo(cmd, cmds, monitorPo, pro, in, read);getDiskInfo(cmd, cmds, monitorPo, pro, in, read);getNetworkResourceInformation(cmd, cmds, monitorPo, pro, in, read);getUsageOfTheMysqlDiskSpaceInTheFileSystem(cmd, cmds, monitorPo, pro, in, read);getUsageOfTheDiskSpaceInTheFileSystem(cmd, cmds, monitorPo, pro, in, read);getIopsResourceInformation(cmd, cmds, monitorPo, pro, in, read);getStoresQueueInputOrOutputOperandsPerSecond(cmd, cmds, monitorPo, pro, in, read);} catch (IOException|InterruptedException e) {log.error("-realTimeMonitoring-Exception:{}", e);} finally {try {if (pro != null)pro.destroy();if (read != null)read.close();if (in != null)in.close();} catch (IOException e) {log.error("-realTimeMonitoring-finally-IOException:{}", e);}}}//查询CPUprivate static void getCPUInfo(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {cmd = "top -bn1 | grep \"Cpu(s)\" | awk '{split($0,arr,\" \");print 100-arr[8]}'";String result = getSingleResult(cmd, cmds, pro, in, read);if (!StringUtils.isEmpty(result)) {monitorPo.setCpu(Double.valueOf(Double.parseDouble(result)));} else {monitorPo.setCpu(Double.valueOf(0.0D));}}//查询内存private static void getMemoryInfo(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {cmd = "top -bn1 | grep \"KiB Mem\" | awk '{split($0,arr,\" \");print arr[4]/1024/1024,arr[8]/1024/1024}'";String result = getSingleResult(cmd, cmds, pro, in, read);String[] arr = result.split(" ");double memoryTotal = Double.parseDouble(arr[0]);double memoryUsed = Double.parseDouble(arr[1]);DecimalFormat df = new DecimalFormat("#.##");double memoryUseRatio = Double.parseDouble(df.format(memoryUsed / memoryTotal * 100.0D));monitorPo.setMemoryTotal(Double.valueOf(memoryTotal));monitorPo.setMemory(Double.valueOf(memoryUsed));monitorPo.setMemoryUseRatio(Double.valueOf(memoryUseRatio));}//查询磁盘private static void getDiskInfo(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {cmd = "df -h / | tail -n +2 | grep -v \"Filesystem\" | awk '{split($0,arr,\" \");print arr[2],arr[3],arr[5]}'";String result = getSingleResult(cmd, cmds, pro, in, read);String[] arr = result.split(" ");monitorPo.setDiskTotal(Double.valueOf(Double.parseDouble(arr[0].replaceAll("G", ""))));monitorPo.setDiskUse(Double.valueOf(Double.parseDouble(arr[1].replaceAll("G", ""))));monitorPo.setDiskUseRatio(Double.valueOf(Double.parseDouble(arr[2].replaceAll("%", ""))));}//查询网络IO速率public static void getNetworkResourceInformation(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {log.info("-getNetworkResourceInformation");cmd = "ifstat";cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);if (pro.waitFor() == 0) {in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));String line;while ((line = read.readLine()) != null) {log.info("-line:{}", line);if (line.startsWith("eno") || line.startsWith("eth")) {String[] split = line.split("\\s+");String networkRxRate = split[1];String networkTxRate = split[3];monitorPo.setNetworkRxRate(Double.valueOf(Double.parseDouble(networkRxRate)));monitorPo.setNetworkTxRate(Double.valueOf(Double.parseDouble(networkTxRate)));break;}}}}//查询文件服务器中数据库空间占用大小public static void getUsageOfTheMysqlDiskSpaceInTheFileSystem(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {log.info("-getUsageOfTheMysqlDiskSpaceInTheFileSystem");cmd = "df -h /home/ems/3rdparty/mysql/data";cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);if (pro.waitFor() == 0) {in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));String line;while ((line = read.readLine()) != null) {log.info("-line:{}", line);if (line.startsWith("/dev")) {String[] split = line.split("\\s+");monitorPo.setDatabaseDiskSpaceIsUsed(split[2]);}}}}//查询每秒存储队列信息public static void getStoresQueueInputOrOutputOperandsPerSecond(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {log.info("-getStoresQueueInputOrOutputOperandsPerSecond");cmd = "vmstat -d|grep sda|awk '{print $11}'";cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);if (pro.waitFor() == 0) {in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));String line;while ((line = read.readLine()) != null) {log.info("-line:{}", line);monitorPo.setQueueOperands(Double.valueOf(Double.parseDouble(line)));}}}//查询IOPS信息public static void getIopsResourceInformation(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {log.info("-getIopsResourceInformation");cmd = "iostat -d|grep sda|awk '{print $3\" \"$4}'";cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);if (pro.waitFor() == 0) {in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));String line;while ((line = read.readLine()) != null) {log.info("-line:{}", line);String[] split = line.split("\\s+");String IOPSKbRead = split[0];String IOPSKbWrite = split[1];monitorPo.setIopsKbRead(Double.valueOf(Double.parseDouble(IOPSKbRead)));monitorPo.setIopsKbWrite(Double.valueOf(Double.parseDouble(IOPSKbWrite)));}}}//查询文件系统中磁盘使用情况public static void getUsageOfTheDiskSpaceInTheFileSystem(String cmd, String[] cmds, MonitorPo monitorPo, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {log.info("-getUsageOfTheDiskSpaceInTheFileSystem");cmd = "df -BG";cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);if (pro.waitFor() == 0) {in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));String line;while ((line = read.readLine()) != null) {log.info("-line:{}", line);if (line.endsWith("/")) {String[] split = line.split("\\s+");String used = split[2];if (used.contains("G"))used = used.replace("G", "");monitorPo.setDiskSpaceIsUsed(Double.valueOf(Double.parseDouble(used)));}}}}//java执行linux命令public static String getSingleResult(String cmd, String[] cmds, Process pro, InputStream in, BufferedReader read) throws IOException, InterruptedException {cmds = new String[] { "/bin/sh", "-c", cmd };log.info("-cmd:{}", cmd);pro = Runtime.getRuntime().exec(cmds);String line = "";in = pro.getInputStream();read = new BufferedReader(new InputStreamReader(in));if (pro.waitFor() == 0 && (line = read.readLine()) != null) {log.info("-line:{}", line);return line;}return null;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/213929.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.8 作业 C++

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

【Linux】如何对文本文件进行有条件地划分?——cut命令

cut 命令可以根据一个指定的标记&#xff08;默认是 tab&#xff09;来为文本划分列&#xff0c;然后将此列显示。 例如想要显示 passwd 文件的第一列可以使用以下命令&#xff1a;cut –f 1 –d : /etc/passwd cut&#xff1a;用于从文件的每一行中提取部分内容的命令。-f 1&…

【docker 】centOS 安装docker

官网 docker官网 github源码 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装软件包 yum install -y yum-utils \device-mapper-persistent-data…

使用C语言操作kafka ---- librdkafka

1 安装librdkafka git clone https://github.com/edenhill/librdkafka.git cd librdkafka git checkout v1.7.0 ./configure make sudo make install sudo ldconfig 在librdkafka的examples目录下会有示例程序。比如consumer的启动需要下列参数 ./consumer <broker> &…

《三十》模块化打包构建工具 Rollup

19的2小时06分钟 Rollup 是一个 JavaScript 的模块化打包工具&#xff0c;可以帮助编译微小的代码到庞大的复杂的代码中&#xff08;例如一个库或者一个应用程序&#xff09;。 Rollup 和 Webpack 的区别&#xff1a; Rollup 也是一个模块化的打包工具&#xff0c;但是它主要…

【数据结构第 6 章 ③】- 用 C 语言实现邻接表并简单介绍十字链表和邻接多重表

目录 一、邻接表 1.1 - ALGraph.h 1.2 - ALGraph.c 1.3 - Test.c 二、十字链表 三、邻接多重表 一、邻接表 邻接表&#xff08;Adjacency List&#xff09;是图的一种链式存储结构。在邻接表中&#xff0c;对图中每个顶点建立一个单链表&#xff0c;第 i 个单链表中的结…

32.768KHz时钟RTC晶振精度PPM值及频差计算

一个数字电路就像一所城市的交通&#xff0c;晶振的作用就是十字路口的信号灯&#xff0c;因此晶振的品质及其电路应用尤其关键。数字电路又像生命体&#xff0c;它的运行就像人身体里的血液流通&#xff0c;它不是由单一的某个器件或器件单元构成&#xff0c;而是由多个器件及…

Rust的From与Into Trait

Into的本质是调用了From Trait 的方法。 From是底层的方法&#xff0c;把From实现了&#xff0c;Into的实现&#xff0c;编译器会自动根据From Trait生成Into Trait的代码 编译器自动类型推导出Into Trait的U的类型&#xff0c;调用了U类型的From的方法&#xff0c;实现其他类…

3DMAX UV贴图修改插件安装卸载方法

3DMAX UV贴图修改插件安装卸载方法 3dMax贴图修改插件PolyUnwrapper是为纹理艺术家设计的一整套专业工具&#xff0c;尤其适用于建筑和游戏行业。 它包含许多功能&#xff0c;将大大帮助您改进UV展开的工作流程。 【主要功能特点】 -多重缝合。一次缝合多个壳 -自定义打包算…

亚马逊运营推荐数仓项目实战

亚马逊运营推荐数仓项目实战 项目技术栈 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 项目介绍 1.1 项目系统架构 项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托&#xff0c;以某电商…

【小白专用】在 vs 中使用 nuget 安装NPOI

C#操作Excel有多种方法&#xff0c;如通过数据库的方式来读写Excel的OleDb方式&#xff0c;但是OleDb方式需要安装微软office&#xff0c;还可以通过COM组件方式操作Excel&#xff0c;也需要安装微软Excel。如果不想安装微软办公套餐可以使用ClosedXML、EPPlus、NPOI。本文主要…

Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介 本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装&#xff0c;并安装PyTorch2.1.1来测试是否安装成功。 安装Ubuntu系统 如果是旧的不支持UEFI启动的主板&#xff0c;请参考本人博客U盘系统盘制作与系统安装&#xff08;详细图解&#xff09…

mac苹果电脑清除数据软件CleanMyMac X4.16

在数字时代&#xff0c;保护个人隐私变得越来越重要。当我们出售个人使用的电脑&#xff0c;亦或者离职后需要上交电脑&#xff0c;都需要对存留在电脑的个人信息做彻底的清除。随着越来越多的人选择使用苹果电脑&#xff0c;很多人想要了解苹果电脑清除数据要怎样做才是最彻底…

深入理解Sentinel系列-1.初识Sentinel

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

低多边形游戏风格3D模型纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程&#xff1a; 【实战技能】 单步运行源码分析&#xff0c;一期视频整明白FreeRTOS内核源码框架和运行…

模电·放大电路的分析方法——图解法

放大电路的分析方法——图解法 静态工作点的分析电压放大倍数的分析波形非线性失真的分析直流负载线与交流负载线图解法的适用范围 在实际测出放大管的输入特性、输出特性和已知放大电路中其它各元件参数的情况下&#xff0c;利用作图的方法对放大电路进行分析即为图解法。 静…

BUU SQL COURSE 1

四 发现有登录框&#xff0c;爆破半天也爆破不出来&#xff0c;只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参&#xff0c;sql注入一下试试 前三个都有回显&#xff0c;当id4的时候页面没有回显了&#xff0c;正好验证 了页面 有三个新闻 当order by 3的时…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

文章目录 -Abstract1 Introduction2 Related workformer work 3 Method3.1 Cross Stage Partial Network3.2 Exact Fusion Model 4 Experiments5 Conclusion 原文链接 源代码 - 梯度信息重用&#xff08;有别于冗余的梯度信息&#xff09;可以减少计算量和内存占用提高效率&am…

内存学习——堆(heap)

目录 一、概念二、自定义malloc函数三、Debug运行四、heap_4简单分析4.1 heap管理链表结构体4.2 堆初始化4.3 malloc使用4.4 free使用 一、概念 内存分为堆和栈两部分&#xff1a; 栈&#xff08;Stack&#xff09;是一种后进先出&#xff08;LIFO&#xff09;的数据结构&…