Linux 常见性能指标 -- 网络

本系列记录操作系统常见性能指标,写这个主要是记录也是回顾,笔记很长,拆分了几个部分,本篇记录 网络 的性能指标

日常最常见的问题就是 ping 能不能通,telnet 端口通不通,来判断网络是否正常。但是有些时候会发现访问变慢了,操作响应慢了,是网络卡了?所以需要一些其他的性能指标来衡量网络状态

性能指标

这里主要介绍网卡速率、带宽、吞吐量、延迟、丢包和TCP重传的概念

网卡速率

网卡速率指的是网卡的物理传输能力,通常以 Mbps(兆比特每秒)为单位。

它表示网卡在理想情况下的最大数据传输速度。网卡速率受硬件和驱动程序的限制,可以在网卡的规格中找到。平时常见的千兆网卡,万兆网卡说的网卡速率。

带宽

带宽(Bandwidth)指的是网络的通信线路在单位时间内能传输的最大数据量,通常也以 Mbps为单位。

带宽可以看作是网络的“容量”,它取决于网络的物理特性(如光纤、铜线等)和网络设备(如路由器、交换机等)的性能。常说的专线带宽,网络多少兆带宽。

吞吐量

吞吐量(Throughput)指的是实际数据传输速率,即在单位时间内实际传输的数据量。

吞吐量受网络负载、路由器性能、带宽限制等因素的影响。吞吐量通常小于或等于带宽,因为网络中的数据传输并非总是连续的。

BPS(比特每秒,Bit Per Second):表示每秒传输的比特数,是衡量网络带宽的单位。BPS用于描述网络传输速度。

QPS(查询每秒,Query Per Second):表示每秒能够处理的查询请求次数。QPS主要用于衡量服务器在每秒能够处理的查询请求的数量,如DNS服务器性能经常用QPS来衡量。

TPS(事务每秒,Transaction Per Second):表示每秒能够处理的事务数量。事务是指一个完整的操作,如一个用户登录、下单、支付等操作。TPS主要用于衡量服务器在每秒能够处理的事务数量,如电子商务网站的性能经常用TPS来衡量。

PPS(包每秒,Packet Per Second):表示每秒能够处理的网络数据包数量。PPS主要用于衡量网络设备的性能,如路由器、交换机等。

延迟

延迟(Delay)指的是数据从发送端到接收端所需的时间。

  • 发送延迟是指数据从发送端到离开网络所需的时间;
  • 传输延迟是指数据在网络中传输所需的时间;
  • 接收延迟是指数据从进入网络到被接收端接收所需的时间。

延迟以毫秒(ms)为单位,它受网络设备和链路质量的影响。

丢包

丢包(Packet Loss)指的是在网络传输过程中,由于各种原因造成的数据包丢失。

丢包可能是由网络拥堵、链路质量差、设备故障等因素引起的。丢包会导致数据传输的不稳定和不可靠,影响网络性能。

TCP重传

TCP重传是TCP协议中用于保证数据可靠传输的一种重要机制。

当发送方发送数据包给接收方后,如果在一定时间内没有收到接收方的确认(ACK),发送方会重新发送相应的数据包。这种机制有助于确保数据的可靠传输,但同时也带来一些影响。

注意:超时重传对网络性能影响极大,与拥塞控制有关,于是就有了快速重传和SACK等减少影响的重传和确认机制出现。


查看指标

简单了解了一些性能指标以后,需要了解如何看这些指标

sar 归档和实时数据

sar - Collect, report, or save system activity information.  收集、展示或保存系统活动信息

sar 可以查看CPU、内存、IO 和网络,这里主要关注网络

