自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

科技D人生

做正确的事情永远都比把事情做对更重要。在错误的方向上努力再多也不如找到正确的方向。

  • 博客(1602)
  • 资源 (8)
  • 收藏
  • 关注

原创 Java基础学习总结(175)——分布式ID的9种生成方式总结

背景业务量小于500W的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。分布式ID需满足那些条件:全局唯一:基本要求就是必须保证ID是全局性唯一的。 高性能:高可用低延时,ID生成响应要快。 高可用:无限接近于10

2021-03-16 10:27:08 1084

原创 2016年终总结

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程一、技术总结(1)App/JavaWeb后台系统1.1、采用RestFul架构的SSM(Spring SpringMVC MyBatis)框架集成开发的App后台系统,将用户鉴权分离出来单独的模块,将用户鉴权登录状态Token保存到Redis内存数据库中,从而便于上层业务后...

2017-01-10 11:54:34 5644 19

原创 青春路上,岁月如烟

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程青春路上,岁月如烟凡人一世,始聚终散。年长当权,寂寞同醉。年少轻狂,知己共饮。世界一如既往,不存在永恒和不灭。我们终为一介凡人,没法脱离世俗,看破红尘。人生亦是悲欢离合,聚如春梦,散如烟。我们这样一群在人生道路上越发迷茫的人,看不清梦想在何处,寻不到温柔乡,太多的美好被...

2014-06-23 18:35:45 4620 9

原创 Docker 学习总结(81)—— 冷门而又实用的 Docker 使用技巧总结

当你 docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的 nginx 容器 cpu 或者内存太小,这个时候你就可以使用 docker update 去修改这些参数。这个命令是用来查看一个容器里面的进程信息的,比如你想查看一个 nginx 容器里面有几个 nginx 进程的时候,就可以这么做。当你修改了一个镜像,但是忘记了每一层的修改命令,或者你想查看一个镜像是怎么构建的时候就可以使用这个命令,比如。这个命令可以帮助你在命令行中方便的搜索 dockerhub 中的镜像,比如。

2024-03-29 20:18:50 158

转载 云原生技术在离线交付场景中的实践

由于各级政府部门的 IT 建设脚步不一样,同样一套业务系统,在交付到市级部门时,得到的硬件设施可能是一台物理服务器,而到了省级部门时,则可能得到了私有云提供的数台虚拟机。离线化的交付场景下,对交付环境的前期一次性建设的成本大幅度提高,我们必须事先在离线环境中准备好可靠的 Kubernetes 集群,光这一项工作,就大幅度阻碍了 Kubernetes 技术在交付团队中的推广。这项技术对业务系统的赋能能力是毋庸置疑的,但无论是一个新环境的首次部署,还是后期的运维难度,对交付团队成员技术能力的要求是直线上升的。

2024-03-08 10:10:15 291

原创 Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候,往往会发现我们的pod服务,频繁重启,通过kubectl get pods 命令,我们来逐步定位问题。将limit的memory数值提高,然后delete -f yaml,再apply -f yaml。发现我们deployment.yaml对服务的内存使用,做了限制。OOM,pod被kill掉,重启了(内存不够用)running的pod,短时间内重启次数太多。

2024-03-03 10:50:06 579

原创 JavaScript 学习总结(17)—— 前端开发规范之命名规范、html 规范、css 规范、js 规范

一个好的程序员肯定是要能书写可维护的代码,而不是一次性的代码,怎么能让团队当中其他人甚至一段时间时候你再看你某个时候写的代码也能看懂呢,这就需要规范你的代码了。我是有一点强迫症的人,上周我们后端给我了一个CanUsename的接口(该接口的目的是判断输入的目的地是否是4级目的地),我真的是崩溃的。我只是觉得这个名字不够语义化,但是让我自己想一个名字我又想不出来,于是我就在想,如果有一套命名规范的话,那么以后起名字就不用发愁了,直接按照规范来就好了。

2024-03-03 10:45:11 196

原创 JavaScript 学习总结(16)—— 实用小函数总结

/ initial: 返回除最后一个数组之外的所有元素// 使用 "arr.slice(0,-1)" 返回数组的最后一个元素。// last: 返回数组中的最后一个元素// 使用arr.length - 1可计算给定数组的最后一个元素的索引并返回它/***/// 事例自定义事件的函数有 Event、CustomEvent 和 dispatchEvent// 向 window派发一个resize内置事件// 直接自定义事件,使用 Event 构造函数:// 监听事件。

2024-03-03 10:19:15 111

原创 Kubernetes 学习总结(45)—— 懂 Pod 就懂了 Kubernetes 的一半

