软件性能测试学习笔记(LoadRunner):从零开始

news2024/11/18 5:39:37

文章目录

    • 概述
    • LoadRunner的使用
      • 创建编辑脚本(Virtual User Generator)
        • 集合点
        • 思考时间
        • 事务
        • 检查点
        • 关联
        • 参数化
      • 运行负载测试(Controller)
    • 性能测试报告
      • 场景设置表格
      • 测试指标记录表
    • 其他的杂谈内容

概述

软件的性能测试与软件的功能测试完全不同,只关注服务器的表现。软件的测试方式有多种,常用的有三种,分别是压力测试、负载测试和稳定性测试。除此之外,还有故障转移与恢复测试等方式。

  • 压力测试:一瞬间给软件进行高强度施压,因此压力测试也被称为并发测试。
  • 负载测试:持续地给软件增大压力。
  • 稳定性测试:将压力保持到一定的较高值后维持来测试软件的忍耐力。稳定性测试往往需要持续几个小时。

在进行性能测试之前,需要完成前期的准备工作:

  1. 确定性能测试的类型:确定进行性能测试的方式是哪一种。例如,对接口进行并发属于压力测试;测试网站的客户容量属于负载测试。
  2. 确定性能测试的指标:事先确定用于评价软件性能的标准。例如,对于网站的响应时间而言,一般认为1秒内是非常好,3秒内是很好,5秒内是良好,7秒以内是合格,超过7秒是不合格。
  3. 确定测试机配置和服务器配置:需要使得测试机和服务器的实力尽可能“旗鼓相当”,不能有一方过强或太弱。还需要确定服务器的数量和测试机的数量(多台测试机可以进行多机联合测试),因为多台服务器或多台测试机都会使得一方的力量增强。
  4. 确定服务器的IP地址:只有知道了服务器的IP地址,才能远程对服务器的各项指标进行监控。
  5. 编写性能测试用例:也就是设计一个对软件进行使用的流程,通过该流程来对性能进行测试。

进行软件性能测试必须要已经安装好测试软件。本篇博客中使用的软件是LoadRunner。如果需要对接口进行性能测试,则需要使用另一款软件JMeter,此处不进行展开,仅介绍业务的性能测试。

业务性能测试的流程

  1. 录制性能脚本:根据需要进行测试的业务录制好性能脚本;
  2. 进行脚本增强:直接通过录制获得的脚本仅仅是初步的脚本内容,不能直接使用,需要进行脚本增强。脚本增强中的常用技术包括集合点、事务、关联、检查点、参数化、用户思考时间和其他函数设置等,将在后面进行介绍。脚本增强也是本篇博客内容的重难点。
  3. 设计性能场景:将经过增强后的性能脚本进行导入,并对虚拟用户人数、持续时间、结束时间等进行设置(相当于模拟出网站被很多用户使用的情况)。设计完成后即可运行场景。
  4. 性能指标评估:对上一步的场景运行结果通过定量的指标进行评估,常用的指标包括吞吐量、响应时间、每秒点击次数、并发用户数量、报错信息、HTTP响应数量、CPU/内存占用情况和网络延迟时间等。
  5. 编写测试报告:通过对结果制作分析表的方式对结果进行分析。

LoadRunner的使用

注意事项:LoadRunner的打开最好使用以管理员身份打开,否则可能会出现一些奇怪的报错。例如,可能导致出现无法连接Internet的报错。

LoadRunner的组成:LoadRunner由创建编辑脚本(Virtual User Generator)、运行负载测试(Controller)和分析测试结果(Analysis)三部分组成。我使用的LoadRunner版本是12.02。

创建编辑脚本(Virtual User Generator)

打开VUG后的界面如下图所示:

在这里插入图片描述

新建一个运行脚本:点击左上角菜单的文件选项,在下拉部分选择新建一个脚本和解决方案,如下所示。另外,在文件菜单中也可以选择打开一个运行脚本(解决方案)。

在这里插入图片描述

选择单协议Web - HTTP/HTML,表示仿真浏览器和Web服务器之间的通讯。同时需要设置脚本名称和存储位置。

在这里插入图片描述

另外,点击左下角的协议分析软件按钮,选择录制所用的浏览器和需要进行测试的URL地址,然后点击开始分析。注意,这一步并非必须的,只是用于判定当前所使用的浏览器是否受到支持。

在这里插入图片描述

