- 博客(119)
- 收藏
- 关注
原创 APP性能测试(1)——Jmeter_app可以使用jmeter进行测试吗(1)
手机端设置完毕后,在Jmeter代理页面,点击启动,开始录制脚本,同时在手机上操作待测试APP软件,从Jmeter上就可以看到录制之后的请求了。step2:在WiFi中设置代理为“手动”模式,服务器主机名设置为Jmeter服务器的IP地址,端口为Jmeter中设置的端口;(3)在HTTPS Domains中填写打开jmeter的电脑的ip地址,端口默认为8888(可自行修改)。脚本优化完毕后,即可设置线程组的相关属性,然后执行测试,测试完成后可在聚合报告中查看结果。(8)运行脚本进行测试。
2024-04-21 21:00:31 444
原创 App功能测试的7大注意点,赶紧收藏
6)当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。3)App切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。7)出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。5)当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否是新版本。4)当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。
2024-04-21 20:56:49 581
原创 App功能测试的7大注意点(1),2024年最新算法题+软件测试
6)当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。7)出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。3)当版本为强制升级版时,但给出强制更新后用户没有做更新时,退出客户端。5)当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否是新版本。4)当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。6)当杀掉App进城后,再开启App,App能否正常启动。
2024-04-21 20:56:18 578
原创 Appium面试题,2024年最新春招我借这份PDF的复习思路
测试为⼿持移动设备制作的应⽤程序软件的功能、可⽤性和⼀致性的做法称为移动应⽤程序测试。移动应⽤程序测试可以通过两种⽅式完成:⾃动或⼿动。它与移动测试不同,移动测试侧重于移动设备的原⽣应⽤程序功能,例如通话、短信和媒体播放器等。同时,在移动应⽤测试中,我们只关注特定应⽤的操作和端到端的特性。
2024-04-21 20:55:47 1011
原创 银行软件测试:基于互联网金融平台的测试框架设计与分析
如果采用基于GUI的方式做自动化测试,个人感觉针对页面元素的识别和校验往往并不能反映数据正确性,而在处理页面元素异常的时候,也往往无法针对复杂业务逻辑和数据做较强的处理和效益,而且GUI是模拟人工处理,在执行效率上面,也是效果较差,而且如果出现某个页面元素无法识别或者异常,有可能中断整个页面的处理,在分析代码覆盖率的时候,基于web的方式也不是那么容易分析。ruby +watir 的原理和selenium也是类似,也是一种基于WEB GUI的自动化测试框架,笔者研究甚少,也就不多言了。
2024-04-20 21:03:50 293
原创 针对 WebSocket 协议的 Locust 压测脚本实现(基于 Locust 1
正常 OK 响应,或者其它心跳响应加入进来避免当作异常处理。# 为每个推送过来的事件进行归类和独立计算性能指标。# 针对 WSS 关闭 SSL 校验警报。
2024-04-20 21:02:47 937
原创 针对 WebSocket 协议的 Locust 压测脚本实现(基于 Locust 1(1)
也可以在死循环内加入心跳发送,但建议建议按照规则发送,避免过于频繁,此处略。# 正常 OK 响应,或者其它心跳响应加入进来避免当作异常处理。# 为每个推送过来的事件进行归类和独立计算性能指标。
2024-04-20 21:02:15 394
原创 金山逍遥网 sersync 服务器实时镜像同步方案_sersync 镜像
Wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz(有时下载失败,所有要本地留存才行)新建一个文件保存好密码,然后在rsync命令中使用–password-file指定此文件即可。在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件。log file = /var/log/rsyncd.log #日志文件。#rsync模块名称。
2024-04-20 21:01:12 400
原创 金九银十跳槽季,如何冲击测试大厂?你准备好了吗?_测试开发冲击ssp
再者大厂的各项规章制度和福利待遇都比较完善,你可以见识到很多成熟的系统和优秀的做法和理念。因此,如果你一毕业就进入了大厂,那么你的第一份工作的收入、起点和视野就会比同龄人高很多。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!以工资收入来说,未进大厂的,可能在社会上摸爬滚打好多年才勉强达到月薪 2~3 万,而进大厂可能工作一两年就够了,甚至有些大厂开出的 SSP 直接就有三五十万。
2024-04-20 21:00:41 750
原创 金三银四面试必备的软件测试八股文,看完拿捏面试官,2024年最新软件测试高级工程师进阶学习】
有, 输入数据和输出数据为 0 的情况. 输入表格为空格或输入表格只有一行.SQA 由一套软件工程过程和方法组成,以保证(软件的)质量。中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还。输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相。1)等价类划分: 等价类是指某个输入域的子集合.在该子集合中,各个输入数。试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无。类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于。
2024-04-20 21:00:11 830
原创 里氏替换原则——面向对象设计原则_里氏替换原则应用场景
正确的做法是:取消几维鸟原来的继承关系,定义鸟和几维鸟的更一般的父类,如动物类,它们都有奔跑的能力。因为正方形已经没有了 setWidth() 和 setHeight() 方法,所以,为了约束继承泛滥,resize() 方法的参数只能用长方形 Rectangle 类。在 JavaDiscountCourse 类中获取折扣价格时重写了父类的 getPrice() 方法,增加了一个获取源码的 getOriginPrice() 方法,这明显违背了里氏替换原则。在测试类中,创建 resize() 方法。
2024-04-20 20:57:06 868
原创 采集摄像头数据的Golang应用_如何获取摄像头数据,2024年最新别再说你不会
这个案例使用了OpenCV中的级联分类器(Cascade Classifier)来检测人脸和眼睛,并通过在图像中绘制矩形来标记它们的位置。这个案例使用了级联分类器来检测人脸,并在摄像头采集的实时视频流中标记人脸的位置。使用蓝色矩形框标记检测到的人脸。这个案例使用了级联分类器来检测全身,并在摄像头采集的实时视频流中标记全身的位置。但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。我们还可以进行更多复杂的图像处理,比如边缘检测、人脸识别等,这超出了本文的范围。
2024-04-20 20:56:03 921
原创 醒醒吧,这才叫自动化测试最全教程,看完可就业!_如何通过读取测试用例来实现自动化测试
性能自动化测试是通过测试工具模拟高并发负载进行压力测试,以发现软件系统在高负载情况下运行瓶颈,这里系统瓶颈包含多个部分,应用程序本身的性能瓶颈、网络瓶颈,服务器硬件资源瓶颈(CPU,MEM,DISK),数据存储服务器等,这一测试活动通常唯有借助自动化测试工具来完成,常见的性能测试工具有Loadrunner,Jmeter,Mgrinder,Gatling等,不管哪一款测试工具,基本有三大部分组成:测试脚本管理,测试场景配置,监控结果。
2024-04-20 20:55:32 436
原创 配置多个git账号或多个SSH账号_git ssh 多个git账号,2024年最新面试考点与面试技巧
开发过程中可能会需要在同一台电脑上配置两个git账号,一个账号用来将公司产品推到公司的代码仓库,另一个账号需要将自己私人的“玩具”推到github等平台,这就可能会需要使用不同的端口号或者不同的rsa秘钥(对应不同的邮箱地址)连接不同的代码仓库。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!在当前用户文件夹的“.ssh”文件夹中可以找到生成的公钥秘钥文件。Host 阿里云code。
2024-04-20 20:53:49 870
原创 配置多个git账号或多个SSH账号_git ssh 多个git账号(1)
不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!将config文件保存即可完成所有配置。Host 阿里云code。
2024-04-20 20:53:18 742
原创 配置vCenter Server Appliance 6(1),2024年最新软件测试面试知识点梳理
在vCenter的逻辑中,ESXI属于主机,由于不考虑集群容灾的功能,所以先将ESXI挂到数据中心下。点击上方提示的“管理您的许可证”后,来到“许可证”界面。选择刚才添加的许可证(vCenter6许可01),点击“确定”。选中vCenter的节点,右键,点击“新建数据中心”。由于搭建的ESXI服务器的不可信证书,点击“是”。输入服务器的用户名/密码,点击“NEXT”。选中数据中心节点,右键,点击“添加主机”。输入数据中心的“名称”后,点击“确定”。点击“资产”后,点击“分配许可证”。
2024-04-20 20:52:13 618
原创 那么多优秀的自动化测试工具,而你只知道Selenium?_selenium和postman的区别(2)
Selenium WebDriver是一个框架,它可以帮助我们在Selenium IDE上编写Java,C#,PHP,Python,Perl,Ruby等语言的脚本,并将其发送到浏览器上。Apium与移动应用程序有关,无论是andriod原生、混合,还是基于H5的移动应用程序,都有着密切的联系。由于Selenium可以在不同的应用程序上进行自动化测试,因此,它也是Web应用程序的主要测试工具之一。现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
2024-04-20 20:51:10 875
原创 那么多优秀的自动化测试工具,而你只知道Selenium?_selenium和postman的区别(1)
Selenium WebDriver是一个框架,它可以帮助我们在Selenium IDE上编写Java,C#,PHP,Python,Perl,Ruby等语言的脚本,并将其发送到浏览器上。因此,在实际工作中,说到Postman,想必大家都不会陌生,因为这个测试工具在API测试上,发挥了自己的优势。由于Selenium可以在不同的应用程序上进行自动化测试,因此,它也是Web应用程序的主要测试工具之一。现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
2024-04-20 20:50:38 527
原创 避免defer陷阱:拆解延迟语句,掌握正确使用方法,Golang工程师面试题及答案
这是因为defer语句的设计初衷是为了在函数返回之前执行一些清理操作,例如关闭文件、释放资源等。将defer语句放在return语句之后,可以确保在函数返回之前执行这些清理操作,保证函数的执行完整性和资源的正确释放。延迟语句的使用可以提高代码的可读性和可维护性,同时确保资源的释放和清理操作按照逆序进行。第二步,改变的是传值进去的r,是形参的一个复制值,不会影响实参r。这是因为defer语句的执行时机是在包裹函数即将返回之前,但在实际返回之前。//2.这里改的r是之前传进去的r,不会改变要返回的那个r值。
2024-04-20 20:50:07 724
原创 功能介绍 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!_goby可以扫域名带路径吗(1)
这个功能已经开放给所有版本用户使用,各位师傅们可根据自己的使用场景,利用Goby协议API打造更加便捷的专属Goby小插件。注意哦:这个功能需要在至少打开过一次Goby的时候使用,否则无效!我们已将API文档更新至官方文档,后续会补充更多,我们期待这项新功能为各位师傅们带来独特的收获和体验。我们鼓励大家在使用过程中及时反馈问题,将您的使用体验、建议和bug报告发送给Goby团队。这有助于我们更及时、精准地改进和优化这一功能。期待听到您的宝贵意见,共同打造更为强大而稳定的Goby!
2024-04-19 03:44:15 843
原创 一篇文章带你了解Python常用自动化测试框架 —— Pytest_python自动化框架怎么看
ifname== ‘main’:ifname== ‘main’:passprint(“执行SQL查询”)yieldprint(“关闭数据库连接”)return [“胡桃”,“胡桃宝宝”,“胡桃厨”]查询当前目录下的conftest.py文件查询当前目录下的pytest.ini文件并找到测试用例的位置查询用例目录下的conftest.py文件查询测试用例的py文件中是否有setup,teardown,setup_class,teardown_class。
2024-04-18 22:13:28 838
原创 【C++学习笔记】C+,2024年最新一线互联网架构师筑基必备技能之Golang篇
说得直接一点,检测到异常后程序的执行流会发生跳转,从异常点跳转到 catch 所在的位置,位于异常点之后的、并且在当前 try 块内的语句就都不会再执行了;而第 8 行代码则不同,at() 函数检测到下标越界会抛出一个异常,这个异常可以由程序员处理,但是我们在代码中并没有处理,所以系统只能执行默认的操作,也即终止程序执行。异常可以发生在当前的 try 块中,也可以发生在 try 块所调用的某个函数中,或者是所调用的函数又调用了另外的一个函数,这个另外的函数中发生了异常。这些异常,都可以被 try 检测到。
2024-04-18 17:52:33 960
原创 【C++学习笔记】C+(6),2024年最新帮你突破瓶颈
一个类就是一个作用域的事实能够很好的解释为什么我们在类的外部定义成员函数时必须同时提供类名和函数名。在类的外部,类内部成员的名字是不可见的。一旦遇到类名,定义的剩余部分就在类的作用域之内了,这里的剩余部分包括参数列表和函数体。结果就是,我们可以直接使用类的其他成员而无需再次授权了。请看下面的例子:#includeclass A{public:public:private:int n;n = 10;A obj;return 0;
2024-04-18 17:52:03 1002
原创 SQL 的简单教程(Mac 下 PostgreSQL 的安装与使用)(1)_mac postgresql 导入sql
INSERT INTO Product VALUES (‘0004’, ‘菜刀’, ‘厨房用具’,3000, 2800, ‘2009-09-20’);INSERT INTO Product VALUES (‘0001’, ‘T恤衫’, ‘衣服’, 1000, 500, ‘2009-09-20’);INSERT INTO Product VALUES (‘0006’, ‘叉子’, ‘厨房用具’,500, 0, ‘2009-09-20’);
2024-04-18 13:09:01 1008
原创 SQL 的简单教程(Mac 下 PostgreSQL 的安装与使用)(1)_mac postgresql 导入sql(1)
INSERT INTO Product VALUES (‘0002’, ‘打孔器’, ‘办公用品’, 500, 320, ‘2009-09-11’);INSERT INTO Product VALUES (‘0006’, ‘叉子’, ‘厨房用具’,500, 0, ‘2009-09-20’);INSERT INTO Product VALUES (‘0008’, ‘圆珠笔’, ‘办公用品’,100, 0,‘2009-11-11’);
2024-04-18 13:08:31 576
原创 redis源码阅读—hyperloglog(基数统计)_redis hyperloglog 源码
此时为了性能考虑,是不会去统计当前的基数的,而是将HLL的头里面的一个标志位置为1,表示下次进行pfcount操作的时候,当前的缓存值已经失效了,需要重新统计缓存值。也就是使用了约12k的内存。这个其实redis比较牛逼的地方,其实用一个字节来存的话,其实也就是16k的内存,但是为了能省4k的内存,搞出一堆。抽象到计算机存储中去,就是存储的是一个以单位是比特(bit),长度为 L 的大数组 S ,将 S 平均分为 m 组,注意这个 m 组,就是对应多少轮,然后每组所占有的比特个数是平均的,设为 P。
2024-04-17 20:55:22 756
原创 redis源码阅读—dict(字典结构)_字典规则源,膜拜
因为在进行渐进式 rehash 的过程中, 字典会同时使用 ht[0] 和 ht[1] 两个哈希表, 所以在渐进式 rehash 进行期间, 字典的删除(delete)、查找(find)、更新(update)等操作会在两个哈希表上进行: 比如说, 要在字典里面查找一个键的话, 程序会先在 ht[0] 里面进行查找, 如果没找到的话, 就会继续到 ht[1] 里面进行查找, 诸如此类。对于新建的dict,执行的代码为dictExpand(d, DICT_HT_INITIAL_SIZE)。
2024-04-17 20:54:52 878
原创 MySQL基础入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_mysql入门到精通(1)
聚合函数语法SELECT 聚合函数(字段列表) FROM 表名;常见聚合函数案例。
2024-04-17 15:13:26 822
原创 MySQL创建数据库及常用命令_mysql创建命令,含爱奇艺,小米,腾讯,阿里
表示访问的主机名,identified by表示密码。localhost表示允许本机IP(127.0.0.1)访问(使用局域网的主机IP使用下面一条语句)鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!,包括列名,各种完整性,数据类型等详细信息:show columns from 表名。-h表示主机名,这里在本地;MySQL命令不区分大小写。:create database 数据库名。允许使用外网Ip访问,本机当然可以。
2024-04-17 15:12:55 425
原创 Google Play 更新指南 _ 提高您的应用质量与曝光度,Golang程序员最大的悲哀是什么
IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!我们还将针对您提供的置顶大图、屏幕截图、视频和简短描述推出新的商品详情页预览资源指南,以显示您的应用特色和功能。您可以查看下方的允许事项和禁止事项示例,并考量这些更改可能会对您产生的影响,以便为即将推出的政策变更做好准备。
2024-04-17 08:00:32 699
原创 Google Play 更新指南 _ 提高您的应用质量与曝光度(1),2024年最新2024年这些高频面试知识点最后再发一次
在即将推出的政策中,不合规的应用标题、图标和开发者名称将不允许在 Google Play 上出现。IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!我们还将针对您提供的置顶大图、屏幕截图、视频和简短描述推出新的商品详情页预览资源指南,以显示您的应用特色和功能。您可以查看下方的允许事项和禁止事项示例,并考量这些更改可能会对您产生的影响,以便为即将推出的政策变更做好准备。
2024-04-17 07:59:29 418
原创 Docker Golang 开发环境搭建指南_docker golang开发环境
为了简化这个过程并保持开发环境的一致性,我们可以使用 Docker 来创建一个统一的 Golang 开发环境。可以使用任何喜欢的文本编辑器,修改容器内的代码,并使用 Golang 工具链来编译和运行代码。首先,我们需要安装 Docker。在搭建 Golang 开发环境之前,我们需要创建一个 Dockerfile 文件,以定义我们的镜像配置。选项将容器的 8080 端口映射到主机的 8080 端口,使得我们可以通过主机的浏览器访问容器中运行的应用。命令来创建并运行一个容器,以开发我们的 Golang 项目。
2024-04-17 04:13:14 809
原创 Docker Golang 开发环境搭建指南_docker golang开发环境(1)
容器运行后,我们可以在其中进行 Golang 项目的开发。可以使用任何喜欢的文本编辑器,修改容器内的代码,并使用 Golang 工具链来编译和运行代码。为了实现这一目的,我们可以在容器内启用一个远程调试服务器,并通过远程调试器连接它。选项将容器的 8080 端口映射到主机的 8080 端口,使得我们可以通过主机的浏览器访问容器中运行的应用。命令来创建并运行一个容器,以开发我们的 Golang 项目。,然后将源代码复制到容器中,并安装依赖,构建应用。以上命令将在容器中构建并运行我们的应用。
2024-04-17 04:12:43 1013
原创 Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包(1)
com.tencent.android.qqdownloader | 应用宝 || com.huawei.appmarket | 华为应用市场 || com.taobao.appcenter | 淘宝手机助手 || com.wandoujia.phoenix2 | 豌豆荚 || com.baidu.appsearch | 百度手机助 || com.xiaomi.market | 小米应用商店 || com.hiapk.marketpho | 安卓市场 || 包名 | 商店 |
2024-04-17 00:06:25 632
原创 Android自动化测试之monkeyrunner,2024年最新5214页PDF的进阶架构师学习笔记
注:里面exception的提示我们可以忽略,因为我们可以看见 Monkey Command: press KEYCODE_MENU已经执行成功。注意:SDK上的例子有些错误,不可直接复制,否则执行命令时会发生错误。具体可与我的上面这段代码对照。4、 可以Android_Root\tools下查看生成的shot1.png的截图。
2024-04-17 00:05:55 801
原创 软件测试工程师的职业发展方向_测试工程师职业发展路径
任何严格的测试必须是一种实事求是的测试,因为它关系到一个产品的质量问题,而测试工程师则是产品出货前的把关人,所以,没有专业的技术水准是无法胜任这项工作的。,其实各种工具只是自动化测试实施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。(常用的RedHat,SUSE,Debian)/Unix(FreeBSD,Solaris,HP-UX,AIX,Mac)系统。具体工作:执行测试用例,记录bug,并回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。
2024-04-16 14:35:47 302
原创 软件测试工具大全(这可能是目前为止最全的测试工具集合)_测试工具v5
DataQuality - DQ 是一个在大数据环境中构建并行和分布式质量检查的框架。Qualitis - 一个支持多种异构数据源的质量校验、通知、管理服务的数据质量管理平台,用于解决业务系统运行、数据中心建设及数据治理过程中的各种数据质量问题。sinon - 在测试中提供独立的 spies, stub, mock 功能,通过所谓的测试替代(test-double)轻松消除测试的复杂度。chaos-monkey-spring-boot - 用于 Spring Boot 的 Chaos Monkey。
2024-04-16 14:35:17 636
原创 每个开发人员都应该知道的六个生成式 AI 框架和工具_生成式ai开源
通过将这些数据索引为针对 LLM 优化的格式,LlamaIndex 促进了自然语言查询,使用户能够无缝地与他们的私有数据进行对话,而无需重新训练模型。充当桥梁,将 LLM 的强大功能与不同的数据源连接起来,从而开启了一个新的应用程序领域,可以利用自定义数据和高级语言模型之间的协同作用。通过提供用于数据摄取、索引和自然语言查询界面的工具,LlamaIndex 使开发人员和企业能够构建强大的数据增强应用程序,从而显着增强决策和用户参与度。加载后,对数据进行解析,以易于理解的方式分析和构建内容。
2024-04-16 09:01:15 462
原创 每个开发人员都应该知道的六个生成式 AI 框架和工具_生成式ai开源(1)
通过将这些数据索引为针对 LLM 优化的格式,LlamaIndex 促进了自然语言查询,使用户能够无缝地与他们的私有数据进行对话,而无需重新训练模型。充当桥梁,将 LLM 的强大功能与不同的数据源连接起来,从而开启了一个新的应用程序领域,可以利用自定义数据和高级语言模型之间的协同作用。通过提供用于数据摄取、索引和自然语言查询界面的工具,LlamaIndex 使开发人员和企业能够构建强大的数据增强应用程序,从而显着增强决策和用户参与度。加载后,对数据进行解析,以易于理解的方式分析和构建内容。
2024-04-16 09:00:45 324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人