云计算基本知识_第1页
云计算基本知识_第2页
云计算基本知识_第3页
云计算基本知识_第4页
云计算基本知识_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一讲:云计算概述什么是云计算?云计算是一种能够将动态伸缩的虚拟化资源通过互联网以服务的方式提供给用户的计算模式。根据云提供的服务类型,可以划分为基础设施云、平台云、应用云.根据云的服务方式,可以划分为公有云、私有云、混合云。云计算的优势?错误!优化产业布局成本关键由硬件成本转为电力成本、散热成本分散的、高能耗模式转变为集中的、资源友好的模式自给自足资源作坊转变为规模效应的工业化资源工厂错误!推进专业分工专业的大型云计算厂商实力雄厚的科研技术团队推动硬件技术革新具有丰富知识和经验的维护管理团队和配套软件产业链中的新产业契机错误!提升资源利用率更加高效的解决常规业务更好的应对突发任务或事件更加平衡的资源分配和负载。,4减少初期投资更少的IT基础设施投入更少的软件投入更少的人力投入-更短的培训周期-更灵活的转型支持错误!降低管理开销-服务化管理-无需自己建立维护管理团队-随需应变的解决方案-知识、经验更加丰富的管理队伍-通过业务模块的可配置提高系统的灵活性3云计算的动因?错误!芯片与硬件技术-硬件能力的激增、成本的大幅下降,使得独立运作的公司集中客观的硬件能力实现规模效益成为可能错误!资源虚拟化-资源在云端,需要被统一的管理-异构硬件、兼容性问题-虚拟化技术错误!应用需求Q面向服务的架构SOA-开放式数据模型-统一通信标准-更加丰富的服务-更加松散耦合、灵活的IT架构-转变了人们对IT系统的认识。,4软件即服务SaaS-转变了人们使用服务的方式-使得终端用户熟悉服务的交互模式-改变了IT界的商业模式-实力雄厚的大公司负责基础设施,小企业通过创新挖掘充满潜力的市场。,。,1超级计算机“长尾理论”错误!互联网技术-基础设施-多种接入方式-更加广阔的覆盖-带宽和可靠性得到大幅提升-使得IT新模式的稳定性、可靠性、安全性、可用性、灵活性、可管理性、自动化程度、节能环保等得到保障QWeb2o0技术-用户从信息的获得者变成信息的贡献者-博客(微博)、内容聚合、百科全书(Wiki)、社交网络、对等网络(P2P)—富互联网应用(RichInternetApplication)成为网络应用发展的趋势-改变了人们的生活方式-为云计算提出了内在需求4查找资料:业界主流的云计算产品典型的云计算应用补充:云计算特征是什么?错误!硬件和软件都是资源错误!资源可以根据需要进行动态扩展与配置错误!按用计费、无需管理。,4物理上分布式共享,逻辑上以单一整体呈现云计算的发展历程?错误!集群计算错误!分布式计算错误!网格计算Q效用计算错误!云计算第二讲:云服务1云服务的基本层次?云计算的基本层次分为三层,依次为IaaS,PaaS和SaaS.IaaS(架构即服务),提供了核心计算资源和网络架构的服务。基础设施栈包括操作系统访问、防火墙、路由和负载平衡。示例产品:Flexiscale和AmazonEC2。PaaS(平台即服务)提供平台给系统管理员和开发人员,令其可以基于平台构建、测试及部署定制应用程序。也降低了管理系统的成本。典型服务包括Storage、Database、Scalability.示例产品:GoogleAppEngine、AWS:S3、MicrosoftAzure。SaaS(软件即服务)通过Internet提供软件的模式,用户向提供商租用基于Web的软件来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。示例产品:GoogleDocs、CRM、FinancialPlanning、HumanResources、WordProcessing等.IaaS的基本功能?错误!资源抽象错误!资源监控错误!负载管理错误!数据管理错误!资源部署错误!安全管理错误!计费管理PaaS的基本功能?G开发平台错误!运行时环境错误!运营环境补充:IaaS服务流程?规划阶段->部署阶段—>运行阶段PaaS实现步骤?。,1总体设计错误!开发平台。,3运行环境错误!运营环境云平台上开发应用的优势?提供高级编程接口,简单易用,缩短编程人员上手时间应用的开发与运行基于相同的平台,兼容性问题较少开发者无需考虑应用的可伸缩性、服务容量问题平台层的运营管理功能还能够帮助开发人员对应用进行监控和计费应用层的特征?-网络访问模式-租用付费-高度整合第四讲:虚拟化1虚拟化的概念?虚拟化是表示计算机资源的抽象方法,通过虚拟化可以用与访问抽象前资源一致的方法来访问抽象后的资源。这种资源的抽象方法并不受实现、地理位置或底层资源的物理配置限制。(wiki)。,。,1基础设施虚拟化-内存虚拟化-内存虚拟化2服务器虚拟化的特性?。,1多实例-一个物理服务器上可以运行多个虚拟服务器-支持多个客户操作系统-物理系统资源以可控的方式分配给虚拟机错误!隔离性-虚拟机之间完全隔离-一个虚拟机的崩溃不会对其他虚拟机造成影响-虚拟机之间的数据相对独立,不会泄露-虚拟机之间如果需要互相访问,方式等同于独立物理服务器之间的互相访问Q封装性-硬件无关-对外表现为单一的逻辑实体-一个虚拟机可以方便的在不同硬件之间复制、移动-将不同访问方式的硬件封装成统一标准化的虚拟硬件设备,保证了虚拟机的兼容性错误!高性能-可通过扩展获得“无限”的性能虚拟化抽象层需要一定管理开销服务器虚拟化的关键技术?错误!计算虚拟化-CPU虚拟化-计算负载的动态分配-能耗管理错误!存储虚拟化-磁盘存储动态分配错误!设备与I/O虚拟化-软件方式实现-统一、标准化的接口-操作指令转译错误!实时迁移技术-将整个虚拟机的运行状态完整、快速地从原宿主机的硬件平台转移到新的宿主机硬件平台。创建虚拟化解决方案的步骤?错误!创建虚拟化解决方案错误!部署虚拟化解决方案错误!管理虚拟化解决方案什么是数据中心?数据中心是一整套复杂的设施,它不仅仅包括计算机系统和其它与之配套的设备(例如通信和存储系统),还包含冗余的数据通信连接、环境控制设备、监控设置以及各种安全装置。虚拟化与云计算的关系?虚拟化技术以及各种计算机科学概念,如效用计算、SOA等,的发展和商业实现打开了云计算的大门,而云计算本质上说应该就是虚拟化服务。从虚拟化和云计算的过程,我们实现了跨系统的资源调度,将大量的计算机资源组成资源池,用于动态地创建高度虚拟化的资源提供给用户,从而最终实现应用、数据、IT资源以服务的方式通过网络提供给客户。可以说云计算是虚拟化的最高境界,虚拟化是云计算的底层结构。补充:虚拟化的典型类型?错误!系统虚拟化Q软件虚拟化虚拟化的目的错误!对象脱离原有环境Q在计算机上被表示错误!通过计算机控制按需获取第五讲:OpenStackaws模式是什么,有什么优点?AmazonWebServices(AWS)模式:用户应用使用IaaS基础IT资源,将PaaS和通用服务作为应用架构中的组件来构建自己的服务特点:通过WebService接口开放数据和功能;一切以服务实现;通过SOA框架使系统达到松耦合。IaaS模式核心需求有哪些?云拥有者:配置和操作基础架构;服务的提供者:注册云服务、查看服务的使用情况;查看服务的计算情况;服务的使用者:创建和存储自定义的镜像、启动监控和终止实例。Openstack都包含哪些核心项目,作用是什么?Nova(计算)、Swift(对象存储)、Glance(镜像)、Keystone(身份)、Dashboard(自助门户)、Quantum(网络连接)、Cinder(块存储服务)。镜像和实例有什么区别和联系?镜像:固定搭配实例:固定搭配的一个实例镜像的存在便于对大量实例的管理,如归类、缩短选择时间、计费等Nova有哪些核心模块,工作过程是什么?Nova是一套控制器,用于为单个用户或使用群组启动虚拟机实例.将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动.Nova-api:负责接收和响应终端用户有关虚拟机计算和云硬盘存储的请求,是整个Nova的入口。Nova—compute:主要的执行守护进程,职责是基于各种虚拟化技术实现创建和终止虚拟机。整合了CPU/内存、存储和网络三类资源部署管理虚拟机,实现计算能力的交付。Nova-volumn:职责是创建、挂载和卸载持久化的磁盘虚拟机。Nova-network:职责是实现网络资源池的管理。Nova-schedule:职责是调度虚拟机在哪个物理宿主机上部署.AMQP消息中间件:实现服务接口与实现解耦以及子系统之间的通信。通过HTTP协议,采用REST风格实现接口定义和响应,发送执行消息指令至队歹U,由具体的订阅实现模块执行指令.Keystone权限控制过程是什么?User:用户,就是一个人的账号Credential:用来证明用户身份的证据Authentication:鉴权,也即对用户身份鉴别的一个过程.Token:令牌。对用户鉴权完毕之后,Keystone会为用户颁发一个令牌,这样用户在请求其他服务的时候,只需要亮出自己的令牌即可,而不需要发送自己的密钥。当然以防仿冒令牌,令牌是有时限的。Service:服务,Keystone提供了系统能够提供的服务目录,例如Nova,Glance,Swift等Endpoint:直译为端点,其实指的是要访问的服务的地址。如果细分的话,又可以进一步分为对外提供服务的地址,管理地址等。Role:即赋予该用户的权限Qpenstack提供的是一个多租户环境,在Openstack中租户对应到项目小网0戊).一个用户可以同时属于多个不同的项目,当然在不同的项目中可以充当不同的角色,也即拥有不同的权限。关键的两点:1) User从Keystone获取令牌以及服务列表;2)User访问服务时,亮出自己的令牌,相关的服务向Keystone求证令牌的合法性.Quantum原理是什么?实现网络连接管理,解决网络虚拟化问题。Swift的核心概念有哪些?Object:对象。基本的存储实体,所有数据按照对象进行存储.Container:容器。对象的装载体,组织数据的方式,存储的隔间,类似于文件夹,但不能嵌套,object存储于container中。Account:账户。权限单位,account拥有若干container。Swift的组件有哪些,都有什么作用?Proxy50〜0匚提供SwiftAPI的服务器进程,负责Swift其余组件间的相互通信StorageServer:提供了磁盘设备上的存储服务ConsistencyServer:查找并解决由数据损坏和硬件故障引起的错误,包含Auditor、Updater和ReplicatorRing:用于记录存储对象和物理位置间的映射关系Ring算法思想是什么?一致性哈希算法:Swift利用一致性哈希算法构建了一个冗余的可扩展的分布式对象存储集群。Swift采用一致性哈希的主要目的是在改变集群的Node数量时,能够尽可能少地改变已存在Key和Node的映射关系.该算法的思路分为以下三个步骤。首先计算每个节点的哈希值,并将其分配到一个0〜2A32的圆环区间上。其次使用相同方法计算存储对象的哈希值,也将其分配到这个圆环上。随后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个节点上。如果超过2A32仍然找不到节点,就会保存到第一个节点上.Replica。Zone:把集群的Node分配到每个Zone中,其中同一个Partition的Replica不能同时放在同一个Node上或同一个Zone内。Weight:未来添加存储能力更大的Node时,分配到更多的Partition.Quorum协议的内容是什么?在分布式存储系统中用于控制一致性级别的一种策略。N=numbersofnodesthatstoredata(同一份数据的Replica的份数)W=numberofsuccessfulwritesinaputrequest(更新一个数据对象时需要确保成功更新的份数)R=numberofsuccessfulreadsinagetrequest(读取数据时需要读取的Replica的份数)W+R>N W〉N/2(常用:N=3、w=R=2)第六讲:云存储1大规模数据存储面临的新问题与挑战成本问题容量问题可靠问题使用问题GFS体系结构Client:GFS提供给应用程序的库文件形式访问接口;Master:GFS的管理节点,逻辑上只有一个,保存系统元数据;ChunkServer:GFS的数据存储节点,大小固定(64MB)。采用中心服务器模式,不缓存数据,在用户态下实现,提供专用的访问接口。Master节点任务:存储元数据;文件系统目录管理与加锁;与ChunkServer进行周期性通信;数据块创建、复制与负载均衡;垃圾回收;陈旧数据块删除。GFS的容错机制错误!Master容错三类元数据:命名空间(目录结构)、Chunk与文件名的映射以及Chunk副本的位置信息。前两类通过日志提供容错,Chunk副本信息存储于ChunkServer,Master出现故障时可恢复。错误!ChunkServer容错每个Chunk有多个存储副本(通常是3个),分别存储于不通的服务器上。-每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验码,保证数据正确(若某个Block错误,则转移至其他Chunk副本)。Paxos协议分布式环境下保持一致性的协议。决议(value)只有在被proposers提出后才能被批准,未经批准的决议称为“提案(proposal)"。在一次Paxos算法的执行实例中,只批准(chosen)一个value.learners只能获得被批准(chosen)的value。Chubby锁机制Chubby是Google为解决分布式一致性问题而设计的提供粗粒度锁服务的文件系统。Chubby系统本质上就是一个分布式的、存储大量小文件的文件系统。Chubby中的锁就是文件,创建文件就是进行加锁操作.用户通过打开、关闭和存取文件,获取共享锁或独占锁,并且通过通信机制,向用户发送更新信息。Chubby的通信协议操作的允许授权是通过限时的、倒计时“租期”系统来处理的。Bigtable数据结构-分布式多维映射表-通过行关键字+列关键字+时间戳进行索引-Bigtable对存储的数据不做解析,看做字符串,具体数据结构实现需要用户自行处理-每行数据有一个可排序的关键字和任意列项;-可将多个列归并为一组,称为“族”,同一个族的数据被压缩在一起保存。-逻辑上的表被划分成若干子表,每个子表存储了table的一部分行(每个子表由多个SSTable文件组成,SSTable文件存储在GFS上)8Bigtable优化机制错误!局部性群组-根据需要,将原本不存储在一起的数据,以列族为单位存储至单独的子表。错误!布隆过滤器-判断某个元素是否隶属于集合.错误!合并压缩-合并压缩操作读取多个SSTable,创建一个新的SSTable来保持其中的最新数据。9云存储应用的特点通用的设备支持;数据同步与共享;任意格式/大小文件;免费+付费.第七讲:MapReduce算法原理Mapreduce算法的架构每个mapreduce任务都被初始化为一个job,每个job分为两个阶段,实现了Map和Reduce两个功能:Map:把一个函数应用于集合中所有成员,然后返回一个基于这个处理的结果集.Reduce:对结果集进行分类和归纳。Wordcount算例错误!自动分割文本.错误!分割后的每一对<key,value〉进行用户定义的map处理,生成新的〈key,value〉对.错误!系统自动对输出结果集归拢排序,传给reduce.错误!通过reduce生成最后结果.Hadoop执行MR的过程错误!master节点运行jobTracker实例,接收客户端job请求,一个job是对一个数据集的处理,slave节点运行TaskTracker实例,一个task是一次map或者reduce处理过程。O,2MR程序由一个jar文件和一个xml文件组成,jar包含程序代码,xml包含程序配置操作。错误!客户端设定配置之后,交job,将job数据发送到jobTracker的文件系统l=h,Mapreduce库会把所输入文件分割成M块,放到不同的datanote上。错误!JobTracker将job放入队列进行调度,并把jar和配置文件放到共享空间错误!Hadoop有一个机器内进程间操作通信的机制,taskTracker周期性告诉jobTracker工作状态,如果空,job给task分配任务,开一个进程处理.错误!MR程序被传送到各个数据所在的HDFS的datanote上运行,mapper被输送到数据节点上进行计算,中间结果被输送到reducer上进行计算,Reducer将计算结果分布式保存到HDFS。错误!当所有map和reduce任务完成时,master会唤醒用户程序,通知任务完成,再取执行新的任务。4MR算法执行过程中的数据流转过程错误!用户文件上传到HDFS,由mapreduce库切割分别存储到datanote上错误!以行号,文本形式传入map中,经过自定义map处理产生〈key,value〉对,构成中间结果集缓存在本地内存中。错误!reducer接到master的收集中间结果集任务后,通过远程调用读取中间结果,并将其排序,key相同的value进行合并处理化简。错误!最终结果写入到GFS文件系统中补充:什么是MapReduce?。,1一个软件架构,是一种处理海量数据的并行编程模式;Q用于大规模数据集(通常大于1TB)的并行运算;错误!MapReduce实现了Map和Reduce两个功能:-Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集-Reduce对结果集进行分类和归纳-Map()和Reduce()两个函数可能会并行运行,即使不是在同一的系统的同一时刻MapReduce的优化?-任务备份机制-本地处理-跳过有问题的记录MapReduce中的术语?job:MapReduce的一整个过程task:在一个job中,每个mapper和每个reducer做的事情taskattempt:运行一个task。主节点运行JobTracker实例,它接受来自客户端的工作要求。JobTracker的主要功能包括:错误!作业控制:在hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的作业控制模块则负责作业的分解和状态监控。错误!资源管理。taskTracker实例运行在slave节点。TaskTracker的功能包括:。,i汇报心跳:Tracker周期性将所有节点上各种信息通过心跳机制汇报给JobTracker.错误!执行命令:JobTracker会给TaskTracker下达各种命令,主要包括:启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、杀死作业(KillJobAction和重新初始化(TaskTrackerReinitAction)。第八讲:MapReduce算法应用1Mapreduce算法设计思想任务的分解与结果的汇总。2运用mapreduce算法解决实际问题错误!词频:WordCount基础上map函数中,加入〈*,num>键值对,一次mapreduce过程得到每个词出现的个数及总数错误!invertedindex(若干文本文件->倒排索引结果):map输出:〈{token,fileID},one〉combiner输出:<{token,fileID},sum>reduce输出:<key,value〉 = 〈word,articleld:num>O,3计算文本相似度:-进行倒排索引—计算两两文章对的相似性map:同一个词对应的文章链表中,两两文章构成一组〈{articlel,article2},num〉reduce:进行收集—统计文章相似度算法调优给shuffle过程尽可能多的内存空间;Map和Reduce函数尽量少用内存;运行Map和Reduce任务的JVM的内存尽量大;Map端尽量估算Map输入的大小,减少溢出写磁盘的次数;Reduce端的中间数据尽可能的多驻留在内存;增加Hadoop的文件缓冲区。Mapreduce运行过程中的各种参数及其作用缓冲区大小(100MB);缓冲区容量阈值(0。8);最多合并流数(10);溢出写次数最小值(3);压缩标志(false);压缩方式;TaskTracker的工作线程数(40);Reduce任务复制线程(5);Reduce获取一个Map输出最大时间(300s);Map输出内存缓冲区占堆空间的百分比(0.7);缓冲区溢出阈值(0。66);Map输出阈值(1000);合并因子(10);输入内存阈值(0。0);Hadoop文件缓冲区(4KB)参数调优将map输出作为输入传给reducer,确保每个reducer的输入都按键排序的过程叫shuffle,shuffle是调优的重点。错误!Map—产生输出时,通过缓冲写入内存:缓冲区大小,容量阈值,指定路径一按照要传送到的reducer对数据进行partirion,每个partition内部按照key进行键内排序:合并流数;一压缩map输出效率更高:压缩标志;压缩方式-reducer通过http方式从map处得到输出文件分区,分区的工作线程数由tasktracker控制:工作线程数(tracker。http。threads)错误!Reduce一只要一个map任务完成,reduce任务就开始复制其输出:复制线程数;获取map最大时间—若map输出小,复制到内存中;否则先写入到内存缓冲区,达到阈值后写到磁盘:内存缓冲区占堆空间百分比;溢出阈值;map输出阈值;后台线程根据合并因子将其合并成更大的排好序的文件:合并因子reduce开始时,内存中map输出大小不能超过输入内存阈值,以便为reduce口供尽可能多的内存:输入内存阈值输出结果写入HDFS系统:hadoop文件缓冲区大小6案例的mapreduce算法第九讲:HadoopHadoop项目的由来起源于一个开源的网络搜索引擎项目ApacheNutch,借鉴GFS,实现了一个开源的实现HDFS,05年nutch上实现了一个mapreduce系统,完成了所有主要算法的mapreduce+HDFS移植。HDFS的体系结构采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干DataNode组成,其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作。DataNode管理存储的数据。HDFS允许用户以文件的形式存储数据,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上。NameNode是整个HDFS的核心,它通过维护一些数据结构来记录每一个文件被分割成了多少个块、这些块可以从哪些DataNode中获得,以及各个DataNode的状态等重要信息.NameNode执行文件系统的命名空间操作,如打开、关闭、重命名文件或目录等,也负责数据块到具体DataNode的映射.DataNode负责处理文件系统客户端的文件读写操作,并在NameNode的统一调度下进行数据块的创建、删除和复制操作。HDFS的运行机制Q可靠性保障:冗余机制—-数据复制故障检测一一datanode(心跳包,块报告,数据完整性监测)namenode(日志和镜像)错误!读文件流程:-客户端调用DistributedFileSystem对象的open()方法-DistributedFileSystem通过RPC联系namenode,得到所有数据块信息,对每个数据块,namenode返回存有该块副本的datanode地址,并且这些datanode根据他们与客户端的距离进行排序-DistributedFileSystem类返回一个FSDataInputStream对象给客户端并读取数据-客户端对该对象调用read()方法读取数据-FSDataInputStream连接距离最近的datanode读取数据,数据读取完毕时FSDataInputStream会关闭与该datanode的连接,然后寻找下一个块的datanode-FSDataInputStream可能并行读取多个datanode,当客户端完成读取时,对FSDataInputStream调用close()方法—FSDataInputStream从datanode读取数据时如果遇到错误,会尝试从该块的另外一个最近的datanode读取数据,并记住故障datanode保证以后不会继续从该节点读取其他块-每个读取的块通过校验和确认以保证数据完整-如果FSDataInputStream发现一个损坏的块,则在从其他datanode读取块之前通知namenode错误!写文件流程:-客户端调用DistributedFileSystem对象的create()方法创建文件-DistributedFileSystem通过RPC联系namenode,namenode执行各种检查确保待建立的文件不存在,且客户端拥有创建该文件的权限-如果检查通过,namenode为新文件创建一条记录,否则抛出一个IOException异常-DistributedFileSystem给客户端返回一个FSDataOutputStream对象进行写数据-FSDataOutputStream将待写入数据分成数据包并写入内部队列dataqueue-DataStreamer处理dataqueue,根据datanode列表要求namenode分配适合的新块来存储数据备份-namenode分配的数据备份datanode(通常3个)形成一个管线,DataStreamer将数据包传输给管线中的第一个节点,然后该节点存储完之后发送给第二个节点,以此类推—FSDataOutputStream维护一个确认队列ackqueue,当收到管线中所有datanode的确认后,该数据包从确认队列中删除-如果datanode发生故障,则关闭管线,将确认队列中的数据包添加回数据队列的最前端,将故障的数据块和datanode信息返回给namenode以便该da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论