注意事项①:如果使用的是LoadRunner 11系列的版本,则可能对一些浏览器不支持。此时可以安装一个火狐24版本的浏览器并设置即可。
注意事项②:由于LoadRunner的虚拟用户对网站具有攻击性,因此不能用该软件随意对各类网站进行测试实验。LoadRunner提供了一个飞机订票模拟网站用于练手。

在上上张图中点击创建按钮,即可创建一个原始的Action测试脚本,效果如下图所示。此时的脚本内容是空的,我们需要通过接下来的录制来向脚本中自动添加内容。

在这里插入图片描述

在上面的界面的菜单栏中依次点击录制录制选项录制,选择基于HTML的脚本。这是因为基于HTML的脚本比基于URL的脚本更加简洁和干净。

在这里插入图片描述

点击右侧的HTML 高级,将脚本类型设置为仅包含明确URL的脚本

在这里插入图片描述

点击左侧脚本按钮,将脚本语言设置为C语言

在这里插入图片描述

点击左侧的高级按钮,在勾选字符集中选择UTF-8。如果不勾选可能会返回乱码。

在这里插入图片描述

上述设置完成后,点击确定按钮即完成录制设置。之后,点击主界面上方菜单的录制按钮即可对本次录制进行定义。目前,录制到操作暂时选择Action,录制模式选择Web浏览器,应用程序即用于录制所用的浏览器,URL地址即需要进行性能测试的网站。另外,还需要设置工作目录。之后,点击开始录制即可开始。开始后会自动打开指定的URL。

注意事项:下面的图片中,给定的浏览器程序是Internet Explore,但是实际上并不能使用这款浏览器,因为会导致录制的脚本是空白的。所以,推荐使用安装LoadRunner自带的火狐浏览器,相关博文链接:解决LoadRunner录制脚本为空的办法。如果还是录制失败,则可以尝试关闭后台的所有浏览器,清理内存和检查配置是否有误。

在这里插入图片描述

脚本录制实际上就是演示一遍需要进行性能测试的操作流程的内容。例如,我需要对网站的用户注册进行性能测试,我就在录制过程中完成一次完整的用户注册,然后结束录制即可。录制开始后的菜单如下。菜单中有停止录制、暂停录制等按钮。当录制完成时,只需要点击停止录制按钮即可。

在这里插入图片描述

停止录制后,再回到LoadRunner的软件界面,即可以看到出现了对应的脚本内容。一个好习惯是对生成的脚本运行(回放)一次,观察是否有报错,如果没有报错再进行后续的脚本增强等步骤。最后一定要记得保存脚本。

在这里插入图片描述

需要注意的是,录制过程一定要目的明确,不要做与所需要测试的流程无关的内容,这样会导致生成的脚本中内容很乱,无法直接用于后续的过程。

下面先介绍几个概念:

集合点
  • 定义:用于控制录制流程中进行施压的地方,此时,各个虚拟用户以不同的速度到达集合点后,只有等最后的虚拟用户也到达之后才会继续前进。因此,集合点能够控制在集合点之前的流程中不会出现大规模并发使得服务器提前崩溃的现象,也可以更好地集中力量测试我们所关心的界面的性能。

注意事项:一个脚本中尽量只有一个集合点,除非两个集合点之间的间距很长。这样做会使得第二个集合点的结果失真,并且给服务器造成了更大的压力。

插入集合点的方式非常简单,只需要在向网站发送请求前,在录制菜单中点击插入集合点并命名该集合点即可。

在这里插入图片描述

思考时间
  • 定义:思考时间是脚本中用于模拟用于在页面停留的函数,使用思考时间可以使得脚本更加真实。在脚本中的表示方法是lr_think_time(思考秒数) 。另外,LoadRunner中自带的函数都是以lr开头。

在录制后的脚本中,脚本中会自动根据录制过程中在每个页面的停留时长自动给思考时间赋值。但是,如果想要思考时间生效则需要进行运行时设置。点击左上角菜单中的查看,然后点击解决方案资源管理器,如下所示:

在这里插入图片描述

在左边弹出的菜单中,选择运行时设置,在弹出的界面中点击思考时间。可以看到,默认情况下会自动忽略思考时间,我们可以根据需要将其调整为按录制参数回放思考时间,也可以通过使用录制思考时间的随机百分比,来模拟多用户使用的情况,在这种情况下还可以选择将思考时间限制为指定的秒数。

在这里插入图片描述

