自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到我的技术空间!我是一名经验丰富的Java开发工程师,热衷于分享我在软件开发领域的知识和心得。在这个博客里,您会发现一系列关于Java编程的文章,包括最佳实践、技术趋势、代码优化技巧以及一些有趣的项目案例。无论是初学者还是有经验的开发者,都能在这里找

本博客专注于Java开发领域,涵盖从基础知识到高级主题的各种文章。作为一位Java开发工程师,我致力于分享实用的技术解决方案和个人经验,帮助读者提升技能并解决实际工作中遇到的问题。这里不仅有关于Java语言本身的文章,还包括相关的框架和技术栈,比如Spri

  • 博客(127)
  • 收藏
  • 关注

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :Java垃圾收集器(下)(八、垃圾收集器(GC)、CMS收集器、G1收集器、垃圾回收策略、垃圾收集器核心配置参数)

本文详细介绍了Java垃圾收集器的基本概念及其发展历程,从最早的串行收集器Serial到高效的并行收集器Parallel,再到低延迟的并发收集器CMS与整堆收集器G1。通过对比不同收集器的特点与适用场景,帮助读者理解如何根据应用需求选择合适的垃圾收集策略,优化系统性能。

2024-10-17 07:00:00 981 1

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :Java垃圾收集器(上)(七、垃圾收集器(GC)、并行与并发、吞吐量与暂停时间、串行与并行收集器、GC性能指标)

本文详细介绍了Java垃圾收集器的基本概念及其发展历程,从最早的串行收集器Serial到高效的并行收集器Parallel,再到低延迟的并发收集器CMS与整堆收集器G1。通过对比不同收集器的特点与适用场景,帮助读者理解如何根据应用需求选择合适的垃圾收集策略,优化系统性能。

2024-10-16 07:00:00 809

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :Java垃圾回收算法详解(六、自动内存管理、垃圾回收算法、可达性分析、对象生命周期、HotSpot VM优化)

本文系统地介绍了Java垃圾回收(GC)的基本概念及其重要性,回顾了C/C++时代的内存管理方式,并深入探讨了现代Java虚拟机中采用的多种垃圾回收算法,如引用计数法、可达性分析算法及各种清除算法。通过理论结合实例代码,帮助读者理解GC机制,掌握对象的生命周期管理及优化技巧,提升程序性能。

2024-10-15 07:00:00 894

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :Java堆内存管理与优化(下)(五、GC分析工具、分代收集、TLAB(线程局部分配缓冲区)、对象逃逸分析、JVM参数配置)

本文从Java堆内存的基础概念入手,逐步深入探讨堆内存泄漏与溢出的原因及解决策略,涵盖GC机制、Stop the World现象、分代回收理论及其实践应用。特别针对新生代与老年代的比例调整、TLAB与对象逃逸分析等高级主题进行了详尽讲解,并提供了实用的参数配置指南与工具使用技巧,帮助开发者有效提升系统的性能与稳定性。

2024-10-14 07:00:00 1075

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :Java堆内存管理与优化(上)(四、堆内存管理、垃圾收集(GC)、性能优化、内存泄漏、CPU使用率监控)

本文从Java堆内存的基础概念入手,逐步深入探讨堆内存泄漏与溢出的原因及解决策略,涵盖GC机制、Stop the World现象、分代回收理论及其实践应用。特别针对新生代与老年代的比例调整、TLAB与对象逃逸分析等高级主题进行了详尽讲解,并提供了实用的参数配置指南与工具使用技巧,帮助开发者有效提升系统的性能与稳定性。

2024-10-12 07:00:00 803

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :从静态到运行时的秘密(三、Java常量池揭秘)

本文详细探讨了Java中的常量池机制,从静态常量池到运行时常量池,再到字符串常量池的具体实现及其在不同JDK版本中的变化。文章通过实例解释了字符串的创建方式及其在内存中的存储位置,同时还介绍了String类的intern方法的工作原理和应用场景。适合所有希望深入了解Java内存管理机制及字符串处理技巧的开发者阅读。