Kubernetes 可以理解成一个对计算、网络、存储等云计算资源的抽象后的标准 API 服务。几乎所有对 Kubernetes 的操作,不管是用 kubectl 命令行工具,还是在UI或者CD Pipeline 中,都相当于在调用其 REST API。很多人说 Kubernetes 复杂,除了其本身实现架构复杂以外,还有一个原因就是里面有二十多种原生资源的 API 学起来曲线比较陡。但不用担心,我们只要抓住本质 – 提供容器计算能力的平台,就能纲举目张,很容易快速理解。

2024-01-07 10:18:45 1006

原创 Kubernetes 学习总结(44)—— Kubernetes 1.29 中的删除、弃用和主要更改

和其他每次发布一样,Kubernetes v1.29 将弃用和移除一些特性。一贯以来生成高质量发布版本的能力是开发周期稳健和社区健康的证明。本文列举即将发布的 Kubernetes 1.29 中的一些弃用和移除事项。

2024-01-07 10:05:43 1075

转载 Kubernetes 学习总结(43)—— Kubernetes 从提交 deployment 到 pod 运行的全过程

当用户向Kubernetes提交了一个创建deployment的请求后,Kubernetes从接收请求直至创建对应的pod运行这整个过程中都发生了什么呢?

2023-12-29 19:45:58 1055

原创 Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

要想 Kubernetes 里每个服务的可用性更高,那么对 Pod 的健康检查是少不了的。本文重点如下:PendingRunningSucceeded或FailedUnKnown。启动探针存活探针就绪探针。如何选择探针:一般情况下全都要。排查 Pod 问题:搭配使用和。

2023-12-28 13:50:53 1132

原创 Vue.js 学习总结(7)—— Vue 组件化思想

组件系统是 Vue的一个重要概念,让我们可以用独立可复用的小组件来构建大型应用。几乎任意类型的应用的界面都可以抽象为一个组件树:从组件类型来说,Vue中的组件主要分为三种:页面组件、业务组件、基础组件。

2023-12-28 10:45:30 1126

原创 Kubernetes 学习总结(41)—— 云原生容器网络详解

随着网络技术的发展,网络的虚拟化程度越来越高,特别是,叠加了物理网络、虚机网络和容器网络,数据包在网络 OSI 七层网络模型、TCP/IP 五层网络模型的不同网络层进行封包、转发和解包。网络数据包跨主机网络、容器网络、虚机网络和物理网络到达对端,期间必然带来网络性能损耗。

2023-12-28 10:25:04 1581

原创 15个热门的开源数据可视化项目

介绍致力于打造一个集自定义表单、自定义流程、自定义页面、自定义报表等多功能于一体的应用开发平台。在平台上可以通过配置完成流程应用的创建,通过配置完成页面的绘制。功能清单自定义表单数据库管理工具自定义数据源自定义工作流(基于activiti,包含web版本的流程设计器)自定义图表(基于chart.js)自定义表格系统截图一行代码,可能会创造出下一个让人惊叹的产品;一个创新,可能会开启一个全新的科技时代;一份初心,可能会影响到无数人的生活;

2023-12-22 17:09:12 1813

原创 Docker 学习总结(80)—— 轻松驾驭容器,玩转 LazyDocker

LazyDocker 是一个功能强大且用户友好的命令行实用程序,用于管理 Docker 应用程序和服务。对于任何想要让 Docker 更易于使用的人来说,无论你是初学者还是专家,这都是一个很棒的工具。如果你正在寻找一种节省管理 Docker 时间和精力的方法,LazyDocker 就是适合你的工具。

2023-12-21 09:59:38 1103

原创 Kubernetes 学习总结(40)—— Kubernetes 之 自动伸缩 HPA、VPA、CA和CPA详解

Kubernetes提供了多种自动伸缩机制,如HPA(水平Pod自动缩放器),可根据不同情况动态调整Pod副本数量。此功能使Pod能够有效处理当前流量,无需管理员不断干预。除了HPA外,还有VPA(垂直Pod自动缩放器)、CA(集群比例自动缩放器)和CPA(自定义Pod自动缩放器)。它们分别从水平和垂直方面,以及整个集群规模角度,调整Pod和节点数量。这些机制相互补充,可根据需求灵活运用。上述所有机制并不相互排斥。

2023-12-21 09:32:19 1102

翻译 InfoQ 2023 年趋势报告:Java 篇

