复数混频器、零中频架构和高级算法开发
文章里讲解了关于射频IQ调制器、零中频架构相关的原理及技术,全都是干货!其实好多同行对软件无线电的原理、IQ调制、镜像抑制都是一知半解,知其然不知其所以然。好好研读这篇文章,相信会让你有种恍然大悟的感觉。
RF工程常被视为电子领域的黑魔法。它可能是数学和力学的某种 奇特组合,有时甚至仅仅是试错。它让许多优秀的工程师不得其解, 有些工程师仅了解结果而对细节毫无所知。
复数混频器、零中频架构和高级算法开发之间存在一种有趣的联系。本文旨在明确以上三者各自的基本概念,即工作原理以及它们 给系统设计带来的价值,并阐述它们之间的相互依赖关系。
RF工程常被视为电子领域的黑魔法。它可能是数学和力学的某种 奇特组合,有时甚至仅仅是试错。它让许多优秀的工程师不得其解, 有些工程师仅了解结果而对细节毫无所知。现有的许多文献往往 不建立基本概念,而是直接跳跃到理论和数学解释。
复数RF混频器揭秘
图1是采用上变频器(发射机)配置的复数混频器原理图。两条并 行路径各有独立混频器,一个公共本振向这些路径馈送信号,本振 与其中一个混频器的相位相差90°。两个独立输出随后在求和放大 器中求和,产生所需的RF输出。
图1. 复数发射机基本架构
该配置有一些简单但非常有用的应用。假设仅在I输入上馈送一个 信号音,而不驱动Q输入,如图2所示。假定I输入上的信号音频率 为x MHz,则I路径中的混频器产生LO频率±x的输出。由于没有信号 施加于Q输入,此路径中的混频器产生的频谱为空,I混频器的输出 直接成为RF输出。
图2. I路径分析
或者,假设仅向Q输入施加一个频率为x的信号音。Q混频器进而产 生信号音为LO频率±x的输出。由于没有信号施加于I输入,其混频 器输出静音,Q混频器的输出直接成为RF输出。
图3. Q路径分析
乍看起来,图2和图3的输出似乎完全相同。但实际上,二者有一个 关键差异,那就是相位。假设将相同信号音同时施加于I和Q输入, 并且输入通道之间存在90°相移,如图4所示。
图4. 同时施加I和Q信号的路径分析
仔细审视混频器输出,我们观察到:LO频率加输入频率的信号是 同相的,但LO频率减输入频率的信号是异相的。这导致LO上侧的信 号音相加,而下侧的信号音相消。没有任何滤波,我们便消除了其 中一个信号音(或边带),产生的输出完全位于LO频率的一侧。
在图4所示例子中,I信号比Q信号超前90°。如果变更配置使得Q信 号比I信号超前90°,那么可以预期会有类似的相加和相消,但在这 种情况下,所有信号将出现在LO的下侧。
图5. 信号音位置取决于I和Q的相位关系
上面的图5显示了一个复数发射机的实验室测量结果。左边显示的 是I比Q超前90°的测试案例,其导致输出信号音位于LO的上侧。图5 右边显示了相反的关系,即Q比I超前90°,由此得到的输出信号音位 于LO下侧。
理论上应当可以让全部能量仅落在LO的一侧。然而,如图5中的实 验室测量结果所示,在实践中完全相消是不可能发生的,有一些 能量会留在LO的另一侧,这就是所谓镜像。还应注意,LO频率的 能量也是存在的,称为LO泄漏或LOL。结果中还可以看到其他能 量—这些是所需信号的谐波,本文不予以讨论。
为了完全消除镜像,I和Q混频器输出的幅度必须完全一致,而在LO 镜像侧上彼此之间的相位恰好相差180°。如果不能满足上述相位 和幅度要求,那么图4所示的相加/相消过程就会不太理想,镜像频 率的能量仍会存在。
影响
采用常规单混频器架构时,产生LO±产物。发射之前需要消除其中 一个边带,通常是通过增加带通滤波器来消除。滤波器的滚降频 率必须适当,使其既能消除不需要的镜像信号,又不会影响需要 的信号。
图6.单混频器镜像滤波器要求
镜像和所需信号之间的间隔会直接影响到对滤波器的要求。如果间隔较大,可以使用滚降较缓的简单低成本滤波器。如果间隔较窄,设计必须实现具有陡峭响应的滤波器,通常采用多极点或SAW滤波器。因此可以说,镜像和所需信号之间必须保持适当的间隔,以便可以滤除镜像而不影响所需信号;该间隔与滤波器的复杂度和成本成反比。此外,如果LO频率可变,滤波器必须可调谐,这会进一步增加滤波器的复杂度。
镜像和所需信号之间的间隔由施加于混频器的信号决定。图6中的例子显示一个与DC相距10 MHz的10 MHz带宽信号。相应的混频器输出将镜像置于与所需信号相距20 MHz的地方。这种配置中,为在输出端实现10 MHz的所需信号频谱,必须让一条20 MHz基带信号路径连接到混频器。10 MHz的基带带宽未使用,混频器电路的数据接口速率高于必要水平。
回到图5所示的复数混频器,我们知道其架构消除了镜像而无需外部滤波。而且,在零中频架构中可以优化效率,使得信号路径处理带宽等于所需信号带宽。图7所示的概念图说明了其实现原理。如上所述,如果I比Q超前90°,则仅LO上侧会有输出。如果Q比I超前90°,则仅LO下侧会有输出。因此,如果产生两个独立基带信号,其中一个设计成仅产生上边带输出,另一个设计成仅产生下边带另一个设计成仅产生下边带输出,那么可以在基带中将其相加并施加于复数发射机。结果将是具有不同信号的输出出现在LO上侧和下侧。在实际应用中,组合基带信号以数字方式产生。图7所示求和节点仅是为了说明此概念。
图7.零中频复数混频器架构
零中频红利
利用复数发射机产生单边带输出具有相当大的好处,可减少为消除镜像所需要的RF滤波。然而,如果镜像相消性能足够好,使得镜像可忽略不计,那么可以使用零中频模式来进一步发挥该架构的优势。零中频允许我们使用特别创建的基带数据来产生RF输出,从而在LO两侧出现相互独立的信号。图8显示了这是如何实现的。我们有两组相互独立的I和Q数据,用符号数据编码,接收机可以根据基准载波的相位进行解码。
图8.深入考察零中频复数混频器配置中的I/Q信号
初始观测显示:Q1比I1超前90°,二者的幅度一致。类似地,I2比Q2超前90°,其幅度同样一致。将这些独立信号合并,使得I1 + I2 = SumI1I2,Q1 + Q2 = SumQ1Q2。相加后的I和Q信号不再表现出相位和幅度相关性—其幅度在所有时候都不相等,二者之间的相位关系不断变化。所得的混频器输出将I1/Q1数据置于载波的一侧,将I2/Q2数据置于载波的另一侧,如上所述及图7所示。
通过将彼此相邻的独立数据块置于LO的任一侧,零中频使复数发射机的优势得到加强。数据处理路径带宽绝不会超过数据带宽。因此,理论上,在零中频架构中使用复数混频器便提供了一种解决方案,其不需要RF滤波,同时还能优化基带功率效率,降低不可使用信号带宽的单位成本。
到目前为止,本文的重点是复数混频器用作零中频发射机。同样的原理反过来也成立,即复数混频器架构可以用作零中频接收机。针对发射机说明的优势同样适用于接收机。使用单混频器接收信号时,首先必须利用RF混频器滤除镜像频率。在零中频工作模式下,无需担心镜像频率,高于LO的信号接收与低于LO的信号接收是相互独立的。
复数接收机如下图所示。输入频谱同时施加于I和Q混频器。一个混频器通过LO驱动,另一个混频器通过LO + 90°驱动。接收机的输出为I和Q。对于接收机来说,要想由经验证明给定输入对应的输出将会如何并不容易,但如果输入信号音高于LO,如图所示,那么I和Q输出将处于(信号音 – LO)频率,并且I和Q之间会有相移(I比Q超前)。类似地,如果输入信号音低于LO,那么I和Q输出同样是在(LO – 信号音)频率,但这时是Q比I超前。通过这种方式,复数接收机可以区分高于LO的能量和低于LO的能量。
复数接收机的输出将是两种I/Q信息之和:一种代表接收到的高于LO的频谱,另一种代表接收到的低于LO的频谱。这一概念已在前面针对复数发射机做过说明,其中是将相加后的I信号和相加后的Q信号施加于复数发射机。对于复数接收机,接收相加后的I信息和相加后的Q信息的基带处理器可利用复数FFT来轻松区分较高频率和较低频率。
图9.零中频复数混频器接收机配置
收到相加后的I信号和相加后的Q信号时,有两个已知量——相加后的I信号和相加后的Q信号——但有四个未知量,即I1、Q1、I2和Q2。由于未知量多于已知量,因此似乎无法解出I1、Q1、I2和Q2。然而,我们还知道I1 = Q1 + 90,I2 = Q2 – 90,有了这两个已知关系后,便可利用收到的相加后的I信号和相加后的Q信号解出I1、Q1、I2和Q2。事实上,我们只需解出I1和I2,因为Q信号是I信号的副本,不过相位偏移±90而已。 限制
实践中,复数混频器试图完全消除镜像信号。这一限制对无线电架构设计有两个突出影响。
即使有性能限制,复中频仍能带来切实的好处。试考虑图10所示的低中频例子。由于性能限制,我们确实能看到镜像。然而,同对单混频器设计的预期相比(参见图6),该镜像已大为衰减。虽然复数混频器仍需要滤波器,但对该滤波器的要求可以放松很多,其实现也较简单,成本较低。
图10.复数混频器的实际实现注意衰减的镜像
滤波器复杂度与镜像和所需信号之间的距离成反比。如果使用零中频配置,该距离将变为0,镜像位于所需信号频段中。零中频理论的实际应用无法完全实现,产生的带内镜像导致性能降低到不可接受的水平(参见图11)。
图11.零中频实现的限制
只有满足I和Q数据路径的相位和幅度要求,复数发射机和接收机的原理才成立。信号路径的不匹配会导致LO两侧的镜像信号不能精确相消。此类问题的例子参见图10和图11。在不使用零中频的情况下,可以采用滤波来消除镜像。然而,若使用零中频架构,不需要的镜像会直接落在所需信号的频谱范围内,如果镜像功率足够大,就会发生故障状况。因此,只有设计能消除信号路径上的相位和幅度不一致时,使用零中频和复数混频才能提供最优系统设计方案。
高级算法支持
复数混频器架构的概念已存在很多年,但在动态无线电环境中满足相位和幅度要求的挑战限制了其在零中频模式下的使用。ADI公司综合运用智能硅片设计和高级算法,克服了这些挑战。设计允许存在影响信号路径的因素,但智能硅片设计将这些影响降至最低。剩下的误差通过自优化正交纠错(QEC)算法消除。图12是概念图。
图12.高级QEC算法和智能硅片设计支持零中频架构
在AD9371等收发器上,QEC算法位于片内ARM®处理器中。它持续掌握硅片信号路径、经调制的RF输出、输入信号和外部系统环境的信息,并利用此信息以受控的预测方式智能适应信号路径轮廓,而不是做出本能式被动反应。该算法性能出色,可将其视为以数字方式辅助模拟信号路径发挥最佳性能。
收发器内部有多种高级算法驻留并发挥作用,动态QEC校准算法只是其中一个较突出的例子。其他与之共存的算法还有LO泄漏消除等,这些算法将零中频架构的性能提升到最优水平。此类第一代收发器算法主要用于支持实现相关技术,而第二代算法(例如数字预失真或DPD)不仅能增强收发器的性能,还能提升整个系统的性能。
所有系统都有一些不足之处会限制其性能。第一代算法主要聚焦于通过校准消除片内限制,而新一代算法则利用智能手段来消除收发器外部的系统性能和效率限制因素,例如PA失真和效率(DPD和CFR)、双工器性能(TxNc)、无源交调问题(PIM)等。
结语
复数混频器已存在很多年,但其镜像抑制性能不允许将其用于零中频模式。智能硅片设计和高级算法的结合消除了原先阻止高性能系统采用零中频架构的性能障碍。性能限制消除之后,采用零中频架构对降低滤波、功耗、系统复杂度、尺寸、热量和重量都有好处。
对于复数混频器和零中频,我们可以考虑将QEC和LOL算法用作支持功能。但是,随着算法开发范围的扩展,它给系统设计人员带来了更高的性能水平,使他们能更灵活地设计无线电。他们既可选择增强的性能,也可利用算法提供的助益来减少无线电设计的成本或器件尺寸。
作者:ADI Dave Frizelle,Frank Kearney
链接:复数混频器、零中频架构和高级算法开发 - RFASK射频问问
关于RFASK射频问问
射频问问是在"微波射频网”系列原创技术专栏基础上升级打造的技术问答学习平台,主要围绕射频芯片、微波电路、天线、雷达、卫星等相关技术领域,致力于为无线通信、微波射频、天线、雷达等行业的工程师,提供优质、原创的技术问答、专栏文章、射频课程等学习内容。更多请访问:RFASK射频问问 - 射频技术研发服务平台 | 技术问答、专栏文章、射频课程
相关文章:
复数混频器、零中频架构和高级算法开发
文章里讲解了关于射频IQ调制器、零中频架构相关的原理及技术,全都是干货!其实好多同行对软件无线电的原理、IQ调制、镜像抑制都是一知半解,知其然不知其所以然。好好研读这篇文章,相信会让你有种恍然大悟的感觉。 RF工程常被视为…...
Web 拦截器-interceptor
拦截器是一种动态拦截方法调用的机制,类似于过滤器,是Spring框架提出的,用来动态拦截控制器方法的执行。 其作用是拦截请求,在指定方法调用前后,根据业务执行预设代码。 实现步骤 1.定义拦截器,实现Handl…...
Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
目录 引出类什么时候被加载JVM中创建对象几种方式1.new 看到new : new Book()2.反射 Class.forName(“包名.类名”)如何获取Class对象【反射的基础】案例:连接数据库方法 3.克隆(拷贝)clone浅拷贝深拷贝案例 序列化和反序列化对象流-把对象存…...
扩散模型实战(四):从零构建扩散模型
推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 本文以MNIST数据集为例,从…...
YOLOv5、YOLOv8改进:S2注意力机制
目录 1.简介 2.YOLOv5改进 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 1.简介 S2-MLPv2注意力机制 最近,出现了基于 MLP 的视觉主干。与 CNN 和视觉Transformer相比,基于 MLP 的视觉架构具有较少的归纳偏差,在图像识…...
LeetCode 542. 01 Matrix【多源BFS】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
使用open cv进行角度测量
使用open cv进行角度测量 用了一点初中数学的知识,准确度,跟鼠标点的准不准有关系,话不多说直接上代码 import cv2 import mathpath "test.jpg" img cv2.imread(path) pointsList []def mousePoint(event, x, y, flags, param…...
java 线程池实现多线程处理list数据
newFixedThreadPool线程池实现多线程 List<PackageAgreementEntity> entityList new CopyOnWriteArrayList<>();//多线程 10个线程//int threadNum 10;int listSize 300;List<List<PackageAgreementDto>> splitData Lists.partition(packageAgre…...
Centos安装Docker
Centos安装 Docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。 Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。 本文介绍 Docker CE 的安装使用。 移除旧的版本&#x…...
Unity启动项目无反应的解决
文章首发见博客:https://mwhls.top/4803.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 摘要:通过退还并重新载入许可证以解决Unity项目启动无反应问题。 场景 Unity Hub启动项目…...
2.3 opensbi: riscv: opensbi源码解析
文章目录 3. sbi_init()函数4. init_coldboot()函数4.1 sbi_scratch_init()函数4.2 sbi_domain_init()函数4.3 sbi_scratch_alloc_offset()函数4.4 sbi_hsm_init()函数4.5 sbi_platform_early_init()函数3. sbi_init()函数 函数位置:lib/sbi/sbi_init.c函数参数:scratch为每个…...
点破ResNet残差网络的精髓
卷积神经网络在实际训练过程中,不可避免会遇到一个问题:随着网络层数的增加,模型会发生退化。 换句话说,并不是网络层数越多越好,为什么会这样? 不是说网络越深,提取的特征越多ÿ…...
Ubuntu服务器service版本初始化
下载 下载路径 官网:https://cn.ubuntu.com/ 下载路径:https://cn.ubuntu.com/download 服务器:https://cn.ubuntu.com/download/server/step1 点击下载(22.04.3):https://cn.ubuntu.com/download/server…...
re学习(33)攻防世界-secret-galaxy-300(脑洞题)
下载压缩包: 下载链接:https://adworld.xctf.org.cn/challenges/list 参考文章:攻防世界逆向高手题之secret-galaxy-300_沐一 林的博客-CSDN博客 发现这只是三个同一类型文件的三个不同版本而已,一个windows32位exe࿰…...
Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页
传统的XML分页以及模糊查询操作 传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。 List<SanitationCompanyStaff> getSanitationStaffInfo(Param("name") String name,Param("bi…...
vue中push和resolve的区别
import { useRouter } from vue-router;const routeuseRouter()route.push({path:/test,query:{name:1}})import { useRouter } from vue-router;const routeuseRouter()const urlroute.resolve({path:/test,query:{name:1}})window.open(url.href)比较上述代码会发现,resolve能…...
详解RFC 3550文档-1
1. 介绍 rfc 3550描述了实时传输协议RTP。RTP提供端到端的网络传输功能,适用于通过组播或单播网络服务传输实时数据(如音频、视频或仿真数据)的应用。 TP本身不提供任何机制来确保及时交付或提供其他服务质量保证,而是依赖于较低层的服务来完成这些工作。它不保证传输或防止…...
Go 与 Rust
目录 1. Go 与 Rust 1. Go 与 Rust 一位挺 Rust 的网友说道: “我也为这个选择烦恼了很久。最终 Rust 胜出了。首先, 我感觉 Rust 更接近于以前 Pascal 时代的东西, 你可以控制一切; 其次, 如果 wasm 和相关技术大爆发, Rust 将是一个更安全的选择; 然后, 我们已经有了 Python…...
Android Studio实现读取本地相册文件并展示
目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…...
python的全局解释锁(GIL)
一、介绍 全局解释锁(Global Interpreter Lock,GIL)是在某些编程语言的解释器中使用的一种机制。在Python中,GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中,确保同一时间只有一个线程可以…...
小程序swiper一个轮播显示一个半内容且实现无缝滚动
效果图: wxml(无缝滚动:circular"true"): <!--components/tool_version/tool_version.wxml--> <view class"tool-version"><swiper class"tool-version-swiper" circul…...
【自然语言处理】关系抽取 —— SimpleRE 讲解
SimpleRE 论文信息 标题:An Embarrassingly Simple Model for Dialogue Relation Extraction 作者:Fuzhao Xue 期刊:ICASSP 2022 发布时间与更新时间:2020.12.27 2022.01.25 主题:自然语言处理、关系抽取、对话场景、BERT arXiv:[2012.13873] An Embarrassingly Simple M…...
【O2O领域】Axure外卖订餐骑手端APP原型图,外卖众包配送原型设计图
作品概况 页面数量:共 110 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:外卖配送、生鲜配送 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本品为外卖订餐骑手端APP原型设计图&#x…...
DataGridView keydown事件无法在C#中工作
原因:单元格内编辑文本时,DataGridView keydown事件不起作用。每当单元格处于编辑模式时,其托管控件就会接收KeyDown事件而不是DataGridView包含它的父级.这就是为什么当单元格未处于编辑模式时(即使它被选中),键盘快捷键正常工作,因为DataGridView控件本身会收到Ke…...
【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题
目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…...
电商数据采集和数据分析
不管是做渠道价格的治理,还是做窜货、假货的打击,都需要品牌对线上数据尽数掌握,准确的数据是驱动服务的关键,所以做好电商数据的采集和分析非常重要。 当线上链接较多,品牌又需要监测线上数据时,单靠人工肯…...
react 11之 router6路由 (两种路由模式、两种路由跳转、两种传参与接收参数、嵌套路由,layout组件、路由懒加载)
目录 react路由1:安装和两种模式react路由2:两种路由跳转 ( 命令式与编程式)2-1 路由跳转-命令式2-2 路由跳转-编程式 - 函数组件2-2-1 app.jsx2-2-2 page / Home.jsx2-2-3 page / About.jsx2-2-4 效果 react路由3:函数…...
Golang 基础语法问答
使用值为 nil 的 slice、map 会发生什么? 允许对值为 nil 的 slice 添加元素,但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …...
冠达管理:哪里查中报预增?
中报季行将到来,投资者开端重视公司的成绩体现。中报预增是投资者最关心的论题之一,因为这意味着公司未来成绩的增加潜力。但是,怎么查找中报预增的信息呢?本文将从多个视点分析这个问题。 1.证券交易所网站 证券交易所网站是投资…...
docker安装Oracle11gR2
文章目录 目录 文章目录 前言 一、前期准备 二、具体配置 2.1 配置oracle容器 2.2 配置navicat连接 总结 前言 使用docker模拟oracle环境 一、前期准备 安装好docker #拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g #启动 docker run -…...
徐州建设网站/企业培训课程ppt
文章目录单体架构实例分析与比较单体架构优点单体架构缺点改进微服务服务注册服务访问分布式集群单体架构实例 在Idea里新建一个SpringBoot项目, 这里选择SpringBoot 的版本依赖是 2.0.3.RELEASE。 依赖 pom.xml如下: <?xml version"1.0&quo…...
ecshop 网站标题修改/免费的网站域名查询565wcc
如新语法的字面含义,NOWAIT表示当无法获取到锁时直接返回错误,而不是等待;SKIP LOCKED表示忽略那些已经被其他session占有行锁的记录。下面看测试: 测试 一 session 1 : mysql> select * from t; ---- | a | ---- | 42 | | …...
网站模板下载模板下载安装/什么是网络营销渠道
在myeclipse中deploy:选择了一个工程,添加一个新的deploy工程时,不能正常出现deploy Location,可能的原因是没有在mymatadata中添加context-root"/",另外webrootdir属性也要设置正确。一个常见的配置如下&am…...
个人网站建设程序设计/google ads
Shell文本处理三剑客之一awk(2) 表达式与其他编程语言一样,awk表达式用于存储,操作和获取数据 一个awk表达式可由数值,字符常量,变量,操作符函数和正则表达式自由组合而成 变量是一个值的标识符,定义awk变量…...
网站设置在哪/网页制作免费模板
我的世界scpv3模组是一款超级令人喜欢的模组手机版本了,能够在手机里面体验到全新的内容的游戏。玩家们可以加入这款特别的像素游戏,加入独特的沙盒模式中挑战,更有趣味的沙盒内容可以来体验,给玩家们独特的游戏内容。我的世界scp…...
玩转wordpress的前提条件/优化用户体验
2019独角兽企业重金招聘Python工程师标准>>> 1、使用CosBench测试完成ceph的基准性能报告,手工收集ceph主机的IO/CPU/disk负载数据 通过看COSBenchUserGuide.pdf学习部署过程,完全参考该文档即可轻松部署。经过测试librados-config-sample.x…...