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

音悦台项目测试报告

文章目录

  • 项目背景
  • 项目功能
  • 测试计划与设计
    • 功能测试
    • 自动化测试
  • 测试结果
    • 功能测试结果
    • UI自动化测试结果

项目背景

现如今人们的生活压力大,容易使人疲惫,为了使得人们在闲暇之余可以听音乐放松,为此设计出一款轻量的听音乐网站,快速方便的使得用户随时随地听音乐放松

除此外,通过此次项目的经历,可使得我对文件传输的操作更加输入,还对前后端分离项目的设计思想包括数据库设计,接口的设计等更加深入理解

项目功能

  • 注册:用户首次登录可申请注册一个个人账号
  • 登录:用户使用注册好的账号进行登录
  • 上传音乐:用户可以自由的上传音乐打造属于自己的音乐空间
  • 音乐文件检验:系统会自动地对用户上传地音乐文件进行校验,非mp3文件和篡改地文件不可上传
  • 听音乐:用户可以随时随地的点击音乐进行播放
  • 查询音乐:用户可以使用音乐的名称进行搜索,方便快捷的使用户听想听的音乐
  • 删除单个音乐:用户可以对不喜欢的音乐进行删除
  • 批量删除:用户可以批量选择不喜欢的音乐,然后对选中的音乐进行批量删除
  • 收藏音乐:用户可对自己非常喜欢地音乐进行收藏,方便用户对喜欢地音乐进行管理
  • 查询收藏音乐:用户可以随时随地查询自己收藏地音乐
  • 取消收藏:用户可对已收藏地音乐进行取消

测试计划与设计

本次测试的环境为:Windows操作系统Win11,Chrome浏览器

在这里插入图片描述

功能测试

测试步骤:

  1. 分析需求,提取测试点
  2. 针对测试点设计测试用例
  3. 根据测试用例手工执行测试
  4. 针对测试结果输出报告

测试用例

这里针对项目的界面功能安全性能兼容性易用性设计测试用例

此处只粘贴部分用例,完整的用例可访问Gitee链接查看

链接: 音悦台测试用例

在这里插入图片描述

测试步骤

这里记录几个核心功能的测试步骤:

  • 上传音乐
  • 播放音乐
  • 收藏音乐

上传音乐的测试步骤:

  1. 先正确登录

在这里插入图片描述

  1. 点击上传音乐
    在这里插入图片描述

  2. 选择文件,输入歌手信息,点击上传

在这里插入图片描述

  1. 在主页面查看音乐已上传成功

在这里插入图片描述

播放音乐的测试步骤:

  1. 先进入音乐列表主界面
    在这里插入图片描述
  2. 点击刚才上传的音乐进行播放
    在这里插入图片描述
  3. 与本地音乐文件对比,查看音乐文件是否上传完整,播放是否有卡顿

收藏音乐的测试步骤:

  1. 点击某个音乐的收藏按钮

在这里插入图片描述

  1. 观察有弹窗提示收藏成功

在这里插入图片描述

  1. 进入收藏列表,观察是否上传成功

在这里插入图片描述

  1. 播放上传的音乐,看是否可成功播放

在这里插入图片描述

自动化测试

自动化测试的优点:

自动化测试可代替一部分手工测试,提高测试的执行效率,并且随着项目版本的迭代,回归测试的压力越来越大,借助自动化测试提高回归测试的效率

注意: 自动化测试只能代替一部分手工测试,不能完全替代手工测试

自动化测试的步骤:

  1. 分析项目的核心功能
  2. 针对核心功能设计自动化测试的用例
  3. 针对测试用例编写自动化脚本
  4. 执行脚本
  5. 记录测试结果

设计自动化测试用例

此处针对三个模块设计用例,三个模块分别是:

  • 用户模块:含登录,注册,注销
  • 音乐列表模块:含上传音乐,删除,查询音乐
  • 收藏音乐模块:含收藏,查询,取消收藏

此处只粘贴部分UI自动化测试用例,可访问Gitee链接查看全部用例

链接: 音悦台UI自动化测试用例

在这里插入图片描述

编写自动化测试脚本

此处只粘贴部分脚本,全部脚本可访问Gitee链接

链接: 音悦台UI自动化测试脚本