注意事项:集合点之前不能设置思考时间。

事务
  • 定义:一段被包裹起来的过程。可以认为事务就是录制过程中的一小部分。通过对事务进行封装,可以将大的过程拆分为小的单独的单元进行处理。

LoadRunner中插入事务的方法非常简单,只需要在录制的过程中,对于需要单独进行分析的事件之前,在录制菜单中选择插入开始事务并命名,然后事件完成后点击插入结束事务并选择对应的开始事务名即可。尽管可以通过写代码的方式在脚本中直接插入事务,但是还是推荐初学者在录制的过程中插入。

在这里插入图片描述
在这里插入图片描述
需要注意的是,事务的内部不能有思考时间。这是因为如果事务内部有思考时间,则会影响响应时间的结果。另外,集合点也不应该放在事务的内部,否则集合的时间也会影响响应时间的结果。

浪费的时间:响应时间中的浪费的时间是指服务器收到请求后到服务器回复请求所需的时间。

检查点
  • 定义:用于确保每一个页面都是正确测试的,不存在隐藏的错误。

检查点可以分为文本检查点和图片检查点,其中文本检查点通过查找返回的网页中是否有指定的字符串来判断是否出错。需要注意的是,插入脚本的位置是在界面获取完成之后。我们可以通过修改脚本代码的方式插入文本检查点:

web_find("web_find","What=待查找的内容",LAST)

需要说明的是,检查点也最好放在事务的外面,防止影响响应时间的检测。修改完代码后,进入脚本的运行时设置,勾选启用图像和文本检查,然后再运行脚本时就会进行检查了。

在这里插入图片描述
图像检查点在此不进行介绍。

关联
  • 定义:关联是指对于录制结果脚本中的一部分内容,其本身并不是常量而是变量(例如网站的Token),因此重复运行相同的脚本可能会失败获得不符合测试的内容要求,因此可以定义关联。

关联需要在变量获得之前进行插入,因为这样才能告诉服务器,其中某一个值是作为变量,请用特殊的方式进行处理。

LoadRunner12.02中建立关联的方式非常简单。在每一次完成脚本录制后,都会产生如下所示的窗口:

在这里插入图片描述
上述窗口表示LoadRunner在脚本录制的过程中自动扫描到了一个关联,即字段为userSession的部分。确定结果无误之后,可以点击窗口中的关联来创建这个关联。然后点击关闭。创建关联完成后,可以看到脚本文件中的userSession字段被替换为一个大括号表示的形式,如下图:

在这里插入图片描述

参数化
  • 定义:对于脚本中用户输入的部分,如果每一次的输入内容不同,则需要对不同的这一部分内容进行参数化,使得一个脚本可以处理多个不同的输入。

参数化和关联的区别:参数化是指由于用户输入内容不同所导致的脚本内容不同,参数化是由于服务器返回内容不同所导致的。

LoadRunner中对脚本中的部分内容进行参数化的方法非常简单。首先选中需要参数化的部分,然后右键点击,在菜单中依次选择使用参数替换新建参数,即可得到如下图所示的界面:

在这里插入图片描述
在该窗口中,我们可以设置参数的名称、类型和初始值。参数名称和初始值可以自定义,但是类型一般都是File类型。设置完成后点击确定,即可看到原始脚本代码中的值被替换。’

在这里插入图片描述
接着,我们在生成的参数处打开鼠标右键菜单,选择参数属性,打开如下所示的窗口:

在这里插入图片描述
上图中的文件路径实际上就是参数可以取的各个值,这些值被存放在指定的文件中。可以在界面中点击用记事本编辑按钮来修改文档中的内容。例如,初始打开文档的界面如下:

在这里插入图片描述
文档中的Username表示我们的参数名,T2020308250120-001表示参数需要取的一个值。如果我们需要该参数取更多值,例如T2020308250120-002,则可以修改文档内容,修改后的文档如下:

在这里插入图片描述
保存文档后退出即可看到参数属性界面的内容也发生了修改:

在这里插入图片描述

另外,也可以直接在界面中点击添加行按钮,快速增加新的参数取值。

除了一行一行设置取值之外,还可以点击数据向导按钮,从数据库中直接导入数据源。这里需要使用SQL语句,不做过多解释。

如果参数不只有一列(例如除了账号之外还有密码),则可以点击添加列按钮,进行列数据的添加。