2024-10-11 07:00:00 793

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :从程序计数器到栈帧结构(二、Java虚拟机栈探秘)

本文深入探讨了Java虚拟机(JVM)中的栈结构及其工作原理,从程序计数器的作用到Java虚拟机栈的生命周期,再到详细的栈帧内部结构分析,包括局部变量表、操作数栈、动态链接及方法出口等内容。通过具体示例和代码分析,帮助读者理解栈帧如何管理方法调用期间的信息,以及如何处理像++i与i++这样的细微差别。此外,还讨论了栈溢出错误的发生条件及其解决办法,以及栈空间内存中的线程安全性问题。适合所有希望深入了解JVM内存管理机制的开发人员阅读。

2024-10-10 07:00:00 1085

原创 【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)

本文将从SpringBoot的基础介绍开始,逐步深入到具体应用场景,包括快速入门、Web开发、数据库访问、事务管理等方面。通过详细的步骤指导,帮助读者掌握SpringBoot与SpringMVC、SpringCloud的区别,学习静态资源处理、模板引擎集成、数据库操作、事务控制等内容。此外,还将介绍日志管理、定时任务、异步调用等高级特性,最终达到能够独立完成项目部署的能力。无论是初学者还是有一定基础的开发者,都能从中获得实用的知识点。

2024-10-08 07:00:00 1810

原创 【JVM系列】深入理解Java虚拟机(JVM)的核心技术:从加载到初始化的全过程解析(一、Java类加载器)

本文深入剖析Java类加载器的工作原理,从加载、验证、准备、解析到初始化五个阶段详细讲解类如何被加载至Java虚拟机(JVM)中。探讨类加载器的不同类型及其双亲委派机制,并介绍如何自定义类加载器以及其实现热部署的方法。此外,简要介绍SPI机制和服务提供者的动态加载方式,以及绕开双亲委派模型的策略。最后,对比了几种常见的Java虚拟机特性,帮助读者理解不同环境下JVM的选择依据。

2024-10-08 07:00:00 1105

原创 【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)

本文将深入探讨SpringMVC框架的核心概念及其在现代Web应用中的重要性。从理解三层架构与MVC架构的区别开始,逐步讲解如何使用注解和XML配置文件来搭建SpringMVC环境。此外,还将详细介绍请求与响应处理机制,包括JSON数据的接收与发送,以及RESTful风格的服务设计。最后,通过整合Spring、SpringMVC与MyBatis,实现一个完整的SSM框架体系,展示其在实际项目中的应用实例。适合希望深入了解SpringMVC及其生态系统的开发者阅读。

2024-10-03 07:00:00 3330

原创 【JUC并发编程系列】深入理解Java并发机制:深度解析Java并发控制工具(十、Semaphore、 CyclicBarrier、CountDownLatch)

本文深入探讨了Java并发编程中常用的三种控制工具——Semaphore、CyclicBarrier和CountDownLatch。通过介绍它们的基本概念、应用场景以及内部实现原理,帮助读者理解如何使用这些工具来协调多线程间的同步问题。从信号量的许可管理到循环障碍的同步机制,再到倒计门闩的计数控制,每种工具都有其独特的解决之道。

2024-09-30 07:00:00 1180

原创 【JUC并发编程系列】深入理解Java并发机制:深入剖析AbstractQueuedSynchronizer的底层机制(九、AQS底层实现原理)

本文详细介绍了Java并发包中AbstractQueuedSynchronizer(AQS)的关键技术点,包括CAS操作、双向链表结构、LockSupport的作用及其在唤醒阻塞线程中的应用。文章进一步探讨了AQS的核心概念,如独占与共享模式、同步状态管理、等待队列的组织方式等。通过对比非公平锁与公平锁的实现原理,揭示了两者在锁获取与释放上的差异,并简要介绍了AQS中Condition对象的工作机制,帮助读者更好地理解Java并发编程中的高级同步工具。

2024-09-29 07:00:00 688

原创 【JUC并发编程系列】深入理解Java并发机制:高效并发背后的守护者(八、线程池的秘密)