sar -n DEV         # 打印实时的网络数据
sar -n DEV -f /var/log/sa/sa16  # 打印sysstat 保存的数据中的网络数据由于数据会归档,需要看看文件是否存在 /var/log/sa/saDD
  • IFACE:网络接口名称
  • rxpck/s:每秒接收的数据包数量。这个指标可以用来衡量网络接口的接收性能。
  • txpck/s:每秒发送的数据包数量。这个指标可以用来衡量网络接口的发送性能。
  • rxkB/s:每秒接收的字节数量。这个指标可以用来衡量网络接口的接收带宽。
  • txkB/s:每秒发送的字节数量。这个指标可以用来衡量网络接口的发送带宽。
  • rxcmp/s:每秒接收的压缩数据包数量。这个指标可以用来衡量网络接口接收的压缩数据包的流量。
  • txcmp/s:每秒发送的压缩数据包数量。这个指标可以用来衡量网络接口发送的压缩数据包的流量。
  • rxmcst/s:每秒接收的多播数据包数量。这个指标可以用来衡量网络接口接收的多播数据包的流量。
  • %ifutil:网络接口的利用率。这个指标可以用来衡量网络接口的繁忙程度。

指标异常描述:

  1. 如果rxpck/s和txpck/s的值都很高,可能表示网络接口的处理能力已经接近饱和;
  2. 如果rxkB/s和txkB/s的值都很高,可能表示网络带宽已经接近饱和。

netstat 详细数据

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

打印网络连接、路由表、接口统计信息、伪装连接和多播成员身份

This program is mostly obsolete.  Replacement for netstat is ss.  Replacement for netstat -r is ip route.  Replacement for netstat  -i  is  ip  -s link.  Replacement for netstat -g is ip maddr.

说这个程序大部分过时了,有替代方案

一般 netstat 最常用的还是 netstat -anlp 查找进程以及对应端口,实际上还支持很多网络信息的统计

按收发包统计

netstat -i    # 查看网口的收发信息

RX和TX分别表示接收和发送,OK表示成功,ERR表示错误,DRP表示丢弃,OVR表示溢出

  • MTU:最大传输单元,指网络接口能够接收和发送的最大数据包大小。如果数据包大小超过MTU,网络接口就会将其丢弃。
  • RX-OK:每秒接收到的正确数据包数量。这个指标可以用来衡量网络接口的接收性能。
  • RX-ERR:每秒接收到的错误数据包数量。这个指标可以用来衡量网络接口的接收错误情况。
  • RX-DRP:每秒接收到的丢弃数据包数量。这个指标可以用来衡量网络接口接收到的丢弃数据包的流量。
  • RX-OVR:每秒接收到的溢出数据包数量。这个指标可以用来衡量网络接口接收到的溢出数据包的流量。
  • TX-OK:每秒发送的正确的数据包数量。这个指标可以用来衡量网络接口的发送性能。
  • TX-ERR:每秒发送的错误数据包数量。这个指标可以用来衡量网络接口的发送错误情况。
  • TX-DRP:每秒发送的丢弃数据包数量。这个指标可以用来衡量网络接口发送的丢弃数据包的流量。
  • TX-OVR:每秒发送的溢出数据包数量。这个指标可以用来衡量网络接口发送的溢出数据包的流量。
  • Flg:标志,表示网络接口的状态和类型。

指标异常描述:

  1. 如果RX-ERR和TX-ERR的值都很高,可能表示网络接口存在故障;
  2. 如果RX-DRP和TX-DRP的值都很高,可能表示网络接口接收和发送的数据包被大量丢弃,需要检查网络配置和连接。
  3. 发现TX-OVR(发送溢出)和RX-OVR(接收溢出)的值很高,这通常表明网络接口正在处理比它能够处理的数据量更多的数据

flg 标志:

BMRU(Broadcast & Multicast & Running):表示接口正在运行,并且支持广播和组播功能
LRU(Loopback & Running):表示接口正在运行,并且是回环接口(Loopback Interface)
MSLU(Multicast & Running):表示接口正在运行,并且支持组播功能
RRU(Running):表示接口正在运行
SLU(Stopped):表示接口已停止运行
3DU(3D Acceleration & Running):表示接口正在运行,并且支持3D加速功能
DRA(Down & Running):表示接口正在运行,但是处于降级模式
DU(Down):表示接口已关闭或无法使用
MSH(Mesh & Running):表示接口正在运行,并且处于Mesh网络模式
NHR(Nehalem & Running):表示接口正在运行,并且支持Nehalem技术