我们可以看到界面中还有选择下一行更新值的时间两个属性,两个属性都可以取三个值,因此一共有九种不同的组合方法。这一部分内容是参数化的重点。不同组合的效果总结如下。其中的迭代次数是脚本的循环执行次数。

  • Sequential + Each iteration:每一次迭代中,都从数据表中取出下一个值。一轮迭代中所有用户的值相同。
  • Random + Each iteration:每一次迭代中,每一个虚拟用户都从数据表里面取出一个新的值。
  • Unique + Each iteration:每一次迭代中,都从数据表中取出下一个唯一的值。
  • Sequential + Each occurrence:每一次的参数出现都从数据表中取出下一个值,无论是否在同一次迭代中。
  • Random + Each occurrence:每一次的参数出现都从数据表中随机取出一个值,无论是否在同一次迭代中。
  • Unique + Each iteration:每一次迭代中,都将从数据表中取出下一个唯一值,无论是否在同一次迭代中。
  • Sequential + Once:第一次迭代中得到的值就会被每一个虚拟用户在接下来的所有迭代中使用。
  • Random + Once:第一次迭代中得到的随机值就会被每一个虚拟用户在接下来的所有迭代中使用。
  • Unique + Once:第一次迭代中分配的唯一值就会被每一个虚拟用户在接下来的所有迭代中使用。

在界面中点击模拟参数按钮,在弹出的界面中设置虚拟用户的数量迭代次数,如下所示,然后点击模拟,即可看出当前选择的属性组合情况下的参数结果。

在这里插入图片描述
根据上面的方法即可完成参数化。

其他内容:除了上述的几种脚本增强方式,脚本录制过程中还可以加入注释。完成了脚本的录制和增强后,下面就需要使用Controller来运行脚本。

运行负载测试(Controller)

打开Controller,初始界面如下所示:

在这里插入图片描述
我们可以在上述界面的左上角导入已经完成了增强的脚本并设置其名称。同时,我们还可以设置脚本所占的百分比(因为可以同时运行多个脚本)和进行测试的机器。导入需要运行的脚本并设置比例后的界面如下:

在这里插入图片描述
在脚本对应行的Load Generator处点击下拉菜单中的添加,在弹出的界面中,将名称一行设置为测试机的IP地址。如果以本机作为测试机,则直接输入localhost即可。然后点击确定

在这里插入图片描述
在Controller界面的左下角全局计划部分,双击启动VUser,选择启动脚本时的总共的虚拟用户数量,该用户数量是根据测试准备确定的。另外还可以是同时还是每隔多长时间增加指定个虚拟用户数量。设置完成后点击确定

在这里插入图片描述
回到Controller界面,同样在全局计划面板中,双击持续时间。持续时间可以分为完成前一直运行和指定的运行时间。我们根据需要进行选择,这里选择前者,然后点击确定。选择前者时则不需要考虑退出方法;如果选择后者,则是完成一次之后如果没有到达指定时间,则会重复第二遍运行。

在这里插入图片描述
上述内容设置完成后,点击运行,软件界面变为如下的形式。Controller的界面包括设计界面和运行界面,运行界面就是对各种各样的测试指标进行监控。

在这里插入图片描述
如果觉得四张测试指标图太少,可以在图像的空白区域点击右键,然后点击查看图,再点击显示八张图,这样就得到了下面所示的结果。可以进行监控的指标在左侧可用图部分,我们可以通过点击鼠标左键自由选择。

在这里插入图片描述

常用的指标包括:

  • 正在运行的VUser;(非常重要)
  • 事务的响应时间;(非常重要)
  • 每秒HTTP响应数
  • 有错误的VUser
  • 错误统计信息
  • 吞吐量;(非常重要);
  • 每秒点击次数;(非常重要,可以反映出并发的点)

LoadRunner对Windows资源(CPU和内存)的可视化效果不好,一般使用第三方工具进行监控。但是这里就先不去掉了,调整后的八张图如下所示:

在这里插入图片描述
如果还是想要使用Windows资源窗口对服务器进行资源监视,则右键点击该图,在菜单中选择添加度量。在弹出的页面中点击添加,然后输入服务器的IP地址即可。这里以本机为例:

在这里插入图片描述
按照下图选择的指标进行点击:

在这里插入图片描述

接下来,我们对图像的刷新率进行设置。在任意一张图上点击右键,在菜单中选择配置,打开如下的窗口,将刷新率进行修改,并勾选应用于所有图