本文深入浅出地介绍了线程池的基本概念及其在Java中的实现方式,探讨了为什么使用线程池及其应用场景。通过对ThreadPoolExecutor构造函数参数的剖析,揭示了线程池内部的工作机制,包括线程复用、拒绝策略及线程池的不同状态。最后,提供了在不同计算负载下线程池参数的最佳实践配置建议,并简述了如何在Spring Boot项目中整合自定义线程池,以提升应用的并发性能和稳定性。

2024-09-26 07:00:00 1825

原创 【JUC并发编程系列】深入理解Java并发机制:阻塞队列详解与简单纯手写(七、BlockingQueue、ArrayBlockingQueue、LinkedBlocking)

本文深入探讨了阻塞队列(BlockedQueue)的概念及其在多线程环境中的重要性,对比分析了数组结构与链表结构的特点,以及有界队列与无界队列的区别。通过对ArrayBlockingQueue与LinkedBlockingQueue两种实现方式的详细解析,帮助读者理解不同场景下选择合适阻塞队列的策略。结合实例代码,不仅展示了如何使用这些工具类解决生产者-消费者模型中的数据同步问题,还提供了性能考量与实际应用建议。

2024-09-25 07:00:00 1151

原创 【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)

本文全面解析了Java中Volatile关键字的特性和用法,深入探讨了其在多核CPU架构和Java内存模型(JMM)下的表现。通过介绍JMM的八大同步规范,详细讲解了Volatile的底层实现原理,包括MESI协议的作用机制。同时,分析了Volatile为何不能保证原子性,以及System.out.println()如何确保线程间的数据可见性。此外,还探讨了重排序现象及其对程序的影响,并通过具体案例展示了双重检验锁(DCL)模式下Volatile的重要性,以及如何防御对单例模式的破坏。

2024-09-24 07:00:00 1194

原创 【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)

本文深入探讨了Java中ThreadLocal类的工作原理及其在多线程环境下的应用,包括基本API介绍、简单使用示例以及如何避免内存泄漏等问题。通过解析ThreadLocal与synchronized的区别,帮助读者理解何时应选用ThreadLocal来隔离数据,何时则需采用synchronized来保证数据一致性。此外,还讨论了ThreadLocal内部实现细节及其潜在的内存管理挑战。

2024-09-23 07:00:00 1345

原创 【JOIN 详解】SQL连接全面解析:从基础到实战

本文系统地介绍了SQL连接技术,从数据库连接的重要性入手,详细讲解了内连接、左连接、右连接、全外连接、自连接和交叉连接的概念、语法及应用场景,并通过实例代码演示了每种连接的操作方法。同时,文章还探讨了SQL连接的最佳实践,包括如何选择合适的连接类型、性能优化技巧以及避免常见错误,旨在帮助读者掌握SQL连接的核心技能,提升数据库查询效率。无论是初学者还是有一定经验的开发者,都能从中受益匪浅。

2024-09-20 07:00:00 2040

原创 【技术解析】消息中间件MQ:从原理到RabbitMQ实战(深入浅出)

本文从消息中间件的基础概念出发,系统地介绍了MQ(消息队列)的核心原理及其在现代软件架构中的重要性。不仅详细阐述了传统HTTP请求的局限性和MQ的应用场景,还对比分析了主流MQ产品的特点。通过RabbitMQ的具体实践案例,包括安装配置、消息模式及与SpringBoot的集成,帮助读者全面掌握MQ的设计与应用。适合希望深入了解并运用MQ技术解决实际问题的技术人员阅读。

2024-09-19 07:00:00 1395

原创 【技术分享】走进Docker的世界:从基础到实战全面解析(Docker全流程)

本文旨在为读者提供一份详尽的Docker学习指南,涵盖Docker的基本概念、优势及其应用场景,并深入探讨Docker与传统虚拟机的区别。通过快速入门教程,您将学会安装Docker、掌握核心术语和镜像管理,了解镜像原理及容器操作。不仅如此,我们还将带您探索Dockerfile的编写技巧,使用Docker Compose简化多容器应用部署流程,并通过实战案例加深理解。无论您是初学者还是有一定经验的开发者,都能从中获益。