按收发协议统计

netstat -s

全量解释: 

IP层 统计信息Forwarding: 2                       表示IP层转发数据包的数量13501 total packets received        表示接收到的IP数据包总数0 forwarded                         表示转发的IP数据包数量0 incoming packets discarded        表示丢弃的传入IP数据包数量13501 incoming packets delivered    表示成功传递的传入IP数据包数量ICMP 统计信息20 ICMP messages received           表示接收到的ICMP消息数量0 input ICMP message failed         表示输入ICMP消息失败的数量ICMP input histogram: echo replies: 20                表示输入ICMP消息的直方图,此例中所有20个消息都是回显回复(echo replies)70 ICMP messages sent               表示发送的ICMP消息数量0 ICMP messages failed              表示发送失败的ICMP消息数量ICMP output histogram:              表示输出ICMP消息的直方图destination unreachable: 16     此例中有16个目的地不可达(destination unreachable)消息echo requests: 54               54个回显请求(echo requests)消息TCP 统计信息748 active connection openings      表示主动打开的TCP连接数量3 passive connection openings       表示被动打开的TCP连接数量699 failed connection attempts      表示失败的TCP连接尝试数量21 connection resets received       表示接收到的TCP连接重置数量2 connections established           表示建立的TCP连接数量12096 segments received             表示接收到的TCP段数量13017 segments sent out             表示发送的TCP段数量1 segments retransmitted            表示重传的TCP段数量0 bad segments received             表示接收到的错误TCP段数量8 resets sent                       表示发送的TCP连接重置数量UDP 统计信息1373 packets received               表示接收到的UDP数据包数量16 packets to unknown port received 表示接收到的未知端口UDP数据包数量0 packet receive errors             表示接收UDP数据包错误数量1411 packets sent                   表示发送的UDP数据包数量0 receive buffer errors             表示接收缓冲区错误数量0 send buffer errors                表示发送缓冲区错误数量UDP Lite    统计信息此例中没有UDP Lite相关的数据TCP 扩展统计信息19 TCP sockets finished time wait in fast timer     表示快速计时器中完成的TCP套接字数量69 delayed acks sent                                表示发送的延迟确认数量1236 packet headers predicted                       表示预测的分组头数量7654 acknowledgments not containing data payload received 表示不包含数据有效载荷的确认数量1678 predicted acknowledgments                      表示预测的确认数量Detected reordering 8 times using SACK              表示使用SACK检测到重排序的次数TCPTimeouts: 1                                      表示TCP超时数量TCPBacklogCoalesce: 3                               表示TCP连接队列合并的数量TCPSackShiftFallback: 3                             表示TCP SACK位移回退的数量TCPRcvCoalesce: 1                                   表示TCP接收合并的数量TCPAutoCorking: 260                                 表示TCP自动停止的数量TCPSynRetrans: 1                                    表示TCP SYN重传的数量TCPOrigDataSent: 5468                               表示发送的原始数据量TCPHystartTrainDetect: 2                            表示TCP Hystart训练检测的次数TCPHystartTrainCwnd: 42                             表示TCP Hystart训练中使用的拥塞窗口大小TCPKeepAlive: 6405                                  表示TCP保活探测的数量TCPDelivered: 5515                                  表示TCP成功交付的数据量TcpTimeoutRehash: 1                                 表示TCP超时重哈希的数量IP扩展 统计信息InOctets: 859748                     表示接收的字节数OutOctets: 3324137                   表示发送的字节数InNoECTPkts: 13501                   表示接收的未使用拥塞暴露标记(ECT)的数据包数量MPTcpExt    表示多路径TCP扩展统计信息,此例中没有相关数据

需要关注:

