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

软件测试面试准备——(一)Selenium(1)基础问题及自动化测试

滴滴面试:

1. 自己负责哪部分功能?

农餐对接系统分为了两大子系统,一个是个人订餐系统,二是餐馆、个人与农产品供应商进行农产品交易系统。我主要负责组织测试人员对该系统进行测试。

我们测试分为两个阶段

一、功能测试阶段。主要负责编写测试计划、测试用例、部署禅道BUG管理系统,进行功能测试。

首先,我们将系统分为了订餐平台、采购平台、登录注册、消费者/餐馆/供应商后台等七个模块。

其次,使用等价类划分和边界值分析法相结合,针对每个模块设计测试用例。

二、 UI层自动化测试。使用PO设计模式,工具是Selenium+Unit test+Jenkins。

2.1 目的

这个阶段,是在我们项目需求已经明确,版本已经稳定的情况下开始的,主要考虑了几个方面

1. UI层在多平台、多浏览器下运行结果存在不同。也就是需要我们在不同平台、浏览器下运行相同的测试案例,大量的重复劳作力

2. 其次,我们项目因为前期设计不够严谨、版本部署不够规范,会出现BUG重复出现的情况,也就是需要我们每日构建后进行回归测试。

3. 同时,自己希望能够锻炼编程能力。

2.2 内容

在设计UI层自动化测试用例的时候,使用的是PO设计模式,也就是把每一个页面所需要操作的元素和步骤都封装在一个页面类中。然后 Selenium+Unit test搭建四层框架——实现数据、脚本、业务逻辑分离(关键字驱动)

1)基础层(BasePage)

设计一个基本的Page类,所有页面皆继承该类。提供了一个页面需要实现的基本功能及公共方法。

2)业务逻辑层(Pages):

按照PO设计模式,将每个页面抽象为一个类,放在Pages包里面,每个页面继承Basepage,可调用Data层数据,内容包括:

  • 该页面所有的操作对象属性

  • 实现的功能

3)数据层(Data)

该层存放相关数据,例如:用户数据和密码。在测试用例可通过调用数据层的数据来进行操作。

4)测试用例层(Testcases)

每一个测试用例testcase都对应Pages里面的一个页面,继承unnitest.TestCase类。通过调用对应页面类的方法,数据层的数据、增加断言(assert)来验证功能的正确性。

此外通过Jenkins自动执行测试、代码质量检测和部署到测试服务器、部署到生产服务器上

2.3 自动化测试执行策略——三个阶段

使用Jenkins持续集成工具来执行测试脚本和部署,主要设置了三个任务:

  • tm_test:用于执行自动化测试脚本,检测代码质量

  • tm_staging_deploy:用于在测试服务器上部署代码

  • tm_deploy:用于在生产服务器上部署

我们将测试分为三个阶段

1. 开发新的需求时,创建分支devN。当在这个分支中,需求开发完成或者Bug修复,就配合测试人员利用JUNit框架进行单元测试以及功能测试。通过测试后,合并到master上。

2. 当master有变动,则触发tm_test任务,执行自动化测试脚本和代码质量检测。如果通过则自动触发tm_staging_deploy,部署到测试服务器,如果没有通过,自动化测试脚本会将Bug截图发送给测试人员。

3. 登陆生产服务器上,对网站进行功能测试。如果通过测试,则手动触发tm_deploy,部署到生产服务器。如果没有通过,在禅道管理系统上把bug指派给相应模块的开发人员。

2. 在使用Selenium中遇到的最大的问题?如何解决?——测试用例的可靠性

误报通常是我们在使用selenium的最头疼的问题,这使得很难把selenium测试用例加入到自动构建中。有些构建是必须要成功的,如果失败将会阻塞整个发布流程。

解决方法——重试我们的解决方案是在测试步骤和测试集中都加入重试机制。

产生误报最大原因是selenium在页面加载完成之前就开始请求页面资源。

重试机制:

利用递归封装了一个等待元素的方法。其中,设置最大等待时间为1s,轮询时间为50ms,这个方法会不断轮询,直到方法执行成功或者超过设置的最大等待时间。在我们最好的一次实践中,我们把一个测试用例的误报率从10%降低到0,并且执行时间从原先的45秒降低到33秒。