2024-09-18 07:00:00 2043

原创 【Spring框架精讲】进阶指南:企业级Java应用的核心框架(Spring5)

本文系统地介绍了Spring框架的基础知识及其在现代Java企业级应用中的重要地位。从Spring框架的七大核心模块入手,逐步解析每个模块的功能与应用场景,并详述了Spring的快速入门和项目构建过程。深入探讨了IOC容器的工作原理、Bean的注入方式以及工厂Bean的概念,同时覆盖了AOP编程模型的相关理论和技术实践。无论是初学者还是希望深化理解Spring的开发者,都能从中获得宝贵的指导和实用技巧。

2024-09-17 07:00:00 1288

原创 【MyBatis精讲】从入门到精通的详细指南:简化Java持久层操作的艺术

本文从MyBatis快速入门开始,逐步引导读者了解并掌握这一流行的持久层框架。不仅涵盖了基础的安装配置和增删改查操作,还深入探讨了映射文件的各个顶级元素及其属性信息。通过具体示例讲解了如何利用MyBatis简化SQL语句的编写,提高开发效率,同时也分享了一些在实际开发过程中可能遇到的常见问题及解决方案。无论是新手还是有经验的开发者,都能从中受益匪浅。

2024-09-16 07:00:00 1322

原创 【技术分享】Maven自动化构建与依赖管理利器:从入门到实践(附带安装教程)

本文详细介绍了Maven这一项目管理和构建工具的基本概念及其在Java项目中的应用。从Maven解决的问题出发,阐述了其自动化的构建流程、统一的项目结构以及依赖管理机制,帮助开发者提高构建效率,简化项目维护工作。此外,还提供了Maven环境配置指南及IDEA集成教程,旨在让读者快速掌握Maven的核心功能,并应用于实际开发中。

2024-09-15 07:00:00 775

原创 【JUC并发编程系列】深入理解Java并发机制:Synchronized机制深度剖析、HotSpot下的并发奥秘(四、synchronized 原理分析)

本文将深入探讨Java中synchronized关键字的工作原理,从虚拟机环境到JVM对象头结构,再到HotSpot虚拟机的具体实现细节。我们将逐一分析基本数据类型的存储大小、对象布局查看方法以及不同锁机制(如偏向锁、轻量级锁和重量级锁)的运作机制。此外,还将探讨字节码层面的monitorenter与monitorexit指令,以及ObjectMonitor的内部结构,包括锁池和等待池的作用。最后,我们还会简要介绍JDK15中默认关闭偏向锁优化的原因及其对性能的影响。

2024-09-14 07:00:00 1065

原创 【JUC并发编程系列】深入理解Java并发机制:从synchronized到CAS锁升级全过程(三、synchronized 前置知识)

本文深入剖析Java中synchronized关键字的工作原理,涵盖从偏向锁到重量级锁的升级过程,以及重入锁的重要性。通过对比乐观锁与悲观锁,手动实现基于CAS的重入锁,并探讨公平锁与非公平锁的区别。结合实例代码,帮助读者理解不同场景下锁的选择与优化策略。

2024-09-13 07:00:00 1174

原创 【技术实践】MySQL分表分库全解析:从理论到实战

本文全面介绍了MySQL分表分库的基本概念、原理及其实现方案,通过一个电子商务平台的实际案例,详细展示了如何使用Java与ShardingSphere进行分表分库的设计与实现。文中还分享了在实际部署过程中遇到的常见问题及解决方案,并提出了性能优化技巧和数据迁移策略,旨在帮助读者更好地理解和应用分表分库技术,提升数据库系统的性能和可靠性。

2024-09-11 07:00:00 1522

原创 【全面指南】Java Web开发完全指南:从基础到实战