IP层统计信息:Forwarding:表示IP层转发数据包的数量如果这个值很高,可能意味着网络拓扑复杂,或者存在异常的网络通信Received:表示接收到的IP数据包总数如果这个值很高,可能意味着网络通信繁忙Errors:表示接收到的错误IP数据包数量如果这个值较高,可能意味着网络接口或链路存在问题  **Dropped:表示丢弃的IP数据包数量如果这个值较高,可能意味着网络接口或链路存在问题,或者网络带宽不足 **ICMP统计信息:Received:表示接收到的ICMP消息数量如果这个值较高,可能意味着存在网络问题,例如路由问题或连接问题Errors:表示输入ICMP消息失败的数量如果这个值较高,可能意味着存在网络问题,例如路由问题或连接问题  **Sent:表示发送的ICMP消息数量如果这个值较高,可能意味着存在网络问题,例如路由问题或连接问题TCP统计信息:Connections:表示TCP连接的打开、被动打开和失败尝试的数量如果这些值较高,可能意味着网络通信繁忙,或者存在连接问题Segments:表示接收和发送的TCP段数量如果这些值较高,可能意味着网络通信繁忙Retransmitted:表示重传的TCP段数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题 **Errors:表示接收到的错误TCP段数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题 **UDP统计信息:Received:表示接收到的UDP数据包数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题Errors:表示接收UDP数据包错误数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题TCP扩展统计信息:Time Wait:表示快速计时器中完成的TCP套接字数量如果这个值较高,可能意味着存在连接问题Delayed Acks:表示发送的延迟确认数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题Predicted:表示预测的分组头和确认数量如果这些值较高,可能意味着网络通信繁忙Retrans:表示TCP重传的数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题IP扩展统计信息:InOctets:表示接收的字节数如果这个值较高,可能意味着存在网络问题,例如带宽不足OutOctets:表示发送的字节数如果这个值较高,可能意味着存在网络问题,例如带宽不足

ip 统计数据

ip - show / manipulate routing, network devices, interfaces and tunnels  

显示/操作路由、网络设备、接口和隧道

ip 集成了ipconfig、route、netstat 的功能,目前工作中最常用的命令之一,参数还能简写挺好

ip -s link            # 查看网口的网络包收发情况RX和TX分别表示网络接口的接收和发送统计信息bytes       表示接收或发送的字节数packets     表示接收或发送的数据包数量errors      表示接收或发送的错误数据包数量如果这个值较高,可能意味着存在网络问题,例如丢包或连接问题dropped     表示由于缓冲区溢出等原因而丢弃的数据包数量如果这个值较高,可能意味着存在网络问题,例如带宽不足或连接问题missed      表示由于缓冲区溢出等原因而丢失的数据包数量这个值通常与dropped类似,但在某些情况下可能会有所不同mcast       表示接收到的多播数据包数量carrier     表示发送时由于载波信号问题而丢弃的数据包数量如果这个值较高,可能意味着存在网络问题,例如链路问题或硬件问题collsns     表示发送时由于冲突而丢弃的数据包数量如果这个值较高,可能意味着存在网络问题,例如冲突或带宽不足

iftop 实时监测

iftop - display bandwidth usage on an interface by host  显示主机上网口的带宽使用情况

iftop 可以动态的检测网口的流量,捕获近期的网络连接流量,排查哪些主机流量比较多

iftop -i interface     # 监听指定的网口,不加会默认选一个-P               # 显示端口信息-t               # 用文本输出代替动态显示-s num           # 统计num秒内的数据,进行一次打印iftop -i interface -P -t

这些比较好理解,看字面意思就是了,Peak 峰值,Cumulative 累计值,rate 速率,其他单词应该没问题吧,大致可以监测出流量比较大的主机和端口是哪些。

ethtool 查看网卡信息

ethtool - query or control network driver and hardware settings 

查询和控制网络驱动程序以及硬件配置