@annotation.tailrecprivate def retry[A](maxWaitMillis: Long, pollIntervalMillis: Long)(callback: => A): A = {

val start = System.currentTimeMillis

Try {

callback

} match {

case Success(value) => value

case Failure(thrown) => {

val timeForTest = System.currentTimeMillis - start

val maxTimeToSleep = Math.min(maxWaitMillis - pollIntervalMillis, pollIntervalMillis)

val timeLeftToSleep = maxTimeToSleep - timeForTest

if (maxTimeToSleep <= 0) { throw thrown } else { if (timeLeftToSleep > 0) {

Thread.sleep(timeLeftToSleep)

}

retry(maxWaitMillis - pollIntervalMillis, pollIntervalMillis)(callback)

}

}

}

}

其余还有元素定位问题:

我们主要通过Selenium WebDriver进行元素定位。但是会遇到两大类定位不到元素的情况:

1. ElementNotVisible元素不可见

对于这种情况,这个元素display = none/hidden,通过JS更改display = block来解决

2. NoSuchElementException没有这种元素

1)最常见的:页面没有加载完全,我们就去定位这个元素。

2)动态ID无法定位元素——1)直接使用Xpath相对路径;2)根据部分元素定位

3)Iframe——switch_to_iframe

4) Alert——switch_to_alert

5)下拉框——Select标签下拉框、二次定位

3. UI层自动化测试的作用?发现什么BUG?

他就是功能测试,使用WebDriver真实的模拟了用户的操作过程。

4.有无发现selenium的BUG

5. 与人工测试相比,Selenium测试的产出,相对的优势?

6. 有没有封装过Selenium方法?

有,在BasePage层,我们就对实现一个页面的基本功能进行了封装。

例如:

1. 设置重试机制。

2. 对webdriver各种方法进行封装。

  1. JUnit如何实现,它的功能是什么?什么时候使用?

一、Selenium基本认识

1. 什么是Selenium?

Selenium是浏览器自动化工具,主要用来Web的自动化测试,以及基于Web的任务管理自动化。它支持的语言有:python、Java、ruby、JavaScript等,并且几乎能在主流的浏览器上运行。

Selenium2.0、Selenium3.0主要由三大部分组成:SeleniumIDE、Selenium WebDriver、Selenoium Grid。

  • Selenium IDE:录制和回放脚本,可以模拟用户对页面的真实操作,区别于其他工具:是通过拦截http请求。

  • 一般只把录制脚本当作一个辅助功能,因为一个UI节点的细微变化,都可能导致自动化测试工具无法识别,当测试项目项目大时,定位、更新十分困难。

  • 其次,录制的脚本有时候人工难以理解。

  • Selenium Grid:实现在多台机器上、和异构环境中并行执行测试用例。并行执行不仅节省时间,而且可以同时在不同的浏览器、平台上运行自动化测试脚本。

  • Selenium Web Driver:针对各个浏览器而开发,通过原生浏览器支持或者扩展(Chrome webDrive、FireFox WebDriver)直接控制浏览器

    VS Selenium RC(Selenium1.0):在浏览器中运行javaScript,使用浏览器内置的JavaScript来翻译和执行selense

2. Selenium的特点有:

  • 支持录制和回放(Selenium IDE)

  • 通过WebDriver,直接控制浏览器,而不是通过拦截HTTP请求,实现真正模仿了用户的操作;同时使用WebDriver能够灵活的获取页面元素(WebDriver),并且提供执行JS的接口

  • 能够分布式运行在不同机器和异构环境中(不同浏览器)

3. Selenium的内部运行机制?如何能够跨浏览器使用?——WebDriver原理(&RC原理)

1)RC原理

在Selenium1.0中,是通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的。

Selenium RC分为三个部分,Launcher、HttpProxy、Core。

  • Launcher用于启动浏览器,把Selenium Core加载到浏览器中,并且把浏览器的代理设置为Selenium Server的Http Proxy。

  • Core是一堆JavaScript的集合,所以本质相当于运行这些JavaScript函数来实现对Html页面的操作。——这也是为什么可以运行在几乎所有主流的浏览器上。