//音乐列表的元素@Order(1)@Testvoid elementTest() throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();String url = "http://47.108.53.70:8081/musicList.html";String curUrl = driver.getCurrentUrl();Assertions.assertEquals(url,curUrl);String title = "音乐列表";String curTitle = driver.getTitle();Assertions.assertEquals(title,curTitle);}//上传音乐成功@Order(2)@ParameterizedTest@CsvSource(value = {"'D:/音乐/下载/盗将行.mp3',花粥","'D:/音乐/下载/世间美好与你环环相扣.mp3',网络歌手"})void uploadSuccess(String filePath,String singer) throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(2)")).click();driver.findElement(By.cssSelector("#filename")).sendKeys(filePath);driver.findElement(By.cssSelector("#singer")).sendKeys(singer);driver.findElement(By.cssSelector("#button")).click();Thread.sleep(3000);Alert alert1 = driver.switchTo().alert();Assertions.assertEquals("上传成功",alert.getText());alert1.accept();}//上传音乐失败1:音乐已经存在@Order(3)@ParameterizedTest@CsvSource(value = {"'D:/音乐/下载/盗将行.mp3',花粥","'D:/音乐/下载/世间美好与你环环相扣.mp3',网络歌手"})void uploadFail1(String filePath,String singer) throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(2)")).click();driver.findElement(By.cssSelector("#filename")).sendKeys(filePath);driver.findElement(By.cssSelector("#singer")).sendKeys(singer);driver.findElement(By.cssSelector("#button")).click();Thread.sleep(3000);Alert alert1 = driver.switchTo().alert();Assertions.assertEquals("音乐已存在",alert.getText());alert1.accept();}//上传音乐失败2:文件格式不对@Order(4)@ParameterizedTest@CsvSource(value = {"'D:/photo/18.jpg',网络歌手","'D:/photo/8.mp3',网络歌手"})void uploadFail2(String filePath,String singer) throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(2)")).click();driver.findElement(By.cssSelector("#filename")).sendKeys(filePath);driver.findElement(By.cssSelector("#singer")).sendKeys(singer);driver.findElement(By.cssSelector("#button")).click();Thread.sleep(3000);Alert alert1 = driver.switchTo().alert();Assertions.assertEquals("文件类型错误:请选择mp3文件",alert.getText());alert1.accept();}//查询音乐1:音乐存在@Order(5)@ParameterizedTest@ValueSource(strings = {"红日","广寒","一路生"})void findMusic1(String musicName) throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys(musicName);driver.findElement(By.cssSelector("#submit1")).click();Thread.sleep(1000);WebElement element = driver.findElement(By.cssSelector("#info > tr"));Assertions.assertNotNull(element);}//查询音乐2:音乐不存在@Order(6)@ParameterizedTest@ValueSource(strings = {"爱情买卖","自由飞翔","月亮之上"})void findMusic2(String musicName) throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys(musicName);driver.findElement(By.cssSelector("#submit1")).click();Thread.sleep(1000);try{WebElement element = driver.findElement(By.cssSelector("#info tr"));System.out.println(false);}catch (Exception e){System.out.println(true);}}//删除单个@Testvoid deleteOne() throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/td[4]/button[1]")).click();Thread.sleep(500);Alert alert1 = driver.switchTo().alert();alert1.accept();Thread.sleep(500);Alert alert2 = driver.switchTo().alert();Assertions.assertEquals("删除成功",alert2.getText());alert2.accept();}//批量删除@Testvoid deleteMore() throws InterruptedException {driver.get("http://47.108.53.70:8081/login.html");driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).sendKeys("admin");driver.findElement(By.cssSelector("#password")).sendKeys("12345");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();driver.findElement(By.xpath("//*[@id=\"23\"]")).click();driver.findElement(By.xpath("//*[@id=\"24\"]")).click();driver.findElement(By.cssSelector("#deleteAll")).click();Alert alert1 = driver.switchTo().alert();Thread.sleep(2000);alert1.accept();Thread.sleep(2000);Alert alert2 = driver.switchTo().alert();Assertions.assertEquals("删除成功",alert2.getText());alert2.accept();}
}

测试结果

功能测试结果