ethtool 能查询到网口的驱动以及硬件信息,比如MAC,驱动、速率等,简单列几个不多赘述

ethtool-P interface           # 打印MAC地址-S interface           # 打印统计接收和发送的网络信息-i --driver interface  # 打印网口的驱动和总线位置信息ethtool interface          # 打印设备当前的配置,比如网速,链路状态等等 

tcpdump 抓包软件

tcpdump - dump traffic on a network  网络流量打包

最有效的网络数据包分析方式,当然是有难度的,命令自身就支持很多功能,也可以配合Wireshark 使用效率更高,非常建议看看《Wireshark网络分析就这么简单》--林沛满 入门抓包和分析,另外一本升级版《Wireshark网络分析的艺术》有兴趣也建议看看。

tcpdump 参数-c count         Exit after receiving count packets.-C file_size     这个需要配合-w 使用,当输出文件到指定大小时结束抓包-i interface     监听指定的网口,-D 可以指定监听多个网口-n     Don't convert host addresses to names.  This can be used to avoid DNS lookups.-w file          将抓取的网络包写入到文件,之后可以用-r 打印出来,建议使用pcap后缀

常用的方式:

# 抓取所有包
tcpdump -i any -n -vvv# 抓取eth0 网口上的 tcp 协议 80 端口的网络包,写入到test.pcap中
tcpdump -i eth0 -n tcp port 80 -w test.pcap# 打印抓取到文件的包
tcpdump -r test.pcap# 抓取eth0 网口100个的网络包写入到文件
tcpdump -i eth0 -w test.pcap -c 100# 抓取eth0 网口上的22和25口的包
tcpdump -i eth0 port {22,25} -n -vvv# 抓取指定网络接口上的指定IP地址的数据包
tcpdump -i eth0 host 192.168.1.1 -n -vvv# 抓取指定网络接口上的指定IP地址和端口的TCP数据包
tcpdump -i eth0 host 192.168.1.1 and port 80 -n -vvv

其他命令

ss 套接字分析

是netstat升级版,就照着netstat用就行

nmap 网络连接端扫描软件

非常强大的软件,扫描简单列一下,感兴趣的可以单独研究一下

1)主机发现nmap IP                       默认扫描1000口以内nmap IP1 IP2 IP3nmap 111.111.123.220-240nmap 111.111.123.1-255nmap -sP 111.111.123.1-255    ping检测nmap -PN IP 跳过ping检测Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-2542)端口扫描nmap -sT IP       全开扫描,完成三次握手nmap -sS IP       半开扫描,最后ACK报文不回复,不容易被记录nmap -p 80 IP     指定端口扫描nmap -p 80 IP1 IP2     指定端口扫描3)版本检测nmap -sV IP  开放端口的软件版本4)操作系统版本检测nmap -O IP   操作系统版本5)部分参数-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans-sU: UDP Scan-sO: IP protocol scan-p <port ranges>: Only scan specified portsEx: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

curl 请求url

发起网络请求,可以是请求API,URL还支持一些特殊的写法,可以观察很多网络参数

curl -vk https://baidu.com  查看请求连接详情
curl -w '\n time_namelookup=%{time_namelookup}\n time_connect=%{time_connect}\n time_appconnect=%{time_appconnect}\n time_redirect=%{time_redirect}\n time_pretransfer=%{time_pretransfer}\n time_starttransfer=%{time_starttransfer}\n time_total=%{time_total}\n' https://baidu.comtime_namelookup=0.000035          从请求开始到域名解析完成的耗时
time_connect=0.000144             从请求开始到 TCP 三次握手完成耗时 
time_appconnect=0.000000          从请求开始到 TLS 握手完成的耗时 
time_redirect=0.000000            从请求开始到向服务器发送第一个 GET/POST 请求开始之前的耗时 
time_pretransfer=0.000168         重定向时间,包括到内容传输前的重定向的 DNS 解析、TCP 连接、内容传输等时间 
time_starttransfer=0.037825       从请求开始到内容传输前的时间 
time_total=0.037843               从请求开始到完成的总耗时 curl https://baidu.com -X POST -d '{"name":"foo"}'    # 发送带参数的POST请求

