Linux 性能优化:轻松入门



文章目录

  • 前言
  • 一、磁盘性能优化
    • 1、 磁盘 RAID 模式选择
    • 2、文件系统优化
  • 二、优化 CPU
    • 1、性能监控 :
    • 2、进程优先级调整 :
    • 3、进程与 CPU 绑定 :
  • 三、优化内存
  • 四、网络性能优化
    • 1、调整 TCP 缓冲区大小
    • 2、修改系统级别的文件描述符的数量
    • 3、调整 TCP 时间等待(TIME-WAIT)套接字的数量
    • 4、启用或调整 TCP 拥塞控制算法
    • 5、 禁用 ipv6 网络
    • 6、其他改善网络性能的方法
  • 总结


前言

  Linux 系统作为众多关键技术基础设施的 核心 ,其性能优化的重要性不言而喻。掌握 Linux 系统 性能优化 的策略和技巧,都是提升系统效率、保障服务稳定性的关键。本文将带领大家深入探索Linux系统性能优化的 多个维度 ,从磁盘的 RAID 模式选择到 CPU 和内存的精细调整,再到网络性能的全面提升,每一环节都旨在帮助您的系统达到更高的 运行效率


  大家好,我是技术界的小萌新,今天要和大家分享一些干货。在阅读之前请先点赞👍,给我一点鼓励吧!这对我来说很重要 (*^▽^*)

一、磁盘性能优化

