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

web后端开发——Springbootweb(包含HTTP、Tomcat、请求的各种参数解释、响应以及分层解耦)

目录Springbootweb快速入门HTTP请求协议响应协议协议解析Web 服务器Apache TomcatTomcat-基本使用SpringBootWeb快速入门运行解析请求响应请求简单参数实体参数简单实体参数复杂实体参数数组集合参数日期参数Json参数路径参数响应分层解耦三层架构分层解耦IOCDI入门IOC详解DI详解b站上黑马程序员的课程笔记Springbootweb快速入门HTTP超文本传输协议规定了浏览器和服务器之间数据传输的规则。浏览器给服务器发送请求服务器解析这些数据后给客户端浏览器响应这些数据浏览器也同时需要解析这些数据。怎么解析呢无论是请求数据的解析还是响应数据的解析都是需要一致的格式来解析这些数据的格式都是由HTTP协议规定特点1、基于TCP协议面向连接安全2、基于请求-响应模型的一次请求对应一次响应3、HTTP协议是无状态的协议对于事务处理没有记忆能力每次请求-响应都是独立的。缺点多次请求间不能共享数据优点速度快请求协议请求方式-GET请求参数在请求行中没有请求体。GET请求大小是有限制的。请求方式-POST请求参数在请求体中POST请求大小是没有限制的。响应协议协议解析根据我们前面所介绍的HTTP的请求格式来解析请求数据及响应数据对于客户端浏览器各大厂商已经给我们提供了里面内置了解析HTTP协议的程序。我们作为服务端开发工程师我们需要做的就是在服务器端通过java程序来接收客户端浏览器发起的请求并获取请求数据然后再参照HTTP协议的请求格式对请求数据进行解析然后还需要参照HTTP协议的响应数据格式给浏览器再响应对应的数据。接下来代码怎么在服务器端怎么解析HTTP的数据并且给浏览器响应数据呢首先HTTP协议是标准的是统一固定的所以解析HTTP协议的代码也都是通用的这里就不展示了因为我写不出来有几万行很多公司都已经把这些代码写好了并且还封装到软件程序也就是web服务器比如jetty、webLogic、webSphere以及最流行的Apache Tomcat中供我们使用。这样的话我们就不用直接对HTTP协议进行操作比如解析、处理等我们只用关注当前项目的业务逻辑的实现来说一下大概的简单的思路1、在代码中创建服务器端对象ServerSocket2、调用accept方法用Socket来接收方法返回值等待客户端连接。3、连接之后调用线程线程要新建一个构造方法把accept方法中的返回的Socker客户端对象传递给它。4、在run方法内调用socker中的getInputStream接收数据与getOutputStream为了响应数据方法获取通道的输入流和输出流。再把这两个流用BufferedReader与BufferedWriter包装起来作用加快传输效率并且能一次读一行数据注意要指定用UTF-8编码。5、一次读取一行进行判断比如是否是Get/HTTP/1.6、如下Web 服务器Web服务器是一个软件程序对HTTP协议的操作进行封装使得程序员不必直接对协议进行操作让web开发更加便捷。主要功能是“提供网上信息浏览服务”。我们只需要在我们的服务器上安装一个Web服务器比如Apache Tomcat然后我们就可以将我们开发好的Web应用部署在Apache Tomcat服务器上启动服务器之后打开浏览器直接访问到部署在Apache Tomcat服务器上的应用程序。Apache Tomcat概念Tomcat是Apache 软件基金会一个核心项目是一个开源免费的轻量级Web服务器支持Servlet/JSP少量JavaEE规范。JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAFTomcat 也被称为 Web容器、Servlet容器。Servlet程序需要依赖于 Tomcat才能运行官网https://tomcat.apache.org/Apache Tomcat的目录如下要部署应用程序就要把应用程序放到webapps这个目录下。Tomcat-基本使用下载官网下载地址 https://tomcat.apache.org/download-90.cgi安装绿色版直接解压即可卸载直接删除目录即可启动双击bin\startup.bat控制台中文乱码修改conf/ logging.properties目录下java.util.logging.ConsoleHandler.level FINEjava.util.logging.ConsoleHandler.formatter org.apache.juli.OneLineFormatterjava.util.logging.ConsoleHandler.encoding GBK关闭直接x掉运行窗口强制关闭bin\shutdown.bat 正常关闭CtrlC正常关闭如果启动那么可以直接在本机浏览器的网址搜索框输入localhost:8080就直接是Tomcat的欢迎界面了。现在来说说特殊情况1、双击启动目录后Tomcat页面一闪而过应该检查JAVA_HOME环境变量是否正确配置。设置--搜索高级系统设置--页面中选到高级然后点击环境变量检查系统变量的JAVA_HOME的环境变量是否正确配置2、启动后报错BindException那么就是端口号冲突找到对应程序将其关闭。如果对应的程序正在使用不能关闭那么配置Tomcat端口号conf/Server.xmlConnector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 /将8080修改以下就可以。HTTP协议默认端口号为80如果将Tomcat端口号改为80则将来访问Tomcat时则不用输入端口号。也就是如果将8080改为80那么以后是不用输入端口号的。Tomcat 部署项目把项目放到webapps这个目录下即部署完成。假如把一个Demo项目部署到这个目录下在浏览器网址框输入localhost:8080/Demo就可以访问这个Demo项目的程序了SpringBootWeb快速入门运行解析把项目一创建会关联到如图上的最上面URLstart.spring.io所以在创建项目时需要联网。在创建项目的时候我们会勾选web开发的依赖所以在创建Springboot中就会包含如下两个依赖然后可以看见依赖传递把tomcat依赖传递了进去。这个就是SpringBoot内嵌的Tomcat服务器。起步依赖根据传递依赖把需要开发某一个功能所常见的依赖聚合在一起spring-boot-starter-web包含了web应用开发所需要的常见依赖。spring-boot-starter-test包含了单元测试所需要的常见依赖。官方提供的starterhttps://docs.spring.io/spring-boot/docs/2.7.4/reference/htmlsingle/#using.build-systems.starters内嵌Tomcat服务器基于Springboot开发的web应用程序内置了tomcat服务器当启动类运行时会自动启动内嵌的tomcat服务器。由于内嵌Tomcat服务器所以在本文章最上面SpringBoot快速入门这个程序运行后会自动的将这个服务器启动起来并且占用它的默认端口号8080然后在浏览器中输入对应的网址就能访问到内嵌的Tomcat服务器的部署到里面的程序最终就拿到响应的结果。pom.xml中的一个小知识点请求响应如图浏览器会给web服务器发送一个请求https://localhost:8080然后web服务器解析请求数据再给一个响应。HTTP协议就规定了浏览器和服务器之间的传输规则。而我们的程序也就是文章最开头HelloController程序仅仅是一个简单的java类他没有实现任何接口也没有继承类这个程序Tomcat是不识别的也不能直接运行。Tomcat虽然不识别HelloController程序但是他识别JavaEE的规范程序Serverlet容器而我们基于SpringBoot开发的web入门程序当中SpringBoot底层给我提供了一个非常核心的Serverlet程序那就是DispatchServerlet它实现了Serverlet规范当中的Serverlet接口。所以DispatchServerlet就是一个可以被Tomcat识别的Serverlet程序有了DispatchServerlet以后前端浏览器发起的请求会先经过DispatchServerlet由DispatchServerlet再将请求转给各个XxxxxxController程序由Controller程序再对请求进行处理处理完毕后Controller程序再将处理玩的结果返回给DispatchServerlet那么DispatchServerlet再给浏览器响应数据。所以由此可见DispatchServerlet在web请求中是非常核心的一个类所以这个类在SpringBoot中称为核心控制器或者前端控制器。如何在DispatchServerlet服务器中获取请求的数据前端浏览器发送数据会携带HTTP的请求数据而web服务器负责请求协议的解析所以Tomcat服务器就会接收到这个服务器并对这个请求数据进行解析并且将解析后的所有请求数据封装到一个对象中这个对象就是HttpServletRequest也叫请求对象。我们的应用程序就在这个对象中获取请求数据然后再对请求进行处理处理完毕后Tomcat服务器需要根据HTTP响应数据的格式给浏览器响应数据如何响应呢通过HttpServletResponse对象来响应数据然后Tomcat就会根据我们在HttpServletResponse对象设置的响应信息来响应数据给浏览器。请求HttpServletRequest获取请求数据。响应HttpServletResponse设置响应数据。对于以上我们需要重点关注的是我们所编写的XxxxxController程序。请求当前主流的开发模式前后端分离。那么我们作为后端人员该怎么测试程序呢之前我们讲的浏览器地址栏所发起的请求全是Get请求直接在浏览器测试也行但是如果我们要测试Post请求该怎么办呢这就要借助一款功能强大的测试工具postman它是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。常用于进行接口测试在官网下载即可简单参数获取请求参数nameage原始方式SpringBoot方式代码如下RequestParam(name 给参数命名的名字,.......后面还有形参可以crltp在idea上看)实体参数简单实体参数上面介绍的简单参数是当前端传递多少个参数我们就要在方法中定义多少个参数如上代码只有两个参数但是如果传递了十个呢二十个呢那样岂不是很麻烦这时我们就可以把所有的请求参数封装到一个类中。但是这样就不能用RequestParam来给参数命名了只能是前端传递的是参数是什么那么这个类定义的成员变量必须和它保持一致简单来说请求参数名与形参对象属性名相同即可通过Pojo接收。代码实现User是标准的javabean类并且成员变量只有name、age。控制台输出用postman测试前者是前端正常的传递name和age后者是前端传递name2和age所以name是null如果前端传递的参数在这个类中没有定义不会报错或者这个类中有参数但是前端没有传递这个参数也不会报错。复杂实体参数数组集合参数数组把前端传递的两个参数game、java自动封装到hobby数组中集合默认会封装到数组里面加上RequestParam注解就会自动封装到集合中日期参数入职日期生日、操作时间等请求参数就是日期参数。Json参数在Js的时候讲过并且Json参数在前后端异步交互的时候使用得很多。Postman再发送请求的时候如何传递Json参数传递Json格式的请求数据我们需要把请求类型设置为Post因为Json格式的请求数据我们需要写在请求体中而携带到服务端的。设置Post并且选择raw并且在最后选择Json加上RequestBoby注解表示把Json格式的数据封装到user中。路径参数参数已经成为了URL的一部分。PathVariable注解是获取路径参数并且把参数绑定给方法中的形参获取单个路径参数获取多个路径参数响应之前我们定义的所有方法其实最后都有一个返回值这个就是给浏览器的一个响应。这个其实是依赖了一个比较核心的注解ResponseBody点击Consle之后点击最左边的show raw log就是如下界面上面一段是请求的数据下面是响应的格式最下面一行hello World!是响应格式里的响应体。代码可以看见响应结果种类很多前端拿到这写数据也不容易开发所以我们还应该改进一下把代码的响应结果统一Result类包含如上三个成员变量是一个标准的JavaBean类并且还要加上这三个静态方法举个例子在Postman响应的信息最后解释一下如上是两个功能接口每写一个这种的都是一个功能接口。分层解耦三层架构这是上个案例的代码文章中我没有把这个案例写出来可以看到如下代码的三层架构都在一个方法中复用性差。Controller先接收数据然后让逻辑处理但是数据还没有解析所以Dao又把文本拿到进行解析封装之后再给逻辑处理逻辑处理完毕之后Controller响应数据。Dao可能访问文件中的数据也可能访问数据库中的数据也可能访问别人给我们提供的接口中的数据实现方式有很多。然而我们要想灵活的切换各种实现我们在前面SE阶段讲到过我们可以通过面向接口的方式进行编程。拆分成三层架构的形式这里没有写接口的代码因为简单就不写了。分层解耦高内聚比如上面代码在EmpServiceA中仅仅只处理与员工相关的代码。耦合就是可以看到如上代码EmpController调用了empServer的方法而empServer调用了EmpDao中的方法。低耦合就是尽量的降低层与层之间、模块与模块之间的依赖、关联程度。最好是能接触耦合。怎么解除耦合呢把对象放到一个容器里每次要用了直接从容器里拿就不用再new了。对象怎么样交给容器来管理这就涉及了Spring中的控制反转容器怎么样为我们的程序来提供它所依赖的资源这也涉及到了Spring中的依赖注入。IOCDI入门通过IOC控制反转DI依赖注入。如下是两个注解的说明。如果说你写了两个类都是实现类EmpServer接口你想让哪一个类进行逻辑处理那么你就直接在那个类上加上Component注解把另外一个类的这个注解取消掉就好。还有注意Autowired是必须要有的另外一个类可有可无。IOC详解将对象的控制权交给IOC容器由IOC容器创建、管理这些对象。IOC这些对象也成为Bean对象。使IOC容器管理的对象生效的范围问题假如dao不在com.itheima这个包下就会报错处理方法在启动类上再加上如下注解参数一指明要扫描的包参数二当前包DI详解假如说你写了两个类都是实现类EmpServer接口一个是EmpServerA还有一个是EmpServerB并且两个上面都标注了Service注解那么就会报错。如下是原因以及解决方法Primary注解是你想让哪一个类生效直接在上面加上这个注解就可以了Qualifier注解在如下图位置指定并且在括号中指定IOC容器中的这个类的名字由于我没有指定名字所以默认是类名的首字母小写Resource注解是由JDK提供的想让哪个类的IOC管理的Bean对象生效直接如下方式指定名字就行重点

