jmeter接口测试项目实战详解,零基础也能学,源码框架都给你

news2024/11/25 21:23:26

目录

1.什么是jmeter?

2.jmeter能做什么?

3.jmeter环境搭建

3.1前提:

3.2jmeter下载:

3.3jmeter环境搭建:

3.3.1mac当中jmeter环境搭建:

3.4jmeter基本配置

3.4.1.切换语言

 3.4.2.安装插件

4.jmeter组件

4.1测试计划

4.2线程组

4.2.1取样器错误后要执⾏的动作

4.2.2线程属性

4.3jmeter监听器

4.3.1聚合报告

4.3.2后端监听器

4.3.3察看结果树

4.3.4取样器

4.3.5配置元件

4.3.6逻辑控制器

4.3.7前置处理器

4.3.8后置处理器

4.3.9断⾔

4.3.10定时器

5.jmeter的目录内容:

6.Jmeter动态参数的解决思路是什么?

7.jmeter里面调用变量是什么怎么调用?

8.测试报告 

8.1 认识ant

8.1.1 ant下载

8.1.2ant环境变量配置:

8.1.3验证环境:

8.2 认识build.xml文件

8.2目录结构

8.3自动发送邮件:


1.什么是jmeter?

JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流协议的测试

2.jmeter能做什么?

1.JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具,方便用户可以无代码的方式编写性能测试脚本。JMeter的特点可以总结为如下:

2.JMerer测试工具不仅仅可以做性能测试,也可以做API的测试,可以和构建工具整合起来,如Ant,Maven,以及CI工具的整合,以及也可以和Grafana可视化整合起来

3.JMeter支持多种协议进行性能测试,如HTTP,HTTPS,WS

3.jmeter环境搭建

3.1前提:

1、需要安装JDK的环境,配置java环境变量(参考:)

2、查看java环境是否搭建成功:javac / java -version

3.2jmeter下载:

下载地址:

3.3jmeter环境搭建:

3.3.1mac当中jmeter环境搭建:

控制台: sudo vim .bash_profile

把下面的复制进去,JMETER_HOME=后面是jmeter的路径,改成自己的路径

#JMETER export JMETER_HOME=/Applications/tools/apache-jmeter-5.4.1 export PATH=$JMETER_HOME/bin:$PATH

3.4jmeter基本配置

3.4.1.切换语言

环境搭建成功之后,就可以直接在控制台输入jmeter启动,启动成功后,先切换成中文

 3.4.2.安装插件

第一步:选项--插件管理

第二步:在搜索框输入json 勾选第一行 点击右下角安装插件

jmeter接口测试视频教程:敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0

4.jmeter组件

4.1测试计划

在JMeter的测试工具中,把测试计划可以理解为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在一个测试计划里面包含了很多的线程组来进行执行,测试计划也是JMeter脚本的根节点。

4.2线程组

测试套件,等于postman里面的集合。JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组

在JMeter的测试⼯具中,依据业务的形态来设置它的⽬录结果,但是设置性能测试的场景,主要是在线程组中来进⾏设置。JMeter的线程组可以理解为是建⽴了⼀个线程池,在执⾏的过程中处理线程组⾥⾯的各个业务逻辑,线程组的信息具体如下:

 

4.2.1取样器错误后要执⾏的动作

这部分可以理解为当客户端向服务端发送请求后,以及发送请求的过程中出错后的异常处理⽅式。

继续

如果有⼀个请求错误,其他的请求会继续,不会因为有⼀个请求错误的导致其他请求终⽌。

启动下⼀个进程循环

如果请求出现问题,同⼀脚本中的其他请求就都不再执⾏,直接执⾏下⼀个进程的信息。如登录后下⼀个请求是查看个⼈主⻚,但是因为登录出错,下个接⼝查看个⼈主⻚就不会被执⾏。

停⽌线程

停⽌线程指的是如果请求失败,就停⽌当前线程执⾏,不再继续执⾏。如果线程数很多的,那么导致的结果是停⽌的线程就会很多,处于真正运⾏的线程会很少,最后导致服务器的负载不够,⼀般不建议构选改选项。

停⽌测试

如果请求失败,那么停⽌所有线程执⾏,也就是说停⽌整个测试。

⽴即停⽌测试

如果请求失败,⽴即停⽌整个测试场景的执⾏。

4.2.2线程属性

线程数

⼀个线程可以理解为对应模拟⼀个⽤户,所以线程数越多,那么也就认为可以模拟的⽤户数越多。

Ramp-Up时间(秒)

