性能测试(一)—— 性能测试理论+jmeter的使用

news/2024/7/22 0:01:00/文章来源:https://blog.csdn.net/2401_83060956/article/details/139273088

1.性能测试介绍

  • 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。

  由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完成之后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。

  • 性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

2.性能测试目的

  • (1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策;
  • (2)寻找系统瓶颈,进行系统调优;
  • (4)检测软件中的问题;
  • (5)验证稳定性、可靠性;

3.性能测试分类

1.负载测试

通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的前提下,系统所能承受的最大负载量的测试。如cpu使用率≤80%。

2.压力测试

通过逐步 压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。什么条件能把系统压崩溃。

3.异常测试

失败测试,是指系统架构方面的测试。如在负载均衡架构中,要测试宕机、节点挂掉等情况系统的反映。

4.并发测试

测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,所以几乎所有的性能测试都会涉及一些并发测试。因为并发测试对时间的要求比较苛刻,通常并发用户的模拟都是借助工具,采用多线程或多进程方式来模拟多个虚拟用户的并发操作。通常测试方法设置集合点。

5.容量测试

在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景,在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力、最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。预估未来。

6.可靠性测试

通过给系统加载一定的业务压力的情况下,运行一段时间,检查系统是否稳定。因为运行时间较长,所以通常可以测试出系统是否有内存泄漏的问题。如cpu使用率在80%以上7*24小时运行,系统是否稳定。

7.递增测试

指每隔一定时间段加载不同数目的虚拟用户执行测试点操作,对测试点进行递增用户压力加载测试。如果所有的虚拟用户同时加载,有可能造成AUT的资源突然增大,进而影响后续测试中关心的测试点的数据,所以前面可以稍稍放缓,递增加载虚拟用户。

4.性能测试工作流程

  • 需求分析
  • 性能指标指定
  • 脚本开发
  • 场景设置
  • 监控部署
  • 测试执行
  • 性能分析
  • 性能调优
  • 测试报告

5.系统应用分层架构

  • 显示层 view

    • web
    • android
    • ios
    • H5
  • 逻辑控制层 controller

    • api
  • 数据存储层 model

    • mysql
    • mongodb
    • redis
    • ....

6.性能测试指标定义(掌握)

  • 事务

    事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。

  • TPS (TransactionPerSecond)

    每秒钟系统能够处理的事务

  • 请求响应时间

    从客户端发起的一个请求开始,到客户端接收到从服务器返回的响应。整个过程所耗费的时间。

  • 事务响应时间

    事务可能由一个或多个请求组成的,事务响应时间主要是针对于用户的角度而言,如转账。

  • 并发定义

    没有严格意义上的并发。并发总有先后,无论差距是1毫秒或者是1微秒,总有一个时间差。所以并发将的是一个时间范围内,比如1秒内。

    比如:

    (一)多用户在系统上进行同一操作,比如双十一,大家都针对同一种商品进行秒杀

    (二)多用户在系统上进行不同操作,比如双十一时,大家针对不同商品进行秒杀,或者是大家有其他不同的操作,比如商品浏览。

  • 并发用户数

    同一单位时间内对系统发起请求的用户数量

  • 吞吐量

    一次性能测试过程中网络上传输的数据量的总和

  • 吞吐率

    单位时间内网络上传输的数据量

    吞吐率=吞吐量/传输时间

  • 点击率

    每秒钟用户向服务器提交的请求数。这个指标是Web应用程序 特有的一个指标,可以想象为每秒钟用户总共在页面上进行多 少次点击动作,但是需要注意的是一次鼠标单击的操作后,客 户端有可能向服务器发送了多次请求。

  • 资源使用率

    对不同系统资源的使用情况,如CPU、内存、io

7.性能测试需求分析

  • 分析目的

    1.明确测试指标

    2.明确测试场景

  • 新系统(新业务)

    1.同行业比较

    2.业务预期 (日活、用户增长...)

  • 老系统

    1.对比以往的用户使用行为以及用户数

8.性能测试工具

  • 常用工具

    LoadRunner

    JMeter

  • 对比

对比纬度LoadRunnerJMeter
量级
易用性
是否开源
语言支持C/java1.5java
是否收费

jmeter的组成

测试计划

  • 线程组

  • 断言

  • 定时器

  • 监听器

  • 配置元件

  • 后置处理器

  • 前置处理器

  • 逻辑控制器

  • Sanmpler 取样器/采样器

      小朋友看到这里你是否有很多问号? 不着急采臣君,就针对每一个在以下的每一篇都做了更详细的介绍,通过小例子就能够清晰明了,开始吧~!

jmeter实现多并发

启动工具:

找到Jmeter的bin目录,运行jmeter.bat,双击启动即可(前提条件:需要配置jdk环境变量)

备注: windows 使用 j meter.bat,Mac或者Liunx系统运行 j meter.sh启动

新建线程组(开启测试的前提):

  • 用于模拟大量用户负载,此元件中可以设置运行的线程数(就是模拟多用户并发等,一线程就是一个用户)

  • 访问路径: 【测试计划】——【线程组】

界面说明:

1、取样器错误后要执行的动作:

继续: 忽略错误,继续执行 (常用)

Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。

停止线程: 当前线程停止执行,不影响其他线程正常执行。

停止测试: 整个测试会在所有当前正在执行的线程执行完毕后停止

Stop test now: 整个测试会立即停止执行,当前正在执行的取样器可能会被中断。

这几个配置项控制了“当遇到错误的时候测试的执行策略”是否会继续执行。

2、设置线程数:

线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。 多个线程用于模仿对服务器的并发访问。

3、设置ramp-up period控制线程执行时间:

ramp-up period用于设置启动所有线程所需要的时间。 如果选择了10个线程,并且ramp-up period是100秒,那么JMeter将使用100秒使10个线程启动并运行。 每个线程将在前一个线程启动后10(100/10)秒后启动。

当这个值设置的很小、线程数又设置的很大时,在刚开始执行时会对服务器产生很大的负荷。

下图的线程配置中,在6秒时间内启动6个线程,每个线程执行2次循环。 那么每个线程之间启动延迟为 1 秒。 如果点击永远那就不停止,跟输入2次是互斥关系。

4、设置循环次数:

该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。

5、Delay Thread creation until needed:

 默认情况下,测试开始的时候,所有线程就被创建完了。 如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。

6、线程组调度器设置

 什么时间执行脚本,时间的控制

调度器配置可以更灵活的控制线程组执行的时间

①持续时间(秒):

控制测试执行的持续时间,以秒为单位。

②启动延迟(秒):

控制测试在多久后启动执行,以秒为单位。

③启动时间:

控制测试在某个时间点启动。 但这个配置会被“启动延迟”配置覆盖。

④结束时间:

控制测试执行的结束时间。 但这个配置会被“持续时间”配置覆盖。

如果不想立即执行执行,可以通过调度器控制测试执行的开始时间和结束时间。

当测试开始时,如果设置了调度器,JMeter将等待直到到了开始时间。 在每个周期结束,JMeter将会检查是否到达结束时间,如果达到,停止运行; 否则测试继续运行直到达到了重复限制。

jmeter实现逻辑分支控制

  • 逻辑控制器可以控制采样器(samplers)的执行顺序。 由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。 放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

  • 比如在收邮件时,只需要登录一次邮箱就可以查看多封邮件,这个场景在JMeter中只需要使用控制器中的“一次控制器”就可以控制登录的次数。

  • 控制器的访问路径: 【测试计划】——【线程组】—— 【逻辑控制器】

一般情况下我们通常会使用if控制器比较多

    场景: 访问百度,变量为1就可以访问

  1. 新建线程组

  2. 新建用户自定义变量

    3.新建if控制器

    4.新建Http请求

    5.添加结果树并运行

变量为1时:

变量 为2时:

请求失败,不满足逻辑判断条件

jmeter实现配置管理

  • 配置元件为取样器提供预备数据、然后由取样器发出请求; 还可以用来记录服务器的返回数据,比如: Http Cache Manager,自动记录服务器返回的Cache信息。

  • 性能测试中为了模拟大量用户操作往往需要参数化,JMeter中的参数化可以通过配置元件来完成,比如: CSV Data Set Config,可以帮助我们从文件中读取数据。 另外JMeter也提供了从多函数来帮助我们生成动态数据。

  • 配置元件的访问路径: 【测试计划】—— 【配置元件】,详情如下图:

CSV Data Set Config: 保存数据,参数化

DNS Cache Manager: 前端保存图片

FTP: 请求缺省值

HTTP: 协议相关

JDBC Connection Configuration: 连接数据库

案例: Jmeter连接数据库

  1. 添加线程组

  2. 添加 J DBC Conne ction Config uration

    1)Varible Name: 这个是变量的名字,具有唯一性,不能重复

    2)Database URL: jdbc:mysql://数据库地址:数据库端口号/数据库名 

    3)JDBC_Driver_Class:org.gjt.mm.mysql.Driver

    或者 com.mysql.jdbc.Driver   这是固定值

    4) Username: 这个数据库的登录名

    5) Password: 这个是数据库的登录密码