然而直接运行JavaScript会有极大的安全漏洞,所以会受到“同源限制”,在这个基础上,Selenium2.0引入了WebDriver。

2)Web Driver原理

webDriver是按照client/server模式设计的。client是我们的测试脚本,发送请求;server就是打开的浏览器,用来接收client的请求并作出响应。

具体的工作流程:

  1. webDriver打开浏览器并绑定到指定端口。启动的浏览器作为远程服务器remote server

  1. client通过CommandExecuter发送http请求给远程服务器的侦听端口(the wire protocal)

  1. 远程服务器根据原生的浏览器组件来转化为浏览器的本地(native)调用

所以web Driver用到的协议

  1. 打开浏览器时:HTTP协议

  1. client端发送http请求到远程服务器的侦听端口:the wire protocol

其中:

  • 有线协议:指的是从点到点获取数据的方式,是应用层的协议。

  • HTTP协议:是用于从服务器传输超文本标记语言HTML到客户端的通信协议。是一个应用层协议,由请求/响应构成,是一个标准的客户/服务器模式。是一个无状态的协议。(无状态:对事务没有记忆能力,不会保存这次传输的信息——节约内存)

4. 如何提高selenium脚本的执行速度?

1)优化测试用例。

  • 尽可能不用sleep、减少使用implicityWait,而使用WebDriverWait/FluentWait,这样可以优化等待时间

  • 减少不必要的操作步骤。

2)使用Selenium grid,通过testNG实现并发执行。

说到这里,在编写测试用例的时候,一定要实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

3)设置等待时间、中断页面加载。如果页面加载内容太多,我们可以查看一下加载缓慢的原因,在不影响测试的情况下,可以设置超时时间,中断页面加载。

5. 提高自动化脚本稳定性

首先我们要分析出不稳定的原因,然后有针对的去解决。

1)页面加载内容太多。如果页面加载内容太多,在不影响测试的情况下,我们可以设置超时时间,中断页面加载。

2)网络原因。设置等待时间,如果在响应时间内没有加载成功,则重新执行测试。

3)优化代码,减少容易冲突的函数。

4)多线程运行时,测试用例间相互影响。在并发操作时,如果用例之间的耦合性没有设计好,就会有影响。

综上所述,我们就可以用线程的方式来监控测试进程的WEB加载执行状态。

  • 在页面会发生跳转时,启动一个Thread来监控进程的状况。

  • 在Thread的run方法中定义一个计时器。

  • 如果计时器超时,则可以刷新页面,计时器清零;

  • 若此时刷新页面再次超时,则关闭当前浏览器进程,fail掉这个测试用例,继续执行其他的测试用例。

6. 高质量自动化脚本特点

  1. 业务和代码分离,封装性好。

  1. 用例之间耦合性低,独立性强,易于扩展维护

7. 你觉得自动化测试最大的缺陷是什么?

1. 一旦项目发生变化,测试用例就需要改进,工作量大。

2. 验证的范围有限,操作更加复杂,比如说简单的一个验证验证码,如果是人工识别很快就可以输入,但是自动化测试中会增添很多困难。那么这个时候速度也不如人工。

3. 不稳定

4. 可靠性不强

5. 成本与收益

8. Selenium用JavaScript去操作页面元素会碰到什么问题?Selenium是如何解决这个问题的?

然而直接在浏览器中运行JavaScript会有很大的安全漏洞,所以就会受到“同源策略”的限制。也就是,当你去要运行一个脚本的时候,会进行同源检查,只有和被操控网页同源的脚本才能被运行。

Selenium1.0是通过采用代理模式来解决这个问题的。

  • 首先测试脚本向Selenium Server发出Http请求建立,那么Selenium Server通过Launcher来启动服务器,将Core加载到浏览器页面中,并将浏览器代理设置为Http Proxy。

  • 其次,测试脚本发送Http请求,Selenium Server对这个Http进行解析,然后通过代理服务器发送JS命令通知Core执行操作浏览器的动作,Core接受到指令后,执行操作。

  • Selenium Server得到浏览器的Http的请求后,重组请求,获取对应的页面。

  • 最后代理服务器将这个页面返回给浏览器。