相关文章:

web后端开发——Springbootweb(包含HTTP、Tomcat、请求的各种参数解释、响应以及分层解耦)

目录 Springbootweb快速入门 HTTP 请求协议 响应协议 协议解析 Web 服务器 Apache Tomcat Tomcat-基本使用 SpringBootWeb快速入门运行解析 请求响应 请求 简单参数 实体参数 简单实体参数 复杂实体参数 数组集合参数 日期参数 Json参数 路径参数 响应 分…...

SkyWalking与Elasticsearch 8的兼容性部署实战

1. 为什么需要关注SkyWalking与Elasticsearch 8的兼容性 最近在帮客户部署SkyWalking监控系统时,发现Elasticsearch 8的证书验证机制与老版本有很大不同。Elasticsearch从7.x升级到8.x后,安全性要求显著提高,默认强制启用HTTPS和证书认证。这…...

15MW海上风机完整开源模型:IEA-15-240-RWT快速上手指南 [特殊字符]

15MW海上风机完整开源模型:IEA-15-240-RWT快速上手指南 🚀 【免费下载链接】IEA-15-240-RWT 15MW reference wind turbine repository developed in conjunction with IEA Wind 项目地址: https://gitcode.com/gh_mirrors/ie/IEA-15-240-RWT IEA-…...