至此,大概也知道了一些网络的指标以及查看的方式,看着到处都正常的时候,究极办法就是tcpdump 抓包分析了。 

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

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

相关文章

【数据结构】数据结构初识

前言&#xff1a; 数据结构是计算存储&#xff0c;组织数据的方式。数据结构是指相互间存在一种或多种特定关系的数据元素的集合。通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 Data Structure Vi…

H.264数据解析

什么是H.264 H264 是 MPEG-4 标准所定义的最新编码格式&#xff0c;同时也是技术含量最高、代表最新技术水平的视频编码格式之一&#xff0c;标准写法应该是H.264 H264 视频格式是经过有损压缩的&#xff0c;但在技术上尽可能做的降低存储体积下获得较好图像质量和低带宽图像…

劳特巴赫的基础使用(二)

一、基本介绍 LAUTERBACH是世界领先的微处理器开发工具厂商&#xff0c;成立于1979年&#xff0c;总部位于德国慕尼黑。 JTAG Debugger由PowerDebug和Debug Cable组成。PowerDebug是通用控制模块&#xff0c;支持所有Cable&#xff0c;没有License。Debug Cable绑定License&a…

26、江科大stm32视频学习笔记——I2C读写W25Q64

一、W25Q64简介 1、W25Q64的内存空间结构: 一页256字节&#xff0c;4K(4096 字节)为一个扇区&#xff0c;16个扇区为1块&#xff0c;容量为8M字节&#xff0c;共有128个块&#xff0c;2048 个扇区。 2、W25Q64每页大小由256字节组成&#xff0c;每页的256字节用一次页编程指…

笔记:C++/C编程学习:使用nuget管理c++库的原理

如果要做一个应用程序&#xff0c;我们往往会用到很多第三方库&#xff0c;这时库包管理工具就很重要&#xff0c;如js/npm&#xff0c;c#/nuget&#xff0c;php/composer&#xff0c;jave/maven之类&#xff0c;但vc一直没一个很舒服的包管理工具。很多c第三方库对vc都非常不友…

保姆级:Palworld幻兽帕鲁32人服务器一键部署

创建幻兽帕鲁服务器1分钟部署教程&#xff0c;阿里云和腾讯云均推出幻兽帕鲁服务器服务器和部署教程&#xff0c;4核16G和4核32G配置可选&#xff0c;阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程&#xff1a; 幻兽帕鲁服务器创建教程 幻兽帕鲁服务器官方推荐…

OpenSSL创建生成CA证书、服务器、客户端证书及密钥

OpenSSL创建生成CA证书、服务器、客户端证书及密钥 证数各参数含义生成CA证书创建root证书私钥创建请求证书创建自签署证书 生成服务器证书创建服务器证书创建服务器请求证书使用CA证书签署服务器证书 生成客户端证书创建客户端证书创建客户端请求证书使用CA证书签署客户端证书…

【模拟通信】AM、FM等的调制解调

调制相关的概念 调制&#xff1a;控制载波的参数&#xff0c;使载波参数随调制信号的规律变化 已调信号&#xff1a;受调载波&#xff0c;含有调制信号的全部特征 调制的作用: 提高发射效率多路复用&#xff0c;提高信道利用率提高系统抗干扰能力 两种调制方式 线性调制&a…

​第20课 在Android Native开发中加入新的C++类

​这节课我们开始利用ffmpeg和opencv在Android环境下来实现一个rtmp播放器&#xff0c;与第2课在PC端实现播放器的思路类似&#xff0c;只不过在处理音视频显示和播放的细节略有不同。 1.压缩备份上节课工程文件夹并修改工程文件夹为demo20&#xff0c;将demo20导入到Eclipse或…

搭建k8s集群实战(二)安装keepalived和haproxy