在这个基础上,Selenium2.0是通过webDriver来时先跨平台的。WebDriver是针对各个浏览器来开发,是一个远程控制界面,提供了一组接口来发现和操作Web文档中的DOM元素并控制用户代理的行为。

二、自动化测试设计

1. 为什么想到做UI自动化测试?

在前期,我们也配合了开发人员使用JUnit框架进行单元测试,测试覆盖率从0提升到50%。

但是随着版本的稳定,我们开始考虑UI层是与客户交互最多的界面,如果要提高用户体验,必须从UI层入手。其次,大量并且重复的劳动力都集中在UI层,所以我们考虑到进行UI层自动化测试解放劳动力。

2. 如何设计Selenium的自动化测试脚本?

我们从以下几个方面来回答:

1. 自动化测试的内容?

2. 自动化测试用例设计的原则

3. 使用的框架/设计模式

3. PO设计模式,四层框架——数据、业务逻辑、测试脚本分离(关键字驱动)

2.1 PO设计模式:

将一个页面内的操作对象(按钮框、输入框等)和操作的步骤封装在每个Page里面,也Page为单位进行管理。这样Selenium测试用例能够通过调用页面类来获取页面元素,从而巧妙的避开了当页面元素的ID等属性发生变化时,修改代码的情况。——>提高了代码的复用性、可读性及减少工作量。

2.2 四层架构:

1. 基础层(BasePage)

设计一个基本的Page类,所有页面皆继承该类。提供了一个类需要实现的基本功能及公共方法。

2. 业务逻辑层(Pages):

按照PO设计模式,将每个页面抽象为一个类,放在Pages包里面,每个页面继承Basepage,可调用Data层数据,内容包括:

  • 该页面所有的操作对象属性

  • 实现的功能

3. 数据层(Data)

该层存放相关数据,例如:用户数据和密码。在业务逻辑层可通过调用数据层的数据来进行操作。

4. 测试层(Testcases)

每一个测试用例testcase都对应Pages里面的一个页面,继承unnitest.TestCase类。通过调用对应页面类的方法,增加断言(assert)来验证功能的正确性。其中每个测试用例都以test_开头。

此外通过Jenkins自动执行测试、代码质量检测和部署到测试服务器、部署到生产服务器上

4. 自动化测试执行策略

自动化测试用例的执行主要是通过Jenkins来实现的。而执行的策略是根据测试用例的类别、目的来设计的。

在Jenkins中,我们设定了三个任务

  • tm_test:用于执行自动化测试脚本,检测代码质量

  • tm_staging_deploy:用于在测试服务器上部署代码

  • tm_deploy:用于在生产服务器上部署

测试用例的目的分为三种情况:

1)用来监控。

在此目的下,我们就把自动化测试用例设置成定时执行的,如果每五分钟或是一个小时执行一次,在jenkins上创建一个定时任务即可。

2)必须回归的用例

当修复了新功能或者Bug以后,首先开发人员进行冒烟测试,如果通过了JUnit单元测试,交给测试人员进行功能测试。通过测试后,合并到master。

master一旦有变化,则触发tm_test任务,执行自动化测试脚本和代码质量检测。如果通过,则自动触发tm_staging_deploy,部署到staging服务器上,没有通过的话,自动化测试脚本会自动发送Bug截图给测试人员。

3)不需要经常执行的测试用例/生产服务器上的代码

有些非主要业务线的代码,或者生产服务器上的代码已经很稳定了,不需要时时回归,所以我们采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。

三、Jenkins

Jenkins是持续集成的工具,能够自动执行测试和代码检测,以及部署到服务器上。

【软件测试到测试开发全测试生涯学习路线】

以及全套配套的学习资料,视频教程....

:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】

1:自动化测试进阶系列:

2:全栈性能测试,监控以及调优

3:全栈测试开发平台实战

4:全栈安全测试渗透测试

5:devops持续集成部署

6:全栈接口测试工具进阶

7:跨平台自动化测试工具

8:大厂简历,真题,录音

9:全栈系列课企业项目实战

总结:现阶段如何突出重围呢?委员不断的学习,下面是软件测试到测试开发全职业生涯全套学习资料

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

相关文章:

软件测试面试准备——(一)Selenium(1)基础问题及自动化测试