jmeter实现请求预处理

  • 前置处理器在取样器发送请求之前做一些环境或参数的准备工作

  • 例如: 在对数据进行操作前需要建立一个数据库连接,那么前置处理器可以完成这个工作

  • 前置处理器的访问路径: 【测试计划】—— 【前置处理器】

案例: 请求前先先获取参数

  1. 创建线程组

  2. 添加用户参数

  3. 添加BeanShell Sampler

         Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标准 java 语法及一些扩展脚本语法,类似于 javaScript 和 perl。

    4.查看结果树查看结果

jmeter集合点、定时并发

  • 定时器用于在模拟大量用户在同一时间处理系统业务,起到集合的功能(常用于并发测试),往往实际测试中用的不同,主要是发现性能瓶颈

  • 访问路径: 【测试计划】—— 【线程组】—— 【定时器】

案例:

    访问百度,我期望在我开始执行的时候,停顿2秒

  1. 添加线程组

  2. 添加HTTP请求

  3. 添加定时器

    这里我设置了3秒

  4. 查看结果树

    点击启动

    中间会有3秒的等待时间

    3秒后展示结果

jmeter实现各种请求的发送

  • Sampler【取样器/采样器】用来模拟用户操作,向服务器(被测试系统)发出Http请求、WebService(SOAP/XML-RPC Requests)请求或者Java请求等。

  • 取样器的访问路径: 【测试计划】—— 【线程组】—— 【Sampler】, 常见的取样器如下图:

  • 常用的取样器为 HTTP请求,我们可以把HTTP请求元件看成是一个没有界面的浏览器,它可以发送Http请求,接收服务器的响应数据。

  •     