聚类算法完全对比:Data Science Question Answer项目数据分组技术

聚类算法完全对比:Data Science Question Answer项目数据分组技术 【免费下载链接】data-science-question-answer A repo for data science related questions and answers 项目地址: https://gitcode.com/gh_mirrors/da/data-science-question-answer 聚类…...

pkNX宝可梦ROM编辑器终极指南:三步实现Switch游戏自定义

pkNX宝可梦ROM编辑器终极指南:三步实现Switch游戏自定义 【免费下载链接】pkNX Pokmon (Nintendo Switch) ROM Editor & Randomizer 项目地址: https://gitcode.com/gh_mirrors/pk/pkNX 你是否遇到过想要修改宝可梦游戏却无从下手的困境?想要…...

高效专业PC端3DS模拟器Citra完整实战配置指南

高效专业PC端3DS模拟器Citra完整实战配置指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra 任天堂3DS游戏在PC上运行卡顿、画面模糊、兼容性差?Citra模拟器作为当前最优秀的3DS游戏模拟解决方案&…...

Webcamoid核心架构解析:深入了解多媒体处理引擎

Webcamoid核心架构解析:深入了解多媒体处理引擎 【免费下载链接】webcamoid Webcamoid is a full featured and multiplatform camera suite. 项目地址: https://gitcode.com/gh_mirrors/we/webcamoid Webcamoid是一款功能全面的跨平台摄像头套件&#xff0c…...

