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

Linux - Linux系统优化思路

文章目录

  • 影响Linux性能的因素
    • CPU
    • 内存
    • 磁盘I/O性能
    • 网络宽带
  • 操作系统相关资源
    • 系统安装优化
    • 内核参数优化
    • 文件系统优化
  • 应用程序软件资源
  • 系统性能分析工具
    • vmstat命令
    • iostat命令
    • sar命令
  • 系统性能分析标准
  • 小结

在这里插入图片描述


影响Linux性能的因素

CPU

CPU是操作系统稳定运行的根本,CPU的速度与性能在很大程度上决定了系统整体的性能,因此,CPU数量越多、主频越高,服务器性能也就相对越好。但事实上并非完全如此。

目前大部分CPU在同一时间内只能运行一个线程,超线程的处理器可以在同一时间运行多个线程,因此,可以利用处理器的超线程特性提高系统性能。在Linux系统下,只有运行SMP内核才能支持超线程,但是,安装的CPU数量越多,从超线程获得的性能方面的提高就越少。

另外,Linux内核会把多核处理器当作多个单独的CPU来识别,例如两个4核的CPU,在Lnux系统下会被当作8个单核CPU。但是从性能角度来讲,两个4核的CPU和8个单核的CPU并不完全等价,根据权威部门得出的测试结论,前者的整体性能要比后者低25%~30%。

内存

内存的大小也是影响Linux性能的一个重要的因素。内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应;内存太大,导致资源浪费。

Linux系统采用了物理内存和虚拟内存两种方式,虚拟内存虽然可以缓解物理内存的不足,但是占用过多的虚拟内存,应用程序的性能将明显下降。

要保证应用程序的高性能运行,物理内存一定要足够大;但是过大的物理内存,会造成内存资源浪费.


磁盘I/O性能

磁盘I/O性能直接影响应用程序的性能。在一个有频繁读写的应用中,如果磁盘I/O性能得不到满足,就会导致应用停滞。 磁盘采用了很多方法来提高I/O性能,比如常见的RAID技术。

RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列,简称磁盘阵列)通过将多块独立的磁盘(物理硬盘)按不同方式组合起来形成一个磁盘组(逻辑硬盘),从而提供比单个硬盘更高的I/O性能和数据冗余。

通过RAID技术组成的磁盘组,就相当于一个大硬盘。用户可以对它进行分区格式化、建立文件系统等操作,与单个物理硬盘几乎一模一样。唯一不同的是,RAID磁盘组的I/O性能比单个硬盘要高很多,同时在数据的安全性也有很大提升。

根据磁盘组合方式的不同,RAID可以分为RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID0+1、RAID10等级别。常用的RAID级别有RAID0、RAID1、RAID5、RAID0+1,这里进行简单介绍。

  • RAID0:通过把多块硬盘粘合成一个容量更大的硬盘组,提高磁盘的性能和吞吐量。这种方式成本低,要求至少两个磁盘,但是没有容错和数据修复功能,因而只能用在对数据安全性要求不高的环境中。
  • RAID1:也就是磁盘镜像,通过把一个磁盘的数据镜像到另一个磁盘上,最大限度地保证磁盘数据的可靠性和可修复性,具有很高的数据冗余能力,但磁盘利用率只有50%,因而,成本最高,多用在保存重要数据的场合。
  • RAID5:采用了磁盘分段与奇偶校验技术,从而提高了系统可靠性,RAID5读出效率很高,写入效率一般,至少需要3个磁盘,允许一个磁盘故障,而不影响数据的可用性。
  • RAID0+1:把RAID0和RAID1技术结合起来就成了RAID0+1,至少需要4个硬盘。此种方式的数据除分布在多个磁盘上外,每个磁盘都有其镜像盘,提供全冗余能力,同时允许一个磁盘故障,而不影响数据可用性,并具有快速读/写能力。

通过了解各个RAID级别的性能,可以根据应用的不同特性,选择适合自身的RAID级别,从而保证应用程序在磁盘方面达到最优性能。


网络宽带