在这里插入图片描述
所有设计完成后,在Controller界面中的右上角点击开始场景,就会自动执行,此时的性能指标图也会不断刷新,如下图所示:

在这里插入图片描述

点击右上角的Vuser,可以看到每一个虚拟用户的当前状态:

在这里插入图片描述
运行完成后的结果如下图所示:

在这里插入图片描述

注意事项:如果在脚本中本身插入了集合点,那么就需要先设置集合的方式后,再运行场景,否则结果可能会是错误的。

性能测试报告

性能测试报告包括场景设置表格和结果评价表格两部分。

场景设置表格

模板如下:

测试名称(包括进行测试的接口和测试类型,以及测试编号)
测试步骤
场景描述(用户数量和变化、集合点设置、需要并发的接口)
测试用例(脚本名称+占比)
运行模式
退出模式
预期结果

测试指标记录表

示例如下:

并发用户数量响 应时间吞吐量最大值CPU占用率内存占用率失败用户数量

其他的杂谈内容

  • CPU的自我保护温度:一般情况下,CPU的温度达到八九十摄氏度的时候就会报警并自动关机来实现自我保护。
  • 大型服务器的降温:将服务器放在环境温度很低的地方,从而来实现服务器的降温。
  • 服务器的操作系统:绝大多数服务器的操作系统都是Linux,这是因为Linux操作系统非常稳定。Windows系列操作系统中唯一一款能够作为服务器操作系统的是Window 2003。
  • 软件性能测试对测试机的要求:必须要较好的CPU(Intel i7以上)和较大的内存(至少8GB)。
  • 一步错步步错:如果业务性能测试的过程中,脚本录制错误,脚本增强错误等情况发生,后面的内容都是错误的,因此需要非常谨慎,保证每一步都是正确的。
  • 性能测试的时间:在用户集中使用和无人使用服务器的时候,性能测试的结果非常不一样。因此最好在无人使用服务器的时候进行性能测试。
  • 吞吐量:吞吐量是评价服务器的核心指标,表示了服务器处理事务的能力。当用户量从零开始增加时,服务器的吞吐量会上升;但是继续增加用户量,吞吐量会持续下降。在进行负载测试时,最好能够找到服务器负载的峰值对应的用户量进行测试。
  • CPU利用率的注意事项:在进行测试的过程中,一般要求CPU的利用率不能超过70%。
  • 练习过程中使用的虚拟用户数:练习过程中最好控制虚拟用户数不要太大,否则会给服务器造成很大的负担。
  • TPS:服务器处理速度的一个指标。TPS越高服务器的处理速度越快。

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

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

相关文章

荧光量子效率积分球的优势是什么

荧光量子效率积分球是一种测量设备,可以用于测量荧光材料在特定波长下的量子效率。它由一个具有高朗伯特性的漫反射PTFE材料制成,具有高达99%的反射率和朗伯特性。积分球有三个开口,分别为光入射口、样品口和光出射口。光入射口设置有一准直镜…

2023年【电工(高级)】考试报名及电工(高级)考试试卷

题库来源:安全生产模拟考试一点通公众号小程序 2023年【电工(高级)】考试报名及电工(高级)考试试卷,包含电工(高级)考试报名答案和解析及电工(高级)考试试卷…

Linux 读写权限的配置

文章目录 Linux文件权限详解 一、文件权限二、修改文件访问权限的方法三、UMASK值四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)五、ACL访问控制列表六、文件权限操作的常用命令 Linux文件权限详解 Linux系统中不仅是对用户与组根…

锐捷 Smartweb管理系统命令注入漏洞复现 [附POC]

文章目录 锐捷 Smartweb管理系统命令注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷 Smartweb管理系统命令注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测…

学生台灯护眼灯需要多少W?小学生合适的五款护眼台灯推荐

台灯如何选择,随着人们生活水平的提高及科技的不断进步,台灯的品质也得到了极大的提高,在生活中很多时候都需要使用台灯,但是市面上的台灯那么多,台灯如何选择。学生护眼台灯选择多少瓦比较好呢?选择12w-20…

一文搞懂Transformer

近期Transformer系列模型的出现,增加了CV领域的多样性。但是Transformer这一不同领域的模型对学习者来说需要一个细致的学习过程.下面就是本菜鸟总结学习路线。 Transformer是基于attention机制。而attention机制又在Encoder、Decode中。本篇博客将从Attention->…

洗内裤的小洗衣机买啥牌子的?口碑好的迷你洗衣机推荐

