性能测试需求分析(超详细总结)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快
1、客户方提出
客户方能提出明确的性能需求,说明对方很重视性能测试,这样的企业一般是金融、电信、银行、医疗器械等;他们一般对系统的性能要求非常高,对性能也非常了解。提出需求也比较明确。
曾经有一个银行项目,已经到最后的性能测试极端,因为数据库设计不合理,导致性能出现很大的问题,最终不得不把整合项目作废,对于这样的项目,其实从分析设计阶段就应该考虑系统的性能问题。性能测试也一样,对于某些项目来说越早进行越好。当然,前期的性能测试为单元性能测试、接口性能测试,有别系统性能测试。
有时候也会碰到不懂装懂的客户,提出一些无理的需求,比如只能2000人使用的OA系统,客户要求并发用户2000,这显然是不合理的需求。这个就要看你怎么给客户沟通了。但是,千万别伪造数据欺骗客户。
2、根据历史数据分析
对于一些面向用户的独特产品,比较难定位市场的大小,可以先上一运营一段时间,通过运营可以搜集客户资料,比如,每月、每星期、每天的峰值业务量是多少。用户以 什么样的速度在递增中。用户对系统的哪些功能模块使用的最多,他们所点的比例等等。
收集到这些数据之后,我们就可评估系统的系统需求指标,从而进行性能测试。
3、需求分析与定位
这里根据前期的需求分析与定位,来分析确定系统性能指标。例如某省幼儿园管理系统。统计全省有多少家幼儿园,系统的使用时间为幼儿到校之后,管理人员对幼儿的到校情况进行录入,以及幼儿的午饭,放学情况的录入时间。经过与需求人员交流分析也能得到比较明确的性能指标。
4、参考历史项目或其它同行业的项目
如果公司之前有类似的项目经验,根据项目大小及上次性能测试的一些指标。从根据项目的规模可以制定出相应的性能指标。
即使本公司没有类似的项目,但其它公司有类似的项目,例如做IPTV或者DVB计费系统的测试,可以参考电信计费系统的需求——虽然不能完全照搬数据,但是可以通过其他行业成熟的需求来了解需要测试的项目有哪些,应该考虑到的情况有哪些种。
5、参考其它资料数据
如果你做的是非常独特的产品,市场上没有此类型的产品,而且需求及市场也难以估计,那么只能从与产品相关的资料中寻找痕迹了。不过,相信这样不确定性的产品,老板要承担的风险也是挺大的。^_^
需要说明的是,我上面介绍的方面并非是独立的,可以综合的使用,你可以根据客户提出的指标,再根据历史数据以及参考同类型项目来进行。这样可以更确定你的性能指标是客户(或自己)真正需要的、最符合项目需求的。
性能测试点的选取
- 发生频率非常高的(例如:某邮箱核心业务系统中的登录、收发邮件等业务,它们在每天的业务总量中占到90%以上)
- 关键程度非常高的(产品经理认为绝对不能出现问题的,如登录等)
- 资源占用非常严重的(导致磁盘I/O非常大的,例如某个业务进行结果提交时需要向数十个表存取数据,或者一个查询提交请求时会检索出大量的数据记录)
对性能需求点的描述
- 准确
如**系统必须在不超过 10 秒的响应时间内,处理 20 起登录任务。再如发邮件时间最大不超过5秒以及平均时间在2秒以内。
- 一致
用户和性能测试工程师对有关术语的理解要一致,如:并发用户数、在线用户数、注册用户数:
- 特定
性能测试的需求一定是有条件的。
检查系统后台关键业务数据10G、操作数据量为20K, 1500 个用户、500 个并发用户运行的负载下,连续运行12小时过程中,业务操作是否满足性能需求。
常见性能需求
1、WEB首页打开速度5s以下,web登陆速度 15s以下。
2、邮件服务支持50万个在线用户
3、计费话单成功率达到99.999%以上。
4、在100个并发用户的高峰期,邮箱的基本功能,处理能力至少达到10TPS
5、系统能在高于实际系统运行压力1倍的情况下,稳定的运行12小时
6、这个系统能否支撑200万的vu(每天登录系统的人次) vu----Virtual user(虚拟用户)
"不成文"的性能需求指标:
响应时间:根据国外的一些资料,一般操作的响应时间为2,5,8秒,2秒内优秀,5秒内良好,8秒内可接受,其它一些特殊的操作,如上传,下载可以依据用户体验的情况,延长响应时间。
Peter bickford 在调查用户反应时发现:在连续27次即使反馈之后,第28次操作进,计算机让用户等待2分钟,结果半数人在第8.5秒左右就走开或者按下种启键。使用了鼠标指针变成漏斗提示的界面会把用户的等待时间延长到20秒左右,使用动画的鼠标指针漏斗提示界面则会让用户的等待时间超过1分钟,而进度条则可以让用户等待到最后。Peter bickford的调查结果被广泛用到web软件系统的性能需求的响应时间定义中。
第三方研究表明,如果网页是逐步加载的,先出现横幅,再出现文字,最后出现图像。在这样的条件下,用户会忍受更长的等待时间,用户会把延迟在39秒内的也标识为“good”,超过56秒的才认为是“poor”的。
80/20原则:又称帕累托效应,比如,某一些系统一天中80%的访问量集中在20%的时间内。
如何根据性能需求进行测试
其实我们上面得到的需求指标仍然是不明确的:
是验证当前硬件和软件配置能否支撑200万vu?
是测试当前的硬件和软件配置最多能支撑多少vu?
是帮助开发寻找性能瓶颈?
根据需求进行性能测试的过程:
首先,请你们当前软件和硬件配置下验证能否支撑200万vu。如果可以支撑200万,再增加到300万看是否可以支撑。如果不能达到200万,那么就需要寻找一下是否有性能瓶颈,将主要的性能瓶颈解决后,再看一下是否可以支撑200万,如果可以支撑,输出测试结果。仍然不能,请评估需要添加多少硬件设备。
通过上面流程的分析,那么我们对于需求实施过程就非常明确了。
下面看来分析某邮箱系统的需求:
按照 某某 邮箱20000万注册用户,其中日活跃用户数为1.5%的规模计算:
日活跃用户=20000*1.5%=300万
日活跃用户人均每天发6封邮件,用户使用客户端收发邮件比例20%,则:
每天发邮件投递量=300万*6*20%=360万封
如何得到每秒的邮件数?
方式一: 严格的根据2/8原则 ,80%的邮件集中在20%的时间发送。
集中发邮件数: 3600000*80%=28800000封
集中发送的时间:24*20%=4.8小时=17280秒
每秒发送邮件数:2880000/17280=166.7封/秒
方式二,根据 某某邮箱业务模型表,每天忙时集中邮件系数0.15,邮件平均峰值系数2,则:
峰值邮件量=3600000*0.15*2/3600=300封/秒
注:忙时集中系数=忙时业务量/全天业务量
在两种方式的分析中,方法二得出的结果是方法一的将近一倍,我们不要根据经验理所当然的去分析,要深入的了解系统,我们要对行业指标及计算方式。如果按照第一种方式,性能测试达标了,但系统真正上线后可能远远超出了我们的评估。2008年北京奥运运门票系统就是一个典型的案例。
再来分析系统的登录:
去年全年处理“WEB登录”交易约 100 万笔,考虑到 3 年后交易量递增到每年 200万笔。
假设每年交易量集中在 8 个月,每个月 20 个工作日,每个工作日 8 小时,试采用 80~20 原理估算系统服务器高峰期“WEB登录”的交易吞吐量应达到怎样的一个处理能力
200万/8=25万/月
25万/20=1.25万/日
1.25万*80%/(8*20%*3600)=1.74TPS
----------------------
上面的小案例算是抛出的一块砖,需求开发难度要远远大于需求管理,在实际工作中常常需要我们为客户开发这部分性能需求。所以,在追求技术的基础上,请更多的了解分析你的项目及行业指标。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
相关文章:
性能测试需求分析(超详细总结)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、客户方提出 客户方能提出明确的性能需求,说明对方很重视性能测试,这样的企业一般是金融、电信、银行、医疗器械等;他们…...
React开发 - 技术总结系列二
HOC 初体验 高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。 简单点说,就是组件作为参数,返回值也是组件的函数&#x…...
Spring事务实现原理
我们一般将Spring事务使用在数据库操作上面,用来保证数据的一致性和完整性 实现原理: 通过AOP和事务管理器实现的 1.AOP拦截: 拦截Transactional注解的方法调用 2.事务管理器: 负责事务的开启,提交和回滚 3.事务…...
云服务器部署upload-labs-docker(文件上传靶场)环境 以及相关报错问题
环境的搭建 准备:云服务器(本地的linux服务器(版本最好不要是老的不然不兼容docker)) f8x配置docker环境: https://github.com/ffffffff0x/f8x 一键配置 docker拉取file-labs靶场 https://github.com…...
Python进阶编程总结
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤
目录 1.8 使用 C 语言的 7 个步骤 1.8.1 第 1 步:定义程序的目标 1.8.2 第 2 步:设计程序 1.8.3 第 3 步:编写代码 1.8.4 第 4 步:编译 1.8.5 第 5 步:运行程序 1.8.6 第 6 步:测试和调试程序 1.8.…...
vue3 实现音频转文字组件
使用recorder-core第三方插件实现音频转纯文本的功能。 工具类文件 recoder.ts import Recorder from recorder-core import recorder-core/src/engine/wav import recorder-core/src/extensions/lib.fft.js import recorder-core/src/extensions/frequency.histogram.view i…...
MySQL各种锁详解
什么是锁? 1.1 锁的解释 计算机协调多个进程或线程并发访问某一资源的机制。 1.2 锁的重要性 在数据库中,除传统计算资源(CPU、RAM、I/O等)的争抢,数据也是一种供多用户共享的资源。 如何保证数据并发访问的一致性&…...
前端工程 Node 版本如何选择
1. Node 与 Npm 版本对应 这是一个必知必会的问题,尤其是对于维护那些老掉牙、一坨坨、非常大的有着长期历史的老破大工程。 1.1. package-lock.json 版本 首先你要会看项目的 package-lock.json 文件中的 lockfileVersion 版本号,这对于 NPM 安装来说…...
新增白名单赋予应用安装权限
目录 相关问题 具体实现 相关问题 安装app到/data/分区时,如何在安装阶段就赋予权限,无需请求权限 具体实现 frameworks/base/core/res/res/values/config.xml <!-- For whitelis apk --><string-array translatable"false" nam…...
学习Python的笔记14--迭代器和生成器
1.迭代器(Iterator) 概念: 迭代意味着重复多次,就像循环一样。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1.iter…...
【Golang】Golang基础语法之面向对象:结构体和方法
面向对象——结构 Go 仅支持封装,不支持继承和多态;继承和多态要做的事情交给接口来完成,即——面向接口编程。Go 只有 struct,没有 class。 定义一个最简单的树节点(treeNode)结构,方法如下&…...
重磅升级:OpenAI o1模型上手实测,从芯片架构分析到象棋残局判断的全能表现
引言 昨日,在圣诞节系列发布会的第一天,OpenAI终于给我们带来了令人振奋的更新,这些更新有望塑造AI互动的未来。备受期待的OpenAI o1正式版的推出,标志着ChatGPT体验的重大进化,宣告了AI驱动应用新时代的开始。o1现已可…...
Pandas处理和分析嵌套JSON数据:从字符串到结构化DataFrame
在数据分析领域,我们经常遇到需要从非结构化数据中提取有用信息的场景。特别是当数据以JSON字符串的形式出现时,如何有效地将其转换为结构化的表格形式,以便进行进一步的分析和处理,成为了一个常见的挑战。本文将通过一个具体的例…...
《ODIN: A Single Model for 2D and 3D Segmentation》CVPR2024
斯坦福和微软: 代码链接:ODIN: A Single Model For 2D and 3D Perception 论文链接:2401.02416 摘要 这篇论文介绍了ODIN(Omni-Dimensional INstance segmentation),一个能够同时处理2D RGB图像和3D点云…...
第40节 在ArkTS中实现socket功能
1. 基本概念 在 ArkTS 中实现 Socket 功能主要涉及到网络通信中的套接字(Socket)编程。Socket 是一种用于在不同设备(如客户端和服务器)之间进行双向通信的接口,它允许应用程序发送和接收数据。在网络编程中…...
Ruby On Rails 笔记1——Rails 入门
突然想跟着官方文档把Ruby On Rails过一遍,把一些有用的记下来就可以一直看了,do它! https://guides.rubyonrails.org/v7.2/ 注:官网是英文文档,我自己翻译了一下,不确保完全准确,只供自己学习开发使用。 …...
npm, yarn, pnpm之间的区别
前言 在现代化的开发中,一个人可能同时开发多个项目,安装的项目越来越多,所随之安装的依赖包也越来越臃肿,而且有时候所安装的速度也很慢,甚至会安装失败。 因此我们就需要去了解一下,我们的包管理器&#…...
Uniapp的App环境下使用Map获取缩放比例
概述 目前我试过的就是你用vue后缀是拿不到比例的你可以用nvue当然uniapp的uvue应该是更加可以的我使用的是高德所以你得在高德的后台声请原生的Android的key才可以如果是vue3的开发模式的话不用使用this来获取当前对象使用scale对象来接受和改变缩放比例会比较友好然后直接走…...
[免费]基于Python的Django在线(生鲜)商城(电子商城)管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django在线(生鲜)商城(电子商城)管理系统,分享下哈。 项目视频演示 【免费】基于Python的Django在线(生鲜)商城(电子商城)管理系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随…...
Go 1.19.4 HTTP编程-Day 20
1. HTTP协议 1.1 基本介绍 HTTP协议又称超文本传输协议,属于应用层协议,在传输层使用TCP协议。HTTP协议属是无状态的,对事务处理没有记忆能力,如果需要保存状态需要引用其他技术,如Cookie。HTTP协议属是无连接的&…...
基于微软云第一个大模型程序Java和python实现
1 注册一个微软云账号 按照提示一步一步注册,注册过程中,注册微软云账号需要visa卡。可以在某宝花钱30元买下。 2 部署模型 搜索openAI 创建资源组 部署一个模型 这个后面代码会使用 3 Java 实现 pom 依赖 <dependency><groupId>com…...
【5G】5G目标和标准化 5G targets and standardization
5G标准是在第三代合作伙伴关系项目(3GPP,3rd Generation Partnership Project)中定义的,实际的标准制定工作由参与3GPP活动的区域标准机构成员共同推进。目前,超过600家公司通过各自的地区标准组织成为3GPP的成员。然而…...
KernelShark在ubuntu24.04.01的编译
KernelShark在ubuntu24.04.01的编译 写在前面具体过程装ubuntu24.04.01安装depends下载代码如何编译cmake 输出make 输出 如何安装 初步启动Add the User to the perf Group 简单的使用trace-cmd抓包 来看我的文章,必有所得。 平凡中,总有我帮您踩过的坑…...
【Flutter】WillPopScope组件-监听物理返回键事件自定义返回事件
WillPopScope(onWillPop: () async {if ( flutterWebViewPlugin ! null && await flutterWebViewPlugin.canGoBack() true) {flutterWebViewPlugin!.goBack();return false; // 阻止默认的返回行为} else {return true; // 允许默认的返回行为}},child: Scaffold(),);…...
深度学习每周学习总结J8(Inception V1 算法实战与解析 - 猴痘识别)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结Inception V1 简介1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数:定义损失函数&am…...
Django模板系统
1.常用语法 Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作。 2.变量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点(.)在模板语言中有…...
【JavaWeb后端学习笔记】MySQL的数据操作语言(Data Manipulation Language,DML)
MySQL DML 0、准备表结构1、添加数据1.1 指定字段添加数据(单条)1.2 全部字段添加数据(单条)1.3 指定字段添加数据(批量)1.4 全部字段添加数据(批量) 2、修改数据3、删除数据 MySQL的…...
【SpringBoot】Day10-09 动态SQL-XML文件
动态SQL-XML文件的三点规范 1.XML映射文件的名称与Mapper接口名称保持一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)- 在项目开发当中,一般都是一个接口对应一份儿映射配置文件; 2.XML映射文件的namesp…...
Linux絮絮叨(三) Ubuntu桌面版添加中文拼音输入法
步骤很详细,直接上教程 一. 配置安装简体拼音输入法 #安装相应的平台支持包 sudo apt install ibus-gtk ibus-gtk3# 安装简体拼音输入法 sudo apt install ibus-pinyin安装完成如果下面的步骤找不到对应输入法可以重启一下,一般不需要 二. 添加简体拼音…...
rockit 学习、开发笔记(六)(VENC)
前言 上节我们讲到了VDEC解码模块,那当然少不了VENC编码模块了,一般有编解码的需求都是为了压缩视频的大小,方便减少传输所占用的带宽。 概述 VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立&am…...
Python+Django框架山东济南景点数据可视化系统网站作品截图和开题报告参考
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程ÿ…...
【C#】键值对的一种常见数据结构Dictionary<TKey, TValue>
在 C# 中,Dictionary<TKey, TValue> 是一个 键值对(key-value)集合,是一种非常常见的数据结构。它允许通过 键(key)来快速查找与之相关的 值(value)。你可以将其类比为一个映射…...
SQL Server:调用的目标发生了异常。(mscorlib)
我之前安装的SQL Server是2014版本,SSMS运行也很流畅,有一次有个同事让我链接云服务器SQL地址,直接报上图的错误,把我弄的一愣一愣的。 后面才发现,这是版本太低导致的,但是你如果使用Navicat是没有问题的…...
windows 上ffmpeg编译好的版本选择
1. Gyan.dev Gyan.dev 是一个广受信赖的 FFmpeg 预编译库提供者,提供多种版本的 FFmpeg,包括静态和动态链接版本。 下载链接: https://www.gyan.dev/ffmpeg/builds/ 特点: 提供最新稳定版和开发版。 支持静态和共享(动态&…...
前端工程化面试题(一)
如何使用 Docker 部署前端项目? 使用 Docker 部署前端项目通常涉及以下几个步骤: 创建项目:首先,需要在本地创建并配置好前端项目。 准备 Docker 文件: .dockerignore:这个文件用于排除不需要上传到 Dock…...
Java设计模式笔记(二)
十四、模版方法模式 1、介绍 1)模板方法模式(Template Method Pattern),又叫模板模式(Template Patern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行。 2&…...
vscode(一)安装(ubuntu20.04)
1、更新软件包列表 sudo apt update2、安装依赖包 sudo apt install software-properties-common apt-transport-https wget3、导入Microsoft GPG密钥 wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -4、向系统添加VSCode存储库 sudo…...
C# 命名空间(Namespace)
文章目录 前言一、命名空间的定义与使用基础(一)定义语法与规则(二)调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间(Namespace)在于提供一种清晰、高效的方式,将一组名称与…...
云计算介绍_3(计算虚拟化——cpu虚拟化、内存虚拟化、io虚拟化、常见集群策略、华为FC)
计算虚拟化 1.计算虚拟化介绍1.1 计算虚拟化 分类(cpu虚拟化、内存虚拟化、IO虚拟化)1.2 cpu虚拟化1.3 内存虚拟化1.4 IO虚拟化1.5 常见的集群的策略1.6 华为FC 1.计算虚拟化介绍 1.1 计算虚拟化 分类(cpu虚拟化、内存虚拟化、IO虚拟化&#…...
Flutter开发App,编译条件下UI没问题,打包后UI出现问题
刚入门Flutter3个月,终于进入项目打包阶段,发现之前编译环境下都正常的UI,忽然有小部分出现异常,不显示UI部分了。查了2个小时都没发现原因。因为编译环境下,Android、iOS端都正常显示。但是进入打包安装后,…...
Python+OpenCV系列:Python和OpenCV的结合和发展
PythonOpenCV系列:Python和OpenCV的结合和发展 **引言****Python语言的发展****1.1 Python的诞生与发展****1.2 Python的核心特性与优势****1.3 Python的应用领域** **OpenCV的发展****2.1 OpenCV的起源与发展****2.2 OpenCV的功能特性****2.3 OpenCV的应用场景** *…...
报错 JSON.parse: expected property name or ‘}‘,JSON数据中对象的key值不为字符串
报错 JSON.parse: expected property name or ‘}’ 原因 多是因为数据转换时出错,可能是存在单引号或者对象key值不为string导致 这里记录下我遇见的问题(后端给的JSON数据里,对象key值不为string) 现在后端转换JSON数据大多…...
Flutter:商品多规格内容总结,响应式数据,高亮切换显示。
如图所示: 代码为练习时写的项目,写的一般,功能实现了,等以后再来优化。 自己模拟的数据结构 var data {id:1,name:精品小米等多种五谷杂粮精品小等多种五谷杂粮,logo:https://cdn.uviewui.com/uview/swiper/1.jpg,price:100.5…...
WPF+LibVLC开发播放器-LibVLC播放控制
接上一篇: LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…...
Mac环境下brew安装LNMP
安装不同版本PHP 在Mac环境下同时运行多个版本的PHP,同Linux环境一样,都是将后台运行的php-fpm设置为不同的端口号,下面将已php7.2 和 php7.4为例 添加 tap 目的:homebrew仅保留最近的php版本,可能没有你需要的版本…...
nodejs后端项目使用pm2部署
nodejs后端项目使用pm2部署 安装pm2 npm install pm2 -g查看版本号 pm2 --version启动项目 pm2 start app.js# 设置别名 pm2 start app.js --name demo停止项目 pm2 stop [AppName] pm2 stop [ID]# 停止所有项目 pm2 stop all重启项目 pm2 restart [AppName] pm2 re…...
【C++】深入理解字符变量取地址的特殊性与内存管理机制详解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯栈内存中的变量分配:谁先谁后?cout 的输出行为:按顺序执行,按地址递增读取代码执行顺序与内存布局的关系编译器优化的影响 &…...
【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 机房显示器连接服务器后黑屏ÿ…...
蓝桥杯软件赛系列---lesson1
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们今天会再开一个系列,那就是蓝桥杯系列,我们会从最基础的开始讲起,大家想要备战明年蓝桥杯的,让我们一起加油。 工具安装 DevC…...