Linux下的各种应用,一般都是基于网络的,因此网络带宽也是影响性能的一个重要因素。低速、不稳定的网络将导致网络应用程序的访问阻塞,而稳定、高速的网络带宽可以保证应用程序在网络上畅通无阻地运行。


操作系统相关资源

系统安装优化

系统优化可以从安装操作系统开始。当安装Linux系统时,磁盘的划分、交换分区内存的分配都直接影响以后系统的运行性能.

例如,磁盘分配可以遵循应用的需求:

  • 对于写操作频繁而对数据安全性要求不高的应用,可以把磁盘做成RAID0;
  • 而对于对数据安全性较高而对读写没有特别要求的应用,可以把磁盘做成RAID1;
  • 对于对读操作要求较高而对写操作无特殊要求并要保证数据安全性的应用,可以选择RAID5;
  • 对于对读写要求都很高并且对数据安全性要求也很高的应用,可以选择RAID0+1。

这样通过不同的应用需求设置不同的RAID级别,在磁盘底层对系统进行优化操作。


随着内存价格的降低和内存容量的日益增大,对虚拟内存交换分区的设定,现在已经没有了所谓虚拟内存是物理内存两倍的要求,但是交换分区的设定还是不能忽略。

根据经验,

  • 如果内存较小(物理内存小于4GB),一般设置交换分区交换分区大小为内存的2倍;
  • 如果物理内存大于8GB小于16GB,可以设置交换分区大小等于或略小于物理内存即可;
  • -如果内存大小在16GB以上,原则上可以设置交换分区为0,但并不建议这么做,因为设置一定大小的交换分区还是有一定作用的。

在这里插入图片描述

内核参数优化

系统安装完成后,优化工作并没有结束。接下来。还可以对系统内核参数进行优化。不过,内核参数的优化要和系统中部署的应用结合起来整体考虑。

如果部署的是Web应用,那么就需要根据Web应用特性进行网络参数的优化,例如,修改net.ipv4.ip_local_ port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等网络内核参数


文件系统优化

在Linux下可选的文件系统有ext2、ext3、ReiserFS、ext4、XFS。根据不同的应用,选择不同的文件系统。


应用程序软件资源

应用程序的优化其实是整个优化工程的核心。如果一个应用程序存在bug,那么即使所有其他方面都达到了最优状态,整个应用系统还是性能低下。所以,对应用程序的优化是性能优化过程的重中之重。

在这里插入图片描述


系统性能分析工具

如何从系统上发现是某个方面或某几个方面出现问题了呢?这就需要使用Linux系统提供的几个常用性能分析工具。


vmstat命令

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,很多Linux发行版本都默认安装了此命令工具。

利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等进行监控,不足之处是无法对某个进程进行深入分析。

vmstat使用语法如下。

 [root@VM-24-3-centos ~]# vmstat --helpUsage:vmstat [options] [delay [count]]Options:-a, --active           active/inactive memory-f, --forks            number of forks since boot-m, --slabs            slabinfo-n, --one-header       do not redisplay header-s, --stats            event counter statistics-d, --disk             disk statistics-D, --disk-sum         summarize disk statistics-p, --partition <dev>  partition specific statistics-S, --unit <char>      define display unit-w, --wide             wide output-t, --timestamp        show timestamp-h, --help     display this help and exit-V, --version  output version information and exitFor more details see vmstat(8).
[root@VM-24-3-centos ~]#
  • -V:表示输出版本信息,是可选参数。
  • -n:表示在周期性循环输出时,输出的头部信息仅显示一次。
  • delay:表示两次输出之间的间隔时间。
  • count:表示按照“delay”指定的时间间隔统计的次数。默认为1。

例如:

vmstat 3

表示每3秒钟更新一次输出信息,循环输出,按Ctrl+c组合键停止输出。

vmstat 3 5

表示每3秒更新一次输出信息,统计5次后停止输出。


iostat命令