keepalived介绍: 是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障 Keepalived作用: 为haproxy提供vip(10.208.1.190)在三个haproxy实例之间提供主备,降低当其中一个haproxy失效的时对服务的影响。 1、yum安装Keepalived【三个master…

RBD —— 简介

目录 General workflow Tips RBD SOP inputs and outputs Clustering Importing a fractured object into DOPs RBD SOP support nodes Related SOPs Low-level SOPs 通常在刚体模拟中&#xff0c;希望实体对象会因某些碰撞或力而破碎&#xff1b;Houdini内大多数破碎…

C# Bitmap类学习1

Bitmap对象封装了GDI中的一个位图&#xff0c;此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using …

教你如何低成本自建「幻兽帕鲁」服务器,快速一键部署

创建幻兽帕鲁服务器1分钟部署教程&#xff0c;阿里云和腾讯云均推出幻兽帕鲁服务器服务器和部署教程&#xff0c;4核16G和4核32G配置可选&#xff0c;阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程&#xff1a; 幻兽帕鲁服务器创建教程 幻兽帕鲁服务器官方推荐…

EF core连接数据库的前期完整配置流程-开发环境搭建

EF core连接数据库完整流程-开发环境搭建 前置&#xff1a;.net6 core webapi不勾选任何配置 声明&#xff1a;这里是以两个配置类来做的&#xff0c;一个T_Books表&#xff0c;一个T_Person表 Book&#xff1a;创建属性及类型 BookConfig&#xff1a;对创建的进行属性数据表…

66.Spring是如何整合MyBatis将Mapper接口注册为Bean的原理?

原理 首先MyBatis的Mapper接口核心是JDK动态代理 Spring会排除接口&#xff0c;无法注册到IOC容器中 MyBatis 实现了BeanDefinitionRegistryPostProcessor 可以动态注册BeanDefinition 需要自定义扫描器&#xff08;继承Spring内部扫描器ClassPathBeanDefinitionScanner ) 重…

物业app开发实战:10大功能必备,打造智能社区生活

随着智能科技的快速发展&#xff0c;物业管理也逐渐迈入数字化时代。物业app开发成为了提升社区管理效率、改善居民生活质量的重要途径。在本文中&#xff0c;我将分享10大必备功能&#xff0c;帮助开发者打造智能社区生活的物业app。 1. 便捷的社区公告发布功能 通过物业app…

R语言VRPM包绘制多种模型的彩色列线图

列线图&#xff0c;又称诺莫图&#xff08;Nomogram&#xff09;&#xff0c;它是建立在回归分析的基础上&#xff0c;使用多个临床指标或者生物属性&#xff0c;然后采用带有分数高低的线段&#xff0c;从而达到设置的目的&#xff1a;基于多个变量的值预测一定的临床结局或者…

免费畅享,打破写作瓶颈:星火写作助手覆盖全面,助你轻松创作

啰嗦几句 最近年终岁末&#xff0c;公司的各种文案各种总结&#xff0c;写得人是头晕脑胀&#xff0c;所以好多小伙伴最近在求智能写作的软件&#xff0c;最好是ChatGPT。 ChatGPT是国外产品&#xff0c;在国内并不能访问。而就智能写作来说&#xff0c;我们何必舍近求远呢&am…

1.新建项目

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 1.新建项目 打开VS2022,点击“创建新项目”。 新建项目 2.选择项目类型 在搜索框输入“Maui”&#xff0c;选择“NET MAUI应用”&#xff0c;配置项目名称、保存地址等&#xff0c;并选择框架版本。 项目…

精准监测,守护城市脉搏:管网压力、流量监测设备

在繁忙的城市中&#xff0c;每一个管道都如同城市的血脉&#xff0c;承载着重要的使命。为了确保城市的正常运行&#xff0c;我们提供精准的管网压力、流量监测设备&#xff0c;用科技守护城市的脉搏。 我们的设备采用最新的技术&#xff0c;可以实时监测管网的压力和流量&…