- 博客(490)
- 资源 (70)
- 收藏
- 关注
原创 @JsonView 在 Spring Boot 中的实战指南(附完整 Demo + 多接口复用场景)
摘要:本文介绍了Spring Boot中使用@JsonView注解实现动态字段控制的实战方案。通过定义视图接口(如BaseView、PhoneView)绑定实体类字段,可在不同接口(A/B接口复用手机号字段)中灵活控制JSON返回内容,避免创建冗余DTO类。文章包含完整Demo演示,展示如何通过视图继承实现字段复用,解决多场景下同一实体类的差异化序列化需求,同时确保敏感数据安全。
2025-11-24 18:43:56
3
原创 docker启动rockermq
RocketMQ是一个高性能、高可靠的分布式消息中间件,支持异步处理、系统解耦、流量削峰等应用场景。其核心特性包括高性能、高可靠性、高可用性、灵活扩展性和丰富的消息类型。核心组件包括Name Server(路由管理)、Broker(消息存储转发)、Topic(消息分类)和Message Queue(物理存储单元)。部署方式支持单机、集群和云环境,可通过Docker快速启动NameServer、Broker和可视化控制台,提供两种启动方案:单独运行容器或使用docker-compose编排。配置文件broke
2025-11-18 17:26:24
229
原创 告别 mysqldump 痛点!用 mydumper 实现 MySQL 高效备份与恢复
本文介绍了使用 mydumper 替代 mysqldump 实现高效 MySQL 备份与恢复的方法。通过对比两者的核心特性,mydumper 在多线程备份、压缩支持、大表处理等方面优势明显。文章详细讲解了 Docker 部署 mydumper 环境的步骤,并提供了全库备份、指定表备份以及数据恢复的实战操作指南,包括参数说明和注意事项。mydumper 特别适用于中大型数据库场景,能显著提升备份效率并减少对业务的影响。
2025-11-08 19:01:24
773
1
原创 Rabbitmq扇形队列取消绑定交换机之后任然接收消息问题
文章摘要: 该文档描述了RabbitMQ扇形交换机使用过程中遇到的一个问题:当取消队列与交换机的绑定关系后,队列仍然能接收到消息。作者首先展示了正常工作的配置代码,包含三个队列(A1、B1、C1)绑定到扇形交换机。测试时发送的消息能被三个队列正常消费。随后为了业务调整,作者注释掉了A1队列的声明和绑定代码,但发现A1队列依然能接收到消息。这个问题表明在RabbitMQ中,仅从代码层面取消绑定关系可能无法真正从服务器端移除绑定,需要进一步检查服务器状态或执行显式的解绑操作。
2025-10-29 18:34:43
274
原创 不提交也不释放的事务,数据库连接还有可能被复用
本文展示了Spring事务管理下数据库连接池的使用情况。通过HikariCP配置最大连接数为2,在调用事务接口和非事务接口时,观察到连接复用现象:事务接口aa()使用未提交的连接(autoCommit=false),而非事务接口mu()复用已提交的连接(autoCommit=true)。当连接池耗尽时,mu()会复用aa()的事务连接,导致autoCommit状态不一致。测试结果证实了连接池中连接对象(ConnectionImpl)被不同代理(HikariProxyConnection)复用的机制。
2025-10-25 23:32:49
30
原创 微信公众号对接 Spring Boot 服务:实现验证码自动回复功能
本文介绍了如何通过Spring Boot对接微信公众号,实现用户发送“验证码”关键词后自动回复随机验证码的功能。主要内容包括:1)公众号配置(获取AppID、配置服务器回调地址);2)Spring Boot项目搭建(使用OkHttp3调用微信接口);3)核心功能开发(GET接口验证请求、POST接口处理用户消息并生成验证码);4)测试验证流程。该方案适用于用户注册、身份验证等场景,个人订阅号即可实现。
2025-10-25 23:25:07
48
原创 SpringCloud 整合 Zipkin链路追踪
本文介绍了分布式链路追踪工具Zipkin的安装与使用。Zipkin是Twitter开源的分布式跟踪系统,用于收集和展示微服务调用链数据。文章首先概述了Zipkin的作用,然后详细讲解了通过Docker安装Zipkin的方法,包括直接运行镜像和使用docker-compose部署。特别提供了支持MySQL持久化存储的配置方案,并附上了Zipkin所需的MySQL数据库表结构脚本。最后提到SpringCloud整合Zipkin的方法,实现分布式系统的链路追踪功能。全文涵盖了从安装部署到数据持久化的完整流程。
2025-10-24 11:01:11
43
原创 不提交也不释放的事务,数据库连接还有可能被复用
摘要 实验发现Spring事务管理下,未提交事务的数据库连接池连接仍可被复用,这与传统认知相悖。通过配置HikariCP连接池(最大2连接)并设计测试接口,观察到未提交事务的连接会被后续请求复用。这可能导致GTID错误(当MySQL开启GTID且混用事务/非事务表时)以及数据修改丢失问题。研究揭示了Spring事务管理机制与连接池交互的特殊行为,对高并发系统设计具有重要启示。
2025-09-28 17:18:21
58
原创 MySQL GTID一致性错误全解析:从连接池复用到完美解决方案
MySQL GTID一致性错误解析与解决方案 摘要:在微服务架构中,MySQL GTID一致性错误常表现为"一个接口修改导致另一接口报错"的连锁反应。核心问题在于:1)同一事务中混合操作事务型(InnoDB)和非事务型(MyISAM)表;2)连接池污染导致事务状态残留。根本原因是GTID强制校验机制下,非事务表操作会隐式提交"微型事务",与事务型操作冲突。解决方案包括:严格分离不同引擎表操作、确保事务完整提交/回滚、检查GTID参数配置(gtid_mode/enfor
2025-09-28 11:27:27
84
原创 什么是GTID,它有什么作用?
摘要:GTID(全局事务标识符)是MySQL 5.6+引入的特性,由"服务器UUID+事务序号"组成,确保事务在分布式环境中全局唯一可追溯。其核心作用包括:1)简化主从复制故障恢复和新从库搭建,自动定位复制起点;2)避免事务重复执行,保证数据一致性;3)实现事务级追踪监控,快速定位数据不一致问题。不过,GTID要求事务具备原子性,不支持混合引擎操作(如MyISAM和InnoDB混用),否则会触发严格模式报错。GTID通过强制全局一致性机制,显著提升了主从复制的可靠性和运维效率。(149字
2025-09-28 10:06:02
100
原创 mysql默认事务隔离级别下并发读不到最新数据解决方案
从MySQL 5.5开始,InnoDB取代MyISAM成为默认存储引擎,支持事务、行级锁等特性,更适合高并发场景。文章通过用户更新查询案例,演示了事务隔离级别下数据一致性问题:方法b在事务中读取了方法a更新前的旧值。解决方案包括:1)使用悲观锁for update锁定查询行;2)采用共享锁保证读取最新数据。代码示例展示了如何在Spring Boot中实现这两种锁机制解决并发读写问题。
2025-09-22 17:41:03
235
原创 轻松加载外部Jar,实现SpringBoot功能灵活扩展
本文介绍了在SpringBoot项目中动态加载外部Jar包实现功能扩展的方法。针对java -jar启动时-cp参数失效的问题,提出通过配置PropertiesLauncher和loader.path参数来解决。具体步骤包括:修改pom.xml配置ZIP打包方式、执行Maven打包、启动时指定外部Jar路径。该方法支持按环境差异化加载依赖、临时集成第三方SDK等场景,虽然会略微降低启动速度,但显著提升了项目灵活性。需要注意路径格式和类加载优先级问题,适用于功能扩展优先于启动效率的场景。
2025-09-22 15:54:49
163
转载 部署一套完整的 Prometheus+Grafana 智能监控告警系统
本文介绍了开源监控工具Grafana和Prometheus的搭建与应用。Grafana是一个功能强大的数据可视化平台,支持多种数据源和丰富的图表展示方式,并提供警报通知功能。Prometheus作为监控系统,相比Zabbix更加灵活解耦,通过exporter收集数据后由服务端拉取。文章详细讲解了Prometheus的安装配置流程,以及如何添加机器状态监控(node_exporter)。最后介绍了Grafana的安装方法,通过整合Prometheus作为数据源,实现监控数据的可视化展示。整个系统架构清晰:ex
2025-09-17 10:55:17
90
原创 飞书扫码登录对接流程
本文介绍了飞书扫码登录的完整实现流程。开发者需在后台创建应用并配置回调地址,前端通过飞书SDK生成二维码并监听授权结果,用户扫码授权后获取临时code并跳转至回调页。后端通过code换取access_token和用户信息,最后建立用户会话。注意事项包括:回调地址必须完全匹配、App Secret需保密、生产环境需HTTPS等。最后提供了上线前的检查清单,包含应用发布、域名配置、异常处理等功能优化建议。该方案可实现企业级安全登录,代码示例涵盖前后端完整实现。
2025-09-10 15:19:30
797
原创 docker启动Syncthing实现文件夹异地共享或网盘构建
Syncthing 是一个基于 P2P 技术的去中心化文件同步工具,通过 TLS 加密和强加密证书确保通信安全。使用 Docker 部署 Syncthing 2.0.3 版本,两台设备分别启动容器并配置 8384、22000 和 21027 端口。访问 Web 界面后,通过设备 ID 添加对方设备,设置共享文件夹并选择同步设备。高级选项支持配置扫描间隔,并内置版本控制功能,可按照规则备份文件以实现版本恢复。整个过程无需依赖中央服务器,保障数据隐私安全。
2025-08-25 16:39:05
474
原创 arthas整合Docker 容器化集成
本文介绍了三种使用Arthas诊断Java应用的方法:1) 通过jar包方式,下载arthas-boot.jar并连接到目标应用;2) 容器化方式,将Arthas预装到Docker镜像中,通过脚本自动连接;3) 使用arthas-tunnel控制台,直接在应用启动参数中配置Arthas连接。三种方式均可通过指定telnet/http端口实现远程诊断,其中容器化方式提供了完整的Arthas环境预装方案。
2025-08-25 11:37:58
153
原创 vue2整合uniapp、uviewUi小程序开发
本文介绍了在HBuilderX项目中集成uView UI的完整流程:1)使用默认模板初始化项目;2)通过npm安装uView-ui;3)配置全局引入(包括SCSS样式、Vue组件及easycom自动导入);4)演示了列表组件的使用示例。文中特别说明vue.config.js并非必需,仅在需要自定义配置时才需创建。最后提供了官方模板链接供参考。该教程适用于快速搭建基于uni-app和uView UI的移动端项目。
2025-08-22 10:35:07
791
原创 Spring Boot + Flink CDC + MongoDB:打造实时数据变化监听与策略路由系统
本文提出了一种基于Spring Boot + Flink CDC + MongoDB的实时数据管道方案,解决了传统微服务架构中数据库变更监听实时性差、代码侵入性高的问题。该方案通过Flink捕获MongoDB变更事件,并由Spring Boot进行策略路由与业务处理,实现零侵入、低延迟、高扩展的数据变更响应。文章详细介绍了整体架构、核心组件实现(包括配置中心、Flink CDC任务、反序列化与策略路由等),并列举了典型应用场景和开发中遇到的常见问题。该方案无需修改业务代码,支持毫秒级事件处理,新增表只需简单
2025-08-20 10:17:58
218
原创 深入理解 Spring 事务同步器:为什么嵌套的 afterCommit 不执行?
本文通过一个实际案例分析了Spring事务同步器的执行机制,解释了为什么嵌套注册的afterCommit回调不执行。关键点在于事务同步器必须在事务活跃期内注册才有效,而案例中的嵌套注册发生在外部事务已提交阶段。文章提供了修正方案,强调同步器应在事务方法内直接注册,避免在回调中嵌套注册。最佳实践包括:确保注册时机在事务活跃期、遵循单一职责原则、根据业务场景合理设计事务边界。理解这些原理可避免类似问题,编写更可靠的事务相关代码。
2025-08-07 23:18:21
176
原创 基于 ShardingSphere 的 Spring Boot 数据加密与模糊查询实现
本文介绍了基于ShardingSphere和Spring Boot实现数据加密与模糊查询的完整解决方案。项目采用AES加密敏感数据,通过ShardingSphere的CHAR_DIGEST_LIKE加密器支持加密字段的模糊查询功能。配置包括数据源设置、加密规则定义(AES、MD5和模糊查询专用加密器)以及特殊设计的数据库表结构(添加salary_like字段)。该方案既保障了数据安全,又解决了加密数据难以进行模糊匹配的难题,适用于需要同时满足数据保护和复杂查询需求的场景。
2025-08-06 14:25:48
283
原创 Spring Boot 集成 ShardingSphere 实现读写分离实践
本文介绍了Spring Boot集成ShardingSphere实现数据库读写分离的实践方案。选用Spring Boot 2.7.9、ShardingSphere 5.1.1和MySQL 8.0.32等技术栈,通过配置主库(one)和两个从库(two、three)实现读写分离。文章详细说明了Maven依赖配置、数据库准备和表结构创建,其中关键依赖包括shardingsphere-jdbc-core和mybatis-plus-boot-starter。实现方案通过在三个数据库中创建相同的menu表结构,为后续
2025-08-05 11:51:17
267
原创 MyBatis-Plus 实战:敏感字段自动加解密支持模糊查询
本文基于MyBatis-Plus框架提出了一种全链路敏感字段加密方案。通过自定义TypeHandler实现数据入库自动加密和查询自动解密,结合重写LambdaQueryWrapper处理查询条件加密,并适配多种查询方式。方案核心包括:1)AESUtil工具类提供加解密基础能力;2)EncryptTypeHandler实现字段类型转换;3)实体类通过注解配置加密字段。该方案在保证数据安全的同时,对业务代码侵入性小,支持姓名、手机号等敏感信息的全流程加密处理,满足系统开发的安全需求。
2025-08-01 12:05:13
316
原创 CentOS 搭建 Docker 私有镜像仓库
本文详细介绍了在CentOS系统上搭建Docker私有镜像仓库的完整流程。主要内容包括:环境准备(安装Docker、开放端口)、搭建私有仓库(拉取registry镜像、启动容器)、配置访问权限(生成密码文件、设置认证)、客户端访问配置、测试仓库功能(推送/拉取镜像)以及日常维护方法(查看镜像、清理数据)。通过细致的步骤说明和操作命令展示,帮助用户快速建立安全可靠的私有镜像仓库,为团队提供高效的Docker镜像管理解决方案。
2025-07-26 00:59:54
1051
原创 centos中新增硬盘挂载文件夹
本文介绍了Linux系统中新硬盘的分区、格式化与挂载步骤: 使用fdisk创建分区并格式化为ext4或xfs文件系统; 创建挂载目录并临时挂载; 通过blkid获取UUID并写入/etc/fstab实现开机自动挂载; 提供mount -a验证配置的方法。 注意事项包括:操作前备份数据、正确配置fstab防止启动故障、根据需求选择文件系统类型等。完成所有步骤后,重启系统即可验证自动挂载是否成功。
2025-07-17 18:02:42
282
原创 arthas基本使用
本文介绍了Arthas工具的基本使用方法,包括下载启动、接口耗时排查、CPU飙升问题定位、代码反编译等功能。通过具体命令示例和测试代码演示了如何跟踪接口执行时间、分析高CPU线程、查看反编译代码等常见诊断场景。文章还提到可以结合IDEA插件快速生成Arthas命令,展示了dashboard查看系统整体状态的功能。这些方法能帮助开发者快速诊断Java应用性能问题。
2025-07-16 15:35:09
118
原创 Ubuntu 的Multipass虚拟机安装使用
Multipass是由Canonical推出的轻量级虚拟机管理器,支持Linux、Windows和macOS系统,分别采用KVM、Hyper-V和HyperKit技术实现低开销运行。它通过命令行快速创建和管理Linux虚拟机,支持自定义CPU、内存和磁盘配置,并提供文件挂载、传输等功能。安装简单,使用方便,适合本地模拟小型云环境
2025-07-05 23:47:23
234
原创 MinIO 用户权限管理实战指南:从创建用户到策略分配
本文详细介绍了MinIO分布式对象存储系统的用户权限管理流程,包括五个关键步骤:1)使用mc工具创建用户;2)通过JSON文件配置访问策略;3)注册策略到服务器;4)将策略分配给指定用户;5)验证权限配置。文章提供了具体命令和示例,帮助管理员掌握如何为不同用户分配精确的存储资源访问权限,确保系统安全性和数据隔离性。特别强调了在策略文件中定义操作权限和资源范围的方法,以及通过上传测试验证权限配置的有效性。
2025-06-23 12:12:54
1293
原创 Redis 的三种集群模式_redis 集群三种方式
Redis集群模式包括主从复制、哨兵模式和Cluster集群三种方式。主从复制通过读写分离提升性能,但需要手动故障切换;哨兵模式引入自动化监控与故障恢复机制,实现高可用性;Cluster集群采用分布式存储和哈希槽分片技术,支持在线扩容,是官方推荐的集群方案。每种模式各有优缺点,需根据业务场景选择合适的部署方式,其中Cluster集群通过主从复制模型进一步保障了高可用性。
2025-06-19 16:44:38
685
原创 Maven 打包后 ip2region.xdb 文件引发 ArrayIndexOutOfBoundsException 异常的解决之旅
摘要: 本文分享了解决Maven打包后ip2region.xdb文件引发ArrayIndexOutOfBoundsException异常的过程。本地测试正常的IP归属地查询功能在部署后失效,原因是Maven误将二进制xdb文件当作文本进行资源过滤,导致文件损坏。通过在pom.xml中配置maven-resources-plugin插件,禁止对.xdb文件进行过滤,成功解决问题。文章还深入解析了Maven资源过滤机制和插件配置技巧,强调了对构建工具原理理解的重要性。该案例为处理类似二进制文件打包问题提供了参考
2025-06-16 11:47:53
181
原创 使用 Prometheus 监控 Spring Boot 应用
本文介绍了使用SpringBoot+Prometheus+Grafana实现应用监控的方案。首先在SpringBoot项目中集成Micrometer和Actuator组件,通过配置暴露Prometheus监控端点。接着配置Prometheus采集应用指标数据,并通过Grafana可视化展示。具体步骤包括:1)SpringBoot集成Micrometer;2)配置Prometheus抓取应用指标;3)安装Grafana并导入SpringBoot监控模板;4)展示JVM和业务指标。该方案可以实现对SpringB
2025-06-16 11:43:23
249
原创 Spring Boot中使用@JsonAnyGetter和@JsonAnySetter处理动态JSON属性
摘要: 本文介绍了在Spring Boot中使用Jackson的@JsonAnyGetter和@JsonAnySetter注解处理动态JSON属性的方法。通过定义DynamicProperties类存储固定字段和动态属性,配合Spring Boot控制器接收和返回JSON数据,实现了灵活处理不固定数据结构的需求。特别说明该方案仅适用于@RequestBody场景,因为Jackson的反序列化机制是触发注解生效的关键。这种方法增强了系统对动态JSON属性的处理能力,适用于前端数据结构多变或需求频繁变更的业务场
2025-05-30 10:50:58
502
3
原创 Java中使用自定义序列化器:自动添加自定义字段返回前端实现与应用
本文介绍了如何在 Java 中实现一个自定义的 BigDecimal 序列化器,以在序列化过程中自动添加格式化后的视图字段。通过使用 JsonSerializer 和 DecimalFormat,我们可以在输出 JSON 数据时,既保留原始的 BigDecimal 数值,又添加一个格式化后的字符串字段,便于前端展示。文章详细展示了如何定义 BigDecimalViewSerializer 序列化器,并将其应用于实体类中的 BigDecimal 字段。此外,还提供了测试示例,展示了序列化后的 JSON 输出效
2025-05-13 16:46:32
188
原创 Java中使用自定义序列化器:自动添加动态字段的实现与应用
在Java开发中,处理BigDecimal类型数据时,常常需要在序列化过程中添加格式化后的视图字段,以满足前端展示需求。本文通过实现一个自定义的BigDecimalViewSerializer序列化器,展示了如何在序列化时自动添加view字段。该序列化器继承自JsonSerializer<BigDecimal>,重写serialize方法,在输出原始数值的同时,生成格式化后的视图字段。通过@JsonSerialize注解,可以将该序列化器应用于实体类中的BigDecimal字段。最终,返回的JS
2025-05-13 10:36:37
225
原创 Git标签删除脚本解析与实践:轻松管理本地与远程标签
本文介绍了一个用于删除本地和远程 Git 标签的脚本,并详细解析了其逻辑和使用注意事项。脚本首先检查本地标签,若不存在则从远程拉取,随后批量删除本地标签。接着,脚本检查远程标签,并通过循环逐个删除。使用该脚本时需注意权限问题、备份重要标签以及处理特殊字符。通过合理运用该脚本,开发者可以更高效地管理 Git 标签,确保版本控制的清晰和规范。
2025-05-09 14:40:15
321
原创 利用 SSE 实现文字吐字效果:技术与实践
Server-Sent Events 是一种允许服务器向客户端发送实时更新的 Web API。与传统的轮询(客户端定期向服务器发送请求以获取更新)或 WebSocket(全双工通信)不同,SSE 是单向的,即服务器可以主动向客户端推送数据,而客户端只能接收。这种单向通信模式非常适合那些只需要服务器向客户端发送数据的场景,如新闻更新、股票价格变化、实时日志等。简单易用:相比于 WebSocket,SSE 的实现更加简单,不需要复杂的握手过程。自动重连:如果连接中断,浏览器会自动尝试重新连接到服务器。
2025-04-24 22:31:57
192
原创 FileCodeBox 文件共享部署超详细教程
FileCodeBox 就像一个线上的文件快递柜,你可以把文件 “寄存” 其中,设置取件码后分享给他人,对方凭借取件码就能提取文件。整个过程简单高效,且注重隐私保护。
2025-04-23 12:44:43
1450
原创 tree命令生成目录树
在文件管理和项目开发过程中,我们常常需要快速了解目录下文件和文件夹的层级结构。tree命令是一款实用的命令行工具,它能够以树形结构直观地展示目录内容,让用户一目了然地看清文件系统的组织架构。无论是整理复杂的项目文件、排查文件路径问题,还是向他人展示项目目录布局,tree命令都能派上用场。接下来,我们就详细介绍tree命令在不同操作系统下的安装方法和使用技巧。
2025-04-22 13:10:12
1467
原创 Spring Boot 中基于 Reactor 的服务器端事件(SSE)推送机制实践
SSE 是 HTML5 规范的一部分,它允许服务器向客户端推送实时更新。与传统的轮询(Polling)方式相比,SSE 通过建立持久的 HTTP 连接,减少了不必要的请求开销,极大地提升了实时数据传输的效率。客户端只需创建一个对象,就能轻松接收服务器推送的事件流,而服务器则负责将数据以特定格式(如)发送给客户端。方法是实现 SSE 推送的核心接口。通过注解将该方法映射到路径,并指定,表明该接口返回的数据类型为,符合 SSE 的数据格式要求。在方法内部,首先使用创建一个每秒发出一个元素的Flux流。
2025-04-19 20:47:20
426
原创 模板方法模式 :深入理解设计模式
首先,我们创建一个名为的抽象类,它将作为我们冲泡饮品的模板。// 抽象类,定义准备饮料的算法骨架// 模板方法,定义了算法的骨架brew();// 具体步骤:烧水// 抽象步骤:冲泡// 具体步骤:倒入杯子// 抽象步骤:添加调料// 钩子方法,子类可以重写此方法来控制是否添加调料在这个抽象类中,方法就是我们的模板方法,它定义了冲泡饮品的整体流程。boilWater和pourInCup方法是所有饮品冲泡过程中都相同的具体步骤,因此在抽象类中直接实现。而brew和。
2025-04-17 17:21:44
898
dynamic-datasource-aop-copy
2020-07-09
dynamic-datasource-aop-loop.rar
2020-07-10
sping-boot-shiro-jwt-redis-refreshtoken.zip
2020-08-25
springboot-RedisKeyExpirationListener.zip
2020-05-02
mybatisplusPage.zip
2019-12-27
微信公众号对接 Spring Boot 服务:实现验证码自动回复功能
2025-10-25
Spring Boot + Flink CDC + MongoDB** 为核心,演示一套 零侵入、低延迟、高扩展的实时数据管道
2025-08-20
ShardingSphere 的 Spring Boot 数据加密与模糊查询实现
2025-08-06
shardingsphere-jdbc整合springboot实现读写分离
2025-08-05
基于MyBatis-Plus全链路敏感字段加密方案 通过自定义TypeHandler实现数据入库自动加密和查询自动解密和模糊查询
2025-08-01
分布式下,springboot一个注解防重复提交starter
2024-10-16
超卖问题的4种解决方案、秒杀方案
2024-09-10
整合canal监听mysql
2024-05-13
springCloudAlibaba的一个demo,包括注册中心,配置中心,服务熔断降级、链路追踪、seata分布式事务
2021-10-02
oneToMany-OneToOne-search.zip
2020-10-10
appname.sh
2020-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