iostat是I/O statistics(输入/输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监控。它的输出主要显示磁盘读写操作的统计信息,同时也会给出CPU使用情况。

同vmstat一样,iostat也不能对某个进程进行深入分析,仅对系统的整体情况进行分析

iostat一般都不随系统安装。要使用iostat工具,需要在系统上安装一个Sysstat工具包。Sysstat是一个开源软件,官方地址为http://pagesperso-orange.fr/sebastien.godard。

可以选择以源代码包或rpm包的方式安装。安装完毕,系统会多出3个命令:iostat、sar和mpstat。然后就可以直接在系统下运行iostat命令了。

iostat使用语法如下。

iostat [ -c | -d ] [ -k ] [ -t ] [ -x [ device ] ] [ interval [ count ] ][root@VM-24-3-centos ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ [ -T ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
[ <device> [...] | ALL ]
[root@VM-24-3-centos ~]#

各个选项及参数含义如下。

-c:显示CPU的使用情况。

-d:显示磁盘的使用情况。

-k:每秒以千字节为单位显示数据。

-t:输出统计信息开始执行的时间。

-x device:指定要统计的磁盘设备名称,默认为所有的磁盘设备。

interval:指定两次统计间隔的时间。

count:按照“interval”指定的时间间隔统计的次数。


sar命令

sar命令很强大,是分析系统性能的重要工具之一。通过sar指令,可以全面地获取系统的CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。

sar使用格式如下。

sar [options] [-o filename] [interval [count] ][root@VM-24-3-centos ~]# sar -help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
[root@VM-24-3-centos ~]#

各个选项及参数含义如下。

options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A:显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
-u:显示系统所有CPU在采样时间内的负载状态。
-P:显示当前系统中指定CPU的使用情况。
-d:显示系统所有硬盘设备在采样时间内的使用状况。
-r:显示系统内存在采样时间内的使用状况。
-b:显示缓冲区在采样时间内的使用情况。
-v:显示进程、文件、inode节点和锁表状态。
-n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示以上三个信息。它们可以单独或者一起使用。
-q:显示运行队列的大小,它与系统当时的平均负载相同。
-R:显示进程在采样时间内的活动情况。
-y:显示终端设备在采样时间内的活动情况。
-w:显示系统交换活动在采样时间内的状态。
-o filename:表示将命令结果以二进制格式存放在文件中,filename是文件名。
interval:表示采样间隔时间,是必须有的参数。
count:表示采样次数,是可选参数,默认值是1。


示例如下

要查看系统CPU的整体负载状况,每3秒统计一次,统计5次,可以使用以下命令。

sar –u 3 5

系统的CPU计数是从0开始的,如果要查看第二颗CPU的运行负载,使用以下命令。

sar –P 1 3 5

要查看系统磁盘的读写性能,使用以下命令。

sar -d 3 5

同理,要查看系统内存使用情况、网络运行状态,可以分别使用以下命令。

sar -r 5 2
sar -n DEV 5 3

系统性能分析标准

性能调优的主要目的是使系统能够有效地利用各种资源,最大地发挥应用程序和系统之间的性能融合,使应用高效、稳定地运行。

但是,衡量系统资源利用率好坏的标准没有一个严格的定义,针对不同的系统和应用也没有一个统一的说法。因此,这里提供的标准其实是一个经验值。

【判定系统资源利用状况的一般准则】

在这里插入图片描述
其中

  • %user表示CPU处在用户模式下的时间百分比;
  • %sys表示CPU处在系统模式下的时间百分比;
  • %iowait表示CPU等待输入输出完成时间的百分比;
  • swap in即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM;
  • swap out即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。

小结

我们只说了三个常用的系统性能分析工具。其实Linux下的性能分析工具还有很多。例如,uptime可以检查CPU的平均负载,free可以查看系统内存的使用状况,ps、top可以配合监控系统的进程运行状态,netstat可以监测网络流量状况,等等

系统性能优化是个涉及面广、繁琐、长久的工作,寻找出现性能问题的根源往往是最难的部分。一旦找到出现问题的原因,性能问题也就迎刃而解。因此,解决问题的思路变得非常重要。

例如,Linux系统下的一个系统,用户反映,网站访问速度很慢,有时无法访问。

针对这个问题,

  • 第一步要做的是检测网络,可以通过ping命令检查网站的域名解析是否正常。同时,ping服务器地址的延时是否过大,等等。通过这种方式,首先排除网络可能出现的问题。如果网络没有问题
  • 接着进入第二步,对Linux系统的内存使用状况进行检查。因为网站响应速度慢,一般跟内存关联比较大,通过free、vmstat等命令判断内存资源是否紧缺。如果内存资源不存在问题,
  • 进入第三步,检查系统CPU的负载状况,可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题。如果CPU没有问题,
  • 继续进入第四步,检查系统的磁盘I/O是否存在瓶颈,可以通过iostat、vmstat等命令检查磁盘的读写性能。如果磁盘读写也没有问题,Linux系统自身的性能问题基本排除。
  • 最后要做的是检查程序本身是否存在问题。通过这样的思路,层层检测,步步排查,性能问题就“无处藏身”,查找出现性能问题的环节也就变得非常简单。

在这里插入图片描述

相关文章:

Linux - Linux系统优化思路

文章目录影响Linux性能的因素CPU内存磁盘I/O性能网络宽带操作系统相关资源系统安装优化内核参数优化文件系统优化应用程序软件资源系统性能分析工具vmstat命令iostat命令sar命令系统性能分析标准小结影响Linux性能的因素 CPU CPU是操作系统稳定运行的根本&#xff0c;CPU的速…...

2.Elasticsearch入门

2.Elasticsearch入门[toc]1.Elasticsearch简介Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。 能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。客户端支持Java、.NET&#xff08;C#&#xff09;、PHP、Pyth…...

RK3399平台开发系列讲解(应用开发篇)断言的使用

🚀返回专栏总目录 文章目录 一、什么是断言二、静态断言三、运行时断言沉淀、分享、成长,让自己和他人都能有所收获!😄 📢断言为我们提供了一种可以静态或动态地检查程序在目标平台上整体状态的能力,与它相关的接口由头文件 assert.h 提供。 一、什么是断言 在编程中…...

云原生系列之使用prometheus监控nginx

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文主要讲解云原生系列之使用prometheus监控nginx 文章收录到 csdn 我是沐风晓月的博客【prometheus监控系列】专栏&#xff0c;此专栏是沐风晓月对云原生prometheus的的总结&#xff0c;希望能够加深自…...

第六届省赛——8移动距离(总结规律)

题目&#xff1a;X星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。其楼房的编号为1,2,3...当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。比如&#xff1a;当小区排号宽度为6时&#xff0c;开始情形如下&#xff1a;1 2 3 4 5 612 11 10 9 8 713 14 1…...

C++vector 简单实现

一。概述 vector是我们经常用的一个容器&#xff0c;其本质是一个线性数组。通过对动态内存的管理&#xff0c;增删改查数据&#xff0c;达到方便使用的目的。 作为一个线性表&#xff0c;控制元素个数&#xff0c;容量&#xff0c;开始位置的指针分别是&#xff1a; start …...

通用缓存存储设计实践

目录介绍 01.整体概述说明 1.1 项目背景介绍1.2 遇到问题记录1.3 基础概念介绍1.4 设计目标1.5 产生收益分析 02.市面存储方案 2.1 缓存存储有哪些2.2 缓存策略有哪些2.3 常见存储方案2.4 市面存储方案说明2.5 存储方案的不足 03.存储方案原理 3.1 Sp存储原理分析3.2 MMKV存储…...

sheng的学习笔记Eureka Ribbon

Eureka-注册中心Eureka简介官方网址&#xff1a;https://spring.io/projects/spring-cloud-netflixEureka介绍Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Zooleeper nacos.Eureka 采用了 C-S 的设计架构。Eureka Server 作为服…...

零代码工具我推荐Oracle APEX

云原生时代零代码工具我推荐Oracle APEX 国内的低码开发平台我也看了很多&#xff0c;感觉还是不太适合我这个被WEB抛弃的老炮。自从看了Oracle APEX就不打算看其它的了。太强大了&#xff0c;WEB服务器都省了&#xff0c;直接数据库到WEB页面。功能很强大&#xff0c;震撼到我…...

InstructGPT方法简读

InstructGPT方法简读 引言 仅仅通过增大模型规模和数据规模来训练更大的模型并不能使得大模型更好地理解用户意图。由于数据的噪声极大&#xff0c;并且现在的大多数大型语言模型均为基于深度学习的“黑箱模型”&#xff0c;几乎不具有可解释性和可控性&#xff0c;因此&…...

SpringCloud-5_模块集群化

避免一台Server挂掉&#xff0c;影响整个服务&#xff0c;搭建server集群创建e-commerce-eureka-server-9002微服务模块【作为注册中心】创建步骤参考e-commerce-eureka-server-9001修改pom.xml,加入依赖同9001创建resources/application.yml9002的ymlserver: # 修改端口号por…...

AQS底层源码深度剖析-BlockingQueue

目录 AQS底层源码深度剖析-BlockingQueue BlockingQueue定义 队列类型 队列数据结构 ArrayBlockingQueue LinkedBlockingQueue DelayQueue BlockingQueue API 添加元素 检索(取出)元素 BlockingQueue应用队列总览图 AQS底层源码深度剖析-BlockingQueue【重点中的重…...

Kotlin协程:Flow的异常处理

示例代码如下&#xff1a;launch(Dispatchers.Main) {// 第一部分flow {emit(1)throw NullPointerException("e")}.catch {Log.d("liduo", "onCreate1: $it")}.collect {Log.d("liudo", "onCreate2: $it")}// 第二部分flow …...

qt下ffmpeg录制mp4经验分享,支持音视频(h264、h265,AAC,G711 aLaw, G711muLaw)

前言 MP4&#xff0c;是最常见的国际通用格式&#xff0c;在常见的播放软件中都可以使用和播放&#xff0c;磁盘空间占地小&#xff0c;画质一般清晰&#xff0c;它本身是支持h264、AAC的编码格式&#xff0c;对于其他编码的话&#xff0c;需要进行额外处理。本文提供了ffmpeg录…...

C#读取Excel解析入门-1仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在

业务中也是同样的功能点实现。只是多扩展了很多代码&#xff0c;构成了项目的其他部分&#xff0c;枝干所在。但是有用的枝干&#xff0c;仅仅不超过三个主要的&#xff01;所以您仅仅围绕三个主要的为阵地&#xff0c;进行重点解析&#xff0c;就是最理性的应对上法所在了 str…...

一起Talk Android吧(第五百一十八回:在Android中使用MQTT通信五)

文章目录 知识回顾问题描述解决过程经验分享各位看官们大家好,这一回中咱们说的例子是" 在Android中使用MQTT通信五",本章回内容与前后章节内容无关联。闲话休提,言归正转,让我们一起Talk Android吧! 知识回顾 我们在前面章回中介绍了如何使用MQTT通信,包含它…...

100种思维模型之混沌与秩序思维模型-027

人类崇尚秩序与连续性&#xff0c;我们习惯于我们的日常世界&#xff0c;它以线性方式运作&#xff0c;没有不连续或突跳。 为此&#xff0c;我们学会了期望各种过程以连续方式运行&#xff0c;我们的内心为了让我们更有安全感&#xff0c;把很多事物的结果归于秩序&#xff0c…...

Java开发 - Redis初体验

前言 es我们已经在前文中有所了解&#xff0c;和es有相似功能的是Redis&#xff0c;他们都不是纯粹的数据库。两者使用场景也是存在一定的差异的&#xff0c;本文目的并不重点说明他们之间的差异&#xff0c;但会简要说明&#xff0c;重点还是在对Redis的了解和学习上。学完本…...

Python - 使用 pymysql 操作 MySQL 详解

目录创建连接 pymsql.connect() 方法的可传参数连接对象 conn pymsql.connect() 方法游标对象 cursor() 方法使用示例创建数据库表插入数据操作数据查询操作数据更新操作数据删除操作SQL中使用变量封装使用简单使用&#xff1a; import pymysqldb pymysql.connect(host,user…...

机器学习-卷积神经网络CNN中的单通道和多通道图片差异

背景 最近在使用CNN的场景中&#xff0c;既有单通道的图片输入需求&#xff0c;也有多通道的图片输入需求&#xff0c;因此又整理回顾了一下单通道或者多通道卷积的差别&#xff0c;这里记录一下探索过程。 结论 直接给出结论&#xff0c;单通道图片和多通道图片在经历了第一…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...