滴滴面试&#xff1a;1. 自己负责哪部分功能&#xff1f;农餐对接系统分为了两大子系统&#xff0c;一个是个人订餐系统&#xff0c;二是餐馆、个人与农产品供应商进行农产品交易系统。我主要负责组织测试人员对该系统进行测试。我们测试分为两个阶段&#xff1a;一、功能测试阶…...

AcWing 1230.K倍区间

AcWing 1230. K倍区间 题目描述 给定一个长度为 NNN 的数列&#xff0c;A1,A2,…ANA_1, A_2, … A_NA1​,A2​,…AN​ &#xff0c;如果其中一段连续的子序列 Ai,Ai1,…AjA_i, A_{i1}, … A_jAi​,Ai1​,…Aj​ 之和是 KKK 的倍数&#xff0c;我们就称这个区间 [i,j][i,j][i,…...

kubernetes集群部署springcloud项目【AL】【未写完】

kubernetes集群部署springcloud项目【AL】 &#xff08;先手工做&#xff0c;非自动化&#xff09; #环境&#xff1a; 192.168.73.138 master 192.168.73.139 node1 192.168.73.140 node2 192.168.73.137 harbor、mysqlgit clone https://github.com/lizhenliang/simple-…...

各种音频接口比较

时间 参考&#xff1a;https://www.bilibili.com/video/BV1SL4y1q7GZ/?spm_id_from333.337.search-card.all.click&vd_source00bd76f9d6dc090461cddd9f0deb2d51&#xff0c; https://blog.csdn.net/weixin_43794311/article/details/128941346 接口名字时间公司支持格式…...

软件测试面试理论(超详细)

【面试理论知识】1、你的测试职业发展是什么? 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己…...

c++学习笔记-二进制文件操作(哔站-黑马程序员c++教学视频)

一、基本概念 以二进制的方式对文件进行读写操作 打开方式指定为 ios::binary 优点&#xff1a;可以写入自己定义的数据类型 1、写文件 二进制方式写文件&#xff1a;流对象调用成员write 函数原型&#xff1a;ostream& write(const char * buffer,int len);参数解释…...

内网渗透(二十三)之Windows协议认证和密码抓取-Mimikatz介绍和各种模块使用方法

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...

Nginx if的使用教程

if指令该指令用来支持条件判断&#xff0c;并根据条件判断结果选择不同的Nginx配置。语法if (condition){...}默认值—位置server、locationcondition为判定条件&#xff0c;可以支持以下写法&#xff1a;1. 变量名。如果变量名对应的值为空字符串或"0"&#xff0c;i…...

备考蓝桥杯【快速排序和归并排序】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

Taro使用微信OCR插件无法调用onSuccess回调问题

Taro使用微信插件无法调用onSuccess回调问题小程序后台添加插件在开放社区购买相应的套餐详细步骤1.在app.config.js中添加如下代码2.在页面的page.config.js添加插件3.使用ocr-navigator识别身份证小程序后台添加插件 在开放社区购买相应的套餐 购买地址 详细步骤 1.在app.…...

【Java】代码块的细节你搞懂了吗(基础知识七)

希望像唠嗑一样&#xff0c;one step one futher。 目录 &#xff08;1&#xff09;代码块的应用场景 &#xff08;2&#xff09;代码块的细节 1.static 代码块只加载一次 2.当调用类的静态成员时&#xff0c;类会加载 3. 使用类的静态成员时&#xff0c;static代码块会被执…...

设计模式C++实现12:抽象工厂模式

参考大话设计模式&#xff1b; 详细内容参见大话设计模式一书第十五章&#xff0c;该书使用C#实现&#xff0c;本实验通过C语言实现。 抽象工厂模式&#xff08;Abstract Factory&#xff09;&#xff0c;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们…...

目标检测论文阅读:GraphFPN算法笔记

标题&#xff1a;GraphFPN: Graph Feature Pyramid Network for Object Detection 会议&#xff1a;ICCV2021 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9710561/ Abstract 特征金字塔已经被证明在需要多尺度特征的图像理解任务中是强大的。SOTA的多尺度特征…...

实测2023款哪吒U-II,智驾功能对女司机很友好