该属性指的是所有线程从启动到开始运⾏的时间间隔,单位是秒,也就是说所有线程在多⻓时间内开始执⾏,如线
程数设置50,设置的时间为5秒,那么计算的公式为:
每秒执⾏线程数=线程数/Ramp-Up
具体如:
如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执⾏后,每秒会启动5个线程,如果Ramp-Up设置为
0,那么开始执⾏后,50个线程会⽴刻启动

循环次数

循环次数可以理解为,请求的重复次数。如果选择“永远”,那么请求将⼀直进⾏,不建议这样操作。

延迟创建线程直到需要如50个线程数,Ramp-Up时间是10秒,执⾏后线程是全部就绪的,那么就是每隔1秒启动5个线程数

调度器

思维调度器可以理解为设置何时开始运⾏。

持续时间

测试计划持续多⻓时间

启动延迟

从当前时间延迟多⻓时间开始运⾏测试,也就是说点击执⾏后,仅仅是做初始化的场景,不会执⾏测试,等待延迟

到达后开始运⾏测试,执⾏的时间为持续时间设置的时间。 

4.3jmeter监听器

4.3.1聚合报告

聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚合报告会显示在⼀⾏⾥⾯,那么⼀般来说,聚合报告都是根据取样器来显示每个取样器的执⾏结果信息。聚合报告的信息具体如下:

Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量

4.3.2后端监听器

后端监听器可以把JMeter与influxdb,grafana整合起来,把性能测试过程中的数据存储到influxdb,然后最后显示在grafana的可视化界⾯中。

4.3.3察看结果树

结果树能够很清晰的显示每个取样器执⾏的结果信息,以及每个取样器的⽹络请求信息

4.3.4取样器

取样器是JMeter的基本单元,⼀般性的各种都是取样器来发起的

HTTP请求

可以把它理解为⼀个独⽴的测试⽤例,或者说是⼀个测试场景。

4.3.5配置元件

配置元件可以理解为对取样器的各种请求进⾏辅助配置。

HTTP信息头管理器

每个HTTP的请求都是需要请求头的信息的,那么可以把请求头的信息添加到HTTP信息头管理器,然后需要把它放在取样器的前⾯。

HTTP Cookie管理器

在系统登录成功后需要访问系统中的其他⽹络请求,但是需要记住⽤户登录成功后的sessionID的信息,那么使⽤HTTP Cookie管理器就可以⾃动记录下这些信息。

在JMeter中,如果一个网站使用的是session来实现的,但是jmeter无法获取登录成功后的sessionid,那么也就导致登录后的请求,都会重定向到登录的页面,也就是说无法验证我是谁,可以使用cookie管理器来解决它内部会记住所有网络请求的cookie信息,并且会让所有的网络请求间的cookie共享,如下图:

⽤户定义的变量

在测试中,如果某些请求参数存在变化,⽐如是⽤户名和密码,那么就可以单独的独⽴出来,⽤户定义的变量可以

很轻松的来解决这部分的问题。

HTTP请求默认值

每个取样器发送⽹络请求的时候都是需要IP地址等信息,但是使⽤HTTP请求默认值可以很轻松的把请求的地址独

⽴出来。

4.3.6逻辑控制器

逻辑控制器主要控制JMeter的执⾏顺序,它的存在使整体的测试的灵活度更⾼。⽐如接⼝A执⾏完成后得到的结果

信息,经过逻辑控制器判断之后,再执⾏接⼝B或者是接⼝C。⼀般性的⽽⾔,简单控制器使⽤的最多,但是也看具

体的场景进⾏设置。

4.3.7前置处理器

在执⾏取样器之前,需要进⾏初始化的设置,等价于UnitTest测试框架中的setUp()的⽅法。 

用户参数

我们⼀个测试点,需要多次操作,并且每次操作的数据都是不⼀样的测试步骤⼀致,但是测试数据每次不⼀样(前置处理器)

比如:登录的账户

CSV 数据⽂件设置

将数据放到一个文件里直接调用(配置元件里面)

记事本

 csv文件

jmeter接口测试视频教程:

敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0       

4.3.8后置处理器

在执⾏取样器之后执⾏,如API测试中经常会涉及到上个API的输出是下个API的输⼊,那么就会使⽤到后置处理器

中的正则表达式提取器或者是JSON提取器,BeanShell断⾔等。

正则表达式提取器:(后置处理器--正则表达式提取器)

测试地址

  • 模板:⽤$$引⽤起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第⼏个值给user_id。例如:$1$表示匹配到的第⼀个值
  • 匹配数字:0代表随机取值,-1代表所有值,此时提取结果是⼀个数组,其余正整数代表第⼏个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过 {user_id_2}来取第2个匹配的内容。
  • 缺省值:正则匹配失败时,取的值