1、 磁盘 RAID 模式选择

  系统优化是一个 持续 的过程,它涉及到硬件、软件以及它们之间的 交互 。磁盘阵列作为系统硬件的基础组成部分,在优化过程中扮演着关键角色。合理配置磁盘阵列不仅可以 提升系统性能 ,还可以根据应用需求实现成本效益和技术性能的最佳 平衡
  系统安装是构建任何服务平台的第一步。每一步都对系统的最终性能有着深远的影响。特别是磁盘阵列的配置,它决定了数据的存储方式、读写速度以及数据的安全性,常用的独立磁盘冗余阵列 (RAID) 模式有 RAID 0 (条带模式),RAID 1 (镜像模式), RAID 5RAID 6 (镜像校验模式),以及冗余增加 100% ,I/O 效率提升的 RAID 10 (镜像条带化模式)。根据业务场景可以参考以下思路进行优化:

  • RAID 0:适用于高速读写需求,无数据冗余,成本效益高,适合视频编辑、大数据分析等场景。
  • RAID 1:镜像双份数据,提供数据的高安全性,读写性能受限,适用于财务系统、医疗记录等对数据安全要求极高的业务。
  • RAID 5:分布式奇偶校验,提供数据安全同时优化读取性能,写入性能较低,适合Web服务器、邮件系统等读密集型应用。
  • RAID 6:双奇偶校验,进一步增强数据安全,可在两块硬盘故障时保护数据,适合需要高可靠性和数据冗余的数据中心。
  • RAID 10:结合镜像与条带化,提供高性能和数据安全,成本较高,适用于对读写性能和数据保护都有高要求的数据库系统。

   RAID 具体的各方面特点比较如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xaI3srhM-1721013974272)(https://i-blog.csdnimg.cn/direct/e19225da61a04017a864db46c4cefa62.png#pic_center =80%x)]

2、文件系统优化

  在 Linux 系统中,文件系统不仅是数据存储的基础设施,也是影响系统性能的因素之一。选择好的文件系统并对其进行细致的优化,可以进行数据存取效率方面的提升,并 降低延迟 ,提高系统的整体性能,
  不同的文件系统设计目标不同,如 ext4 适合多数通用场景, XFS 适合大数据量处理,选择易于管理和维护的文件系统也可以降低系统的 长期运营成本 ,以下同样是一些不同文件系统可以应用的场景提供给大家,作为优化的思路和方向:

  • Web应用通常需要快速响应和高并发处理能力,选择具有高 I/O 吞吐量的文件系统如XFS或Btrfs。
  • 数据库操作对数据的安全性和一致性要求高,ext4 的 journaling 模式或 XFS 的 WAL 特性是好的选择。
  • 大数据处理需要高效的读写性能和大文件支持,HDFS 或 Btrfs 可能更合适。
  • 视频和音频编辑需要高速读写和大文件处理能力,XFS 或专为 SSD 优化的文件系统如 F2FS 是优选。

  文件系统的优化是 Linux 性能优化中不可忽视的一环。通过细致的需求分析、明智的选择和恰当的配置调整,可以确保文件系统高效稳定地服务于应用需求,提升 Linux 系统的性能和响应速度。性能优化是一个持续的过程,需要根据系统的实际运行情况进行不断的评估和调整。


二、优化 CPU

  在Linux系统的性能优化中,CPU 优化是 核心 环节之一。CPU 作为计算的核心资源,往往是系统性能的瓶颈,特别是在计算密集型应用中,其性能的充分发挥对于整个系统的性能表现至关重要,优化CPU 性能可以 减少 进程等待时间, 提高 系统响应速度。
  CPU 优化思路是确保系统资源得到有效利用,在面对高负载或特定应用场景时,合理的优化方式可以显著提升系统性能,不过深入的了解 CPU 优化可能让人晦涩难懂,这里只提出几点容易 实现 的思路与方法:

1、性能监控 :

  通常可以使用工具如 top 、ps 和 pidstat 等监控 CPU 使用情况,对性能瓶颈进行识别,这时候我们需要清楚 CPU 使用率平均负载率 的区别,平均负载率是指单位时间内,指的是正在运行或等待 CPU 资源的进程,平均负载率不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。
  有这样一种场景,发生在 I/O 密集型操作中,当系统进行大量的磁盘读写操作时,进程可能会因为等待 I/O 操作完成而 阻塞 ,导致平均负载升高,而 CPU 使用率却不高,而如果数据库查询时没有 索引 或存在 死锁 也可能出现同样的状况,这时候就需要根据脚本工具 甄别 系统 瓶颈

2、进程优先级调整 :

  使用 nice 和 renice 命令:通过 nice 命令可以在启动进程时设置其优先级,而 renice 命令可以调整正在运行的进程的优先级。例如,要将某个进程的优先级设置为 -10 (高优先级),可以使用 renice -10 pid 命令。

3、进程与 CPU 绑定 :

  使用 taskset 命令:taskset 命令可以将进程绑定到特定的 CPU 核心上,可以减少 CPU 的上下文切换,提高执行效率。例如,要将进程ID为 123 的进程绑定到 CPU 核心 2 上,可以使用 taskset -cp 2 123 (-c 指定 CPU -p 指定 PID 号),这样人为的调度进程对于一些核心业务可能会更加合理。


三、优化内存

  在任何系统中,内存资源都是有限的。随着应用程序的增多和数据量的增大,对内存的需求也随之增长。内存资源的优化至关重要,因为内存是影响系统性能的关键因素之一。内存不足会导致频繁的页面交换( Page Swapping ),进而降低系统响应速度和处理能力。页面交换是当物理内存不足时,操作系统将部分内存数据暂时存储到磁盘上的过程。
  这个过程会显著降低系统响应速度。通过优化内存,可以减少页面交换,提高系统的整体性能。内存优化通常是使磁盘 I/O 操作减少来提高能效。因为磁盘操作通常比内存操作消耗更多的能量,减少页面交换可以降低系统的整体能耗。
  一般来说,如果能不使用交换空间 ( swap ) 最好,因为磁盘 I/O 操作通常比内存慢很多,例如一条 64 位的 DDR4-3200 内存的数据传输速率可以通过以下计算得出:‌3200MT/s x 64bit / 8 = 25600MB/s = 25.6 GB/s。‌而现在通用的 PCIE 4.0 固态硬盘速度最高都只有 7000 MB/s 左右的读取速率,两者差距接近四倍。
  所以 Kubernetes 1.22 版本前不支持 Linux 节点上的交换空间,因为交换内存的使用会影响性能和资源管理。Kubelet 官方 建议 不使用交换空间,默认在检测到交换空间时无法启动。关闭交换空间可以避免性能下降,尤其是在性能敏感的环境下。尽管新版本改进了对交换空间的支持,但在追求高性能的场景中,关闭交换空间仍然是 推荐 的做法。接下来可通过以下命令关闭交换空间:

swapoff -a
# 关闭所有交换空间的挂载

sed -i '/swap/d' /etc/fstab
# 匹配删除所有 swap 交换空间挂载行

  如果业务临时需要交换空间的 冗余性 以对抗系统高负载情景,也可以通过优化 vm.swappiness 参数,它是 Linux 内核中用于控制内存和交换空间 使用倾向 的一个参数,决定了内核在内存紧张时使用交换空间的积极程度。它的取值范围是0到100,vm.swappiness = 0 时,内核将 尽可能少 地使用交换空间,同时优化以下参数也可以优化内存使用情况。
   vm.dirty_ratiovm.dirty_background_ratio 参数是 Linux 系统中控制内存中脏页(dirty pages)行为的两个关键内核参数。脏页是指那些已经 被修改过 并且需要 被写入 磁盘的 内存页 。这 2 个参数可以视为内存使用的 安全警戒线 。一旦内存中的脏页比例达到这个值,系统就会主动介入,确保数据及时被 "写回 到磁盘,防止内存被过度 占用 ,vm.dirty_background_ratio 则是针对后台进程,这两个参数默认值通常为 30%,10%。对于内存受限的系统,合理配置 vm.swappiness 可以防止 内存溢出 ,同时保持系统性能。有两种需要调整脏页比例的场景如下:

  • 应用服务数据较为重要 → 通常减少脏页比例,加快数据写入硬盘速度,提高数据安全性。
  • 在某些应用中数据重要性较低,可以接受数据丢失 → 增加脏页比例,加快内存响应速度。

  最后我们通过以下方法修改系统内核中交换倾向和脏页比例。

[root@ECS-TEST ~] echo "vm.swappiness = 0
vm.dirty_background_ratio = 50
vm.dirty_ratio = 80
" >> /etc/sysctl.conf[root@ECS-TEST ~] sysctl -p
vm.swappiness = 0
vm.dirty_background_ratio = 50
vm.dirty_ratio = 80# 脏页比例修改成功

四、网络性能优化

  在现代计算环境中,网络成为连接各种服务和应用的关键纽带。Linux 系统作为服务器或工作站,其网络性能直接影响到数据传输效率、服务响应速度和 用户体验 。网络延迟和带宽限制可能导致 服务中断 、数据包丢失,甚至 安全问题 ,网络性能也将成为限制系统整体性能的瓶颈。
  例如,在高并发场景下,如果网络处理能力不足,将导致请求 积压 ,影响服务的可用性和响应速度。因此,优化网络性能是确保 Linux 系统高效、稳定运行的 前提 。对网络性能的调优需要借助各种工具来了解系统的瓶颈,这里推荐 iperf3 广泛用于测试网络带宽和延迟,Netperf 支持多种网络性能测试, iftop 实时监控网络接口的流量,帮助识别流量高峰和异常流量模式,非常好用。通过工具 分析网络流量 和系统日志, 识别 网络性能的 瓶颈 是网络硬件、配置问题还是软件缺陷。由于篇幅原因,具体的使用方法就不多赘述,可自行了解。
  这里我专门收集了一些简单易上手的网络性能优化方法,在保证效果的同时也帮助大家了解 Linux 网络调优 的思路并入门。

1、调整 TCP 缓冲区大小

   TCP 协议的一个重要特性是它使用 缓冲区 来管理数据的发送和接收。缓冲区大小是指 TCP socket 为发送和接收数据保留的 内存空间大小 。在高带宽、 高并发 、或高延迟环境下,需要增大缓冲区,来提高 TCP 连接一次性发送的数据量,减少网络 往返次数 ,提高大数据传输的效率。
  但设置过大的缓冲区可能会导致内存浪费。如果缓冲区较小,接收方可能需要更频繁地处理数据包,这可能导致网络延迟。通过以下调整内核参数来指定 TCP socket 缓冲区的默认和 最大值

[root@TEST ~] echo "net.core.rmem_default=8388608" >> /etc/sysctl.conf
# TCP 套接字缓冲用于接受数据包的内存默认值,这里设置为 8 MB(8388608 字节)。[root@TEST ~] echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf
# TCP 套接字缓冲用于接受数据包的内存最大值,这里设置为 16 MB,单个 TCP 连接的发送缓冲区也不会超过这个大小。[root@TEST ~] echo "net.core.wmem_default=68388608" >> /etc/sysctl.conf
# TCP 套接字缓冲用于发送数据包的内存默认值,设置为 8 MB[root@TEST ~] echo "net.core.wmem_max=16777216" >> /etc/sysctl.conf
# TCP 套接字缓冲用于发送数据包的内存最大值,设置为 16 MB[root@TEST ~] sysctl -p
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_default=68388608
net.core.wmem_max=16777216

2、修改系统级别的文件描述符的数量

   增加文件描述符的数量可以允许系统打开更多的 网络连接 ,适用于高并发场景。但过高的值可能会消耗过多资源,我们可以适当提高系统打开文件描述符的最大值。

[root@TEST ~] echo "fs.file-max = 100000" >> /etc/sysctl.conf
[root@TEST ~] sysctl -p
fs.file-max = 100000

3、调整 TCP 时间等待(TIME-WAIT)套接字的数量

   TIME-WAIT 状态是 TCP 连接关闭过程中的最后一个状态,这个状态的目的是确保所有重复的或延迟的数据包都被 丢弃 ,避免它们干扰新的连接。在 TIME-WAIT 状态下,连接使用的本地端口和远程IP地址+端口对被保留,不能用于新的连接。
   net.ipv4.tcp_max_tw_buckets 用于设置 TIME-WAIT 套接字的最大数量,如果将 TIME-WAIT 状态参数调小,内核将更积极地清除 TIME-WAIT 状态的套接字。这可以减少它所占用的资源,加快端口的复用,从而允许更多的连接能够被快速建立。
   不过过多减少 TIME-WAIT 可能会引起IP地址冲突,导致新的连接建立失败或不稳定,调整这个参数之前,应该根据 实际 的网络流量和应用需求进行评估,以找到合适的 平衡点 ,我们可以大体可以调整为以下的值:

[root@TEST ~] sysctl -a | grep net.ipv4.tcp_max_tw_buckets
net.ipv4.tcp_max_tw_buckets = 8192  net.ipv4.tcp_congestion_control=bbr
# 这里我的默认 TIME-WAIT 状态套接字最大值为 8192,将它进行调低。[root@TEST ~] echo "net.ipv4.tcp_max_tw_buckets=5000" >> /etc/sysctl.conf
# 系统将尝试保持 TIME-WAIT 套接字的数量不超过这个值,超出的套接字将被更快地清除。[root@TEST ~] sysctl -p 
net.ipv4.tcp_max_tw_buckets=5000

4、启用或调整 TCP 拥塞控制算法

   网络传输过程中,一段时间内如果网络中对于服务器中资源的需求超过了该资源提供传输的最大部分,网络性能就会变坏,这时候系统就发生了 网络拥塞 ,即输入的负载大于系统最大的网络吞吐量 , TCP 拥塞控制算法是用于管理网络数据传输速率的机制,以避免网络拥塞和数据包丢失。TCP 协议通过这些算法动态调整其发送窗口大小,以适应网络条件。
  其中 BBR 是 Google 开发的一种新的 TCP 拥塞控制算法,它在 2016 年被引入 Linux 内核。 使用 BBR 算法的好处有:

  • 提高吞吐量:BBR 能够更有效地利用可用带宽,减少因拥塞导致的丢包和重传。
  • 减少延迟:通过更平滑的窗口大小调整,BBR 会减少数据传输的延迟。
  • 适应性强:BBR 算法适用于各种网络条件,包括高带宽延迟积(BDP)网络。

   最后我们通过一段例子来理解 BBR 算法时如何工作的。

   假设你拥有一个在线视频流服务,用户通过互联网连接观看视频。视频数据通过 TCP 连接从服务器传输到用户的设备。现在,我们考虑网络拥塞控制算法在这个过程中的作用。

  • 初始阶段 - 慢启动
    ① 当用户开始观看视频时,TCP 连接建立,拥塞窗口( cwnd )设置为一个最大报文段(MSS)大小。
    ② 服务器开始发送数据,由于是慢启动阶段,cwnd 逐渐按指数增长,每次收到一个 ACK,cwnd 增加一个 MSS 大小。

# 拥塞窗口 cwnd:TCP 协议用来控制数据发送速率的一个参数,它的大小表示了在任何时刻,发送方可以向接收方发送但还没有收到确认(ACK)的数据量。
# 最大报文段(MSS):TCP 中一个报文段的最大尺寸,也就是四层传输层 TCP 层一次能传输的最大数据量。MSS 是在 TCP 连接建立时,双方协商确定的,它取决于网络环境和接收方的处理能力。与 MTU (最大传输单元) 区别,MTU 为二层链路层一个数据帧的大小,通常规定为 1500 字节。

  • 拥塞避免阶段
    ① 当 cwnd 增长到一定程度(通常是慢启动阈值,ssthresh),进入拥塞避免阶段。
    ② 在这个阶段,cwnd 的增长速度变慢,按线性速率增长,每次收到 ACK,cwnd 增加 1/MSS大 小。

  • 检测到拥塞
    ① 如果在传输过程中发生了丢包,用户设备没有及时发送 ACK,服务器检测到超时或收到三个重复的 ACK(快速重传机制),认为发生了拥塞。
    ② 服务器将 ssthresh 设置为当前 cwnd 的一半,并重传丢失的数据包。cwnd 重置为一个 MSS 大小,再次进入慢启动阶段。

  • BBR 算法的介入
    ① 如果服务器使用了BBR算法,它将通过测量 ACK 的到达模式来估计网络的瓶颈带宽。
    ② BBR 算法会根据当前的带宽和 RTT (Round-Trip Time,往返时延) 动态调整 cwnd ,而不是简单地在丢包时减半。
    ③ BBR 会尝试维持一个稳定的队列大小,避免网络拥塞,同时充分利用可用带宽。

  • 结果
    ① 使用 BBR 算法的服务器能够更有效地 适应 网络条件的变化,例如带宽的波动或延迟的增加。
    ② 用户在观看视频时,体验更加流畅,因为 BBR 算法减少了因拥塞导致的缓冲和重传。
    ③ 视频流服务能够 处理 更多的并发用户,因为 BBR 算法优化了带宽的使用,减少了不必要的拥塞。

   通过这个例子,我们可以了解 TCP 拥塞控制算法如何帮助管理网络数据传输速率,避免拥塞,并确保数据包的 可靠传输 。BBR 算法作为其中的一种,通过智能的 窗口调整 ,提高了网络传输的效率和稳定性。

BBR 算法介绍:https://blog.csdn.net/weixin_41910694/article/details/117229422

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAKHv13E-1721013974276)(https://i-blog.csdnimg.cn/direct/2b373f64d9cc4a28bdc0301cb5660a3c.png#pic_center)]

引用来源:https://blog.csdn.net/love_668/article/details/116913790

   最后介绍了这么多,开启 BBR 拥塞算法的方式是十分简单的,只需要修改内核参数 net.ipv4.tcp_congestion_control 即可。


[root@TEST ~] echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 启用或修改 TCP 拥塞控制算法为 BBR[root@TEST ~] sysctl -p
net.ipv4.tcp_congestion_control=bbr

5、 禁用 ipv6 网络

  众所周知,IPv6 网络目前支持不完善,一些旧的软件或硬件可能不支持 IPv6,或者与 IPv6 的交互存在问题,IPv6 由于其设计,可能在某些配置中更容易受到某些类型的网络攻击,如邻居欺骗攻击,所以禁用 IPv6 可以减少潜在的攻击面,特别是在 IPv6 安全措施没有得到充分实施的情况下。
  如果网络环境中所有的通信都通过 IPv4 进行,且没有使用 IPv6 的需求,禁用 IPv6 可以减少配置的复杂性。禁用 IPv6 可以减少内核为 IPv6 维护的路由表和其他数据结构所需的内存,提高系统内存空间,修改以下内核参数可以进行 ipv6 网络的禁用。

# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1# 禁用 IPv6 路由和转发
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.default.forwarding = 0# 禁用 IPv6 自动配置
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0

6、其他改善网络性能的方法

  • 使用负载均衡 :为网络传输均衡技术,分散网络流量,避免单点过载,提高网络的吞吐量和稳定性。
  • 升级网络硬件 :更换更快的网络接口卡 (NIC)、使用更高性能的路由器和交换机,可以从硬件层面改善 Linux 系统网络性能。
  • 优化网络的物理布局 :减少网络设备之间的物理距离,使用高质量的网线和光纤,可以减少信号衰减和延迟。
  • 优化网络逻辑结构 :减少路由跳数,优化路由路径,确保数据包以最短的路径传输。
  • 使用 CDN(Content Delivery Network) :内容分发网络可以将内容缓存到离用户更近的服务器上,减少延迟和提高用户访问速度。
  • 实施网络分段和隔离 :通过将网络分割成多个虚拟局域网(VLAN),可以提高安全性和性能,防止广播风暴。
  • 优化应用程序的网络使用 :在应用程序层面,优化数据传输方式,减少不必要的网络请求,使用压缩和批量处理技术,如启用 Nginx 的 Gzip 压缩功能,提高 Web 服务性能的常用技术之一,尤其适用于文本内容较多的网站。通过减少传输的数据量,Gzip 压缩可以显著减少页面加载时间,提升用户体验。

总结

  在本文中,我们深入探讨 了Linux 系统性能优化的多个关键点,涵盖了磁盘 RAID 模式的选择、文件系统的优化、CPU 和内存的调整,以及网络性能的全面提升。通过这些细致的优化措施,我们不仅可以提高系统的运行效率,还能确保服务的稳定性和 响应速度
  通过本文的分享,我们希望能够帮助技术爱好者和系统管理员在面对 Linux 系统性能优化时,能够有更多的思路和方法。优化是一个 持续 的过程,需要不断地评估和调整以适应不断变化的应用需求和技术环境。希望您能从本文中获得有价值的信息,并将其应用于实践中,让您的系统运行得更加 流畅高效


  文章到这里就结束了,希望我的分享能为你的技术之旅增添一抹亮色。如果你喜欢这篇文章,请点赞收藏支持我,给予我前行的动力!🚀



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

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

相关文章

js中基础数据类型与引用数据类型的种类以及区分

一、js有哪几种数据类型?几种新增数据类型? 1.分基础类型和引用型类型 基础数据类型有: number、String、boolean、undefined、null 引用数据类型有 Object(Array/数组和 function/函数 也属于对象的一种) 新增的数据类…

微信小程序:3.页面开发

页面配置 注意 1.不需要添加window作为父级 窗口表现 "navigationBarBackgroundColor": "#ffffff","navigationBarTextStyle": "black","navigationBarTitleText": "第二个页面","backgroundColor": &…

求职学习day5

安排明天hr面 投一下平安可能。 hr面准备,复习java核心技术,复习java项目。 正视自己,调整心态。 也是很早接触了javaguide但是没有持续学习,项目介绍 | JavaGuide,面试前复习一下感觉还是很有收获的。 还有一些…

studio编译报错java.lang.NullPointerException

安卓studio编译报错,这个是一个新建的项目就报错,原因是 implementation androidx.appcompat:appcompat:1.7.0版本太高,修改后版本 implementation androidx.appcompat:appcompat:1.4.0, 编译又报错 18 issues were found wh…

【MQTT(3)】开发一个客户端,QT-Android安卓手机版本

手机版本更加方便 生成安卓库 参考了这个代码 在编译Mosquitto以支持安卓平台时,主要涉及到使用Android NDK(Native Development Kit)进行交叉编译。环境的准备参考之前的博客【QT开发(17)】2023-QT 5.14.2实现Andr…

视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案

LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特,能够同时接入并处理多路设备的视频流,支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样,涵盖了视频直播监控、…

我国化工园区产业耦合发展的四种典型模式

化工园区产业耦合发展是石化化工行业走新型工业化道路,协同推进降碳、减污、扩绿、增长的必然要求,是行业实现高质量发展的必由之路。目前,我国化工园区产业耦合发展正处于探索阶段,赛迪研究院通过对石油化工、煤化工、盐化工和精…

进程与线程(一)进程相关

目录 一. 概念二 . 组成进程控制块程序段数据段 三. 特征四. 进程的状态与转换五. 进程控制进程创建进程终止进程阻塞与进程唤醒进程切换 六. 进程通信共享存储消息传递管道通信 一. 概念 多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性&…

Linux-交换空间(Swap)管理

引入概念 在计算机中,硬盘的容量一般比内存大,内存(4GB 8GB 16GB 32GB 64GB…),硬盘(512GB 1T 2T…)。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器&#xff0c…

白骑士的C++教学实战项目篇 4.3 多线程网络服务器

系列目录 上一篇:白骑士的C教学实战项目篇 4.2 学生成绩管理系统 在这一节中,我们将实现一个多线程网络服务器项目,通过该项目,我们将学习套接字编程的基础知识以及如何使用多线程处理并发连接。此外,我们还将实现一个…

路由数据获取及封装方法

数据库设计 自联表 定义tree字段 public class LabelValue{public int label { get; set; }public string? value { get; set; }public List<LabelValue> children { get; set; }}获取路由方法 public Response<object> getMenuList() {Response<object>…

利用patch-package补丁,解决H5预览PDF时电子签章不显示问题

利用patch-package补丁&#xff0c;解决H5预览PDF时电子签章不显示问题 一、问题描述 在生产环境中&#xff0c;遇到了一个紧急的技术问题&#xff1a;用户在移动端H5页面上查看电子票时&#xff0c;PDF文件预览功能正常&#xff0c;但其中的电子签章未能正常显示。这一问题直…

Linux网络——TcpServer

一、UDP 与 TCP 在现实生活中&#xff0c;Udp 类似于发传单&#xff0c;Tcp 类似于邮局的挂号信服务。 1.1 UDP&#xff08;用户数据报协议&#xff09; 无连接&#xff1a;发放传单时&#xff0c;你不需要提前和接受传单的人建立联系&#xff0c;直接把传单发出去。不可靠&…

0718vscode问答

终于来到 qt # Question 多态 # Answer 多态是面向对象编程中的一个重要概念&#xff0c;指的是同一个接口可以有多种不同的实现方式。多态性允许我们使用一个统一的接口来处理不同类型的对象&#xff0c;从而提高代码的灵活性和可扩展性。 在Java中&#xff0c;多态可以通过以…

处理.git文件夹过大出现臃肿问题

1、问题背景 在软件开发过程中&#xff0c;版本控制是一个至关重要的环节。Git 作为一种流行的分布式版本控制系统&#xff0c;被广泛应用于各种项目中。然而&#xff0c;近期我们发现在进行项目发版时&#xff0c;Git 克隆项目的时间显著增加&#xff0c;严重影响了发版的效率…

stm32入门-----EXTI外部中断(下——实践篇)

目录 前言 一、硬件介绍 1.对射红外线传感器 2.旋转编码器 二、EXTI外部中断C编程 1.开启RCC时钟 2.配置GPIOK口初始化 3.配置AFIO 4.配置EXIT 5.配置NVIC 三、EXIT外部中断项目实操 1.对射红外传感器计数 2.选择编码器计数 前言 本期接着上一期的内容继续学习stm3…

DHCP中继实验

一、什么是DHCP中继? 1、使得一个DHCP服务器同时为多个网段服务称为DHCP中继技术。 2、配置DHCP中继的网络设备可以在不同网段上从DHCP总服务器获取IP地址分配给下面的各个主机。 3、路由器和交换机都可充当中继。DHCP中继在两个网段间代理客户端和服务器请求,中继服务器需要…

SEO需要了解的8大html标签

做SEO久了就会发现SEO不是一项单一的技术&#xff0c;它需要你懂得很多东西&#xff0c;绝不是文章外链那么简单&#xff0c;至少你要懂得基本的标html标签。 1、title标签 标题是搜索引擎重要的参考标签&#xff0c;占有举足轻重的权重。建议不要在标题标签出现过多的关键词…

postman双击打不开的解决方案

postman双击打不开的解决方案 深入再深入 于 2022-05-09 15:45:56 发布 阅读量3.1k 收藏 2 点赞数 4 文章标签&#xff1a; postman 版权 右键属性 安装路径 更新版本 回滚 问题排查 关键词由CSDN通过智能技术生成 解决方案&#xff1a; 右键-属性&#xff0c;复制安装路…

Git 代码管理面试59题(一)

1. 简述Github和Gitlab的区别&#xff1f; 参考回答&#xff1a; Github是一个基于git实现在线代码托管的仓库&#xff0c;向互联网开放&#xff0c;企业版要收钱。gitlab类似 github&#xff0c;一般用于在企业内搭建git私服&#xff0c;要自己搭环境。GitHub如果使用私有仓…