Linux - 深入理解/proc虚拟文件系统:从基础到高级
文章目录
- Linux /proc虚拟文件系统
- /proc/self
- 使用 /proc/self 的优势
- /proc/self 的使用案例
- 案例1:获取当前进程的状态信息
- 案例2:获取当前进程的命令行参数
- 案例3:获取当前进程的内存映射
- 案例4:获取当前进程的文件描述符
- /proc中进程管理相关的文件和目录
- /proc中内存管理相关的文件和目录
- 基础使用示例
- 1. 查看系统总内存使用情况
- 2. 查看某个进程(假设PID为5069)的命令行参数
- 3. 查看某个进程打开的文件
- 4. 查看某个进程的内存映射
- /proc文件系统的高级使用技巧和最佳实践
- 1. 动态调整内核参数
- 2. 实时监控系统性能
- 3. 调试和优化进程
- 4. 检查文件句柄使用情况
- 5. 监控网络连接和套接字
- 最佳实践建议
- /proc文件系统的具体使用案例
- 案例1:实时监控系统的CPU使用情况
- 案例2:监控某个进程的内存使用情况
- 案例3:检测系统打开文件句柄的数量
- 案例4:监控网络连接状态
- 案例5:监控和调优虚拟内存使用
- 案例6:分析进程的详细内存映射
- 案例7:实时监控系统的I/O活动
- 案例8:检查系统中断处理情况
- 综合案例
Linux /proc虚拟文件系统
Linux /proc虚拟文件系统(procfs)是一个伪文件系统,它为内核数据提供了一个接口。与传统文件系统不同,/proc中的文件和目录并不存在于磁盘上,而是实时生成的。它主要用于获取系统和进程的信息,调试和管理系统。
procfs包含大量关于硬件、内核、运行进程等方面的动态信息,使用户和程序能够以文件操作的方式访问系统状态。
/proc/self
在Linux操作系统中,/proc
文件系统是一个虚拟文件系统,提供了一种查看系统和进程信息的机制。每个进程在/proc
目录下都有一个对应的子目录,通过进程的PID(进程ID)来命名,例如/proc/1234
表示PID为1234的进程。
然而,为了简化进程自身信息的访问,Linux提供了一个特殊的目录:/proc/self
。这个目录总是指向访问它的进程自身的目录。因此,无论哪个进程访问/proc/self
,它看到的都是与/proc/[PID]
相同的信息,而无需显式地获取和指定自己的PID。
使用 /proc/self 的优势
- 简化访问:进程无需获取自身的PID来访问自己的信息,直接通过
/proc/self
即可访问。 - 代码简洁:代码中直接使用
/proc/self
,避免了获取PID的步骤,使代码更简洁和易读。 - 通用性:不同的进程访问
/proc/self
时,获取的是各自的进程信息,这种特性使得/proc/self
在编写通用工具和脚本时非常有用。
/proc/self 的使用案例
案例1:获取当前进程的状态信息
#!/bin/bash
# 读取当前进程的状态信息cat /proc/self/status
这个脚本直接读取/proc/self/status
文件,输出当前进程的状态信息,包括进程状态、内存使用情况、线程数等。
案例2:获取当前进程的命令行参数
#!/bin/bash
# 读取当前进程的命令行参数cat /proc/self/cmdline
这个脚本读取/proc/self/cmdline
文件,输出当前进程的命令行参数。cmdline
文件包含了启动进程时传递的所有参数。
案例3:获取当前进程的内存映射
#!/bin/bash
# 读取当前进程的内存映射信息cat /proc/self/maps
这个脚本读取/proc/self/maps
文件,输出当前进程的内存映射信息,包括进程的各个内存段的起始地址、权限和映射的文件。
案例4:获取当前进程的文件描述符
#!/bin/bash
# 列出当前进程打开的所有文件描述符ls -l /proc/self/fd
这个脚本列出/proc/self/fd
目录下的所有文件描述符。每个文件描述符都是一个符号链接,指向该描述符所引用的文件。
/proc/self
目录提供了一种方便的方式,允许进程直接访问自身的信息,而不必每次都显式获取自己的PID。这种特性极大地简化了获取进程信息的操作,使得编写涉及进程信息获取的脚本和工具变得更加简单和高效。
通过
/proc/self
,可以轻松地访问进程的状态、命令行参数、内存映射、文件描述符等信息,帮助你进行系统监控、调试和优化等任务。在实际应用中,利用/proc/self
能够使你的代码更加简洁和具有通用性。
/proc中进程管理相关的文件和目录
在/proc目录中,每个运行的进程都有一个以其PID(进程ID)命名的子目录。这些子目录包含了进程的详细信息,以下是一些关键文件和它们的用途:
- /proc/[PID]/cmdline:显示启动该进程的命令行。
- /proc/[PID]/cwd:指向进程的当前工作目录。
- /proc/[PID]/exe:指向正在执行的二进制文件。
- /proc/[PID]/fd/:包含该进程打开的所有文件描述符。
- /proc/[PID]/stat:包含关于进程状态的详细信息,如进程状态、CPU时间等。
- /proc/[PID]/status:提供进程状态的简明信息,包括内存使用、用户ID、组ID等。
- /proc/[PID]/environ: 获取当前进程的环境变量信息
这些文件和目录可以用于监控和调试进程。
例如,
- 可以通过查看/proc/[PID]/cmdline来确定某个进程是如何启动的,
- 通过/proc/[PID]/fd/来查看该进程打开了哪些文件
- …
/proc中内存管理相关的文件和目录
/proc目录中有一些文件提供了关于系统内存使用情况的详细信息,这些信息对于系统管理员和开发者来说非常重要:
- /proc/meminfo:显示系统的内存使用情况,包括总内存、空闲内存、缓冲区内存等。
- /proc/swaps:显示交换分区的使用情况。
- /proc/slabinfo:显示内核SLAB分配器的状态。
- /proc/[PID]/maps:显示该进程的内存映射,包括加载的共享库、堆、栈等。
- /proc/[PID]/smaps:提供比maps更详细的内存映射信息,包括每个映射的内存使用情况。
这些文件可以帮助识别内存泄漏、优化内存使用和理解系统的内存分配行为。例如,通过查看/proc/meminfo,可以快速了解系统内存的总体使用情况,而/proc/[PID]/maps
和/proc/[PID]/smaps
则可以用于分析单个进程的内存使用情况。
基础使用示例
下面是一些使用/proc文件系统进行监控和管理的实际示例:
1. 查看系统总内存使用情况
cat /proc/meminfo
2. 查看某个进程(假设PID为5069)的命令行参数
cat /proc/5069/cmdline
3. 查看某个进程打开的文件
ls -l /proc/5069/fd/
4. 查看某个进程的内存映射
cat /proc/5069/maps
/proc文件系统的高级使用技巧和最佳实践
Linux /proc文件系统不仅仅提供基本的系统和进程信息,还可以通过一些高级使用技巧进行更深入的系统监控、调试和优化。掌握这些技巧能帮助用户更高效地管理系统,及时发现和解决潜在问题。
1. 动态调整内核参数
/proc/sys目录包含许多内核参数,这些参数可以在系统运行时动态调整,从而无需重启系统。比如,可以调整TCP连接的参数、虚拟内存管理参数等。
-
调整TCP Keepalive时间:
echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time
-
调整虚拟内存的交换分区使用策略:
echo 10 > /proc/sys/vm/swappiness
2. 实时监控系统性能
通过读取/proc/stat和/proc/loadavg等文件,可以获取CPU使用情况和系统负载信息,这对于性能监控和容量规划非常有用。
-
查看CPU使用情况:
cat /proc/stat
-
查看系统负载:
cat /proc/loadavg
3. 调试和优化进程
使用/proc/[PID]/中的文件,可以获取关于特定进程的详细信息,从而帮助调试和优化进程。
-
查看进程的环境变量:
cat /proc/1234/environ | tr '\0' '\n'
-
查看进程的内存页错误和内存分配情况:
cat /proc/1234/statm
4. 检查文件句柄使用情况
/proc/sys/fs/file-nr文件可以用于监控系统中文件句柄的使用情况,以防止文件句柄耗尽的问题。
- 查看文件句柄使用情况:
cat /proc/sys/fs/file-nr
5. 监控网络连接和套接字
/proc/net目录包含关于网络连接和套接字的信息,可以用于网络监控和调试。
-
查看当前TCP连接:
cat /proc/net/tcp
-
查看网络接口统计信息:
cat /proc/net/dev
最佳实践建议
-
自动化监控和报警:使用脚本或监控工具(如Nagios、Prometheus等)自动化读取/proc中的关键文件,并根据设定的阈值触发报警。
-
限制权限:确保只有授权用户和进程可以访问/proc中的敏感信息,避免潜在的安全问题。
-
定期检查和调整:定期检查/proc中的内核参数和系统状态,根据实际情况调整配置,确保系统运行在最佳状态。
-
结合其他工具使用:将/proc中的信息与其他系统监控和日志分析工具结合使用,提供全面的系统监控解决方案。
/proc文件系统的具体使用案例
通过具体使用案例,可以更直观地展示如何利用/proc文件系统进行系统监控、调试和优化。
以下案例将涵盖常见的系统监控任务,包括CPU和内存使用监控、进程调试、网络连接监控等。
案例1:实时监控系统的CPU使用情况
监控系统的CPU使用情况是系统管理员的常见任务,通过读取/proc/stat文件,可以获取每个CPU的使用情况。
步骤:
- 创建一个脚本,定期读取/proc/stat文件。
- 计算每个CPU的使用百分比。
#!/bin/bash
# Script to monitor CPU usageprev_idle=0
prev_total=0while true; do# Read /proc/statcpu_line=$(grep '^cpu ' /proc/stat)cpu_values=($cpu_line)# Calculate total and idle timeidle=${cpu_values[4]}total=0for value in "${cpu_values[@]:1}"; dototal=$((total + value))done# Calculate CPU usagediff_idle=$((idle - prev_idle))diff_total=$((total - prev_total))usage=$((100 * (diff_total - diff_idle) / diff_total))# Output the resultecho "CPU Usage: $usage%"# Save the current valuesprev_idle=$idleprev_total=$total# Wait for a secondsleep 1
done
- 该脚本通过读取/proc/stat文件中的CPU信息,计算CPU的使用百分比,并每秒输出一次。
- prev_idle和prev_total保存上次读取的值,以计算本次的变化量。
案例2:监控某个进程的内存使用情况
为了监控特定进程(假设PID为1234)的内存使用情况,可以读取/proc/1234/status文件。
步骤:
- 编写脚本定期读取/proc/1234/status文件。
- 提取VmRSS字段,显示进程的实际内存使用量。
#!/bin/bash
# Script to monitor a process's memory usagepid=1234while true; doif [ -d "/proc/$pid" ]; thenmem_usage=$(grep VmRSS /proc/$pid/status | awk '{print $2}')echo "Process $pid Memory Usage: ${mem_usage}kB"elseecho "Process $pid not found."exit 1fisleep 1
done
- 该脚本通过读取/proc/1234/status文件中的VmRSS字段,获取进程的实际内存使用量(单位为kB)。
- 脚本每秒输出一次内存使用量。
案例3:检测系统打开文件句柄的数量
系统打开文件句柄的数量可以通过读取/proc/sys/fs/file-nr文件获取,这对监控资源使用情况很有帮助。
步骤:
- 编写脚本定期读取/proc/sys/fs/file-nr文件。
- 输出当前打开的文件句柄数量。
#!/bin/bash
# Script to monitor the number of open file handleswhile true; dofile_nr=$(cat /proc/sys/fs/file-nr | awk '{print $1}')echo "Open file handles: $file_nr"sleep 5
done
- 该脚本通过读取/proc/sys/fs/file-nr文件,获取系统当前打开的文件句柄数量。
- 脚本每5秒输出一次文件句柄数量。
案例4:监控网络连接状态
网络连接状态可以通过读取/proc/net/tcp文件获取,分析该文件可以监控TCP连接的数量和状态。
步骤:
- 编写脚本定期读取/proc/net/tcp文件。
- 统计不同状态的TCP连接数量。
#!/bin/bash
# Script to monitor TCP connectionswhile true; doecho "TCP Connections:"awk '{print $4}' /proc/net/tcp | sort | uniq -csleep 10
done
- 该脚本通过读取/proc/net/tcp文件,统计不同状态的TCP连接数量(如ESTABLISHED、TIME_WAIT等)。
- 脚本每10秒输出一次连接状态统计。
案例5:监控和调优虚拟内存使用
虚拟内存管理是系统性能优化的重要方面,通过监控/proc/vmstat文件,可以了解系统的虚拟内存使用情况,并进行相应的调优。
步骤:
- 编写脚本定期读取/proc/vmstat文件。
- 监控关键字段,如pgfault(页面错误)、pgmajfault(主要页面错误)、pgfree(释放页面)等。
- 根据监控结果,调整系统的内存管理策略。
#!/bin/bash
# Script to monitor virtual memory usagewhile true; doecho "Virtual Memory Stats:"grep -E 'pgfault|pgmajfault|pgfree' /proc/vmstatsleep 5
done
- 该脚本通过读取/proc/vmstat文件,监控页面错误和内存释放情况。
- 脚本每5秒输出一次虚拟内存使用统计。
案例6:分析进程的详细内存映射
通过/proc/[PID]/smaps文件,可以获取进程的详细内存映射信息,这对于诊断内存泄漏和优化内存使用非常有用。
步骤:
- 编写脚本读取/proc/[PID]/smaps文件。
- 分析每个内存区域的大小和使用情况,识别内存泄漏。
#!/bin/bash
# Script to analyze a process's memory mappingpid=1234if [ -d "/proc/$pid" ]; thenecho "Memory Mapping for PID $pid:"cat /proc/$pid/smaps | awk '/^Size|^Rss|^Pss|^Swap/ {print $0}'
elseecho "Process $pid not found."
fi
- 该脚本通过读取/proc/1234/smaps文件,输出进程的每个内存区域的详细信息。
- 包括内存区域的总大小(Size)、驻留集大小(Rss)、比例驻留集大小(Pss)和交换内存使用情况(Swap)。
案例7:实时监控系统的I/O活动
通过/proc/diskstats文件,可以监控系统的I/O活动,包括读取和写入操作的次数和字节数。
步骤:
- 编写脚本定期读取/proc/diskstats文件。
- 监控指定磁盘的I/O活动。
#!/bin/bash
# Script to monitor disk I/O activitydisk="sda"while true; doecho "Disk I/O Stats for $disk:"grep "$disk" /proc/diskstats | awk '{print "Reads: " $4 " Writes: " $8}'sleep 5
done
- 该脚本通过读取/proc/diskstats文件,监控指定磁盘(如sda)的读写操作次数。
- 脚本每5秒输出一次磁盘I/O活动统计。
案例8:检查系统中断处理情况
通过/proc/interrupts文件,可以监控系统的中断处理情况,了解不同设备的中断频率。
步骤:
- 编写脚本定期读取/proc/interrupts文件。
- 输出中断处理统计信息。
#!/bin/bash
# Script to monitor interruptswhile true; doecho "Interrupts Stats:"cat /proc/interruptssleep 10
done
- 该脚本通过读取/proc/interrupts文件,输出系统中断处理的统计信息。
- 脚本每10秒输出一次中断统计。
综合案例
下面是一个示例的Shell脚本,用于监控CPU和内存使用情况、磁盘空间、关键进程、网络流量以及系统日志。
#!/bin/bash# CPU and Memory Usage Monitoring
cpu_threshold=80 # CPU使用率阈值
mem_threshold=90 # 内存使用率阈值# Disk Space Monitoring
disk_threshold=10 # 磁盘剩余空间百分比阈值# Process Monitoring
process="nginx" # 要监控的进程名# Network Traffic Monitoring
network_threshold=10000000 # 网络流量阈值,单位为字节# Log Monitoring
log_file="/var/log/syslog" # 要监控的日志文件while true; do# CPU and Memory Usagecpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')mem_usage=$(free | awk '/Mem/{printf "%.2f", $3/$2 * 100}')echo "CPU Usage: $cpu_usage%"echo "Memory Usage: $mem_usage%"if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); thenecho "CPU usage is above threshold!"# 可以添加发送报警邮件或短信的代码fiif (( $(echo "$mem_usage > $mem_threshold" | bc -l) )); thenecho "Memory usage is above threshold!"# 可以添加发送报警邮件或短信的代码fi# Disk Spacedisk_usage=$(df -h | awk '/'\/dev\/sda1'/{print substr($5, 1, length($5)-1)}')echo "Disk Usage: $disk_usage%"if (( $disk_usage > $disk_threshold )); thenecho "Disk space is running low!"# 可以添加发送报警邮件或短信的代码fi# Process Monitoringif ! pgrep -x "$process" >/dev/null; thenecho "Process $process is not running!"# 可以添加发送报警邮件或短信的代码fi# Network Traffic Monitoringnetwork_traffic=$(cat /proc/net/dev | grep "eth0" | awk '{print $2}')echo "Network Traffic: $network_traffic bytes"if (( $network_traffic > $network_threshold )); thenecho "Network traffic is above threshold!"# 可以添加发送报警邮件或短信的代码fi# Log Monitoringif grep -q "ERROR" "$log_file"; thenecho "Error detected in log file!"# 可以添加发送报警邮件或短信的代码fisleep 60 # 每分钟检查一次
done
这个脚本会循环检查CPU和内存使用情况、磁盘空间、指定进程的运行状态、网络流量和系统日志,如果发现超过预设阈值的异常,就会触发相应的警报。
相关文章:
Linux - 深入理解/proc虚拟文件系统:从基础到高级
文章目录 Linux /proc虚拟文件系统/proc/self使用 /proc/self 的优势/proc/self 的使用案例案例1:获取当前进程的状态信息案例2:获取当前进程的命令行参数案例3:获取当前进程的内存映射案例4:获取当前进程的文件描述符 /proc中进程…...
Django DeleteView视图
Django 的 DeleteView 是一个基于类的视图,用于处理对象的删除操作。 1,添加视图函数 Test/app3/views.py from django.shortcuts import render# Create your views here. from .models import Bookfrom django.views.generic import ListView class B…...
代码杂谈 之 pyspark如何做相似度计算
在 PySpark 中,计算 DataFrame 两列向量的差可以通过使用 UDF(用户自定义函数)和 Vector 类型完成。这里有一个示例,展示了如何使用 PySpark 的 pyspark.ml.linalg.Vectorspyspark.sql.functions.udf 来实现这一功能:…...
混剪素材哪里找?分享8个热门素材网站
今天我们来深入探讨如何获取高质量的混剪素材,为您的短视频和自媒体制作提供最佳资源。在这篇指南中,我将介绍几个热门的素材网站,让您轻松掌握素材获取的技巧,并根据百度SEO排名规则,优化关键词的使用,确保…...
临床应用的深度学习在视网膜疾病的诊断和转诊中的应用| 文献速递-视觉通用模型与疾病诊断
Title 题目 Clinically applicable deep learning for diagnosis and referral in retinal disease 临床应用的深度学习在视网膜疾病的诊断和转诊中的应用 01 文献速递介绍 诊断成像的数量和复杂性正在以比人类专家可用性更快的速度增加。人工智能在分类一些常见疾病的二…...
中继器简介
一、网络信号衰减问题 现在的网路信号有两种,一种是电信号,另一种的光信号,电信号在网线、电话线或者电视闭路线中传输,光信号在光缆中传输,但是不管是以那种信号进行传输,随着传输距离的增加,电…...
websocket 前端项目js示例
websocket前端 和服务端websocket通信示例, 前端直接使用h5的内置对象 WebSocket 来创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据。 这个对象都是是事件方式来处理和与后端交互数据, 他们分别是 onopen打开, onclose关闭, o…...
webapi跨越问题
由于浏览器存在同源策略,为了防止 钓鱼问题,浏览器直接请求才不会有跨越的问题 浏览器要求JavaScript或Cookie只能访问同域下的内容 浏览器也是一个应用程序,有很多限制,不能访问和使用电脑信息(获取cpu、硬盘等&#…...
你知道 npmrc 文档吗? ---- npmrc 关键作用介绍
你知道 npmrc 文档吗? ---- npmrc 关键作用介绍 你知道 npmrc 文档吗? ---- npmrc 关键作用介绍如何修改配置呢?日常开放常常需要置哪些信息呢?registry 信息配置限定包认证信息代理配置缓存配置安装行为 参考 你知道 npmrc 文档吗…...
发现 Laravel 中的 api 响应时间明显过长
背景 近期在排查网站后台页面功能时 发现,部分查询页面,明显响应时间过长(12秒),不合理 优先排查 接口运行时长 经过打印,发现代码是正常的,且时间仅需不到一秒 进一步怀疑是 VUE框架的渲染加载…...
如何在MySQL中创建不同的索引和用途?
目录 1 基本的 CREATE INDEX 语法 2 创建单列索引 3 创建多列索引 4 创建唯一索引 5 创建全文索引 6 在表创建时添加索引 7 使用 ALTER TABLE 添加索引 8 删除索引 9 索引管理的最佳实践 10 示例 在 MySQL 中,索引(index)是一种用于…...
maxwell同步mysql到kafka(一个服务器启动多个)
创建mysql同步用户 CREATE USER maxwell% IDENTIFIED BY 123456; GRANT ALL ON maxwell.* TO maxwell%; GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to maxwell%; 开启mysql binlog a.修改 /etc/my.cnf 配置 log-binmysql-bin # 开启binlog binlog-forma…...
实用软件分享---简单菜谱 0.3版本 几千种美食(安卓)
专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…...
网络学习(14)|RESTful API设计:构建优雅的Web服务
文章目录 设计原则最佳实践命名与URI设计状态码与响应格式HTTP状态码详解响应格式选择 在当今的互联网世界中,RESTful API已成为构建可扩展、可维护和高性能Web服务的标准。本文将深入探讨RESTful API的设计原则、资源命名与URI设计的最佳实践,以及请求与…...
【开源】APIJSON 框架
简述 APIJSON是一个关于API和JSON的综合技术或框架,一种专为API设计的JSON网络传输协议,以及基于这套协议实现的ORM库。 1. 定义与特点: APIJSON是一种基于接口的JSON传输结构协议,它允许客户端定义任何JSON结构来向服务端发起…...
R语言探索与分析18-基于时间序列的汇率预测
一、研究背景与意义 汇率是指两个国家之间的货币兑换比率,而且在国家与国家的经济交流有着举足轻重的作用。随着经济全球化的不断深入,在整个全球经济体中,汇率还是一个评估国家与国家之间的经济状况和发展水平的一个风向标。汇率的变动会对…...
30岁迷茫?AI赛道,人生新起点
前言 30岁,对于许多人来说,是一个人生的分水岭。在这个年纪,有些人可能已经在某个领域取得了不小的成就,而有些人则可能开始对未来的职业方向感到迷茫。如果你正处于这个阶段,那么你可能会问自己:30岁转行…...
开门预警系统技术规范(简化版)
开门预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 功能需求5 功能条件6 显示需求7 指标需求1 系统概述 开门预警系统(DOW),在自车停止开门过程中,安装在车辆的传感器(如安装在车辆后保险杆两个角雷达)检测从自车后方接近的目标车(汽车、摩托车等)的相对…...
Django与MySQL:配置数据库的详细步骤
文章目录 Django-MySQL 配置配置完执行数据迁移,如果报错: Error loading MySQLdb module, Django-MySQL 配置 # settings.pyDATABASES {# 默认配置sqlite3数据库# default: {# ENGINE: django.db.backends.sqlite3,# NAME: BASE_DIR / db.sqli…...
GPT-4o short description
GPT-4o,作为OpenAI最新推出的人工智能模型,无疑在人工智能领域掀起了新的波澜。 一、版本间的对比分析 与前一版本GPT-4相比,GPT-4o在多个方面进行了显著的改进和优化。首先,在参数规模上,GPT-4o达到了2000亿个参数&…...
MATLAB 矩阵
创建矩阵直接输入:使用 zeros, ones, eye 函数:使用 rand, randi 函数:使用 diag 函数: 矩阵操作矩阵加法和减法:矩阵乘法:矩阵转置:矩阵求逆:矩阵分解:矩阵大小…...
LED灯的功率以及好的品牌推荐
LED灯的功率选择主要根据使用场景、照明需求以及灯具类型来决定。常见的LED灯功率范围在0.5W到100W之间,不同的功率范围适用于不同的场景。 对于小型照明设备,如小夜灯或手电筒,通常选择0.5W到3W的LED灯,足以满足基本的照明需求。…...
Linux “ 软件管理 “
软件管理 widows 安装 方法一: 双击exe安装包,就可以安装。 用exe安装的软件会破记录到注册表中。 注册会记录安装位置,软件名称。 方法二: 用绿色方式进行安装。 不用写到注册表中,因此无法在开始菜单里面查看和卸…...
【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息
文章目录 map组件基础使用封装map.js,实现定位1、使用第三方地图:高德,申请对应平台key1、申请H5 key2、申请微信小程序 key3、申请android key查看证书详情,可以看到SHA1查看/设置Android包名 4、申请ios key 2、封装map1、lib/m…...
使用rufus做Kali Linux时持久分区大小如何设置
持久分区大小是什么意思: 持久分区大小指的是在U盘安装引导Kali Linux时,为保存Kali修改后的设置(如中文界面显示等)而预留的空间大小。这个空间相当于电脑中的D盘,用于保存修改后的设置。 而剩下的空间则用于安装Kali…...
Java高阶数据结构-----并查集(详解)
目录 🧐一.并查集的基本概念&实例: 🤪二.并查集代码: 😂三:并查集的一些习题: A.省份数量 B.等式方程的可满足性 🧐一.并查集的基本概念&实例: 并查集概念&…...
GitLab教程(三):多人合作场景下如何pull代码和处理冲突
文章目录 1.拉取别人同步的代码到本地的流程2.push冲突发生场景情景模拟简单的解决方法 在这一章中,为了模拟多人合作的场景,我需要一个人分饰两角。 执行git clone xx远端仓库地址 xx文件夹命令,在clone代码时指定本地仓库的文件夹名&#…...
模版偏特化之std::enable_if
1 SFINAE。 2 条件特化。可用作额外的函数参数(不可应用于运算符重载)、返回类型(不可应用于构造函数与析构函数),或类模板或函数模板形参。 函数参数: #include <iostream> #include <type_tra…...
好用的Web数据库管理工具推荐(ChatGPT的推荐)
在现代数据管理和开发中,Web数据库管理工具变得越来越重要。这些工具不仅提供了直观的用户界面,还支持跨平台操作,方便用户在任何地方进行数据库管理。 目录 1. SQLynx 2. phpMyAdmin 3. Adminer 4. DBeaver 5 结论 以下是几款推荐的Web…...
encoding Token和embedding 傻傻分不清楚?
encoding 编码 “encoding” 是一个在计算机科学和人工智能领域广泛使用的术语,它可以指代多种不同的过程和方法。核心就是编码:用某些数字来表示特定的信息。当然你或许会说字符集(Unicode)更理解这种概念,编码更强调这种动态的过程。而字符…...
长沙网站建设哪家靠谱/郑州见效果付费优化公司
String.prototype.charAt()str.charAt(index)返回字符串中指定位置的字符。字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符(假设该字符位于字符串 stringName 中)的索引值为 stringName.length - 1。如果指定的 index 值超出了该范围&…...
沈阳公司建站/武汉大学人民医院怎么样
一直困惑于vlan的link问题,access link还稍微可以理解,而trunk link和hybrid link 怎么让untagged frame通过,我却一直很迷惑,终于在老师的指点下,知道了部分原理(首先得谢谢老师)废话少说&…...
网架报价明细表/seo咨询常德
http://poj.org/problem?id3007 用STL 会超时 用哈希哟 本题哈希很简单,主要是字符串可能出现的各种情况处理起来有点复杂 #include<iostream> #include<cmath> #include<string> #include<algorithm> #include<queue> #include<…...
个人短信接口wordpress/搜索引擎营销经典案例
因为近几年工信部对电话的打击和通讯规则的变化,传统的外呼模式已经不能满足企业电销业务的开展,光靠手机号卡没办法支撑得了频繁的经常外呼,而传统坐席因前期部署和后期维护的成本极高,也逐渐被市场淘汰。 基于目前的市场情况&am…...
做网站一定要学java吗/网站推广计划书
为了方便读者朋友们自学桌面端编程,本文介绍了一些在线课程。桌面端编程方面的在线课程非常多,更新速度快,读者朋友们也可以在网上自行搜索,选择适合自己的在线课程进行学习。如需要打开课程的网站,请复制课程的网址到…...
深圳企业建站设计公司/营销活动推广方案
使用python逐行读取文件内容的几个方法?方法一:使用readline读取: f open("fix.txt") line f.readline() while line: print line line f.readline() f.close() 方法二: for line in open("fix.txt&q…...