4.3.9断⾔

主要⽤来验证返回的结果数据与预期的结果数据是否完全匹配,⼀般最常⽤的是响应断⾔和JSON断⾔。

4.3.10定时器

定时器主要⽤来在测试计划执⾏的过程中,定时器⽤来缓减线程运⾏,⽐如刻意的等待3秒后再执⾏下⼀个请求的信息

延时等待

api的测试用例执行的速度非常快的,基本只在毫秒级别的,但是在某些时候,由于业务的特性吗,想让他延迟几秒钟执行,那么这个时候就用延时等待(定时器--固定定时器)

5.jmeter的目录内容:

bin目录:可执行的应用程序

extras目录:扩展插件目录

lib目录:所用到的插件目录,里面均为jar包

6.Jmeter动态参数的解决思路是什么?

假设一个图书管理系统,可以进行增删改查,我们在登录成功之后,会返回一个token值,通过登录接口的后置处理器中的json提取器或者正则表达式提取器,我们一般用json提取器,定义一个变量来存储登录成功后的token,在下个接口中我们在请求头当中调用这个变量。

7.jmeter里面调用变量是什么怎么调用?

在请求头添加token jwt ${token}

添加--配置元件--http信息头管理器--添加

 

8.测试报告 

8.1 认识ant

8.1.1 ant下载

下载地址:

8.1.2ant环境变量配置:

mac配置ant环境变量

#ant环境变量

export ANT_HOME=/Applications/tools/apache-ant-1.10.1

export PATH=$ANT_HOME/bin:$PATH

windows配置ant环境变量:

把他(目录到bin目录)配置到path环境变量

8.1.3验证环境:

控制台输入ant,现实如下说明环境已经搭建好

8.2 认识build.xml文件

ant构建工具,该构建工具执行的时候依赖于build.xml的文件,在build.xml文件里面会定义具体执行的脚本,执行的顺序,以及测试报告存储的目录

 1 xml version="1.0" encoding="UTF8"?>
 2 
 3 <project name="ant-jmeter-test" default="run" basedir=".">
 4 
 5 <property name="jmeterPath" value="/Applications/tools/apache-jmeter-5.4.1"/>
 6 <property name="mailhost" value="smtp.sina.cn"/>
 7 <property name="username" value="wuya1303@sina.com"/>
 8 <property name="password" value="admin123"/>
 9 <property name="mailfrom" value="wuya1303@sina.com"/>
10 <property name="mail_to" value="1730645056@qq.com"/>
11 <property name="mailsubject" value="无涯课堂API测试报告"/>
12 <property name="mail_port" value="25"/>
13 <property name="message" value="Hi!请查收下,无涯课堂API测试报告,如有任何疑问,请联系我,谢谢!"/>
14 
15 
16     <tstamp>
17         <format property="time" pattern="yyyyMMddhhmm" />
18      </tstamp>
19      <property name="jmeter.home" value="${jmeterPath}" />
20      <property name="jmeter.result.jtl.dir" value="${jmeterPath}\tests\report\jtl" />
21      <property name="jmeter.result.html.dir" value="${jmeterPath}\tests\report\html" />
22      <property name="htmlReportNameSummary" value="testReport" />
23      <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl" />
24      <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html" />
25 
26      
27     <target name="run">
28          <antcall target="test" />
29          <antcall target="report" />
30          <antcall target="sendEmail" />
31      </target>
32      
33      <!--执行接口测试-->
34      <target name="test">
35           <echo>执行接口自动化测试</echo>
36          <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
37          <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
38             <!--要执行的测试脚本-->
39             <testplans dir="${jmeterPath}\tests\script" includes="1212.jmx" />
40              <property name="jmeter.save.saveservice.output_format" value="xml"/>
41          </jmeter>
42      </target>
43      
44      <!--解决报告中NAN字段显示问题-->
45      <path id="xslt.classpath">
46         <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
47         <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar"/>
48     </path>
49 
50      <!--生成HTML测试报告-->
51      <target name="report">
52      <echo>生成接口自动测试报告</echo>
53          <xslt classpathref="xslt.classpath"
54               force="true"
55               in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}"
56               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"  />
57         
58         <!--复制图片-->
59         <copy todir="${jmeter.result.html.dir}">
60              <fileset dir="${jmeter.home}/extras">
61                  <include name="collapse.png" />
62                  <include name="expand.png" />
63              </fileset>
64         </copy>
65      </target>
66       <!--自动发送邮件-->
67     <target name="sendEmail">
68     <echo>发送自动化测试报告</echo>
69          <mail mailhost="${mailhost}"
70             ssl="ture"
71             user="${username}" 
72             password="${password}" 
73             mailport="${mail_port}"
74             subject="${mailsubject}" 
75             messagemimetype="text/html" 
76             tolist="${mail_to}">
77          <from address="${mailfrom}" />
78                <attachments>
79                      <fileset dir="${jmeter.result.html.dir}">
80                              <include name="${htmlReportNameSummary}${time}.html"/>
81                              <include name="collapse.png" />
82                              <include name="expand.png" />
83                      </fileset>
84                </attachments>
85                <message>
86                ${message}
87                </message>
88          </mail>
89      </target>
90  </project>