这份报告总结了 InfoQ Java 编辑团队对目前 Java 领域技术采用和新兴趋势的看法。我们关注 Java 及相关的语言(如 Kotlin 和 Scala)、Java 虚拟机(JVM),以及基于 Java 的框架和工具。我们讨论了 Core Java 的趋势,比如新版本 Java 的采用,以及和等框架的演进。这份报告有两个主要目标:帮助技术领导者做出中长期的技术投资决策。帮助个体开发者选择在哪些领域投入宝贵的时间和资源去学习和发展技能。这是我们发布的第五份 Java 趋势报告。

2023-12-20 21:29:18 148

原创 Vue.js 学习总结(6)—— Css 之预处理器 Sass(Scss)、Less 的区别与选择

Sass(Scss)、Less 都是,他们定义了一种新的语言,其基本思想是,用一种专门的编程语言为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行 CSS 的编码工作。

2023-12-20 21:20:56 2021

原创 Vue.js 学习总结(5)—— npm、cnpm、npx、yarn、pnmp 之间的区别总结

npm 是 Node.js 的默认包管理器;cnpm 是淘宝 NPM 镜像的命令行工具,用于加速安装依赖包;npx 是 npm 5.2.0 版本后内置的命令行工具,用于临时运行依赖包的可执行文件;yarn 是 Facebook 开源的包管理器,以速度快和安全可靠著称;pnpm 是一个快速、零配置的包管理器。

2023-12-20 21:09:32 861

原创 产品经理学习总结(4)—— 产品伪需求与弱需求如何一眼识破?

在作为产品经理的日常工作中,经常会面临一个问题:如何区分真实需求、伪需求与弱需求?有一次,我收到了一封用户的反馈邮件,描述了一个他认为极为实用的功能点。我心动了,觉得这个功能可能会是下一个爆款。但当我真正投入资源进行开发后,却发现用户实际使用的人数寥寥无几。这让我深感困惑,为什么看似完美的需求,在实际中却得不到用户的喜爱?这时,我意识到,可能自己被伪需求或弱需求所迷惑了。

2023-12-12 13:32:01 879

原创 Vue.js 学习总结(4)—— Vue3响应式系统原理

响应式是指当数据发生变化时,系统会自动更新与数据相关的 DOM 结构。在 Vue2 中,响应式系统的实现基于。然而,有一些局限,如:无法监听数组的变化、需要遍历对象的每个属性进行监听、性能开销较大。在 Vue3 中,响应式系统的实现基于 ES6 的Proxy对象。Proxy可以直接监听对象和数组的变化,而无需对每个属性进行监听,从而大大提高性能。同时,Proxy也可以解决无法监听数组的问题。的关键在于 vue 的依赖收集机制。

2023-12-07 09:55:48 1173

原创 Spring Cloud 与微服务学习总结(19)—— Spring Cloud Alibaba 之 Nacos 2.3.0 史上最大更新版本发布

Nacos 一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴开源,致力于发现、配置和管理微服务。说白了,Nacos 就是充当微服务中的的注册中心和配置中心。

2023-12-07 09:17:03 1348

原创 Vue.js 学习总结(3)—— vite 打包图片时报错 Rollup failed to resolve import...

【代码】Vue.js 学习总结(3)—— vite 打包图片时报错 Rollup failed to resolve import...

2023-11-09 13:53:31 3210 1

原创 后台开发人员的成长 RoadMap

▶︎类型推断 type,断言表达式 x.(T),灵活使用泛型 Any。▶︎掌握深拷贝/浅拷贝区别。▶︎array/slice/set/map/sync.map,各容器的底层结构/操作性能/扩容策略/并发安全。▶︎queue/stack/heap、sort、使用 gods 库。▶︎struct/interface,组合的优缺点,值方法和指针方法区别。▶︎goroutine/channels(源码走读),协程生命周期,无锁 FIFO 实现。▶︎GMP 模型,MP 数量和调度关系,抢占式调度策略。

2023-11-02 09:02:20 349

原创 Kubernetes 学习总结(39)—— Kubernetes 之 Pause 容器详解

在 Kubernetes 中,Pause 容器是一种特殊类型的容器,它的主要作用是充当依赖其他容器的容器,为其他容器提供一个可靠的、隔离的运行环境。Pause 容器是一种轻量级的容器,它本身不包含任何业务逻辑,只是为其他容器提供一个稳定、可靠的运行环境。Pause 容器的实现基于 Docker 的 pause 镜像,可以在创建其他容器之前将其加载到 Pod 中,以确保 Pod 中的其他容器在 Pause 容器的基础上运行。

2023-10-22 09:42:01 1199

原创 Go 语言学习总结(10)—— Go 初学者必知的十个命令

