- 博客(58)
- 收藏
- 关注
原创 信贷流程配置平台
本文阐述了海外业务信贷流程配置平台的系统化设计与实践成果;通过构建流程引擎,支持可视化业务流程编排,搭建渲染引擎,支持页面组件化配置;以低代码配置模式替代传统硬编码开发,实现了信贷业务流程的全面升级。
2025-03-25 16:06:20
657
原创 提升跨境网络速度-在国际与国内环境中实现加速连接
随着中国经济的快速发展和全球化的深入,在国家“一带一路”政策支持下,越来越多的中国企业开始将视野投向国际市场。与此同时,在网络稳定性及传输速度方面的挑战愈加明显。我司在巴基斯坦开展业务前期,同样面临网络层面的挑战;
2024-12-09 12:01:38
900
原创 Redis双活切换平台建设
随着公司目前整体双活能力的建设完成,需要对Redis组件的双活能力进行演练和验证。但在实际生产环境中,面对如此大规模的Redis集群,演练过程中几个关键问题仍然存在:主从切换时间长、系统高可用要求高、运维流程复杂,并且在Redis集群切换过程中涉及到内存数据的同步,直接影响到业务系统的稳定性。因此急需对Redis集群的双活切换操作进行自动化平台建设,简化运维操作流程,精细化管控切换细节,提升整体的切换效率,保证双活演练稳定和高效的开展。
2024-11-28 11:28:36
618
原创 阿里云多账号统一认证
随着企业上云的进一步深入,越来越多的业务逐步迁移至云端,云上资源的需求也随着业务增加而越来越多,这种增长使得单账号的资源、项目、人员、权限管理变得极其复杂,多账号上云模式逐渐成为多业务上云的重要选择,然而随着云账号的增加,多账号管理中的人员和权限问题也随着浮现,给运维工作带来了新的挑战,基于这些挑战,我们开始研究如何在多账号环境下高效的管理人员与权限,如何在多账号场景下实现统一认证。云SSO用户:云SSO有自己的用户目录,基于此实现用户统一管理,通过给云SSO用户分配对应账号的访问配置来实现权限管理。
2024-11-22 14:38:39
1179
原创 AI Agent在问答与排障中的实践探索
局限性:当采用基于React框架的Agent,让大模型多次调用接口去帮助我们排查放款失败问题的时候,一切看起来似乎符合我们的预期,但是当我们希望通过设计这个Agent再去排查预审失败等等其他问题的时候,出现了问题。数据向量化的信息缺失:数据向量化缺失可能会导致一定程度的信息损失,文本数据的复杂性和多样性很难用有限的向量来完全表达,导致向量化后可能会缺失一些文本数据的细节和特征,从而影响文档检索的准确率。根据丹尼尔·卡尼曼的著作《思考,快与慢》,人类的思维可以分为两大系统:系统1和系统2。
2024-11-11 14:11:33
588
1
原创 从富文本窥探苹果的代码秘密
其基本思想源于传统绘画过程,就像画家在作画时,先画远处的背景,再画近处的物体,这样近处的物体自然会覆盖远处的部分,从而确定最终画面的可见部分。防止出现:当富文本是由A,B两条富文本拼接而成的,A有改动,B没有改动的情况,A从缓存中取值,B重新计算。这样的好处是:当渲染较近的树木时,其像素会覆盖掉之前渲染的山川在相同位置上的像素,从而模拟出近物遮挡远物的视觉效果。理论上这是最好的解决办法了,但是贸然去改动UI层级是非常有风险的一件事,并且冗长的工期怕也是产品不能接收的,测试同学也得执行一遍所有的用例。
2024-11-04 17:22:02
826
原创 计算机性能监控体系:Quark2.0
安装在办公电脑的Agent按单位时间一次的心跳频率,采集计算机的CPU、内存、磁盘、网络、电池、进程占用等信息上报给Master集群,并把历史数据打点存入InfluxDB。通过建设一套“IT用户终端信息一体化管理平台”,采集用户信息、机器信息、软件信息、权限信息、网络信息等等,实现数据入库、实时更新、可视化。在后续的平台建设中,“IT用户终端信息一体化管理平台”还将完善接入更完整的其他用户信息,例如各相关系统权限、入网认证各环节状态、虚拟资产等信息,进行一体化关联,为实现终端智能化管理夯实基础。
2024-11-04 12:14:10
996
原创 拍拍贷鸿蒙版H5容器之路
2024年1月18日华为宣布:HarmonyOS NEXT 将不再支持 Android系统,基于以上背景及国内信贷业务现状,公司决定启动借款App鸿蒙化项目。
2024-10-28 16:07:12
1166
原创 终端威胁检测与响应 (EDR) 技术研究
因终端业务场景复杂,涉及即时通信软件、邮件等方式,如设置较严苛的拦截规则,则会造成较大的业务影响,且部分钓鱼通道为加密通道,无法在事前进行检测拦截,如钓鱼成功,恶意文件落地,当前传统防病毒方案无法有效防御。黑客若绕过,并通过攻击手段,成功获取内网终端权限,之后对内网进行全面的渗透,造成显著的安全风险,如图1所示。:管理、存储和分发整个系统的安全策略,监视防护代理的运行状态,对防护代理采集的数据进行威胁分析,感知和发现入侵行为,提取入侵攻击的行为特征,对入侵者进行画像,并对入侵攻击行为发起应急响应处理等。
2024-10-17 15:33:48
1702
原创 SRM透视供应链质量,智助企业决策
首先,系统指标就像是“守门员”的“火眼金睛”。通过录入供应商的基本信息,如公司名称、业务范围等,你可以迅速了解供应商的基本概况,为后续的深入评估打下坚实基础。这样,企业就可以根据评分、评级卡的结果,对供应商进行针对性的管理和优化,确保合作的质量和效率。平台推出了SRM质量评估模型,犹如一个精准的“供应商诊断仪”,通过一系列评价指标和评价标准,对供应商进行全面、细致的“体检”。SRM质量评估报告,就像是一份详尽的“供应商健康档案”,它全面记录了供应商在合作过程中的点点滴滴,帮助企业更好地了解和管理供应商。
2024-09-27 14:36:15
1096
原创 虚拟线程:性能飞跃的底层秘密
此时,虚拟线程的任务完成,但虚拟线程和Continuation并没有终结和释放,而是将载体线程释放到执行器中,等待新的任务。虚拟线程由executor、Continuation和state组成,其中Continuation是虚拟线程的核心,对task封装,提供task等待或阻塞时出让载体线程和task恢复运行时挂载到平台线程的功能。尽量不阻塞平台线程:当虚拟线程的任务阻塞或等待时,JVM快速将其从载体线程解除挂载,并调度其他虚拟线程挂载到该载体线程,无需上下文切换,大大提升CPU利用率。
2024-09-20 14:51:35
692
原创 信也持续构建集群容器化改造之路
平台有定时job会清理构建任务,只保留3天的构建量数据,而且构建量也没有明显增加,磁盘怎么突然不够了呢,经过检查发现,/var/lib/docker/overlay2 目录占用了大量的磁盘空间,这显然是docker引起的。并且对构建集群进行去中心化架构改造,摆脱了对单Master构建节点依赖,使所有构建节点能独立完成构建任务,极大提高构建集群容灾能力。用于存储与基础镜像的差异。构建环境隔离:构建节点容器化后,每个构建任务都在单独构建服务上构建,互不影响,显著提高构建成功率,构建成功率保持97%左右。
2024-09-05 11:06:40
553
原创 高效接口背后的秘密:高并发接口优化指南
在MySQL服务器遭遇高负载的场景下,慢SQL查询的负面影响会被放大,此时数据库线程的占用时间显著延长,资源竞争现象加剧,进而引发锁等待和线程阻塞,这些情况会连锁反应式地影响到其他并发查询的执行效率。因此,当出现慢SQL时,它会影响到分配给该连接的线程,进而可能影响到服务器整体的处理效率。:在高并发的情况下,如果大量的慢SQL查询占用了大部分线程,新的连接请求就可能无法及时分配线程进行处理,由于线程资源有限,导致新的请求必须等待,这直接降低了服务器的响应速度和处理效率。
2024-09-05 10:45:00
983
原创 基于WhatsApp打造高效的CRM系统
若否,则不进行任何处理。正因如此,在 WABA 模板的设计、养号、触达的策略以及使用场景等课题方面,还需要结合具体的实际情况进行全面、深入且细致的考虑。WABA SCRM 系统与 WhatsApp Business API 深度融合,由业务系统精准管控联系用户名单,对用户名单及信息进行过滤及加工,能确保员工与客户之间通过 WhatsApp 进行顺畅、高效且精准的触达,为双方搭建起便捷、有效的沟通桥梁。联系人,多指客户信息,通过外部API对接或者文件导入的方式,给经办分配上不同客户,以实现聊天。
2024-09-05 10:05:57
802
原创 指令微调在渠道业务测试用例AI大模型中的应用
", "input": "", "output": "易用性测试是评估软件界面、功能和交互设计是否符合用户需求、易于理解和操作的过程。", "input": "", "output": "安全性测试是评估软件系统在保护数据、功能和服务免受未经授权访问、修改或损坏的能力。", "input": "", "output": "性能测试是评估软件系统在各种条件下的响应速度、吞吐量、稳定性和可扩展性的过程。", "input": "", "output": "边界测试是在输入值的边界条件上进行测试的一种方法。
2024-08-15 10:13:29
868
1
原创 企微中台助力私域用户营销
底层实现使用的是创建联系我二维码接口,管理员在后台创建活码指定销售人员,可以指定通过该二维码添加的客户上限,客户通过扫描二维码随机分配给二维码指定的销售,添加的好友State会标注为生成活码时的State,系统会在添加好友成功时根据State对应的客户Id,将此外部联系人与公司业务系统用户关联上。因此,精细化运营存量客户的重要性日益凸显。拍拍贷视频号直播场景中需要引导用户添加企微,使用了活码功能,对用户进行核身,获取用户在业务体系的身份(是否注册、是否新老客),进行精准话术营销,提升了转化和引流的效率。
2024-08-05 14:31:49
565
原创 基于Terraform的基础设施交付平台(云舟)落地实践
对于创建单个种类的资源来说控制台创建或者定制化平台创建的方式很简单,但在做整个云上基建层基础设施交付时,由于资源之间有种种依赖关系,这时候会发现控制台方式需要在不同的产品之间来回切换,而定制化平台的方式要时刻关注创建进度及依赖资源的信息循环等待结果,才能再去创建下一个依赖资源,整个过程耗时耗力。下面是一个新建虚拟交换机的场景tf模版代码,其中。所有的资源都会以最终的参数作为目标,在正式部署之前,要进行充分的测试和验证,确保参数的准确性,同时模版在正式使用之前也要做相应的测试和验证。
2024-08-05 14:20:02
522
原创 活体认证:从单一依赖迈向多元智能的飞跃
智能路由系统如同一位深谙兵法的智者,实时监测多个渠道的健康状况,一旦有风吹草动,即刻启动动态熔断机制,精准探测,迅速恢复,确保认证之路畅通无阻。更兼认证路由机制古朴,缺乏现代健康管理之智,面对突发故障,唯有手动调整配置,犹如深夜急行军,每一步都需谨慎而艰难。个多小时的外部冲击,我们新升级的活体认证系统展现出了非凡的韧性,确保了所有接入新系统的业务方安然无恙,继续在数字世界的征途中稳健前行。渠道障碍,系统能即时感知,自动为其切换至更顺畅的通道,确保每位用户都能享受到流畅无阻的认证体验,而不影响整体大局。
2024-07-18 09:54:47
356
原创 信贷核心控制系统
顾名思义骨干网就是高速中的国道,只设立了省站,可以停留的站点较少,从而达到速度较快,稳定性较高的目标,支持从这些站点下国道,走省道。而省道网就是高速中的省道,设立了每个省下面的城市站点,可以停留在这些站点中,并支持从这些站点下省道,下高速。当然不是,控制系统可以通过国道和省道的结合将你送到省下面的市,然后你自己可以实现从市到县城的道路的通行,不论是通过低代码还是结合其他测试工具的方式都是可以的。模拟,是为了让流程按照设定的分支流转,控制系统的模拟包括对决策的模拟,对外部系统的模拟,对接口返回的模拟等。
2024-07-17 10:33:36
609
原创 哨兵系统:一套实时灵活可配置化的业务指标监控系统
在推送方面,我们接入了企微图片推送功能,,那我们如何将数据最终渲染成一张图片呢?分期的线下业务中,需要对很多关键业务指标进行实时监控,并需要根据一定的数据格式,通过企微机器人发往对应的企微群,因此。将要推送的动态内容,拆解成变量,通过任务执行过程,动态填充,最终通过企微推送到对应的企微群。在规则引擎设计方面,首先要考虑的是配置可视化,业务上可拓展,维护便捷,执行效率高。企业中台:主要提供相关接口,将结果推送给对应的企微群或者应用,比如:推送。分期业务指标的维护,哨兵系统推送的数据也主要基于指标平台的指标。
2024-07-09 11:51:51
853
原创 基石Apollo国际化整合及配置上线规范治理
由于缺乏配置上线流程规范,用户在各环境之间随意增加和删除配置,导致各环境配置差异大;缺乏上线规范,协作成本高,上线漏配置,配置不经过测试直接上生产,各环境配置差异大的问题。各站apollo配置上下线规范已覆盖所有站点,从目前的数据和用户反馈中,极大提升了配置上下线的效率及规范性。针对当前国际、主营使用规范不统一,操作平台多,环境多,效率低,风险大的问题。将配置同步和发布能力结合到工单中,各环境通过同步和发布实现完整的配置上、下线流程,提升效率。设计(国家、环境)与网关环境的映射关系,网关环境对应真实的。
2024-07-09 11:38:17
591
原创 数据安全治理:从库级权限申请到表级权限申请
本文将探讨信也科技如何将数据仓库的权限申请流程从库级别细化到表级别,并利用分类分级系统自动对数据表和字段进行敏感等级标记,实现不同敏感等级数据差异化审批流转,从而提高数据安全性。这不仅能够降低数据泄露的风险,还能够确保企业在遵守法规的同时充分利用数据资产,例如将积累的业务库表敏感等级数据用于查询脱敏,导出审批以及业务评估等。为了提高数据的安全性,需要将权限管理细化到表级别,并根据数据的敏感等级要求,来增加不同角色审批,例如。:库级别的权限管理可能导致用户访问权限过宽,增加了数据泄露的风险。
2024-07-09 10:44:46
744
原创 数据迁移探索
如果在不能停服的前提下,少量表的迁移,双写是不错的方式。通过设计代理模式,接管新旧数据库的切换工作,在服务内集成了数据比对和切换的工作,保证在不停机的情况下,安全的进行迁移数据切换。即使是单节点的服务,在重启时也是会有可能存在新的数据开始写入新的数据库之后任然有老数据库同步过来的数据,这时自增。这一部分我们的目标是把旧数据库的数据同步到新的数据库,并且保证在线系统新产生的数据也会实时的同步到新数据库。由于业务复杂性、业务量的增加,停服对许多业务来说是尽量避免的,那我们就没有不停服写入数据的办法吗。
2024-07-09 10:29:13
385
原创 快速响应需求:App路由动态化探索
在当前借款业务迅速发展且市场环境变化频繁的情况下,产品对于需求上线时间的要求也随之提高。为了能够快速响应紧急需求,借款研发团队一直在寻求降低需求对App发版依赖的方法。本文将深入探讨借款研发团队在完成App模块化及路由化的基础上,采取的一系列路由优化实践。这些优化实践旨在帮助团队提高应对变化的效率和能力,从而更快速地实现业务上线的目标。在应用开发过程中,模块化和路由化是关键的设计原则,旨在将复杂的应用拆分为独立的功能模块,每个模块都负责特定的业务功能,并通过路由机制实现模块间的通信和流程控制。模块化是将应用
2024-07-09 10:16:31
518
原创 聚合支付之支付路由进化之路
如果小幅放量的交易成功率正常则继续放量,反之则直接将通道切回故障,隔一段时间再重新开始进行放量测试,直到将通道置为正常为止。是集成各三方支付公司优势通道服务的平台,向公司各业务提供统一的金融相关基础服务,如银行卡签约、代扣、扫码支付、支付宝支付、微信支付、数字人民币支付、提现转账、信用卡还款等。渠道服务抖动,超过23%的请求超时OT,触发通道降权开启的open状态,业务上根据open立即自动切换到其他通道。为了满足日益增长的业务需求,大量的支付通道逐渐接入,但三方服务参差不齐,通道稳定性问题日益显现。
2024-07-09 09:51:40
733
原创 用Kotlin协程消灭安卓开发中的回调地狱
协程是一段代码,不同的协程之间可协作式的执行,协程和线程不是同一层次的东西,协程是建立在线程之上的概念,多个协程可跑在同一个线程,而一个协程也可以在多个线程之间切换。创建线程的代价是比较高的,通常你只能创建有限数量的线程,而协程是非常轻量级的,你几乎可创建任意多的协程。个方法,想象一下,如果有更多的接口需要串联,则代码的逻辑分支就变成了复杂的树形结构,可读性很差;是和组件的生命周期绑定的,当组件销毁的时候,相关的协程也会销毁,不用担心内存泄漏;协程的上下文,用来管理协程的,每个协程都需要关联一个。
2024-05-22 13:40:54
797
原创 自适应熔断限流揭秘
针对触发的规则会生成自适应调节记录,并下发熔点限流指令,同时会周期性的进行自适应策略计算更新熔断限流的阈值,直至满足恢复的条件,满足恢复条件后会下发熔断限流恢复指令进行恢复,触发与恢复都会通过谛听监控平台进行告警通知。通过熔断可以在下游发生故障之后,针对下游的调用进行快速失败,这样就避免了系统资源因下游故障而耗尽,使系统保持可用,同时熔断后也会定期进行下游探测,当下游恢复后,会退出熔断,自动恢复下游调用。由于系统是在不断的迭代中的,因此阈值也可能随着版本的迭代而逐渐不适用,从而使系统失去了保护。
2024-05-11 13:34:11
973
原创 网络端口占用问题的综合调研与解决方案
/ 端口被占用判断字段sk_bound_dev_if --> 网卡编号sk_reuse --> 套接字复用sk_reuseport --> 端口复用sk_state --> 当前状态listen还是time_waitsk_uid socket --> 所属用户IDreuseport_cb_ok --> 内核是否支持端口复用。,为了寻找解决方案,在对端口被占用逻辑有了大致了解后,我们进一步研读源代码了解端口被占用的详细判断逻辑。中的端口复用开关却是关闭的,而应用容器使用的端口复用状态是。
2024-05-11 11:01:57
835
原创 数据库调优之大表治理
一般而言,针对海量数据的数据库,如果是因为表多导致数据多,容易导致数据库连接数过大,带宽有压力时,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个库上。当数据库数据量行数巨大,存在单库读写、存储性能瓶颈,这时候就需要进行水平切分了,水平切分分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表中只包含一部分数据,从而使得单个表的数据量变小,达到分布式的效果。因此,在进行数据切分时,需要考虑查询模式,尽量使查询与分片键匹配。
2024-04-16 15:08:53
816
原创 一次网卡驱动BUG故障的排错历程
眼见不一定为实,在复杂的故障场景分析中,会有很多的干扰因素影响着我们的判断,通过不断的排列组合去在差异中找共性、在共性中找差异是一种剔除干扰信息的方法之一;,一种嵌入式的抓包工具,有更强的灵活针对性,特别适用于网络排障和在线抓包的情况)多次抓包分析得到一个重要信息,当虚拟机出现问题的目标。因素之间有矛盾又有重合,而且复现的规律和频率不固定,无法稳定复现,但最终确定并缩小了一定的条件范围。因素有哪些,我们尝试枚举了至少十几种有可能关联的条件,排列组合了十多套测试场景,用于测试确认。
2024-04-16 14:39:10
1076
原创 Oauth2.0 浅析和实践
用户可以在登录的时候,指定授权层令牌的权限范围和有效期,"客户端"登 录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。(3)假设用户给予授权,授权服务器将用户导向客户端指定的"重定向URI",并在URI的Hash部分包含了访问令牌。
2024-04-16 14:09:23
912
原创 信也科技网络自动化实践-网络策略管理
为满足信也科技现有架构,适配现有策略需求,在安全策略查询方面,可以用五元组和应用域名查询,嵌套、轮询等方式进行全网防火墙策略查询,由单点查询,汇总到一个窗口进行查询整合。策略查询结果是基于策略分析实现的,策略分析的核心就是对于策略的匹配解析,如下正则表达式几乎涵盖了所有的思科防火墙策略命令,能够快速的得到防火墙策略关键的五元组信息。需要定期进行评估和调整,以保证网络安全策略的有效性和实用性。网络安全策略查询和下发需要有具体的规划和执行计划,并且需要定期进行评估和调整,以保证网络安全策略的有效性和实用性。
2024-04-15 14:49:28
715
1
原创 电销平台架构的演变与升级
随着公司电销业务的不断扩大,营销模式的多样化,营销流程也越来越复杂,电销系统一直在不断的完善,每一次的架构升级都在不断满足更复杂的业务需求和提升用户体验,电销系统也正在从一个少年成长为青壮年,后续电销系统还将结合OpenAI,包括智能沟通结论备注,质检风险提示,根据用户画像生成智能话术推荐等,打造更加智能的电话营销平台。版本支持了话术推荐、一键多呼,转人机,进而提升了坐席沟通效率和客户体验,同时进行了前后端的分离,前端页面设计更加美观,坐席操作更加方便。
2024-03-07 22:35:14
1129
原创 一次直播和图像识别技术应用的探索之旅
前面提到的老流程,是黑盒,难以实时风控策略,如果设计一套系统,让程序像一个人一样,从一开始就介入,指导着用户 现场操作,并全程录制并检测违规操作,那么就可以大大提高用户体验,增强反欺诈能力。在安全性方面,使用令牌技术,在 websocket 连接发起的时候,检测令牌是否有效,避免非法客户端的连接,并且数据传输防止信息泄露,通讯的数据包使用二进制流,那么在编码方面,选用 protocolbuf,来实现客户端与服务端的传输数据的。很多行业都在“卷”,作为金融科技行业的信也,也不例外。
2024-03-06 15:03:49
2108
原创 Java单测Mock升级实践
因为单测是集成测试,执行时需要依赖测试环境真实数据,但很多业务场景测试数据很难覆盖全面,项目上线后又由于测试数据状态的变化,原有可运行通过单测Case经常失败,倘若发布流程又依赖单测执行成功结果,就需要反复修改或直接注释掉单测,再重新打包才能发布,重新发布又有新的单测用例执行失败,继而循环往复,研发和测试都苦不堪言。上述方案落地实施后,实施团队增量单测覆盖率逐步上升,大家统一了标准、规范和认知,能高效的编写出一套标准一致,风格一致的单测代码了,基本解决了本文开头提到的研发单测痛点,符合预期。
2024-03-06 14:25:48
1324
原创 借款App崩溃率优化实战
稳定性治理是一场持久战。通过上述的修复治理,借款App双端的崩溃率都重回0.02%左右,在行业中属于比较优秀的存在。在过去相当长的一段时间里,我们积累了一套自己的解决思路,包括但不限于:日志分析、自动化测试、性能优化、用户反馈以及监控预警等综合性的崩溃发现、定位和修复方法。从0.1%到0.02%,数量级降低的背后是上述的种种努力,将问题归纳总结整理,形成技术沉淀、适合团队工作方式、匹配产品业务的一套方法论,并将这套方法论贯彻到日常工作中,实现技术服务产品,技术赋能业务,技术创造价值。
2024-03-04 16:16:07
716
1
原创 趣谈虚拟线程,用JDK21的虚拟线程大幅度提升程序性能
在下面的例子里,在函数a() 运行到第4行的时候,需要等待一个比较耗时的IO操作,这时候我们将流程切走,运行b()函数,等b()运行到第12行的以后,再切回第6行进行,这样就可以交替运行提高性能,也保持了同步开发的模式,减轻了开发者的心智负担。这种方案在程序需要IO等待的时候,将流程切走,等IO操作完成后,再切回来继续操作,有很多高效而成功的例子,比如nginx。另一种方案就是大家常用的线程模式,我们用线程池来处理大量的请求,线程模式的好处,每个线程的处理是同步的,不存在复杂的烧脑回调,对程序员友好。
2024-02-22 13:23:59
1433
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人