8.2目录结构

tests

用来存放测试的所有资料

report

用来存放测试报告 里面再创建html和jtl的文件夹

scrip

用来存放测试脚本

8.3自动发送邮件:

1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。

2、自动发送邮件,需要三个jar包,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下

3、输出测试报告的配置

打开jmeter的bin目录下的jmeter.properties文件,做如下修改:
把jmeter.save.saveservice.output_format=csv
修改为jmeter.save.saveservice.output_format=xml

4、build文件修改代码:

    1、修改jmeter的路径

    2、修改收到测试报告的邮箱

  3、修改要执行测试用例的路径和脚本

6.生成测试报告:在控制台进入到测试用例tests的目录下,输入ant

7.生成的报告在哪打开?

jmeter--tests--report--html

最下面就是你最新生成的 点击就能直接打开

生成的测试报告如下:

jmeter接口测试视频教程:

敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75

 

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

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

相关文章

MySQL数据库基础2

文章目录 数据类型表的约束 数据类型 1、数值类型&#xff1a;BIT、TINYINT、BOOL、SMALLINT、INT、BIGINT、FLOAT[(M,D)]、DOUBLE[(M,D)]、DECIMAL[(M,D)] FLOAT[(M,D)]&#xff1a;占用四个字节&#xff0c;M表示显示位数&#xff0c;D表示小数位数&#xff0c;精度保证&am…

5年测试,已失业3个月.....

我做测试5年&#xff0c;一线城市薪水拿到15K&#xff0c;中间还修了一个专升本&#xff0c;这个年限不说资深肯定也是配得上经验丰富的。今年行情不好人尽皆知&#xff0c;但我还是对我的薪水不是很满意&#xff0c;于是打算出去面试&#xff0c;希望可以搏一个高薪。 但真到面…

测试自动化工具_Katalon

测试自动化_Katalon 1.概述 ​ Katalon界面的自动化测试工具&#xff0c;简称KS&#xff0c;于2015年推出。是开源的&#xff0c;提供的版本有免费的版本&#xff0c;还有企业版是收费的。如下图。其中的服务台功能应该是持续继承的支持。可试用一个月。 ​ 最初是支持Web UI…

Chatgpt论文笔记——MiNiGPT4解读

前言 代码地址&#xff1a;https://github.com/Vision-CAIR/MiniGPT-4 摘要 摘要写的就很简单了&#xff0c;标黄的是重点&#xff0c;可以看到这个方法很简单&#xff0c;就是拿了一个视觉的encoder&#xff08;Blip-2&#xff09;以及拿了一个文本的encoder&#xff08;Vic…

OpenPCDet系列 | 5.2 PointPillars算法——PointPillarScatter伪图像BEV特征构建模块

文章目录 PointPillarScatter模块1. PointPillarScatter初始化2. PointPillarScatter前向传播 OpenPCDet的整个结构图&#xff1a; PointPillarScatter模块 在进行了PillarVFE编码后&#xff0c;此时的batch_dict更新如下所示&#xff0c;追加了pillar_features字段&#xf…

好程序员:转行学Java怎么样?什么工作可以月入过万?

去年的时候有个学妹跟小源说&#xff0c;想转行&#xff0c;但是目前又比较迷茫&#xff0c;不知道该从事啥行业&#xff1f;她跟小源说了下具体情况&#xff0c;本科学历&#xff0c;Java零基础。小源让好程序员的就业老师跟她分享了下相关的it行业规划&#xff0c;最后她学了…

Python实现ACO蚁群优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

关于摄影艺术欣赏分享(私密空间+玛丽娜·阿布拉莫维奇+世界十大最昂贵的摄影作品欣赏+《死亡路上的对话》+马良作品)