它将初始化一个 go.mod 文件,如果你做过 Java 开发,它类似于 pom.xml,如果你做过 JavaScript 开发,它类似于 package.json。Vet 使用的启发式方法不能保证所有报告都是真正的问题,但它可以找到编译器未捕获的错误。但是,您的 go.mod 文件仍然包含这些未使用的模块。此命令将从您的 go.mod 文件中删除所有未使用的模块,因此您不必手动编辑此文件。如果你已经安装了,你应该可以看到其版本号,如果还没有安装,那可以直接进入官网进行安装:go.dev/dl/

2023-10-22 09:22:23 263

原创 普通人在当前大环境下——少看宏观,多看具体

先讲个故事:遥远的星球上,有两个国家,叫太阳王国和月亮王国。两个国家分别代表白天与晚上,阳光和阴影,太阳王国的人崇拜阳光,相信阳光是一切生命的源泉,只有不断追求光明、热情,世界才会进步。月亮王国的人,相信月光下的宁静和冷静,是探索内心和智慧的关键,唯有在冷静和反思中,人们才可以找到答案。随着时间推移,它们因为对光明、黑暗的不同理解导致了冲突的发生;最终,双方陷入舆论争论和战斗中,国土被破坏,民众饱受煎熬。

2023-10-21 08:36:10 340

原创 表单页面风格如何选择?弹窗 or 抽屉 or 页面?

是属于国外产品传入中国,因此在使用习惯上,更偏向于专注去做一件事,比如Hubspot上,在其客户详情页能够直接进行添加日程、拨打电话、发送邮件等几十项操作,并且一切围绕着Marketing、Sales展开,因此使得页面需要更加专注,需要看到更加全量的信息,再次国外Saas用户也是对完整流程的操作更加青睐(一个操作只干一件事),而国内喜欢有很多快捷操作,因此造成Hubspot都采取页面跳转的形式查看数据。只是在字段数量上会有所增多,导致字段的高度会随之增加,因此满足上面要求的交互控件只有抽屉和页面。

2023-10-13 18:14:09 209

原创 Linux 学习总结(93)—— Linux 管道符使用总结

我们都知道linux中的shell是由C语言开发的,因此它底层命令效率是最高的,而方法1中用的是linux内置命令,内置的操作;这下,我们知道了吧,管道符虽然在某些使用场景下很便捷,但是其也有其效率低的缺点,因此不能多用!然后通过for循环执行来控制字符串生成次数的情况下,最后再通过time命令统计整个命令的执行时间,通过同等循环条件下,不同命令,结合直观的运行时间进行比较,得出效率最高的方法。这个才是我们本文讲解的重点,也是作为一个高级 linux 运维人员所要知道的,为什么要少用管道符?

2023-10-06 09:01:34 516

原创 Docker 学习总结(79)—— Dockerfile 编写技巧总结

编写 .dockerignore 文件容器只运行单个应用将多个 RUN 指令合并为一个基础镜像的标签不要用 latest每个 RUN 指令后删除多余文件选择合适的基础镜像(alpine 版本最好)设置 WORKDIR 和 CMD使用 ENTRYPOINT (可选)在 entrypoint 脚本中使用 execCOPY 与 ADD 优先使用前者合理调整 COPY 与 RUN 的顺序设置默认的环境变量,映射端口和数据卷使用 LABEL 设置镜像元数据添加 HEALTHCHECK。

2023-09-27 07:25:24 251

原创 Kubernetes 学习总结(38)—— Kubernetes 与云原生的联系

相比传统的单体应用而言,启动速度与运行效率快慢并不是重要的指标,但是对于需要快速迭代、水平扩展的云原生微服务架构应用而言,更快的启动速度就意味着更高的交付效率,和更加快速的回滚,尤其是面对较多应用的时候,可能仅仅才500ms的反应时间也会让用户感觉到延迟,从而造成用户的体验感变差。在实际的运行中占用的资源更低的时候,也就代表了更高的部署密度和更低的计算成本,同时,在JVM启动时需要消耗大量CPU资源对字节码进行编译,降低启动时资源消耗,可以减少资源争抢,更好保障其他应用SLA。

2023-09-27 06:46:21 2011

原创 Kubernetes 学习总结(37)—— Kubernetes 之 CoreDNS 企业级应用

百度百科:域名和与之相对应的IP地址转换的服务器 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

2023-09-24 22:37:00 384

原创 Java 基础学习总结(207)—— 具有革命性、未来性、开创新纪元的 JDK 21, 它来了