看到这么多是不是很慌,其实工作中只是用到了几项

  1. BeanShell Sampler 可以理解为 写java代码,引用包(包目录: lib目录下)

    Jmeter导入包:

    导入完毕BeanShell Sampler  中就可以使用jar包了

  2. Debug Sampler 协助调试工作

  3. java请求,如果在Sampler中请求都未满足你特定的需求,使用此请求,自定义编写代码发起请求

jmeter实现关联

    • 后置处理器一般放在取样器之后,用来处理服务器的返回结果。 ( 专门用来对响应数据做处理的元件,JMeter中的关联也是通过后置处理器来完成)

    • 比如一个Web程序在登录后返回一个SessionID,这个SessionID在登录之后的业务过程中会做为验证条件,验证用户是否合法登录了。 我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢?  首先我们要知道这个SessionID从哪里来? ——它是由服务器返回的。 我们需要用什么工具获取它? JMeter提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。

    • 访问路径: 【测试计划】——【后置处理器】,详情如下图:

案例:

        访问百度,通过正则截“取百度一下,你就知道 ”字符,并通过BeanShell Sampler打印出来

        1.新建线程组

        2.添加HTTP请求

        3.添加正则表达式提取器(具备正则表达式知识基础)

        模板: $1$截取的第一个内容

        

        4.添加 BeanShell Sampler

        5.添加察看结果树