迷你洗衣机是一种小型的家用洗衣设备,主要是由于其小巧便携而且实用性高的特点,非常适用于小户型家庭、单身人士、学生宿舍等场所,如今随着迷你洗衣机在市场上越来越受到消费者的青睐。那么,迷你洗衣机哪个牌子好用又不贵呢&#…

RabbitMQ-高级篇-黑马程序员

代码: 链接: https://pan.baidu.com/s/1nQBIgB_SbzoKu_XMWZ3JoA?pwdaeoe 提取码:aeoe 在昨天的练习作业中,我们改造了余额支付功能,在支付成功后利用RabbitMQ通知交易服务,更新业务订单状态为已支付。 但…

uniapp开发ios上线(在win环境下使用三方)

苹果 1、win环境下无法使用苹果os编译器所以使用第三方上传工具,以下示例为 初雪云 (单次收费,一元一次) 初雪云(注册p12证书):https://www.chuxueyun.com/#/pages/AppleCertificate 苹果开发者…

LeetCode - 232.用栈实现队列 225.用队列模拟实现栈 (C语言,配图)

目录 232.用栈实现队列 225.用队列模拟实现栈 注:本文是基于C语言实现的代码,所以栈和队列是在力扣上制造实现的,如果你使用C等语言,可以忽略前面相当大部分的代码。 在栈模拟实现栈和队列之前,我们先来复习一下栈和…

【LeetCode】每日一题 2023_11_14 阈值距离内邻居最少的城市(Floyd 最短路算法)

文章目录 刷题前唠嗑题目:阈值距离内邻居最少的城市题目描述代码与解题思路随机挑选一个大佬的题解 CV 结语 刷题前唠嗑 LeetCode? 启动!!! 今天的题目也是重量级,看到这个题目的名字,看到这张图&#xf…

MySQL My.cnf参数梳理与延伸 (MYSQL 8 cache and buffer类)

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

Python兼职接单(非常详细)从零基础入门到精通,看完这一篇就够了

当下python需求量还是挺大的,对于想要做兼职的程序员还是挺友好的:起码不用愁找不到;目前来看,其兼职方向大致有三:开发、爬虫、数据分析。 就开发来说,目前python的轮子在Github上一抓一大把,…

数据结构笔记:R树

R-trees: a dynamic index structure for spatial searching 1984 1 介绍 R树可以看作B树再高维空间的扩展。它很好的解决了在高维空间搜索等问题。 采用了B树分割空间的思想,并在添加、删除操作时采用合并、分解结点的方法,保证树的平衡性R树就是一棵…

Nginx配置开启HTTPS

获取证书文件 Nginx 开启SSL server {listen 443 default ssl;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;proxy_set_header Host $host;ssl_certificate /usr/local/nginx/cert/server.pem;ssl_certificate_key /usr/local/ngin…

Sealos 云操作系统一键集成 runwasi,解锁 Wasm 的无限潜力

WebAssembly (通常缩写为 Wasm) 是一种为网络浏览器设计的低级编程语言。它旨在提供一种比传统的 JavaScript 更快、更高效的方式来执行代码,以弥补 JavaScript 在性能方面的不足。通过使用二进制格式,WebAssembly 能够提供比传统 JavaScript 更快的解析…

印刷企业使用数字工厂管理系统前后有什么变化

随着科技的飞速发展,数字工厂管理系统已经逐渐渗透到印刷企业的各个环节。本文将通过分析印刷企业在使用数字工厂管理系统前后的变化,探讨这一技术如何为印刷行业带来革新。 一、使用前的状况 在使用数字工厂管理系统之前,印刷企业的生产方式…

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景

文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出(IO…

一则DNS被重定向导致无法获取MySQL连接处理

同事反馈xwik应用端报java exception 获取MySQL连接超时无法连接到数据库实例 经过告警日志发现访问进来的IP地址数据库端无法被解析,这里可以知道问题出现在Dns配置上了 通过以上报错检查/etc/resolve.conf 发现namesever 被重定向设置成了114.114.114.114 域名 …

Java面试题(每天10题)-------连载(31)

多线程篇 注:今天只更新四题,明天就换别的了 1、concurrent包下有哪些类? ConcurrentHashMap、Future、FutureTask、AtomicInteger... 2、线程a、b、c、d运行任务,怎么保证当a、b、c线程执行完再执行d线程? 1 、 Cou…