至少,人家提供的“跑起来”的版本,从 2018 年跑到了 2023 年,5 年时间。一般不向外部发布,通常会有很多 Bug,除非你也是测试人员,否则不建议使用,alpha 就是 α,是希腊字母的第一位,表示最初级的版本,beta 就是 β,alpha 版就是比 beta 还早的测试版,一般都是内部测试的版本。β 是希腊字母的第二个,顾名思义,这一版本通常是在 Alpha 版本后,该版本相对于 Alpha 版已有了很大的改进,消除了严重的错误,但还是存在着一缺陷,需要经过多次测试来进一步消除。

2023-09-21 13:23:33 264

原创 Mysql 学习总结(89)—— Mysql 库表容量统计

统计每个库每个表的大小是数据治理中最简单的一个要求,下面从抽样统计结果及精确统计结果两方面来统计MySQL的每个库每个表的数据量情况。mysql 数据字典库 information_schema 里记录了统计的预估数据量(innodb 引擎表不准确,MyISAM 引擎表准确)及数据大小、索引大小及表碎片的大小等信息。如果想了解每个库及表的大概数据量级可以直接查 information_schema.tables 进行统计即可。

2023-09-20 10:33:37 693 1

原创 RabbitMQ学习总结(11)—— RabbitMQ 核心概念与架构

RabbitMQ是由erlang语言开发,基于AMQP协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。官网地址:https://www.rabbitmq.comGit地址:https://github.com/rabbitmqRabbitMQ 是一个消息中间件:它接受并转发消息。

2023-09-20 08:57:15 337

原创 Docker 学习总结(78)—— Docker Rootless 让你的容器更安全

Docker Rootless 模式是官方提供的一种安全解决方案,可以让 Docker 守护进程以普通用户身份运行,从而避免容器应用利用 Docker 漏洞获得宿主机 root 权限的风险。另外,要注意的是因为Docker 作为容器本身需要利用很多系统高级特性,因此 Docker 守护进程以非 Root 身份运行实际上也会导致一些功能受限。这点可以参与官方文档详细了解。

2023-09-19 14:33:31 525

原创 Go 语言学习总结(9)—— Go 与 Java 全面对比总结

Golang: 编码风格相对统一,简单,没有太多的语法糖等,Java层次清晰,全面面向对象。

2023-09-19 14:04:53 1731

原创 IntelliJ IDEA学习总结(3)—— IntelliJ IDEA 常用快捷键(带动图演示)

执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到目录中。IntelliJ IDEA 支持增量构建,会在上次构建的基础上,仅编译修改的类。在IntelliJ IDEA 中打开要编译的类,执行该命令会编译当前类。剪切选中文本,若未选中则剪切当前行。复制选中文本,若未选中则复制当前行。从历史剪粘版中选择要粘贴的内容。复制光标所在行。复制选中文件所在路径。复制包的路径,或者类的名称。撤销上一步操作内容。恢复上一步撤销内容。自动缩进至规范位置。无论光标是否在行尾,都开始新的行。删除当前

2023-09-19 13:39:17 449

原创 分布式架构和微服务架构的区别

为了简化开发、部署和运维,该公司可能会采用微服务架构,将整个系统划分为多个独立的服务,如订单服务、库存服务等,每个服务都运行在自己的进程中,通过轻量级通信协议进行数据交互。总的来说,分布式架构注重的是系统的并发性能和可靠性,而微服务架构注重的是系统的可维护性和灵活性。这两种架构各有优势和适用场景,需要根据具体需求来选择。为了实现这个目标,该网站可能会采用分布式架构,将前端Web服务器、后端业务逻辑服务器和数据库服务器分别部署在不同的机器上,通过接口进行数据交互,从而提高了系统的吞吐能力和可靠性。

2023-09-19 13:28:46 615

Kubernetes 实用技巧大全

K8S 实用命令总结

2021-12-22

Javag工程师简历模版.zip

Java 工程师简历专用模版,供技术人员参考,如何写出好看实用的Java 简历。相关技术从业人员的简历书写可参考改压缩包中的两份简历模版。

2020-08-06

清华-2018人工智能之自动驾驶研究报告.pdf

自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工 智能技术的应用及推广,在环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网 V2X 等方面实现了全面提升。

2019-09-02

最新版Myeclipse2018.8破解

最新版Myeclipse2018.8破解,亲测100%有效,欢迎大家下载尝试!

2018-08-25

容器网页终端(websocket-webshell)

Java WebSockt DockerSSH Html5 Tomcat8 等技术写的WebShell 容器网页终端 传统websockt终端和容器化终端解决方案!

2017-09-23

开源博客系统

博客系统

2016-09-22

短信平台,activemq 及常用第三方短信平台接入

短信平台

2016-09-22

netty推送系统

netty推送系统,点对点推送

2016-07-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除