后置处理器很多,有兴趣的可以自行百度查看学习一下。

jmeter实现数据预判试看

    • 【断言】用来验证结果是否正确,类似于LoadRunner中的检查点。 可以帮助我们来判断请求是否成功返回且是否符合要求。 就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。

    • 常用的是 响应断言,对于复杂的断言可以通过BeanShell脚本来完成

    • 断言的访问路径: 【测试计划】—— 【断言】

案例: 通过发起http请求百度网址,响应回来内容进行断言

        1.添加线程组

        2.添加HTTP请求,在这个请求中添加响应断言

        3.查看结果树

备注: 断言的话只有在错误的时候会显示断言,如果请求正确,断言的内容一致,不会展示断言结果

jmeter监控数据可视化

    • 监听器收集JMeter的测试结果,JMeter结果收集程序的设计模式就是监听器模式。 JMeter的监听器有两个任务:

    • 1.添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。

    • 2.展示结果,JMeter可以以表格及图形的形式展示结果,方便测试人员分析测试结果。 在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如查看结果树,我们可以在其中看到请求与响应的数据)

    • 监听器的访问路径: 【测试计划】—— 【监听器】,详情如下图:

    • 【取样器】、【断言】、【监听器】组合在一起就可以帮助我们完成发送请求、验证结果及记录结果三项工作。

主要常用为:

察看结果树:

聚合报告:

图形结果:

其他的可自行查看,本次讲解较为工作常用的。

jmeter小助手

函数助手

            

常用的函数助手

    ◆ 随机数(__Random)

 

复制代码

1. 一个范围内的最小值:随机数生成时开始数,也是最小数
2. 一个范围内允许的最大值:随机生成结束数,也是最大数

    ◆ 参数化助手(__CSVRead)

             新建csv格式文件

            假设内容如下:

                    name,sex

                    zhangsan,nan

                    lisi,nv

0代表的第一列

            

改为2显示第二列

    ◆ 计数器(__counter)

             案例: 通过计数器,算打印FLASE和True的累计

            

            

            

            

            

            

            

    ◆ 唯一数(__UUID)

jmeter实现分布式并发

在性能测试过程中,一旦进行高并发操作时就会出现以下尴尬场景,JMeter客户端卡死、请求错误或是超时等,为了解决这一问题,我们需要将一次大的操作分布在多个服务器上,由多个服务器来承担负载压力。

  • master(主压力机)在jmeter.properties中添加remote_hosts

  1. 配置路径: ...\apache-jmeter-5.0\bin\jmeter.properties;

   2. 打开文件编辑: remote_hosts=127.0.0.1 后面增加远程负载机的ip和端口号,如果需要添加多个“, ”用英文逗号分隔

添加一个从机的IP和端口号

remote_hosts=127.0.0.1:1099,127.0.0.1:1100,192.168.0.1:1099

  • Slave(远程负载机)在jmeter.properties中添加server_port

        1. 进入负载机的usr/local/apache-jmeter-5.1.1/bin目录,编辑jmeter.properties文件

            

 
# 每个人安装Jmeter路径可能不同,注意修改路径vim  usr/local/apache-jmeter-5.1.1/bin

            2. 修改端口号

                找到#server_port=1099,去掉#号,wq保存退出

  备注: 这里的端口号可以自定义,只要与主压力机里面配置的一致即可           

            3. Slave(远程负载机)启动Jmeter-server  

 
