首页 / 资讯中心 / 文章详情

软考系统架构师备考:用韦恩图给上午选择题做“逻辑加速”

软考系统架构师备考:用韦恩图给上午选择题做“逻辑加速” ★ FEATURED ARTICLE
软考系统架构师备考用韦恩图给上午选择题做“逻辑加速”先说明一个很多人没意识到的点系统架构师考试的上午题综合知识本质上是“75道选择题的快速判断”。很多人挂在及格线附近不是因为知识点没背而是因为考场上信息量太大题干里几个概念一绕容易把“包含关系”看成“并列关系”把“相交关系”看成“无关关系”。我当年备考时发现一个特别管用的工具——韦恩图。它不光是数学课里的集合工具对付软考里的分类题、归属题、边界计算题简直是降维打击。这篇文章适合谁如果你是正在备考系统架构师、或者备考软考高级科目比如系统分析师、信息系统项目管理师的人而且经常在“分类判断”“概念关系”“可靠度计算”这类选择题上犹豫那这篇文章就是冲着你来的。我会用真题风格的例子均为模拟题非真题原文把韦恩图从画法到实战拆开讲清楚争取让你看完就能在草稿纸上直接上手。1. 软考上午题的正确打开方式不是“背得多”而是“理得清”先说一个备考误区。很多考生复习上午题的方式是“刷题背答案”碰到同一考点的变形题就懵。为什么因为软考出题人很少把概念原封不动地搬上来他们特别喜欢在“概念边界的重叠处”做文章。比如给你四个选项其中两个都对问你“最准确的是哪个”再比如把好几个相关概念揉在一段题干里问你这属于哪一类。这时候死记硬背帮不了你你需要的是把概念之间的关系“画出来”。韦恩图在这里的价值很直接它能把文字描述里的“全集、子集、交集、并集、补集”变成一眼能看穿的图形。选择题的解题过程说白了就是从题干里提取条件把条件转化成集合关系再拿这些关系去对照选项。人的大脑处理图形比处理纯文字快得多尤其是考场上时间紧张、精力有限的时候图形化思考能显著降低“想当然”的概率。不过我得提醒一句韦恩图不是万能的。它适合处理“有明确分类边界、有包含/交叉/互斥关系、有数量逻辑”的题目不适合处理那些“纯记忆型”的题目比如某个协议默认端口号是多少、某条法律条文的具体年限。所以这篇文章讲的不是让你每道题都画圈而是让你学会判断“这道题本质上是在考集合关系”一旦识别出来画图比硬想快十倍。用韦恩图解题有一个通用流程我建议你从一开始就养成习惯。第一步读题时圈出所有名词性概念尤其是名词之间出现了“属于、包含、包括、分为、由...组成、不包含、交叉”这些词。第二步判断这些概念之间是什么关系是并列、包含、交叉还是互斥。第三步在草稿纸上画出对应的集合图。第四步把每个选项对应的区域标出来正确答案通常就是“图形上完全成立且没有超出集合边界”的那个。这套流程练熟了能形成肌肉记忆后面所有案例都是围绕它展开的。2. 韦恩图基础别把它当成数学课它就是你的“逻辑草图”2.1 四个基础关系软考里翻来覆去就是它们画韦恩图之前先把四个基础关系搞清楚。第一个是“包含关系”也就是A集合完全在B集合里面对应逻辑里的“A属于B的一种”。第二个是“相交关系”两个集合有共同元素但也有各自独立的部分对应“有的A是B有的A不是B”。第三个是“互斥关系”两个集合完全没有公共元素对应“A和B是两类完全不同的东西”。第四个是“相等关系”两个集合的元素完全一致对应“A就是BB就是A”。软考上午题里这四个关系几乎覆盖了所有分类类考点。举几个例子你就明白了软件架构中的数据流风格和调用返回风格这两个是互斥的一种风格要么属于这个大类要么属于那个大类虽然具体系统可以组合使用但风格分类本身是互斥的主属性、非主属性、候选键、主键这些概念之间是包含关系功能需求和非功能需求里的某些细分项比如性能需求和安全需求在某些分类体系中是交叉的而可靠度计算中的“A子系统正常”和“B子系统正常”在并联结构下就是相交关系因为可以同时正常。我见过不少考生在复习时把这些关系混着记结果做题时全靠猜。其实如果你把每一组易混概念都画成韦恩图贴在笔记本上复习效率会高很多。画图不需要美观两个椭圆交叠一下就能看清边界。关键是你要自己动手画一遍画的过程本身就是对概念关系的二次理解。2.2 画图规范和阅读方法三分钟速成韦恩图的画法很简单但我还是想强调几个细节。第一每个集合必须用一个闭合的圈表示通常用椭圆或圆不要用矩形矩形容易和“全集”混淆而且画多个矩形视觉上容易乱。第二全集如果存在一般画在最外圈比如“软件架构风格的总集合”“关系模式的所有属性集”全集不一定要画出来但心里得有数不然容易漏掉“补集”的考点。第三集合的名称要标在圈子外面或者圈内明显位置元素不要一个个标标类别或区域描述就行毕竟我们是做题不是做数学证明。阅读一张画好的韦恩图有三个关键动作。一是看闭合圈的交点两个圈重叠的部分代表“同时满足两个集合条件”的元素这是选择题里最常见的命门区域。二是看包含的层数一个圈完全套在另一个圈里被套的圈是“更具体的概念”外套的圈是“更上位的概念”。三是看被挖空的区域当题目问“以下不属于某个集合的是”你只需要看最外圈之外或者补集区域。我在辅导某位同学时发现大家最容易犯的阅读错误是把“相交区域”当成了“包含区域”。比如题干说“系统架构风格分为五类其中数据流风格和调用返回风格可以组合使用”有人立刻画成包含关系觉得数据流风格是调用返回风格的一种这就画反了。实际上组合使用表示两者在“具体的某个系统”上可以同时出现而在“风格分类层”上它们是并列互斥的。这个层次问题画图时一定要先问自己一句我画的是概念分类层还是个体实例层两个层面搞混图画对了也没用。2.3 软考真题里最高频的三类集合关系场景根据我对历年模拟题和考试大纲的观察韦恩图在上午题里最常出没在三个场景。第一个是“软件工程与架构分类场景”涉及架构风格分类、设计模式分类、质量属性分类、软件开发模型分类等。第二个是“数据与计算场景”涉及关系模式的候选键与主属性、函数依赖的传递链、可靠度计算、性能指标覆盖范围。第三个是“法律与合规场景”涉及知识产权归属、著作权归属中“创作贡献”的判断、专利的新颖性与创造性等。这三类场景几乎都是概念密集型的题目文字一绕就乱图一画就清。我把这三类场景称为“软考韦恩图三剑客”。你可以用它们来建自己的错题本结构每收集一道分类题就先画一张对应的韦恩图再记下题干里的关键词。久而久之你会发现很多题目表面上不同本质上考的是同一张图。比如“架构风格分类”和“UML关系分类”在集合结构上高度相似都是“一个全集划分成若干互斥子集”。学会用图归纳考点比单纯刷题更能建立知识迁移能力。3. 分类判定题一张图理清架构风格与模式的边界3.1 软件架构风格的集合划分五大家族不是五座孤岛软件架构风格是系统架构师考试的核心考点之一也是概念最密集的区域。典型的分法是五大类数据流风格、调用返回风格、独立构件风格、虚拟机风格、仓库风格。每大类底下又有若干具体风格比如数据流风格下有管道-过滤器、批处理序列调用返回风格下有主程序-子程序、面向对象、分层独立构件风格下有进程通信、事件驱动虚拟机风格下有解释器、规则系统仓库风格下有数据库系统、黑板系统、超文本系统。你光看这个列表是不是觉得有点乱别急画韦恩图就清楚了。先画一个最大的椭圆代表“软件架构风格全集”然后里面画五个互不相交的椭圆代表五大类。注意这五个椭圆是互斥的。然后再在每个大类椭圆里标注出具体的风格名称。这张图画完你再做“以下哪个属于数据流风格”这类题就不用苦想定义直接在图上找位置就行。但要小心一个考点互斥分类不代表实际系统不能组合。一个真实系统的架构可以同时采用数据流风格和调用返回风格这是维恩图里“两个分类圈不重叠但一个具体系统可以在不同维度上同时引用多个分类”的特例。我见过有题目故意在这里设坑问“某系统既采用管道-过滤器又采用分层架构这个系统属于什么风格”正确思路是它同时占据两个分类而不是提示你重新画交叉圈。分类集合的互斥性指的是“风格本身作为分类项不重叠”不是“一个系统只能用一个分类”。3.2 设计模式、质量属性的包含结构从“背口诀”到“看层级”设计模式这部分同样适合画图。GoF的23种模式分三大类创建型、结构型、行为型。这三大类作为集合是互斥的但每个具体的模式在归属上有时会让考生犹豫比如“适配器模式到底属于结构型还是行为型”就是因为它同时和“接口转换”以及“运行时行为调整”两个概念沾边。如果你只背分类表容易记错如果你画一张嵌套图——最外层是“GoF设计模式全集”中间三个互斥大类内层具体模式——适配器模式的位置就很清晰它是结构型里的“类结构适配”子集和“对象结构适配”子集的并集但不在行为型里。质量属性也是一样。系统架构师考试里性能、可用性、安全性、可修改性、易用性、可测试性等质量属性看起来是并列的实际上它们之间有交叉。比如“安全性”和“可用性”在某些定义里有重叠“可测试性”和“可修改性”也有关联。考试里如果问“某个质量属性场景描述的是哪类质量属性”你画一张质量属性交叉图比硬背“质量属性六要素”更不容易被干扰项迷惑。画法也别复杂把每个质量属性画成椭圆有概念关联的重叠区域标上“典型场景关键词”比如“加密”落在安全性和性能的交叠区域加密会牺牲性能这就是一个经典高频考点。还有UML关系分类泛化、实现、依赖、关联、聚合、组合。这六者不是六个互不相关的圈。组合是一种特殊的聚合聚合是一种特殊的关联所以画出来是三个逐层嵌套的圈组合⊆聚合⊆关联泛化和实现是另外两个并列的圈但它们都建立在“关系和规则”之上。这张嵌套图几乎每年都会以某种形式出现。理解了这种包含结构你就不需要死记“聚合和组合的区别”这种老掉牙选择题了直接想组合是不是聚合的一种是那组合就比聚合更严格。3.3 分类判定题的四步解题流程从读题到勾选项做完上面两步我总结一个能在考场上直接套用的四步流程。第一步读题干轮廓画一个最大的椭圆当全集把题中点名的上位概念放进去。第二步从上位概念里分出题干提到的下位概念明确它们是并列、包含还是交叉。第三步把干扰项对应的概念放到图里逐个对照交集区域和补集区域。第四步从四个选项中选出“完整落在题干集合边界内且没有被排除”的那个通常还要检查一遍有没有“偷换集合”的选项比如把“某个具体模式”说成“某一大类”。我用一道模拟题演示一下。题干“以下软件架构风格中属于独立构件风格的一组是 。A. 管道-过滤器、批处理 B. 事件驱动、进程通信 C. 主程序-子程序、面向对象 D. 解释器、规则系统。”你不需要逐字背定义只需要回忆那张图。数据流风格装的是管道-过滤器和批处理独立构件风格装的是事件驱动和进程通信调用返回风格装的是主程序和面向对象虚拟机风格装的是解释器和规则系统。答案直接落在B区域两秒锁定。4. 归属与依赖题函数依赖、知识产权与需求分类里的“你说的哪个集合”4.1 数据库范式的“属性集合”判定候选键、主属性、非主属性怎么圈数据库理论是系统架构师上午题的必考点而范式判断是很多人的痛点。第一范式、第二范式、第三范式、BCNF定义都很短但实操起来却容易迷糊到底存不存在部分函数依赖存不存在传递函数依赖这时候把“函数依赖关系”转成“属性集合图”思路会一下子打开。具体做法是这样给定关系模式R(U,F)先求候选键这是关键得用闭包算法。然后用候选键画第一层圈主属性集合和候选键它们是包含关系候选键是主属性集合的子集注意候选键可以有多个所有候选键的并集才是“主属性集合”。再画第二层圈U集合里除主属性之外的是非主属性。判断是否满足第二范式就看“是否存在非主属性对任一候选键的部分函数依赖”——等价于看有没有某个非主属性只依赖于候选键的一个真子集。判断第三范式就看“是否存在非主属性对候选键的传递函数依赖”——等价于找一条“非主属性 → 非主属性”的传递链。BCNF是消除主属性对候选键的部分和传递依赖。举个例子R(A,B,C,D)函数依赖集F {AB→C, C→D, D→A}。先用闭包算候选键能决定全体属性的最小集合是哪个试试BB加上谁从D→AC→DAB→C可以推出B、C、D、A都能被B…实际上我算了一下候选键是BC和BD因为BC可以推出A和DBD可以推出C和A。那么主属性集合就是{A,B,C,D}好家伙所有属性都是主属性那它一定满足2NF因为没有非主属性也没有非主属性对候选键的传递依赖所以至少满足3NF。但有没有主属性对候选键的部分依赖有的这就是BCNF与3NF的分水岭。你看用集合圈把主属性全圈出来瞬间就能排除一大半错误判断。这种题画一张“属性层级图”比盯着函数依赖列表发呆强得多。4.2 著作权归属里的“创作贡献”集合谁算作者谁不算知识产权题里有一个高频考点委托开发、合作开发、职务开发中著作权的归属。这类题特别适合用韦恩图来澄清“谁的实际行为属于创作”。完整集合是“对作品作出了独创性付出”的行为圈它包含真正的创作者而“提供思想、创意、素材、设备、资金”的行为圈和它有交叉但不完全重合——划重点思想、创意本身不受著作权保护只有用一定形式表达出来才可能受保护。举个例子甲提供软件的整体思路和功能需求文档乙负责代码实现丙提供开发设备和测试环境丁负责组织管理。问谁是著作权人。画四个行为圈甲的“提供思路/需求”圈、乙的“代码实现”圈、丙的“提供设备”圈、丁的“组织管理”圈再画一个“独创性表达贡献”圈。看哪些圈和创作圈有实质性交集甲的思路文档如果具体到详细设计可能有贡献但仅仅口头描述通常不进入“表达”圈。乙的代码实现是最典型的创作表达。丙的设备是“物质条件”不属于创作行为。丁的组织管理也不直接构成创作。所以正确答案通常会落在乙或甲乙双方如果甲的文档足够具体。画图之后你能明确看到“提供设备和资金”和“创作表达”无交集以后再遇到“投资人不参与创作能否拥有著作权”这类变体题直接看图就行。4.3 需求分类里的“灰色地带”功能需求和非功能需求的交集在软件工程知识点里需求工程也是考试常客。功能需求描述“系统做什么”非功能需求描述“做得怎么样”。两者看起来边界分明实际上存在大量灰色地带考试就喜欢考这些灰色地带。比如“系统必须在5秒内响应”是典型的性能需求非功能“系统必须为合法用户提供登录功能”是功能需求但“系统必须采用加密存储用户密码”是安全需求非功能还是功能需求很多分类题就是在这里设坑的。遇到这种题画一张需求分类韦恩图左边功能需求圈右边非功能需求圈中间相交区域是“既影响功能行为又约束质量指标”的混合需求。判断一个具体需求落在哪个区域就看它是否直接定义了可观察的功能行为。加密存储密码它定义的是“怎么存”不是“存什么系统功能”通常落在非功能需求圈但如果它定义了“用户通过密钥找回密码”的流程那就落在功能需求圈。画图的意义在于让你对每一句话都强制做一个“区域归属判断”而不是整体凭感觉选。5. 计算与边界题可靠度、性能覆盖范围的图像化思考5.1 串联并联可靠度从“公式背诵”到“面积理解”可靠度计算是系统架构师考试里为数不多需要动笔算的选择题。很多考生只记住两个公式串联系统RR1×R2并联系统R1-(1-R1)×(1-R2)。但题目一换比如三个子系统串并联混合有人就算错。用集合图来理解公式就变成“看得见的面积”了。设两个子系统的事件集合为A和B。串联要求A和B都发生对应的是交集A∩B如果A与B独立交集面积等于两者概率相乘这就是乘法公式的来源。并联要求至少一个发生对应的是并集A∪B并集面积等于各自面积之和减去重叠面积于是并联可靠度RARB-RA×RB。理解了这点就算题目变成三个子系统你也能画三个圈然后一块块拼面积。比起死记硬背这种图形化的概率理解能让你应对各种变体组合。再者冗余设计在考试里的含义你也能从图上“看见”并联相当于把两个失败区域叠在一起再做水密处理让“整体失败”的区域只剩两者同时失败的那个小块。看多了这张图遇到“双机热备的可用度比单机高多少”的题目你脑子里就会有直观的比例感不容易被单个数值误导。5.2 性能指标的覆盖范围工具、指标、评测对象三维胶囊系统性能评测的考点也适合用集合关系来梳理。比如吞吐量、响应时间、资源利用率、并发用户数这些指标它们不是互相独立的。吞吐量上升可能引起响应时间变长资源利用率也可能跟着变。考试里经常考“哪个指标最能反映系统某方面的性能”本质上是让你判断“这个指标落在哪个性能集合里”。举一个我给学生讲过的模拟题要评测一个在线交易系统的性能要求同时关注并发吞吐量和用户平均等待时间请问至少需要采集哪些数据用集合图表示采集数据全集系统日志、数据库监控、网络监控、客户端埋点。吞吐量集合落在服务器端日志和数据库监控里用户等待时间落在客户端埋点和网络监控里两者交叉区域就是“从客户端到服务器端的请求时间戳”。答案自然就出来了。这样做题的额外好处是你能对“指标覆盖范围”形成一种直觉某个指标再大也不能覆盖到那些和你关注目标不相交的区域。考试问“采用响应时间作为唯一指标评价系统性能为什么不够全面”你可以说因为性能是一个多维集合响应时间只覆盖其中一块吞吐量和资源利用率在它的补集区域。5.3 边界值用韦恩图找“恰好满足条件”的集合有一种选择题特别难典型的问法是“为了保证可用性达到某个级别需要几个9”。比如某系统年可用性要达到99.99%问允许的年度停机时间是多少分钟。核心是计算不是集合关系但这里可以用“区域边界”的概念形象化把一年8760小时看作全集允许停机区域是全集里的一个极小补集。算出结果约52.6分钟答案选最接近的那个即可。这种方法不光用于可靠性计算。在软件测试的等价类划分题里“边界值分析”本身就是在集合的边界上找测试用例。画一个输入域的矩形把合法输入集合和非法输入集合标出来边界值就在两个集合的交界线上。很多考生不理解“为什么要测边界”看这张图立刻懂了因为边界上是两个集合最容易发生归属判错的地方。用这种图像化思维去读题那些看似零散的计算题就有了统一框架。6. 三个完整实战案例从读题到勾答案每一步都画给你看6.1 案例一软件架构风格判定模拟题某系统的架构文档中提到“系统由管道和过滤器构建数据处理链同时采用层次结构组织业务逻辑”请问该系统的架构风格最准确的描述是 。选项A. 纯粹的数据流风格 B. 纯粹的调用返回风格 C. 数据流风格与调用返回风格的组合 D. 无法确定。我的解题过程先画一个“软件架构风格全集”的大矩形里面并列画两个椭圆一个标“数据流风格”一个标“调用返回风格”。管道和过滤器落在数据流风格椭圆内层次结构落在调用返回风格椭圆内。题干明确说“同时采用”说明该系统的架构特征在两块区域都出现而不是只落在某一块。所以答案C。做错了的同学多半是看到“同时采用”就直接选“组合”其实这题出得并不难难的是很多人在考场上根本没画图把“系统采用的风格”和“风格分类本身”搅在一起。画图能强制你把层次分清楚。6.2 案例二关系模式最高范式等级判断模拟题关系模式R(U,F)U{A,B,C,D}F{AB→C, C→D, D→A}请判断R最高满足 。选项A. 1NF B. 2NF C. 3NF D. BCNF。我的解题过程题目出现了函数依赖集合和属性全集适合用集合图。先在纸上写U全集{A,B,C,D}。求候选键从AB→C和C→D可得AB能推出C、D加上自身A、B能推出全集但AB不是唯一候选键因为D→A、C→DBD也能推出C和A所以BD也是候选键同理BC也能推出D和ABC也是候选键。候选键集合{AB,BD,BC}。画出主属性集合圈里面包含{A,B,C,D}全部属性都是主属性。既然没有非主属性2NF和3NF对非主属性的要求都自动满足但存在主属性对候选键的部分依赖例如A取决于DD在候选键BD里但A不在BD键里由D单独决定这就是部分依赖所以不满足BCNF。最高范式是3NF答案C。如果没有集合图你可能得反复抠定义容易3NF和BCNF搞反。6.3 案例三系统可靠度计算模拟题某高可用系统由两个子系统并联组成接着与第三个子系统串联。子系统可靠度分别为R10.9R20.8R30.7求系统可靠度 。选项四个数字。我的解题过程画圈。先画并联部分事件集合A和B相交并联允许至少一个正常。并联可靠度RA∪RB0.90.8-0.9×0.80.98。然后把这个并联整体看成一块面积再与C串联就是求两个事件同时发生的交集面积R总0.98×0.70.686。答案直接锁定。中间不需要背任何复杂公式两张图就能拼出结果。这个案例其实在很多其他考试里也很常见理解了集合图的面积逻辑后你就不容易把串并联公式搞混。7. 考场上画韦恩图的避坑清单与速成技巧7.1 高频易混点的韦恩图对照表我把软考系统架构师上午题里常见的高频易混概念整理成一张表你可以直接抄在笔记本上。表里每一行都是一组需要用韦恩图理清关系的关键词。易混概念组集合关系常见考点架构风格五大类数据流/调用返回/独立构件/虚拟机/仓库并列互斥但具体系统可组合引用“属于某类风格的是”GoF模式三类创建/结构/行为并列互斥具体模式归属一个或多个“某模式属于哪类”组合、聚合、关联组合⊆聚合⊆关联嵌套包含“聚合和组合的区别”主属性、候选键、超键候选键⊆主属性集合超键包含候选键“最新范式判断陷阱”功能需求、非功能需求、质量属性部分重叠灰色地带“某需求描述属于哪类”机密性、完整性、可用性CIA概念上可交叉如加密同时影响安全和性能“某安全措施破坏哪项”串并联可靠度事件集合串联交并联并“混合结构的可靠度计算”著作权、专利权、商标权互不重叠且客体不同“权利归属判断”这张表不是在考场上用的而是你平时复习时对照纸。每次碰到一组易混概念就自己补一张图然后写一行“这个图在考试里怎么考”。重复两三周你会发现自己做题时的犹豫时间明显缩短。7.2 考场作图三原则快、简、准原则一画得不漂亮不要紧但要足够大。草稿纸上画一个拳头大小的椭圆能看清几个集合的交叠情况画太小的话标注几个字就糊成一团。原则二宁可多画一组不要省一组。如果题干条件复杂比如四五个集合一张图画不下就拆成两张图先画主要层级再画细节交叉千万别试图把所有关系塞进一张图里那样反而会乱。原则三画完图后一定要回到题干原句核对一遍看看每个选项在图上对应的区域是否“完全匹配”题干描述尤其是“绝对化”词语比如“所有”“仅”“必须”这些词往往对应集合的边界和补集。另外提醒一句不是所有题都值得画图。如果一道题你读完一眼就知道答案别浪费时间画。画图的时机应该是“你感到概念关系模糊、选项之间有重叠、计算涉及多个集合”的时候。把这些题挑出来画性价比最高。7.3 时间分配与做题节奏三分钟原则上午题一共75道150分钟平均每题2分钟。我个人的策略是前50题控制在90分钟以内给后面计算和案例分析留足时间。遇到需要画图才能解的题规定自己3分钟出结果超过3分钟就先选一个最可能的答案并标记最后检查时再回头细算。韦恩图在这个策略里最大的价值是把“本来要花5分钟的文字推理”压缩成“1分钟画图1分钟判断”。但这里我要泼一盆冷水韦恩图是个好工具但它绝对替代不了知识积累。你连“数据流风格有哪些具体风格”都没记住画再大的圈也没用。所以正确打开方式是第一阶段用表格和教材把概念本身记住第二阶段再用韦恩图建立概念间关系第三阶段用真题检验你的“图感”对不对。三个阶段缺一不可别指望跳过记忆直接靠技巧蒙答案。踩过的坑才是真经验。我记得备考那阵子做模拟题一开始经常在“设计模式分类”上栽跟头后来把23种模式全部画进三张韦恩图再配合真题反复练这个考点的错误率基本归零。另一个高频坑是“著作权归属题”里“提供资金和设备不算创作”这个结论用文字背很容易忘但画成图以后那个“资金设备圈”和“创作圈”完全不相交的画面感至今都能想起来。所以我对所有备考者的建议就一句话不要对着文字空想关系把关系画出来画完你就赢了。
阅读完成 · 觉得有帮助?
咨询建站