未通过测试如下:

  1. 登陆,注册时,输入完参数点击回车不能触发点击效果,影响用户体验
    在这里插入图片描述
  2. 上传大文件,上传失败,未提示文件过大
  3. 性能方面,当音乐文件过大,对于上传和播放,服务器响应较慢
  4. 手机端登陆,页面元素有遮挡
    在这里插入图片描述

UI自动化测试结果

总共执行了30条自动化case,通过了29条,未通过1条

部分通过执行的结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

未通过:登录页面的元素有错别字,登录而不是登陆

在这里插入图片描述

相关文章:

音悦台项目测试报告

文章目录 项目背景项目功能测试计划与设计功能测试自动化测试 测试结果功能测试结果UI自动化测试结果 项目背景 现如今人们的生活压力大,容易使人疲惫,为了使得人们在闲暇之余可以听音乐放松,为此设计出一款轻量的听音乐网站,快速…...

数据库存储过程和函数

MySQL存储过程和存储函数 MySQL中提供存储过程(procedure)与存储函数(function)机制,我们先将其统称为存储程序,一般的SQL语句需要先编译然后执行,存储程序是一组为了完成特定功能的SQL语句集&…...

Spring依赖注入有哪些?各有什么优缺点?

文章目录 前言概述一、属性注入1.1 实例1.2 优点1.3 缺点 二、Setter注入2.1 实例2.2 优点2.3 缺点 三、 构造方法注入3.1 实例3.2 优点3.3 缺点 四、扩展 前言 IoC和DI是Spring中重要的两个概念,其中IoC指的是控制反转,DI(依赖注入)指的是IoC的具体实现…...

java八股文-并发篇

并发篇 1. 线程状态 要求 掌握 Java 线程六种状态掌握 Java 线程状态转换能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建,但还未调用 start 方法时处于新建状态此时未与操作系统底层线程关联 可运行 调用了 start …...

Elasticsearch8.6.0安装

Elasticsearch 8.5.0 安装 Elasticsearch 简介Elasticsearch 8.6.0 安装创建网络拉取镜像运行镜像设置密码修改kibana配置绑定ES代码绑定:手动绑定: 配置ik分词器扩展词词典停用词词典 Elasticsearch 简介 Elasticsearch(ES) 是一…...

Vue - 第五天 动态组件 插槽 自定义指令

动态组件& 插槽& 自定义指令 一、动态组件1.什么是动态组件2.如何实现动态组件渲染3.使用 keep-alive 保持状态4. keep-alive 对应的生命周期函数5. keep-alive 的 include 属性6.动态展示左右组件7.例子 二、插槽1.什么是插槽2.体验插槽的基础用法2.1 没有预留插槽的内…...

如何开展web自动化测试

Web 自动化是指使用测试脚本在 Web 上自动执行任务。它包括填写表单、导航网页、单击链接或按钮以及从网站中提取数据等任务。 它可用于各种目的,例如自动输入数据或测试网站的功能。有几种工具和编程语言可用于自动化网络上的任务,包括Selenium&#x…...

【博学谷学习记录】超强总结,用心分享 | 架构师 Maven学习总结

文章目录 Maven基本1.什么是Maven2.为什么用Maven?(1)jar 包的规模(2) jar 包的来源(3)jar 包之间的依赖关系 3.Maven目录结构4.maven仓库配置 Pom层次Pom文件简介Super POM 依赖管理1 依赖传递2 传递性依…...

PPT里文字太多如何排版-一口气教你7种布局瞬间让PPT高大上起来

简介 这是我们学PPT处于初级到中级进化阶段常做的一件事,就是拿了这种纯文字类版面来做布局。而且这种文字都是政企类的、相当苦涩难懂、无法创意。 因此我们会要求使用7种排版来优化这个版面。这和达芳奇画鸡蛋很像,这样的练习需要坚持一段时间,就是拿了纯文字来beautifu…...

Whistle(基于 Node 实现的跨平台抓包调试工具)的使用

Whistle(基于 Node 实现的跨平台抓包调试工具)的使用 基于Node实现的跨平台抓包调试工具 可以劫持网络请求,并进行请求和响应的修改,来提高我们的开发调试效率 1.一键安装(装包/证书) npm i -g whistle && w2 start --init 证书的问题 安装…...

数学模型:Python实现非线性规划

上篇文章:整数规划 文章摘要:非线性规划的Python实现。 参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。 PS:只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现:可以参考1.最优化模型与算法——基于…...