# 输入命令:./jmeter-server -Djava.rmi.server.hostname=192.168.3.130

             如果直接输入./jmeter-server会报如下错误:

    防火墙未关可能引起错误

 
远程启动时一直连接不上负载机解决办法:
遇到这种情况时,可能存在多种因素,可以参考以下步骤逐一排查
(1)远程负载机的Jmeter-server是否启动成功;(2)远程负载机是否处于联网状态;(3)防火墙是否处于关闭状态:​
centos5/6开启和关闭防火墙命令:​
开启:
service iptables start​
关闭:
service iptables stop​
centos7开启和关闭防火墙命令:
​
开启:
systectl start firewalld.service
​
关闭:
systectl stop firewalld.service
​
此方法为临时关闭,即时生效,重启后失效
​
(4)主压力机和远程负载机的Jmeter版本是否一致;

  • 配置完成后重启主压力机,查看远程启动,可查看到配置的远程负载机IP

  • 验证是否成功

        添加HTTP请求,察看结果树,运行-远程启动-选择从机IP

        结果显示正常说明没有问题,说一点,从机运行的结果中响应数据是空白属于正常现象,如果要查看,可通过日志查看。

  下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

​​编辑资料获取方式 :xiaobei_upup,添加时备注“csdn alex”

我是小北,专注软件测试和测试开发高薪就业和跳槽,有很多就业方案可以分享给你。

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

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

相关文章

Jetson Orin Nano v6.0 + tensorflow2.15.0+nv24.05 GPU版本安装

Jetson Orin Nano v6.0 tensorflow2.15.0nv24.05 GPU版本安装 1. 源由2. 步骤2.1 Step1:系统安装2.2 Step2: nvidia-jetpack安装2.3 Step3:jtop安装2.4 Step4:h5py安装2.5 Step5:tensorflow安装2.6 Step6:jupyterlab安…

SpringBoot——数据访问

优质博文:IT-BLOG-CN 对于数据访问层,无论是 SQL 还是 NoSQL,SpringBoot 默认采用整合 Spring Data 的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种 xxxTemplate,xxxRepository 来简化我…

2024年上半年软件系统架构师考试【回忆版】

文章目录 考试时间考试地点综合知识案例分析1、微服务架构的优点和缺点2、质量属性的6个要素3、分布式锁 Redis的缺点4、MongoDB 存储矢量图的优势 论文回忆版论文一、论单元测试的设计与应用论文二、论大数据模型的设计与应用论文三、论模型驱动的架构设计及应用论文四、论云自…

Spring Boot中如何查询PGSQL分表后的数据

数据库用的pgsql,在表数据超过100w条的时候执行定时任务进行了分表,分表后表名命名为原的表名后面拼接时间,如原表名是card_device_trajectory_info,分表后拼接时间后得到card_device_trajectory_info_20240503,然后分…

量子密钥分发系统基础器件(一):光纤干涉仪

干涉仪的基本原理是利用波的叠加来获得波的相位信息,从而获取实验中所关心的物理量。光纤干涉仪是由光学干涉仪发展而来的,利用光纤实现光的干涉,由于光纤取代透镜系统构成的光路具有柔软、形状可随意变化、传输距离远等特点,当前…

RT-DETR算法改进【NO.1】借鉴CVPR2024中的StarNet网络StarBlock改进算法

前 言 YOLO算法改进的路有点拥挤,尝试选择其他的baseline作为算法研究,可能会更加好发一些文章。后面将陆续介绍RT-DETR算法改进的方法思路。 很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解…

HTML静态网页成品作业(HTML+CSS)——动漫熊出没介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有3个页面。 二、作品演示 三、代…

如何使用git上传linux下的项目!---附带每一步截图