Few-shot图像生成的记忆原型与注意力机制:MoCA的创新实践

1. Few-shot图像生成的挑战与突破 想象一下,你手里只有几张猫咪的照片,却要让AI画出各种姿势、不同角度的猫咪——这就是few-shot图像生成要解决的难题。传统GAN需要成千上万的训练样本,而现实中有价值的场景往往数据稀缺。我在实际项目中就遇…...

Magic-Trace 终极指南:从入门到精通的高性能代码追踪工具

Magic-Trace 终极指南:从入门到精通的高性能代码追踪工具 【免费下载链接】magic-trace magic-trace collects and displays high-resolution traces of what a process is doing 项目地址: https://gitcode.com/gh_mirrors/ma/magic-trace magic-trace 是一…...

华为交换机端口安全实战:从基础配置到高级防护

1. 华为交换机端口安全基础概念 第一次接触华为交换机的端口安全功能时,我也被各种MAC地址类型搞晕了。简单来说,端口安全就像给交换机接口装了个智能门禁系统,只允许登记过的设备接入网络。想象一下你家的智能门锁,只有录入指纹的…...

MM32 MCU烧录失败?5个常见硬件问题排查指南(附电路设计建议)

MM32 MCU烧录失败?5个常见硬件问题排查指南(附电路设计建议) 作为硬件工程师,调试MCU烧录失败的经历想必大家都不陌生。尤其是初次接触MM32系列MCU时,面对烧录失败的情况,很多人第一反应是怀疑芯片质量问题…...