最近&#xff0c;我们受邀试驾了2023款哪吒U-II。这是一款A级新能源SUV&#xff0c;是哪吒U的改款车型。哪吒U系列自2020年3月上市到2023年1月&#xff0c;累计销售数量达76688台&#xff0c;也因此被称为15万级智能天花板。2023款哪吒U-II的一大亮点是&#xff1a;针对以往哪吒…...

Python自动化测试【软件测试最全教程(附笔记、学习路线)】,看完即就业

最近看到很多粉丝在后台私信我&#xff0c;叫我做一期Python自动化测试的教程&#xff0c;其实关于这个问题&#xff0c;我也早就在着手准备了&#xff0c;我录制了一整套完整的Python自动化测试的教程&#xff0c;上传到网盘里了&#xff0c;大家有兴趣的可以去文末交流群免费…...

2023/2/13总结

今天主要学习了哈夫曼树。 哈夫曼树 哈夫曼树是二叉树的一种&#xff0c;它是一种WPL最优二叉树。 叶子结点&#xff08;也称叶节点&#xff09;&#xff1a;指的是自己下面不再连接有节点的节点&#xff08;即末端&#xff09;&#xff0c;称为叶子节点&#xff08;又称为终…...

webSock前端

1.什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。允许服务端主动向客户端推送数据。 2.如何使用webSocket WebSocket 构造函数WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例。 代码如下: let ws = new WebSocket(网址); 2.websock事件: …...

AcWing 3956. 截断数组(每日一题)

AcWing 3956. 截断数组 题目描述 给定一个长度为 nnn 的数组 a1,a2,…,ana_1, a_2, …, a_na1​,a2​,…,an​ 。 现在&#xff0c;要将该数组从中间截断&#xff0c;得到三个非空子数组。 要求&#xff0c;三个子数组内各元素之和都相等。 请问&#xff0c;共有多少种不同…...

Android 一体机研发之修改系统设置————屏幕亮度

Android 一体机研发之修改系统设置————屏幕亮度 Android 一体机研发之修改系统设置————声音 Android 一体机研发之修改系统设置————自动锁屏 前言 最近工作略微有点儿空闲&#xff0c;抽空给大家总结一下&#xff1a;近期一直搞得一体机app研发&#xff0c;适用…...

C++通用算法

1.概述根据名字就知道如何使用相关算法&#xff0c;比如copy函数&#xff0c;就是复制的意思&#xff0c;它需要一个范围&#xff0c;以及要复制的位置copy(begin, end, container_begin);#include <iostream> #include<vector> #include<algorithm> #includ…...

Springboot停机方式

1. 介绍 简单的说&#xff0c;就是向应用进程发出停止指令之后&#xff0c;能保证正在执行的业务操作不受影响&#xff0c;直到操作运行完毕之后再停止服务。应用程序接收到停止指令之后&#xff0c;会进行如下操作&#xff1a; 1.停止接收新的访问请求 2.正在处理的请求&…...

Linux perf_event_open 简介

文章目录前言一、简介二、struct perf_event_attr2.1 type2.2 size2.3 config2.3.1 PERF_TYPE_HARDWARE2.3.2 PERF_TYPE_SOFTWARE2.3.3 PERF_TYPE_TRACEPOINT2.3.4 PERF_TYPE_HW_CACHE2.3.5 其他类型三、sample相关参数3.1 sample_period3.2 sample_freq3.3 sample_type四、其他…...

Java给定两组起止日期,求交集