在实际项目中,我们需要把自己的模块递给GitHub,需要别人的模块的时候拉下来,那么我们怎么把自己的项目递给GitHub呢?下面做一个总结: 登录GitHub 创建一个仓库 填写相关信息 项目名称是必填的,项目描述可以…

09Django项目--用户管理系统--删

对应视频链接点击直达 09Django项目--用户管理系统--删 对应视频链接点击直达删a,本质b,删除 页面相关a,index页面新增操作按钮b,ajax删除和提示c,完整版本 OVER,不会有人不会吧不会的加Q1394006513结语 一…

冯喜运:5.29市场避险情绪升温,黄金原油小幅收涨

【黄金消息面分析】:周二(5月28日)美盘时段,由于美元走弱且市场情绪出现负面变化,黄金收复早前跌幅,站上2350美元关口。金价早盘一度走弱,源于美联储降息可能性降低带来压力,投资者在…

(四十八)第 7 章 图(图的数组(邻接矩阵)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

关于已配好java环境但双击无法打开jar包的解决方案

如果你已经装好了 java 环境直接跳到最后看解决方法即可 先说一下你安装的 java 环境&#xff0c;如果完全是默认选项安装&#xff0c;则会安装 jdk 和 jre&#xff0c;并且在安装 jre 时还需要安装目录下为空&#xff0c;其实 jre 的安装是多余的&#xff0c;因为安装的 jdk 里…

LES物流执行系统,在离散制造行业有那些作用和价值?

离散制造企业往往面临的是多品种、小批量的非标订单生产&#xff0c;传统推动式物流系统已经无法应对计划变化滞后&#xff0c;各车间、工序之间难以衔接等情况&#xff0c;特别是密集劳动力的电子行业&#xff0c;非标产品 SKU 种类繁多&#xff0c;物料配送复杂&#xff0c;对…

Sentinel-2 哨兵二号数据介绍及下载

1 Sentinel-2简介 SENTINEL-2 is a European wide-swath, high-resolution, multi-spectral imaging mission. Sentinel-2 是高分辨率多光谱成像卫星&#xff0c;一颗卫星的重访周期为10天&#xff0c;两颗互补&#xff0c;重访周期为5天。分为2A和2B两颗卫星。2A于2015年6月…

【ubuntu20】--- 定时同步文件

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Linux命令】--- 多核压缩命令大全&…

【IDEA】Redis可视化神器

在开发过程中&#xff0c;为了方便地管理 Redis 数据库&#xff0c;我们可能会使用一些数据库可视化插件。这些插件通常可以帮助你在 IDE 中直观地查看和管理 Redis 数据库&#xff0c;包括查看键值对、执行命令、监视数据库活动等。 IDEA作为IDE界的Jenkins&#xff0c;本身自…

基于OrangePi AIpro的后端服务器构建

一. OrangePi AIpro简介 1.1 OrangePi AIpro外观 1.2 OrangePi AIpro配置 OrangePi AIpro(8T)采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接32GB…

[java基础揉碎]文件IO流

目录 文件 什么是文件 文件流​编辑 常用的文件操作 创建文件方式一 创建文件方式二 创建文件方式三 tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入​编辑 …

Apache、Nginx、IIS文件解析漏洞

目录 1、文件解析漏洞介绍 2、Apache相关的解析漏洞 &#xff08;1&#xff09;多后缀解析漏洞 &#xff08;2&#xff09;Apache配置问题 &#xff08;3&#xff09;换行符解析漏洞 &#xff08;4&#xff09;罕见后缀解析 3、Nginx相关的解析漏洞 &#xff08;1&…

nginx源码阅读理解 [持续更新,建议关注]

文章目录 前述一、nginx 进程模型基本流程二、源码里的小点1.对字符串操作都进行了原生实现2.配置文件解析也是原生实现待续 前述 通过对 nginx 的了解和代码简单阅读&#xff0c;发现这个C代码的中间件确实存在过人之处&#xff0c;使用场景特别多&#xff0c;插件模块很丰富…