Docker网路模型(四)使用 bridge 网络

使用 bridge 网络 在计算机网络中,一个 bridge(网桥)是一个链路层设备,负责在不同的网段之间转发信息。 bridge 可以是真实的硬件设备也可以是由宿主机底层提供的软件模拟设备。 在 Docker 中,bridge 网络使用了软件…...

数据结构与算法之美 | 排序(2)

归并排序(Merge Sort) 基本思想: 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 def merge_sort…...

【外企面试系列】必备口语短语与例句 - A系列

a big headache令人头痛的事情 I have a big headache from all the noise. (我因为噪音而头痛。)The paperwork is a big headache for me. (对我来说,文书工作是件头痛的事情。) a fraction of 一部分 She ate only a fraction of her meal. (她只吃了一部分饭…...

Java使用Opencv进行大图找小图并使用其找图功能进行bilibili视频下载案例

Java使用Opencv进行大图找小图并使用其找图功能进行bilibili视频下载案例 一、Opencv大图找小图说明二、Opencv的window安装1.下载windows下的安装包2.安装3.Java中Opencv加载测试 三、Java中通过Opencv进行模板匹配大图找小图四、进行多图查找五:案例下载bilibili视…...

肠道健康从核心菌属开始:肠道菌群的关键

谷禾健康 5月29日,是世界肠道健康日。肠道是人体最重要的消化系统之一,与人体健康紧密相关。而肠道菌群作为肠道重要组成部分,在肠道健康中发挥着重要的作用。 编辑​ 由于基因、环境、饮食、药物等因素的影响,每个人的肠道菌群都…...

深度学习实战37-NASNet(具有自动搜索能力的神经网络模型)的搭建与实战应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战37-NASNet(具有自动搜索能力的神经网络模型)的搭建与实战应用,NASNet是由Google Brain团队开发的一种具有自动搜索能力的神经网络模型,利用强化学习和进化算法等技术来自动地搜索最优的神经网络架构。NASNet模型的设计灵感…...

碳排放预测模型 | Python实现基于机器学习回归分析的碳排放预测模型——随机森林、决策树、KNN 和多层感知器 (MLP) 预测分析

文章目录 效果一览文章概述研究内容环境准备源码设计KNNRandom ForestDecision TreeMLPModel Evaluation学习总结参考资料效果一览...

人体检测技术之毫米波雷达

人体检测技术之毫米波雷达 1.概述 智能人脸/视频锁领域的人体检测需求是要求远距离达到1m左右即可,一旦在此距离内检测人,则锁唤醒进行人脸识别,视频录制等操作。所以,人体检测技术非常关键。 选型主要是几个维度: 1.支持检测的距离范围,能否准确输出距离信息 2.支持…...

“Chain of Thought Reasoning“ 和 “Chain Prompts“ 是什么

"Chain of Thought Reasoning" 和 "Chain Prompts" 是什么 1. "Chain Prompts" 是什么2. “Chain of Thought Reasoning” 是什么 1. “Chain Prompts” 是什么 “Chain Prompts” 是指一系列相关的提示,它们之间有逻辑上的联系和依赖关系。用户…...

signal

读信号,dqs 是对齐到dq的边沿, 写信号,dqs 的边沿是对到中间的。 spec 就是这样规定的。我们在dq的最中间的采样,肯定是最安全的。 dqs 是对齐到dq的边沿 , 在silicon 内部,还是通过移位完成的。 rl: re…...

深度研究微软的资产负债表和财务状况以及未来投资价值

来源:猛兽财经 作者:猛兽财经 微软股票的关键指标 猛兽财经认为,微软公布的2023财年第三季度财务业绩,有三个关键指标值得投资者关注。 第一个关键指标是利息收入。微软的利息收入目前已经同比增长了44%,从2022财年第…...

Mac电脑删除第三方软件工具CleanMyMac X

经常使用Mac的人都知道,Mac除了可以在AppStore下载应用程序,还有许多软件是需要在网页上搜索下载的第三方软件。那么这类第三方软件软件除了下载方式不同之外还有什么是和从App store下载的软件有区别的吗?答案是肯定的,那就是这些…...

leetcode174. 地下城游戏(java)

地下城游戏 leetcode174. 地下城游戏题目描述 动态规划解题思路代码 动态规划专题 leetcode174. 地下城游戏 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/dungeon-game 题目描述 恶魔们抓住了公主并将她关在了地下城 …...

信号与系统复习笔记——傅里叶变换

信号与系统复习笔记——傅里叶变换 周期信号的傅里叶级数表示 特征函数 假设LTI系统的输入为 x ( t ) e s t x(t) e^{st} x(t)est 输出为: y ( t ) e s t ∗ h ( t ) ∫ − ∞ ∞ e s ( t − τ ) h ( τ ) d τ e s t ∫ − ∞ ∞ e − s τ h ( τ ) d…...

Allegor17.2版本WIN11系统CIS配置提示错误解决方案

错误提示: ERROR(ORCIS-6250): Unable to continue. Database access failed. Contact the database administrator to correct the following error(s), and then retry. ODBC Error Code: -1 Description: 在指定的 DSN 中,驱动程序和应用程序之间的体…...

Java设计模式七大原则-合成聚合复用原则

🧑‍💻作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 合成-聚合复用原则 1、合成-聚合复用原则介绍 合成/聚合复用原则(Composition/Aggregatio…...

SOFA Weekly|可信基础设施技术分论坛、Layotto 社区会议回顾与预告、社区本周贡献...

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展 欢迎留言互动~ SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&am…...

Melody 监控(四十九)

当新的世界出现,请立即向他奔去 上一章简单介绍了Spring Boot Actuator详解(四十八), 如果没有看过,请观看上一章 一. JavaMelody 一.一 什么是 Java Melody JavaMelody是一个方便的Java或JavaEE Web 应用程序监控工具。 它允许自动存储由 Web 应用程序的实际操…...

Shell脚本管道符常用搭配命令

1.sort sort命令——以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 sort [选项] 文件名 cat file | sort [选项] 常用选项 选项作用-n按照数字进行…...

吧网站做软件的软件下载/网推app怎么推广

安装证书文件说明:1. 证书文件214032361520874.pem,包含两段内容,请不要删除任何一段内容。2. 如果是证书系统创建的CSR,还包含:证书私钥文件214032361520874.key。( 1 ) 在Nginx的安装目录下创建cert目录,…...

网站建站制作价格/网站的seo优化报告

像任何其他产品一样,钟表设计代表了设计师的才华。人们厌倦了经典的钟表,出现在每一个房子,看起来都是相同的。这就是为什么一群有才华的设计师尽最大努力改变这一点,他们的创作都很优秀。相信你会很期待这些类型的时钟挂在墙上是…...

wordpress内容页主题修改/百度站长平台链接

一、RabbitMQ简述与其docker安装 这里主要讲解实战整合rabbitMQ&#xff0c;了解RabbitMQ简述与其docker安装请点击&#xff1a;传送门 二、springboot整合rabbitMQ 1.新建springboot项目 2.pom:主要添加以下两个依赖 <dependency><groupId>org.springframework.bo…...

wordpress主题ruikedu/外链工具xg

目录 摘要 内容 减少系统测试中的bug 改善bug处理时间 提高测试速度 减少测试用例 寻找更多的人 选择你的战斗 摘要 在短短一年内&#xff0c;一个测试团队将测试周期缩短了50&#xff05;以上。 它需要分析&#xff0c;计划和努力 - 首先他们研究了他们如何度过他们的…...

做网站需要注册吗/站点

目录&#x1f332; 前言 &#x1f332;&#x1f33b; Vagrant 简介 &#x1f33b;❤️ 入门玩法&#xff1a;Vagrant 安装 ❤️⚡️ 初阶玩法&#xff1a;Vagrant 常用命令 ⚡️1️⃣ Vagrant 基础命令2️⃣ Vagrant Box 管理3️⃣ Vagrant 虚拟机系统命令4️⃣ Vagrant 插件管…...

做博彩网站判刑多少年/专业优化网站排名

在x86架构中&#xff0c;我们对Time Stamp Counter (TSC) 寄存器非常熟悉&#xff0c;通过这个寄存器对代码执行时间的衡量可精确到CPU Cycle级别。 但在ARM/ARMv8/aarch64架构中&#xff0c;并没有与x86 TSC对应的寄存器和直接对应的汇编指令rdtsc。 若想在ARMv8架构中&#x…...