本文旨在为初学者提供一份详尽的Java Web开发入门指南,涵盖前端基础知识、数据格式处理、Servlet技术、过滤器与监听器、JSP及JSTL标签库的应用、Cookie与Session机制,以及实战案例分析等内容。通过理论讲解与实践示例相结合的方式,帮助读者快速掌握构建动态Web应用所需的核心技能。无论你是刚刚接触Java Web的新手,还是希望巩固基础的开发者,都能从中受益匪浅。

2024-09-10 07:00:00 3678

原创 【技术详解】Java泛型:全面解析与实战应用(进阶版)

本文全面解析Java泛型的概念、使用方法及其在实际开发中的应用。从基本的类型参数、泛型类和方法,到复杂的泛型接口、集合框架的使用,再到泛型与继承、多态的关系,本文提供了丰富的代码示例和最佳实践建议。通过案例研究和常见问题解决方案,帮助读者深入理解Java泛型的强大功能,提升代码质量和开发效率。适合希望掌握Java泛型高级特性的开发者阅读。

2024-09-03 07:00:00 2077

原创 【全面解析】Spring Boot 中的单元测试:从基础到实战

本文从单元测试的基本概念入手,逐步深入到 Spring Boot 应用的具体实践,详细讲解了如何设置测试环境、编写有效的单元测试、使用模拟对象进行依赖隔离以及执行集成和端到端测试。通过丰富的示例代码和最佳实践指导,帮助开发者掌握 Spring Boot 应用的全面测试策略。

2024-08-31 07:00:00 4592

原创 【Spring Boot 实战】统一数据返回格式的最佳实践:构建稳定的RESTful API(实战篇)

本文提供了一套全面的Spring Boot应用开发指南,重点介绍如何设计和实现统一的数据返回格式。通过定义ResponseResult类和枚举状态码ResponseCode,确保API响应的一致性。此外,还介绍了如何创建全局异常处理器GlobalExceptionHandler来处理各种异常,并通过MockMvc进行集成测试以验证功能。最后,文章还探讨了国际化支持和自定义错误页面等高级主题,帮助开发者构建更加健壮和用户友好的RESTful API。

2024-08-30 07:00:00 1515

原创 【实战指南】RESTful 从入门到精通(Spring Boot)

本文全面介绍了 RESTful API 的基础知识和高级主题,从 REST 的概念入手,逐步深入到使用 Java 和 Spring Boot 构建 RESTful 服务的具体实践。不仅涵盖了 RESTful API 的设计原则、HTTP 方法与状态码、资源与 URI 的设计,还详细讲解了如何使用 Spring Boot 快速搭建 RESTful 服务、创建 RESTful 控制器、实现数据持久化等实用技术。

2024-08-29 17:06:37 2018

原创 【JUC并发编程系列】深入理解Java并发机制:CAS算法与原子类在Java中的实践应用(二、CAS)

本文深入探讨了Java并发编程中的CAS算法及其在原子类中的应用。首先介绍了CAS的基本原理和操作机制,随后详细讲解了原子类家族的各种成员及其使用场景。通过具体的代码示例,展示了如何利用AtomicInteger实现线程安全的计数,并探讨了CAS算法在实现过程中的潜在问题,如ABA问题及其解决方案。最后,通过手写简单的锁实现和解决ABA问题的案例,进一步加深了读者对CAS算法的理解。

2024-08-27 07:00:00 1598

原创 【JUC并发编程系列】深入理解Java并发机制:从用户态到内核态的探索(一、前置知识)

本文详尽解析了Java并发编程中的核心概念,从用户态与内核态的区别入手,深入探讨了线程安全同步的不同机制及其影响。通过对传统锁机制的分析,揭示了CAS算法的优势与潜在问题。同时,本文还阐述了上下文切换的原因以及如何有效减少其发生的策略,帮助读者更好地理解和优化Java并发程序。

2024-08-27 07:00:00 1571

原创 【技术解析】Spring Boot异步机制:实现高吞吐量的最佳实践

