- 博客(1332)
- 资源 (78)
- 收藏
- 关注
原创 Tricentis Tosca:现代软件测试的自动化利器
Tricentis Tosca是一个持续测试平台,通过模型驱动方法简化自动化测试。其核心流程包括扫描识别控件、创建可复用模块、编排测试用例三步骤,支持UI、API、数据库等多层测试。主要优势在于提升测试效率、扩大覆盖范围、加速质量反馈,并能与企业级应用(如SAP)集成。该平台通过图形化界面降低使用门槛,同时提供需求追溯功能,使测试与业务目标紧密关联,适合敏捷和DevOps环境下的质量保障需求。
2025-08-11 23:16:10
458
原创 无障碍测试:打开数字世界的大门,让软件拥抱每一位用户 [特殊字符]
数字无障碍测试(Accessibility Testing)是确保残障人士平等使用数字产品的关键,涉及视觉、听觉、运动等多方面障碍的支持。全球超12亿残障人士面临数字障碍,而WCAG标准(基于POUR四大原则)为无障碍设计提供了权威指南。测试需结合自动化工具(如axe、WAVE)和手动验证(键盘导航、屏幕阅读器等),并融入开发全流程。尽管面临认知不足、资源投入等挑战,无障碍设计不仅是法律要求(如美国ADA、欧盟EAA),更是道德责任与商业机遇。通过持续优化,科技产品能为所有人创造更包容的数字体验。
2025-08-10 21:28:37
385
原创 AI测试助手如何让Bug无处可藏
AI测试正颠覆传统软件测试模式,通过机器学习实现自动化生成/修复测试脚本、预测风险、24小时执行等能力,可将测试效率提升数十倍。五大核心价值包括解放人力、精准定位缺陷、自愈脚本、快速反馈和零人为失误。落地可分四步走:从高频场景试点、精准匹配工具、集成流水线到数据驱动迭代。需规避成本、数据、安全等陷阱,建议团队优先尝试低代码工具。实践表明,AI可接管70%重复工作,让测试人员转型为质量策略师。文末提供3项即刻行动建议,强调AI是提升而非替代人力的工具。
2025-08-10 21:17:00
597
原创 告别“最后找茬”!敏捷测试:打造高质量软件的加速引擎
摘要: 敏捷测试通过全员协作、测试左移和自动化,将质量保障贯穿开发全周期,颠覆传统阶段式测试。其五大核心方法(TDD、ATDD、BDD、探索性测试和会话测试)结合"早测试、智能化、强反馈"的实践,实现质量与速度双赢。企业可借助Tricentis等工具实现高效自动化测试管理。敏捷测试已成为数字化时代提升交付速度、保障用户体验的核心竞争力,本质是让质量与速度协同而非对立。(149字)
2025-08-10 21:05:31
198
原创 告别996!自动化测试脚本:提速神器 + 避坑指南
摘要: 自动化测试脚本通过编程指令替代重复手动测试,显著提升效率与准确性。主要类型包括单元测试、集成测试、功能测试和性能测试,适用不同场景。优势体现为10倍效率提升、零失误及长期成本节省。主流工具如Tosca、Appium需根据项目类型选择,开发流程需遵循七步法,并规避过度自动化等陷阱。未来无代码工具(如Katalon)进一步降低门槛,实现业务人员直接参与。自动化测试解放人力聚焦高价值工作,成为持续交付的核心驱动力。
2025-08-09 21:57:24
898
原创 健全性测试(Sanity Testing):你软件的快速“体检” ✅(省时避坑,确保核心!)
摘要: 健全性测试是一种快速验证软件核心功能稳定性的方法,聚焦于小改动后的关键流程检查,避免引发重大故障。与冒烟测试不同,它范围更窄、针对性更强,通常在QA或开发人员手动/自动化执行。流程包括识别变更范围、执行测试、验证结果三步。优点在于高效省时、成本低,但无法替代深度测试。适用于快速迭代场景,是防止小更新导致大问题的第一道防线,能显著提升软件发布质量与团队效率。
2025-08-09 21:40:09
1127
原创 并发测试:你的应用扛得住“早高峰”吗?
并发测试:软件高可用的关键保障 并发测试是确保系统在高负载下稳定运行的重要手段,通过模拟多用户同时访问来发现潜在的竞态条件、死锁和数据同步等问题。主要测试类型包括:负载测试(验证峰值流量表现)、压力测试(寻找系统极限)、尖峰测试(应对突发流量)和浸泡测试(检测长时间运行的问题)。 实施步骤包括识别高危场景、使用工具模拟并发、监控关键指标并分析修复问题。尽管存在复杂度高、资源消耗大等挑战,但并发测试能有效预防线上崩溃,保障用户体验。在持续交付流程中集成自动化并发测试,已成为构建稳健系统的必要实践。
2025-08-07 22:05:20
878
原创 别再用人工测试折磨自己了!自动化测试脚本:开发者的效率神器
简单说,它就是一套写好的代码指令,专门用来“指挥”电脑自动测试你的软件应用。想象一下:你写好功能代码,轻轻一推(Push),一套自动化测试程序立刻启动,帮你检查代码有没有问题。发现问题?马上报警!🚨核心优势集成CI/CD管道:代码提交即刻测试,问题早发现、早解决。降低成本:越早发现Bug,修复成本越低(后期修复成本可能飙升10倍!释放人力:机器干脏活累活,开发者专注创造。自动化测试脚本不是“可有可无”,而是现代开发的刚需。十倍提升测试效率 🚀让软件质量稳如泰山 🏔️。
2025-08-07 21:51:09
271
原创 AI增强的软件测试工具
AI增强的软件测试工具通过人工智能技术实现全流程自动化,覆盖测试设计、脚本生成、执行优化、缺陷预测等全生命周期。核心能力包括智能生成测试用例、自适应脚本构建、测试套件优先级排序、深度结果分析和缺陷预警。这些工具显著提升测试覆盖率与效率,实现人机协同,减少人工干预。头部工具如Tricentis Testim(AI驱动的端到端测试)和BrowserStack(全生命周期AI代理)通过智能元素定位、自愈测试等功能,帮助团队适应快速迭代,提升50%以上测试效率。这类工具正成为现代软件工程中质量保障的关键赋能者。
2025-08-06 23:10:10
1193
原创 自动化测试工具Katalon之BDD
BDD测试框架集成示例:Katalon Studio中使用Cucumber访问百度 本文演示了如何在Katalon Studio中集成Cucumber BDD框架进行Web测试。通过创建特性文件(Baidu.feature)定义Gherkin格式的测试场景,编写对应的Groovy步骤定义(BaiduSteps.groovy)实现浏览器操作,并配置测试监听器设置步骤定义包。示例完整展示了从打开浏览器、访问百度首页到验证页面标题的测试流程,包含特性文件编写、步骤定义实现、测试监听器配置和测试用例创建的全过程。执
2025-08-04 22:55:05
61
原创 在线免费的AI文本转语音工具TTSMaker介绍
TTSMaker是一款专业在线文本转语音工具,支持50+种语言及300+种语音风格,包括中文方言和多种发音特色。其核心优势在于提供商用级音频输出(MP3/WAV等格式)、每周3万字符免费额度及100%版权归属。用户可精细调节语速、音调并插入停顿,生成接近真人发音的音频。操作简单:输入文本→选择语音→转换下载,适用于教育、内容创作、企业商用等场景。基于神经网络技术,转换速度快且支持API批量处理。免费政策允许商业用途,是高效便捷的语音合成解决方案。官网:ttsmaker.cn
2025-08-01 23:10:30
1668
原创 Ext JS极速项目之 Coworkee
ExtJS Coworkee是Sencha官方提供的员工管理应用示例,展示ExtJS框架在企业级应用开发的能力。该应用采用左右分区布局,左侧为可折叠导航栏,右侧为主工作区,支持响应式设计。技术实现上,前端使用ExtJS组件库构建交互界面,后端推荐替换原始Node.js为Spring Boot提供RESTful API服务。该示例可作为快速开发员工管理、资料查询等系统的基础模板,支持前后端分离或一体化架构,显著提升开发效率。
2025-07-29 23:56:14
85
原创 3.7 综合挑战项目
这篇文章介绍了用C++实现数字猜谜游戏的开发过程及相关扩展功能。主要内容包括: 核心功能实现:通过随机数生成、比较逻辑和游戏循环构建基础猜数字游戏 项目扩展:添加难度分级、成绩记录和智能提示等增强功能 创意延伸:提出简易计算器、成绩管理系统和井字棋等扩展项目 项目展示:提供项目展示和评分标准建议 开发指南:包含开发日志模板和问题解决技巧 文章采用代码示例与文字说明相结合的方式,通过表情符号和表格等元素增强可读性,适合初学者学习小型C++项目的开发流程和扩展思路。
2025-07-24 22:09:27
1034
原创 3.6 常见问题与调试
错误类型常见表现解决方法忘记返回值得到随机数检查所有路径都有return参数顺序错结果不对对照函数定义检查无限递归程序卡死添加终止条件记忆儿歌编程出错不要慌,调试技巧来帮忙输出中间看一看,分步测试不能忘纸笔追踪变量变,小小bug无处藏。
2025-07-23 22:10:09
927
原创 3.5 模块化编程实践
本文系统介绍了模块化编程的优势与实践方法。在代码复用方面,模块化可提高开发效率,便于功能复用;调试阶段能快速定位问题;团队协作中可实现并行开发。以计算器项目为例,详细展示了功能分解、函数分工和菜单设计的实现过程,包括头文件声明和功能实现代码。文章还提供了项目扩展思路,如添加运算功能、历史记录和界面美化方案,并介绍了命名空间、分离编译等进阶技巧。最后给出单元测试、日志调试方法和标准项目结构示例,指导读者完成一个包含基本运算和高级功能的科学计算器开发。
2025-07-22 22:13:07
415
原创 3.4 递归函数
本文系统介绍了递归编程的核心概念与应用。主要内容包括:1)递归的基本原理,通过俄罗斯套娃比喻解释递归三要素(基本情况、递归关系、向基本情况靠近);2)经典递归问题实现,如阶乘、斐波那契数列(含记忆化优化)、汉诺塔等;3)递归调试技巧与常见错误分析;4)递归与迭代的转换方法。文章还提供了不同难度的练习题和文件系统遍历项目,并给出性能优化建议。递归作为一种分治思想的重要实现方式,特别适合处理具有自相似性的问题,但需注意栈溢出和重复计算等问题。
2025-07-21 22:40:02
259
原创 3.3 参数传递方式
本文系统比较了C++中值传递和引用传递两种参数传递方式。值传递通过复制参数值进行操作,无法修改原变量但安全性高,适用于基本数据类型;引用传递使用别名直接操作原变量,效率高但需谨慎使用,适合需要修改参数或传递大型对象的场景。文章通过代码示例演示了两种方式的差异,包括变量交换、成绩修改等实用案例,并提供了对比表格和使用建议。最后设计了综合练习项目(如银行账户系统)帮助巩固理解,强调避免常见错误(如忘记引用符号或返回局部引用)。
2025-07-18 22:39:39
867
原创 3.2 函数参数与返回值
概念说明示例函数参数函数的输入值返回值函数的输出结果void函数不返回值的函数多参数多个输入值参数顺序传递参数的顺序必须匹配定义func(a,b)vsfunc(b,a)
2025-07-17 22:08:01
331
原创 3.1 认识函数
想象有一个神奇的"magicToolbox"工具箱,它可以完成特定任务。比如"drawStar"工具箱,按下按钮(调用函数)就能画出五角星。概念说明示例函数定义创建函数的完整代码函数调用执行函数功能greet();返回类型返回值的数据类型intvoid参数传入函数的数据函数体函数执行的代码块{...}return返回结果并结束函数课后练习创建singBirthdaySong()函数输出生日歌编写calculatePerimeter()函数计算圆周长观察家电思考对应的函数模型。
2025-07-16 22:23:43
413
原创 无代码自动化测试工具介绍
无代码自动化测试工具摘要 无代码自动化测试工具通过可视化界面(如拖拽操作或录制回放)实现测试创建,无需编程知识。这类工具降低了技术门槛,使非技术人员也能参与测试,同时提升效率并减少维护成本。相比传统自动化工具(如Selenium)的编码复杂性和高维护需求,无代码方案具有易用性、快速测试创建、高集成性等优势。 2025年推荐的13款工具中,BrowserStack低代码自动化和Selenium IDE表现突出: BrowserStack:结合拖拽界面与可定制脚本,支持Web、移动端、API等测试,集成CI/C
2025-07-02 22:50:05
143
原创 自动化测试工具Katalon 之核心概念全解析
Katalon自动化测试工具核心概念解析:1)测试用例作为最小执行单位,支持图形化/脚本编写;2)测试套件用于批量管理用例执行;3)对象仓库集中管理UI元素定位;4)数据文件支持多种格式驱动测试;5)检查点提供多维度验证机制;6)关键字实现测试逻辑复用;7)监听器监控测试生命周期;8)报告系统生成详细测试结果;9)包含机制提升代码复用性;10)插件系统扩展功能边界。这些组件协同工作,构建了完整的自动化测试框架,支持从Web到移动端的全栈测试需求,通过模块化设计和数据驱动理念提高测试效率。
2025-06-25 22:25:47
123
原创 自动化测试工具Katalon 之快速介绍和示例
Katalon Studio是一款支持Web、API、移动端和桌面应用测试的自动化工具,整合了Selenium和Appium功能,提供图形界面和脚本编写(Groovy/Java)两种操作方式。基础功能免费,企业版收费2199美元/用户/年。安装需官网下载并登录账号使用。以百度搜索测试为例,演示了创建项目、录制脚本(含断言验证)和运行测试的完整流程。该工具适合不同技术水平的测试人员实现低代码或脚本化自动化测试。
2025-06-25 21:57:00
255
原创 Spring Boot 的Banner的介绍和设置
Spring Banner是Spring Boot启动时展示的ASCII艺术字及应用信息。默认显示Spring字样,用户可在resources目录下创建banner.txt文件自定义内容,支持使用在线工具生成艺术字,并可嵌入环境变量和版本信息等占位符。高级选项包括编程式生成Banner、控制输出模式(控制台/日志/关闭),以及通过SpringApplication或Builder API进行配置。注意应用属性仅在特定启动方式下生效,Banner实例会注册为单例Bean。
2025-06-24 23:25:32
135
原创 Karate UI 自动化测试基本概念之二
Karate UI测试框架提供了强大的调试和等待机制,主要包括: 调试功能:支持使用Visual Studio Karate扩展进行单步调试,可通过karate.stop()命令暂停测试进程检查页面元素; 重试机制:默认3次重试/3秒间隔,可通过configure动态调整,提供retry()、retry(count)和retry(count,interval)三种方式控制后续操作的重试行为; 等待API:包含waitFor()、waitForText()等8种等待方法,均内置重试逻辑,可结合retry()覆
2025-06-20 06:55:12
89
原创 Karate UI 基本概念之一
本文介绍了UI自动化测试中driver对象的使用方法及其特性。主要内容包括: driver对象在访问网页后初始化,其方法可通过Java接口定义理解,支持将getter/setter简化为JS属性调用; driver方法可省略前缀直接使用,并推荐使用propertyName格式提高可读性; 3.支持链式调用的对象类型(Driver、Element等),可通过组合方法简化代码; 4.提供Key变量支持特殊按键操作,列举了完整的键盘按键代码常量。文中通过具体示例展示了简化写法、链式调用和特殊按键的使用方式。
2025-06-18 23:47:15
99
原创 Karate UI测试自动化整合PlayWright 方式之Java
Karate UI通过Java.type()实现与Java代码的无缝集成,支持调用静态方法、实例化对象及处理复杂数据类型。该功能基于Nashorn引擎桥接JVM,能直接加载Java类(如Java.type('java.util.Date')),执行链式调用,并处理异常。典型应用包括加密解密、数据库验证和文件操作,可通过karate-config.js预加载类提升性能。注意需确保类路径正确,推荐封装复杂操作为Java工具类。结合Karate特性时,可在表格测试中验证业务逻辑,或通过Gson等库处理JSON转换
2025-06-18 06:48:21
204
原创 Karate UI自动化测试之定位器
Karate支持多种跨平台的元素定位方式,包括XPath、CSS选择器及平台专用的定位语法。主要规则为:无前缀默认为CSS选择器,"/"前缀表示XPath。不同平台(Web/Android/iOS/Win)有特定定位符,如Web的精确文本匹配"{a}"、iOS的谓词字符串":"、Android的UiAutomator"-"等。XPath用于XML/HTML文档节点定位,支持绝对/相对路径和条件筛选;CSS选择器通过元素特征(标签
2025-06-17 23:09:50
191
原创 Karate 整合PlayWright 方式之NodeJS
Karate框架与Playwright测试工具的整合可以通过多种方式实现。对于Java编写的Playwright脚本,可直接使用Java.type调用或无缝整合Driver配置;而对于NodeJS编写的脚本,则需借助karate.exec执行外部命令。示例展示了如何通过karate.exec调用Playwright的JS测试脚本,并运行Karate的Feature文件。需注意初始化NodeJS项目环境以避免"npx"命令无法执行的错误,同时确保JS文件路径正确。这种方法实现了跨语言测试工
2025-06-17 07:03:24
47
原创 Karate UI测试之驱动配置
本文介绍了Karate测试框架中WebDriver的配置方法。主要内容包括:1)如何使用默认浏览器配置,支持Mac和Windows系统;2)自定义浏览器启动方式,通过批处理文件指定执行路径;3)WebDriver的详细配置选项说明,涵盖端口、日志、超时等参数;4)远程WebDriver配置方法;5)WebDriver会话能力配置。文章还提供了配置示例代码,适用于本地和远程测试场景,帮助用户灵活设置测试环境。
2025-06-14 22:37:54
214
原创 Karate 与Playwright的比较和融合
摘要: Karate与Playwright是两种互补的测试工具。Karate擅长API测试与轻量UI自动化,采用类自然语言语法,内置Mock服务,无需处理异步逻辑,适合混合测试和非技术团队。Playwright专注现代Web自动化,支持多语言和多浏览器,提供高级功能如请求拦截和视频录制,适合复杂UI场景。两者可整合:Karate主导流程,Playwright驱动浏览器,实现API与UI串联测试。 关键差异: Karate:同步执行、语法简单、API优先 Playwright:异步模型、精准控制浏览器、生态丰
2025-06-12 23:40:09
251
原创 Karate整合PlayWright方式之playWright Driver
Karate框架结合Playwright进行自动化测试的简要方案:通过Maven项目添加karate-playwright依赖后,在配置文件中设置driver类型为playwright并可选配置浏览器参数(如headless模式、窗口尺寸等)。与直接使用本地浏览器不同,Playwright会自动下载并管理独立浏览器进程。测试时用Given driver语句启动网页,支持常规验证操作。首次运行需下载浏览器驱动,耗时较长。该方案保持了Karate的简洁语法,同时利用Playwright的跨浏览器测试能力。
2025-06-12 23:12:18
178
原创 基于Java项目的Karate UI测试
本文演示了如何在Java Maven项目中使用Karate框架进行UI自动化测试。通过一个简单测试场景说明:打开百度首页并验证页面是否包含"新闻"文本。文章详细介绍了测试规格文件(baidu.feature)的编写方法,包括配置Chrome驱动、定义测试步骤等,并展示了通过BaiduRunner测试运行器执行测试的过程。测试结果会打开浏览器执行操作,并在控制台和测试报告中显示。文末提供了完整示例代码的Git链接。该示例展示了Karate框架在UI测试中的简单应用。
2025-06-10 23:12:46
158
原创 基于Java项目的Karate API测试
本文介绍了如何在Java Maven项目中集成Karate测试框架。主要内容包括:创建Maven项目并配置karate-junit5依赖,项目目录结构的组织方式,编写Karate测试脚本(user.feature)和JUnit测试运行器(UsersRunner.java),以及环境配置(karate-config.js)。还展示了通过IDE或mvn test命令运行测试的方法,并说明测试报告会生成在target/karate-reports目录下。Karate既支持无代码的Feature文件测试,也允许Ja
2025-06-09 23:11:39
155
原创 Spring AI 之工具调用
摘要 工具调用是AI应用中增强模型能力的重要方式,分为信息检索和执行操作两大类。信息检索工具扩展模型知识库(如获取实时天气),执行工具自动化任务(如发送邮件)。Spring AI提供了便捷的API实现工具调用,安全机制确保模型只能请求调用而不能直接访问API。示例展示了通过@Tool注解定义日期查询和闹钟设置工具,模型可组合调用这些工具完成复杂任务(如10分钟后设置闹钟需先获取当前时间)。该机制有效弥补了AI模型无法获取实时信息和执行物理操作的局限。
2025-06-04 23:25:16
1185
1
原创 Spring 开发疑难之methods with same signature getSchemaManager() but incompatible return types问题分析和解决
在基于Spring Boot 3.5的项目中,分离公共功能库时因引入jakarta.persistence-api 3.2.0导致与Hibernate的SchemaManager接口冲突,出现方法签名相同但返回类型不兼容的错误(IllegalArgumentException)。根本原因是Hibernate 6.x与Jakarta Persistence 3.x的API版本不匹配。
2025-06-04 22:27:35
77
原创 Spring AI 之检索增强生成(Retrieval Augmented Generation)
摘要: Spring AI通过增强器(Advisors)提供检索增强生成(RAG)支持,帮助语言模型结合外部数据提升回答准确性。QuestionAnswerAdvisor核心功能包括:从向量数据库检索相关文档,动态过滤(支持SQL表达式),以及自定义提示模板整合上下文。开发者可通过配置相似度阈值、结果数量及运行时过滤条件优化搜索,并灵活定制提示模板的占位符(query和question_answer_context)以适应不同场景。依赖spring-ai-advisors-vector-store即可快速集
2025-06-02 22:02:35
938
原创 Spring AI 之对话记忆(Chat Memory)
摘要:Spring AI为解决大型语言模型(LLMs)无状态限制,提供对话记忆功能(ChatMemory),支持在多次交互中存储上下文信息。该系统区分对话记忆(用于维持上下文)和对话历史记录(完整对话存档),并提供多种记忆类型(如基于消息窗口的MessageWindowChatMemory)和存储方案(包括内存存储InMemoryChatMemoryRepository和JDBC持久化存储JdbcChatMemoryRepository)。JDBC实现支持PostgreSQL等主流数据库,可通过方言扩展适配
2025-05-29 23:46:43
1266
原创 2.2 C++之循环结构
学习目标:示例1:输出1到10的数字运行结果:示例2:计算1到100的累加和运行结果:嵌套循环:输出乘法表运行结果:3 while 循环基本语法示例1:猜数字游戏示例2:计算水仙花数运行结果:4 do-while 循环基本语法特点:至少执行一次循环体(先执行,再判断条件)。示例:输入密码验证5 break 和 continue作用:break:立即跳出当前循环。continue:跳过本次循环剩余代码,进入下一次循环。示例:找质数(优化版
2025-05-28 22:53:47
503
原创 Spring AI 整合聊天模型之智谱AI
本文介绍了如何在Spring AI项目中集成智谱AI(ZhiPu AI)的语言模型服务,实现多语言会话助手功能。主要内容包括: 注册智谱AI平台并获取API Key; 配置Spring AI项目,通过application.properties或环境变量安全设置API Key; 添加Maven依赖启用自动配置; 详细说明了聊天属性配置,包括重试机制、连接参数和模型选项; 介绍了可配置的模型参数,如温度、top_p、最大token数等。 文章提供了完整的配置指南,帮助开发者快速集成智谱AI的GLM系列模型(如
2025-05-28 22:19:44
956
2
Windows 最新版本的allure命令行工具
2023-11-21
Jenkins 2.414.1长期支持版本安装环境
2023-09-18
批量导入maven本地库目录到Nexus私有服务器的脚本
2023-06-28
基于JSP的Java Web项目的CSRF防御示例
2023-01-07
Webpack 快速介绍及入门示例的配套示例
2022-06-24
jenkins2.277.4 及解决插件安装相关工具包.rar
2021-05-19
OpenSSL.rar
2022-01-05
spket集合.rar
2021-06-04
Spring Cloud Config的Server 和Client示例项目
2025-03-17
Anaconda Windows安装版
2025-02-01
API 测试工具 - Karate
2025-01-02
Jenkins的HTTP Request插件1.14 版本
2024-12-03
JMeter Linux + Window
2024-10-21
Postman windows 64 安装版
2024-08-13
Spring Boot 3 极速搭建OAuth2认证框架示例项目
2024-08-13
JDepend4Eclipse 解压安装版
2024-08-10
Eclipse附带如下插件: 1. Jdepend 2. Java Dependency Viewer 直接解压就可以使用
2024-08-08
Java Dependency Viewer 的Eclipse 插件离线安装包
2024-08-07
支持 ATDD (Acceptance Test Driven Development) 的工具
2024-01-15
截取动态屏幕截图的工具
2023-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人