/*** 判断2个时间段是否有重叠&#xff08;交集&#xff09;* param startDate1 时间段1开始时间戳* param endDate1 时间段1结束时间戳* param startDate2 时间段2开始时间戳* param endDate2 时间段2结束时间戳* param isStrict 是否严格重叠&#xff0c;true 严格&#xff0…...

数组的复制与二维数组的用法

今天学习的主要内容有 数组的复制 数组的复制 利用循环进行数组的复制 import java.util.Arrays; public class Main3 {public static void main(String[] args) {int []arr new int[]{1,2,3,4,5,6};int []arr1 new int[arr.length];for (int i 0; i < arr.length; i…...

JS判断两个table数据是否完全相等(判断两个数组对象是否完全相等)

需求 现有的table为tableA&#xff0c;有多个要做对比的table为一个数组 CompareArray 涉及到的问题 外层是数组&#xff0c;但是内部数据都是对象&#xff0c;对象属性名的排序不一样外层数组也涉及到 顺序不一样的问题 思路 对compareArray做长度筛选 filter 得到 同长度…...

关于小程序,你想知道的这些

近年来&#xff0c;各大平台纷纷上架小程序&#xff0c;迎来了小程序的爆发式增长。今天就来跟大家简单分享一下小程序基本的运行机制和安全机制。 小程序的由来 在小程序没有出来之前&#xff0c;最初微信WebView逐渐成为移动web重要入口&#xff0c;微信发布了一整套网页开…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-13

漏洞名称:THORSTEN PHPMYFAQ 跨站点脚本 漏洞级别:高危 漏洞编号:CVE-2023-0791 相关涉及:THORSTEN PHPMYFAQ 3.1.10 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-03506 漏洞名称:TENDA AC23 越界写入 漏洞级别:高危 漏洞编号:CVE-2023-078…...

【Linux】软件安装(三分钟教会你如何在linux下安装软件)

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️博客专栏&#xff1a;✈️Linux之路       &#x1f6f0;️社区&#xff1a;✈️进步学堂 目录&…...

Fluent Python 笔记 第 10 章 序列的修改、散列和切片

本章将以第 9 章定义的二维向量 Vector2d 类为基础&#xff0c;向前迈出一大步&#xff0c;定义表示多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。 10.3 协议和鸭子类型 在 Python 中创建功能完善的序列类型无需使用继承&#xff0c;只需实现符…...

在中国程序员工作是青春饭吗?

上个月公司告诉我毕业了。 我打开boss直聘&#xff0c;一溜溜的外包公司和我打招呼。 我寻思我说不定啥时候就离开深圳了&#xff0c;外包不外包也无所谓钱到位就行。&#xff08;大公司学历不够格也进不去&#xff09; 结果华为、平安的外包告诉我&#xff0c;不好意思呀&a…...

网站建设方案概述/宠物美容师宠物美容培训学校

每天记录学习&#xff0c;每天会有好心情。*^_^*今天记录的项目是自习室管理系统&#xff0c;这个项目是这么回事&#xff1a;习室管理系统的设计、开发和测试工作&#xff0c;该系统基于B/S结构,利用现有校园一卡通系统,通过JAVA和mysql数据库等软件技术,实现自动分发座位、选…...

中国摄影/关键seo排名点击软件

进程&#xff1a; 进程&#xff0c;线程由操作系统控制&#xff1b;协程&#xff08;具体某一函数&#xff09;由程序员操控。 curl访问网站 signal:ctrl c 结束程序 就是信号 RPC:进程在执行过程中&#xff0c;有一段是在远程主机上执行后再返回主机。 目前计算机工作状态&am…...

网络服务器无响应原因/重庆百度搜索优化

paramiko 登录linux主机后执行tail后返回数据不完整解决方法。参考文章&#xff1a; &#xff08;1&#xff09;paramiko 登录linux主机后执行tail后返回数据不完整解决方法。 &#xff08;2&#xff09;https://www.cnblogs.com/leomo/p/5724909.html 备忘一下。...

网站视频制作/sem培训班

转载于:https://www.cnblogs.com/hoobey/p/6501373.html...

东莞市seo网络推广平台/关键词seo公司真实推荐

本主题将从3个角度进行对比常见设置&#xff08;CentOS 6 vs CentOS 7&#xff09;服务管理&#xff08;Sysvinit vs Upstart vs Systemd&#xff09;性能测试&#xff08;cpu/mem/io/oltp&#xff09;本文为第三部分&#xff1a;性能测试的对比1. CPU测试工具: 通过sysbench对…...

中国建设银行校园招聘网站/提升排名

移动端的布局不同于pc端&#xff0c;首先我们要知道在移动端中&#xff0c;css中的1px并不等于物理上的1px&#xff0c;因为手机屏幕的分辨率已经越来越高&#xff0c;高像素但是屏幕尺寸却没有发生太大变化&#xff0c;那就意味着一个物理像素点实际上塞入了好几个像素。 在移…...