第13篇:学习AUTOSAR的高效路径:理论与实践交叉学习指南

很多人的错误学习方式 直接啃AUTOSAR标准文档(几千页,瞬间劝退) 只看理论不操作,一个月后连SWC和BSW都分不清 一上来就买开发板做实物,结果卡在MCAL配置上 正确的学习四步法 第一步:打好四项基础(2周) C语言:尤其是指针、结构体、回调函数 嵌入式基础:中断、时钟、…...

三步搞定Windows多语言软件兼容性:Locale Emulator终极指南

三步搞定Windows多语言软件兼容性:Locale Emulator终极指南 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 你是否曾经遇到过这样的烦恼?下载…...

如何快速上手Tesseract .NET:5分钟实现图片文字识别

如何快速上手Tesseract .NET:5分钟实现图片文字识别 【免费下载链接】tesseract A .Net wrapper for tesseract-ocr 项目地址: https://gitcode.com/gh_mirrors/tess/tesseract Tesseract .NET是一个强大的.NET包装器,为开发者提供了便捷的图片文…...

OPC UA Client终极指南:快速实现工业自动化数据采集与监控

OPC UA Client终极指南:快速实现工业自动化数据采集与监控 【免费下载链接】opc-ua-client Visualize and control your enterprise using OPC Unified Architecture (OPC UA) and Visual Studio. 项目地址: https://gitcode.com/gh_mirrors/op/opc-ua-client …...

如何轻松解决Cursor试用限制?5分钟搞定设备标识重置

如何轻松解决Cursor试用限制?5分钟搞定设备标识重置 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit. / …...

从点餐到网购:用生活化场景拆解MCP协议,教你为微服务选对通信方式

从点餐到网购:用生活化场景拆解MCP协议,教你为微服务选对通信方式 想象一下这样的场景:周末晚上,你和朋友约在一家热门餐厅聚餐。服务员递上菜单后,你们开始点菜——"一份牛排五分熟,配黑椒汁"、…...

别再让PySide6界面卡死了!手把手教你用QThread搞定网络请求(附完整代码)

PySide6多线程实战:彻底解决GUI界面卡死的终极方案 当你在PySide6应用中点击一个按钮触发网络请求时,整个界面突然冻结,鼠标变成旋转的沙漏,这种体验对用户来说简直是灾难。作为开发者,我们经常陷入这种困境&#xff1…...

傅里叶变换实战:如何用Python避免频谱分析中的泄露效应?