本文深入探讨了如何在Spring Boot中利用异步机制提升系统吞吐量,从异步处理的基本概念出发,逐步介绍了Spring Boot提供的多种异步解决方案,包括@Async、Callable、WebAsyncTask和DeferredResult的使用方法。通过实例演示和最佳实践分享,帮助读者理解和应用异步处理技术,从而构建更加高效和响应迅速的应用程序。

2024-08-26 17:52:46 4973

原创 【Redis实战】构建现代Web应用:排行榜、点赞与关注功能的高效实现

本文将深入探讨如何利用Redis的强大功能实现Web应用中的关键特性,包括排行榜、点赞系统及关注机制。通过详尽的理论讲解与实践案例分析,读者将学习到Redis的安装配置、核心数据结构的应用,以及如何设计高性能的数据模型来满足实时性、扩展性和数据持久化的需求。适合希望提升Web应用交互性和用户体验的开发者阅读。

2024-08-26 15:59:24 1410

原创 【访问者模式】设计模式系列:解锁复杂对象结构的秘密武器

本文深入剖析访问者模式的核心概念及其在软件设计中的应用。从模式的基本定义出发,逐步展开其实现细节与设计步骤,并通过具体的案例研究展示其在解决实际问题中的强大能力。此外,文章还将探讨访问者模式的优缺点、最佳实践及与相关模式的比较,旨在为读者提供一个全面理解访问者模式的视角,并启发读者在未来的项目中灵活运用这一模式。

2024-08-24 07:00:00 1458

原创 【Spring进阶】掌握Spring MVC框架核心注解:从基础到实战应用(实战指南)

本指南深入探讨Spring MVC框架中关键注解的应用与实践,通过清晰的示例代码和详细的解释,帮助读者掌握从基本请求处理到高级主题如异常处理和异步操作的核心概念。适合任何希望提升Spring MVC应用开发技能的Java开发者阅读。

2024-08-24 07:00:00 1191

原创 【状态模式】设计模式系列:理解与实践(详细解读)

本文深入探讨了状态模式的设计理念与实践技巧,从基本概念到实际案例,全面解析如何利用状态模式来构建灵活且易于维护的软件系统。通过学习状态模式的工作原理、优缺点以及与其他设计模式的结合使用,读者将能够更好地应对复杂多变的应用场景。此外,本文还介绍了状态模式在现代软件架构中的应用趋势,并提供了实用的建议和资源推荐。

2024-08-23 07:00:00 1182

原创 【Spring Boot进阶】掌握Spring Boot框架核心注解:从入门到精通(实战指南)

本指南全面介绍了Spring Boot中的核心注解及其应用,从基础知识到高级特性,逐一剖析并提供实战示例。适合初学者快速上手,也适用于进阶用户深入探索Spring Boot的强大功能。通过本文,你将学会如何高效地使用Spring Boot构建现代化的Java应用程序。

2024-08-23 07:00:00 2092

原创 【备忘录模式】设计模式系列:掌握状态回溯的艺术(设计详解)

本文深入探讨备忘录设计模式,旨在帮助开发者掌握如何高效地管理和恢复对象的状态。从设计模式的基础概念出发,逐步深入到备忘录模式的实际应用与实现细节。通过具体案例分析,展示该模式在游戏开发、文档编辑等领域的实用价值。此外,还讨论了模式的变体、与其他模式的结合以及在分布式系统中的应用。最后,提供了一系列最佳实践和常见问题解答,为读者在实际项目中应用备忘录模式提供了宝贵的指导。

2024-08-22 07:00:00 847

原创 【Spring进阶】掌握Spring框架核心注解:从基础到实战应用(Spring深度解析)

本文深入剖析Spring框架中的核心注解,从基础概念到实战案例,帮助开发者理解并运用这些注解来简化日常开发工作。通过详尽的代码示例和最佳实践,您将学会如何利用Spring注解实现依赖注入、组件扫描、事务管理等功能,并了解其在Web MVC、AOP及测试中的应用。无论您是Spring新手还是有一定经验的开发者,都能从中获得宝贵的知识和技巧。

2024-08-22 07:00:00 1370

空空如也

空空如也

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

TA关注的人

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