文章的内容灵感是旁听课而来的呀&#xff0c;搜了很多相关文章很喜欢 1. 出去遛狗&#xff0c;晚点回来 国外文化中国文化&#xff08;国外不可以随意拍摄照片&#xff09; 公共空间私密空间 艺术的价值在于可以给人们思考&#xff0c;颠覆常识 2. 行为艺术之母玛丽娜阿布拉…

YOLOv5【目录结构源码】超详细注释解读!!!建议收藏✨✨!

上一篇文章介绍了YOLOv5的网络的详细解读&#xff1a;直通车&#x1f680; 由于以后的学习及在进行的项目打算YOLOv5再仔细研究进行使用及改进&#xff0c;接下来会出相关于YOLOv5的代码逐行解读以及注释&#xff0c;废话不多说&#xff0c;让我们一起学习YOLOv5源码吧&#xf…

CTFshow pwn03

题目&#xff1a; 在做本道题前&#xff0c;我们先了解所必要的知识 Libc是什么&#xff1f; 英文名字&#xff1a;Standard C library&#xff0c;其翻译过来&#xff0c;C语言标准库 它是符合ANSI C标准的一个函数库 学过C语言会明白 ANSI C标准又是什么&#xff1f; 198…

Redo log

目录标题 前言为什么需要redo log redo log中的WAL&#xff08;先写日志&#xff0c;再写磁盘&#xff09;重要参数innodb_flush_log_at_trx_commit如何选择 redo log记录形式日志块(log block)redo log的格式 redo log何时刷入磁盘正常关闭服务器时事务提交时&#xff08;inno…

【STL】string的使用

放在专栏【C知识总结】&#xff0c;会持续更新&#xff0c;期待支持&#x1f339; STL简介 STL的诞生 STL为英文Standard Template Library的缩写&#xff0c;译为标准模板库。是C标准库的重要组成部分。 长久以来&#xff0c;软件届一直希望建立一种可重复运用的东西。所谓…

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

随着 DeFi 世界的发展&#xff0c;越来越多的链上协议支持以合成资产的方式&#xff0c;将传统金融资产以加密资产的形式映射至链上&#xff0c;包括美股、黄金期货等等&#xff0c;虽然这种方式进一步帮助投资者&#xff0c;以非许可的形式丰富了投资标的&#xff0c;但这种方…

GraphPad Prism 9.5.1 for Mac 操作简便功能强大且实用的医学绘图分析工具

GraphPad Prism简介 GraphPad Prism是一款非常实用的统计软件&#xff0c;其功能非常强大&#xff0c;能够帮助用户进行各类科研数据的处理和分析&#xff0c;快速绘制出各种专业的图像和数据报告。 GraphPad Prism软件的用户界面非常友好&#xff0c;易于学习和操作&#xf…

azkaban 安装 使用

目录 拷贝安装包 解压 改名 修改MySQL配置文件 创建数据库 导入数据表 修改配置文件 修改azkaban-exec下面文件 修改azkaban.properties文件 修改 commonprivate.properties 文件 修改MySQL的jar包 启动 azkaban-exec 修改azkaban-web下面文件 修改azkaban.prop…

Amazon EKS 上有状态服务启用存储加密

1.背景 用户通过 Deployment, Replication Controller 可以方便地在 Kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据&#xff0c;通过简单的负载均衡策略可实现请求分发。 Deployment 以及 Replication Controller 是为无状态服务而设计的…

关于Alibaba开发手册中提到的Manager层解析(对于传统MVC三层架构的改进)

Manager层的理解 MVC三层架构 MVC&#xff08;Model View Controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面…

scanf函数的用法

有时候刷题经常遇到如下这种输入&#xff1a; 1 2 3 4 ...... 就是不知道什么时候结束输入&#xff0c;反正就是一直在输入&#xff0c;这个时候怎么写呢&#xff1f;我们知道 scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF. 看如下代码&#xff1a; #include<st…

mysqlbinlog 生产环境问题排查实践

binlog 简介 MySQL 的二进制日志是通过二进制文件形式记录的&#xff0c;可以通过以下方式设置其格式&#xff1a; 打开 MySQL 配置文件&#xff08;my.cnf&#xff09;&#xff0c;找到 [mysqld] 段&#xff0c;添加以下语句以开启二进制日志功能&#xff1a; log-bin /pat…

Git 工作原理和分支管理

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理 Git工作原理 Git 会把仓库中的每次提交串成一条时间线&#xff0c;这条时间线就是一个分支。在 Git 里&#xff0c;每个仓库都会有一个主分支&#xff0c;即master分支。HEAD…