傅里叶变换实战:如何用Python避免频谱分析中的泄露效应? 频谱分析是数字信号处理中的核心技能,而傅里叶变换则是打开这扇大门的钥匙。但在实际应用中,即使是最有经验的工程师也常常被频谱泄露问题困扰——那些本应清晰的频率峰为何…...

数学建模实战:四大核心模型应用场景与选型指南

1. 数学建模的四大核心模型全景图 第一次参加数学建模比赛时,我面对琳琅满目的模型列表完全不知所措——就像走进五金店的新手,看着各种专业工具却不知道哪个能修好漏水的水管。经过多年实战,我发现90%的实际问题都能归入优化、分类、评价、预…...

【实战】从零推导引导滤波:数学建模与Python高效实现

1. 为什么需要引导滤波? 在图像处理领域,滤波是最基础也最常用的操作之一。传统的高斯滤波就像用喷雾器给照片喷水雾,虽然能模糊噪点,但也会让清晰的边缘变得模糊。这就像用橡皮擦擦掉铅笔线条时,不小心把重要的轮廓线…...

双塔模型线上召回实战:为什么物品向量要离线存,用户向量却要实时算?

双塔模型线上召回实战:为什么物品向量要离线存,用户向量却要实时算? 推荐系统的核心挑战之一,是在海量候选物品中快速筛选出用户可能感兴趣的内容。双塔模型因其高效性和可扩展性,成为工业界主流的召回架构。但一个看似…...

如何在AutoTrain Advanced中优化训练数据处理:Pandas与PyArrow性能终极指南

如何在AutoTrain Advanced中优化训练数据处理:Pandas与PyArrow性能终极指南 【免费下载链接】autotrain-advanced 🤗 AutoTrain Advanced 项目地址: https://gitcode.com/gh_mirrors/au/autotrain-advanced AutoTrain Advanced是一款强大的开源工…...

如何在Windows上实现AI图像超分辨率和视频插帧:Waifu2x-Extension-GUI终极指南

如何在Windows上实现AI图像超分辨率和视频插帧:Waifu2x-Extension-GUI终极指南 【免费下载链接】Waifu2x-Extension-GUI Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, Real-ESRGAN, Real-CUGAN,…...

Draw.io零基础安装指南(含最新安装包资源)

1. Draw.io零基础安装指南 第一次接触Draw.io时,我也被它简洁的界面和强大的功能惊艳到了。作为一款完全免费的绘图工具,它不仅能画流程图、思维导图,还能制作专业的UML图和网络拓扑图。最让我惊喜的是,它的安装过程出奇地简单&am…...

3分钟学会Ofd2Pdf:终极免费OFD转PDF解决方案指南

3分钟学会Ofd2Pdf:终极免费OFD转PDF解决方案指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf Ofd2Pdf是一款专为中国用户设计的开源工具,能够快速、无损地将OFD格式电子文档…...

如何快速搭建Mobile ALOHA双手机器人系统:Ubuntu + ROS 1 noetic环境配置指南

如何快速搭建Mobile ALOHA双手机器人系统:Ubuntu ROS 1 noetic环境配置指南 【免费下载链接】mobile-aloha Mobile ALOHA: Learning Bimanual Mobile Manipulation with Low-Cost Whole-Body Teleoperation 项目地址: https://gitcode.com/gh_mirrors/mo/mobile-…...

Diablo Edit2终极指南:暗黑破坏神II角色存档编辑器完整教程

Diablo Edit2终极指南:暗黑破坏神II角色存档编辑器完整教程 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神II中反复刷装备的枯燥过程?是否想体验…...

WaveTools:为《鸣潮》玩家构建的现代化桌面优化套件

WaveTools:为《鸣潮》玩家构建的现代化桌面优化套件 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》游戏设计的开源桌面工具套件,通过技术创新解决游戏…...

终极指南:3分钟上手Universal x86 Tuning Utility,彻底释放你的AMD/Intel处理器潜能

终极指南:3分钟上手Universal x86 Tuning Utility,彻底释放你的AMD/Intel处理器潜能 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Univer…...