- 博客(1084)
- 资源 (15)
- 收藏
- 关注

原创 第四章:Servlet 容器基础功能大揭秘-MiniTomcat
在这一部分,我们将实现一个基础的 Servlet 容器,从而使 MiniTomcat 能够处理动态请求。Servlet 容器的核心是管理 Servlet 生命周期,并在 HTTP 请求到达时调用合适的 Servlet 处理逻辑。
2024-11-26 08:22:54
832

原创 MiniTomcat 项目大纲
每一步的功能在 Servlet 容器的发展历程中都扮演着重要角色,这个实现过程不仅可以帮助掌握 Web 容器的基本概念,也可以深入了解 Java Web 应用的底层原理。以下是一个实现路径,包含每一步的目标功能,帮助你从简单的 HTTP 服务器逐步深入,实现基本的 Servlet 容器。该组件用于管理网络传输和请求解析,将网络传输与请求处理解耦,提升代码清晰度和容错性。:实现 RequestFacade 和 ResponseFacade 类,对外提供标准的请求和响应接口,内部则处理复杂的请求和响应解析。
2024-11-08 09:49:26
1078

原创 从零开始实现MiniTomcat:轻量级Java Web容器开发教程
Tomcat,这位 Java Web 世界的“超级英雄”,以其轻量级的身姿和卓越的稳定性,成为了无数开发者手中的“得力武器”。它就像一座坚固的桥梁,将 Java 应用稳稳地承载在互联网的浩瀚海洋之上,无论是小型项目的快速迭代,还是大型企业级应用的稳定运行,Tomcat 都能游刃有余地应对。其底层架构犹如一座精密复杂的“技术迷宫”,多线程支持、连接器组件、Servlet 容器、ClassLoader 隔离以及请求与响应处理等核心模块相互协作、紧密配合,共同编织出了一个强大而灵活的 Web 容器。🌟。
2024-11-08 09:47:06
1175
原创 Java 集成 DeepSeek:开启智能应用新时代
在当今数字化浪潮中,人工智能(AI)无疑是最耀眼的明星。从智能语音助手到图像识别系统,从推荐算法到智能医疗诊断,AI 正以前所未有的速度改变着我们的生活和工作方式。而在 AI 的技术栈中,编程语言扮演着至关重要的角色。Java,作为一门具有广泛应用基础和强大生态系统的编程语言,在 AI 领域也展现出了巨大的潜力。与此同时,DeepSeek 模型的出现,为 AI 应用的开发带来了新的活力和可能性。本文将深入探讨如何使用 Java 集成 DeepSeek,为开发者们打开一扇通往智能应用新时代的大门。
2025-02-18 18:29:28
752
原创 从韩国客机事故看Java异常处理机制:保障程序的“安全着陆”
除了使用Java内置的异常类型,我们还可以根据程序的需求自定义异常。自定义异常就像为我们的程序打造了一个专属的故障预警系统,能够更准确地传达程序中的错误信息。要创建自定义异常类,只需继承Exception类或其子类即可。例如,假设我们正在开发一个学生成绩管理系统,我们可以定义一个在程序中,当满足特定条件时,我们可以使用throw关键字抛出自定义异常。throw new InvalidGradeException("成绩必须在0到100之间。");System.out.println("成绩有效。");
2024-12-31 08:51:35
645
原创 深入理解 Servlet:从基础概念到高级特性与实战应用
Servlet是Java Web开发中的重要组件,它运行在服务器端,用于处理客户端的请求并返回响应。其工作原理涉及多个组件和步骤,从客户端发起请求到服务器端的处理和响应,整个过程有条不紊地进行。Servlet作为Java Web开发的核心技术之一,在服务器端处理请求和生成响应方面有着不可替代的作用。从其基本的工作原理、生命周期到配置使用,再到Servlet 3.0带来的一系列新特性,都为Java Web开发提供了更强大、更灵活的工具。
2024-12-25 08:41:53
808
原创 探索 Spring AOP:全面解析与实战应用
AOP 是一种编程思想,旨在将横切关注点(如日志记录、安全检查、事务管理等)从核心业务逻辑中分离出来,以提高代码的模块化程度和可维护性。与传统的面向对象编程(OOP)关注于类和对象的封装、继承和多态不同,AOP 关注的是在不修改源代码的情况下,对程序的运行时行为进行增强。Spring AOP 作为 Spring 框架的强大特性之一,为 Java 开发者提供了一种优雅的方式来处理横切关注点。通过将横切逻辑从核心业务代码中分离出来,我们可以实现代码的模块化、可维护性和可扩展性。
2024-12-16 18:26:02
1307
原创 每个Web开发者都应掌握的URL编码知识
在Web开发领域,URL编码是一项至关重要但又常常被误解的技术。URL作为互联网上资源的地址标识,其编码方式直接影响着数据的正确传输与解析。从我们日常上网冲浪开始,URL就无处不在,比如“http://www.google.com”,它看似简单,实则有着严格定义的结构。一个完整的URL包含了协议(scheme)、主机地址(hostaddress)、端口(port)、路径(path)、路径参数(path parameters)、查询参数(query parameters)以及片段(fragment)等部分。
2024-12-15 16:35:41
1070
原创 深入理解 HTTP 协议:从基础到实践全解析
HTTP 协议作为互联网的核心协议之一,对于构建现代网络应用至关重要。通过深入理解 HTTP 的请求方法、状态码、消息结构以及协议的演进,我们能够更好地开发高效、可靠的网络应用程序。在实际应用中,合理选择请求方法、正确处理状态码、优化消息结构以及根据需求选择合适的协议版本,都有助于提升应用的性能和用户体验。无论是开发 Web 应用、移动应用还是其他类型的网络服务,扎实的 HTTP 协议知识都是必不可少的基石。希望本文能够帮助你全面掌握 HTTP 协议,在互联网技术的探索之路上迈出坚实的步伐。
2024-12-15 16:34:35
1614
原创 Java 内存管理 “通关秘籍”:原理吃透,优化无忧,实战称王
Java 内存管理是门深邃复杂却极具价值的技术领域,它渗透于 Java 程序开发全程,从初始对象创建、内存分配,到后期垃圾回收、性能优化,各环节环环相扣。精准把握内存结构、回收机制,灵活运用优化技巧,辅以高效监控排查工具,方能写出高性能、强稳定、低耗存的 Java 程序。伴随 Java 技术迭代、业务场景多元,持续钻研内存管理精要,是 Java 开发者进阶必由之路,助力打造更卓越的软件产品,从容应对海量数据、高并发挑战。记住,Java 内存管理并非一蹴而就,实践出真知。
2024-12-13 18:30:35
296
原创 揭秘“山姆黄牛”背后的技术逻辑:用Java实现会员管理系统的防黄牛策略
通过上述设计和实现,我们构建了一个简单的会员管理系统,该系统能够有效防止“黄牛”现象的发生。当然,这只是一个基础版本,实际应用中还需要考虑更多的因素,例如与数据库的集成、并发处理、系统安全性等。同时,我们也可以利用大数据和机器学习技术,对会员的消费行为进行更深入的分析和预测,从而进一步提高系统的准确性和可靠性。配图(示意图)| 会员管理系统 || 1. 会员验证模块 || - 验证会员身份 || 2. 消费监控模块 || - 监控消费频率 || - 异常消费警告 |
2024-12-13 14:19:03
479
原创 Java 设计模式——深入浅出组合模式:构建灵活的树形结构
组合模式,顾名思义,就是将对象组合成树形结构,以此来清晰地表示“部分 - 整体”的层次关系。这意味着,无论是单个的对象,还是由多个对象组合而成的复杂对象,在使用方式上对用户来说都是一致的,大大简化了代码的复杂性,提高了代码的可维护性和可扩展性。组合模式作为一种强大的设计模式,为处理树形结构数据提供了优雅而高效的解决方案。它通过统一整体和部分的操作方式,简化了复杂结构的处理,提高了代码的灵活性和可维护性。无论是在构建公司组织结构、文件系统,还是其他具有层次结构的场景中,组合模式都能发挥重要作用。
2024-12-12 18:28:39
1209
原创 Java 设计模式——从冰雪经济看设计模式的综合运用(工厂、单例、策略、观察者)
当冬季的寒风拂过大地,冰雪经济如同一颗璀璨的明珠,在寒冷中散发着炽热的魅力。滑雪场、冰雕展、冰雪主题酒店等各类冰雪产业蓬勃发展,其背后的运营逻辑和策略,与 Java 设计模式有着奇妙的相似之处,为我们深入理解和运用 Java 设计模式提供了独特的视角。
2024-12-12 13:36:03
791
原创 Java 设计模式——从日本军援四国事件策略与适配的巧妙运用
在国际局势波谲云诡之际,日本宣布军援菲律宾等四国这一事件,看似与编程世界风马牛不相及,实则蕴含着诸多可类比于Java设计模式的精妙逻辑。就如同各国在复杂地缘博弈中需灵活制定战略、适配不同国情与局势,Java开发者面对多变的业务需求,设计模式便是手中的王牌,助我们打造稳健、可扩展的代码架构。
2024-12-11 18:06:24
347
原创 为什么你用的 MyBatis 慢?一行配置让它性能翻倍!
例如,MyBatis 的一级缓存机制,虽说初衷是减少数据库查询,提升性能,但在多线程并发读写场景下,缓存频繁失效、重建,额外的锁开销让性能大打折扣;还有它每次执行 SQL 时创建 Statement 对象的过程,若不优化,反复的创建与销毁,就像车辆频繁启停,油耗(系统资源)激增,速度(执行效率)自然上不去。为验证效果,我们在多个项目实战测试。合理配置一级缓存范围,针对只读业务开启二级缓存,设置合理的缓存过期时间,例如缓存热门商品分类信息 30 分钟,定期清理无效缓存,确保数据准确性与读取效率平衡。
2024-12-11 18:04:32
1314
原创 数据类型与 JSON 格式:轻松掌握数据处理的基石
数据类型和 JSON 格式是数据处理领域的重要基石。理解数据类型的三种基本形式,能够帮助我们更好地组织和存储数据。而掌握 JSON 格式的规则和特点,让我们在数据交换和系统通信中如虎添翼。同时,清楚数组和对象的区别与联系,能够让我们在编程中根据实际需求做出正确的选择。希望通过今天的分享,你对数据类型和 JSON 格式有了更深入的理解,在数据处理的道路上更加得心应手。如果你在学习或工作中遇到了数据相关的问题,不妨回顾一下这些知识,相信会给你带来新的启发。代老师的编程课。
2024-12-10 18:27:58
1083
原创 35+程序员的职场焦虑:数字化时代的年龄偏见与应对策略
数字化时代对技术人员的职级要求越来越高,尤其是在一些大公司和高科技企业中,35岁以上的技术人员往往被视为“管理型”人才的候选人,而不再被认为是技术核心力量。相反,技术的深度和广度是随着经验的积累而增长的,35+的程序员在技术的。数字化时代并不应该是年轻人的专利,35+技术人员在丰富的经验、深厚的技术积累和跨领域的能力上,依然可以为行业做出巨大的贡献。数字化时代的职场是一个充满挑战与机遇的舞台,尤其对于35+的技术人员来说,如何打破年龄偏见,突破技术和管理的双重壁垒,是他们必须面对的课题。
2024-12-10 18:21:28
847
原创 从“紧急戒严”到“线程同步”:如何避免Java多线程编程中的混乱局面
通过韩国政治事件中各方行动缺乏协调导致混乱,类比到Java多线程编程中,我们深刻认识到多线程同步的重要性。在Java程序中,正确使用同步机制可以避免数据不一致、冲突等问题,保障程序的稳定运行。正如韩国政治局势需要各方协调合作才能稳定发展一样,Java多线程程序也需要合理的同步控制来确保各个线程之间的协调与合作,实现程序的正确执行。希望通过本文的介绍,大家能更好地理解和运用Java多线程同步机制,避免在实际编程中出现类似韩国政治事件中的混乱局面。
2024-12-09 15:26:47
549
原创 年薪20+万美元,每周仅工作5小时?斯坦福研究发现:9.5%的“幽灵工程师”每年浪费900亿美元!如何避免“幽灵工程师”现象影响项目生产力
幽灵工程师”是指那些看似在工作,但实际贡献极其有限的工程师。虽然他们可能每月提交的代码量看起来不少,但这些代码往往缺乏实际的业务价值。例如,提交一行无意义的代码,或者仅仅在提交时做微小的重构。最令人震惊的是,研究表明,这类工程师的年薪可能达到20万至30万美元,但他们的实际贡献却微乎其微。提交的代码质量差,缺乏深度和逻辑性;在开发过程中“拖延”项目进度,给出模糊的借口;不参与代码审查或缺乏对团队文化的贡献。那么,作为技术经理,如何避免“幽灵工程师”现象影响你的Java项目呢?
2024-12-09 15:23:35
593
原创 超详细!SED流编辑器从入门到精通
字符匹配char:字符本身匹配字符本身,如/abc/定位包含abc的行。数量限定符:匹配前面表达式出现了0或若干次,如/a*/可以找到aaaaaa等。\+(扩展正则表达式):匹配前面表达式的1次或多次。(扩展正则表达式):匹配前面表达式的0次或1次。\{i\}:匹配前面表达式的i次(i为整数),如a\{3\}找到aaa。\{i,j\}:匹配前面表达式的i到j次,如a\{1,2\}找到a或aa或aaa。\{i,\}:匹配前面表达式至少i次。分组与引用()
2024-12-02 19:19:04
969
原创 Java 设计模式——策略模式:如何应对乌克兰“北约加入”决策的变化
策略模式是一种行为型设计模式将一系列的算法封装到独立的策略类中,使它们可以互换。让客户端可以根据需要选择不同的策略,而不需要关心策略的具体实现。通过策略模式的使用,我们能够灵活地处理系统中不同情境下的决策问题,就像乌克兰政府面临的外交战略选择一样。策略模式不仅能让代码保持清晰和可维护,而且能让系统具备更强的灵活性和可扩展性。无论是在国际政治还是软件设计中,灵活应对变化是成功的关键。通过策略模式,你的系统也能像泽连斯基那样,根据不同的局势做出快速而有效的决策。希望这篇文章能够帮助你理解如何将策略模式。
2024-12-02 08:45:53
1271
原创 MySQL 分页优化:让查询速度飞起来!
优化方式大分页,带 WHERE大分页,不带 WHERE大分页平均提升比例小分页,带 WHERE小分页,不带 WHERE总体平均提升比例子查询优化28.20%10.60%19.40%24.90%554.40%154.53%INNER JOIN 优化30.80%30.20%30.50%156.50%11.70%57.30%覆盖索引优化(示例)显著提升(具体根据数据和查询而定)显著提升(具体根据数据和查询而定)显著提升(具体根据数据和查询而定)
2024-12-01 11:26:19
1634
原创 Java设计模式——适配器模式的精妙应用:探秘 JDK 源码中的 Set 类
通过深入剖析 JDK 源码中 Set 类对适配器模式的应用,我们不仅揭开了 Set 类高效实现元素唯一性判断和操作的神秘面纱,更深刻体会到了设计模式在优化代码结构、提高代码复用性和灵活性方面的巨大威力。这就像在黑暗中点亮了一盏明灯,为我们今后的编程实践指明了方向。在日常编程中,我们不应仅仅满足于使用现成的类和接口,更应该像这样深入源码,学习大师们的设计思路和技巧。只有这样,我们才能不断提升自己的编程水平,打造出更加高效、健壮、优雅的软件系统。
2024-12-01 11:21:12
625
原创 Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
观察者模式属于行为型设计模式当对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。这种模式非常适用于当系统中的某一部分状态变化需要同时通知到其他部分的场景。通过优衣库不使用新疆棉事件,我们可以清晰地看到观察者模式在应对复杂决策和动态反应中的优势。当品牌作出决策时,消费者和舆论等多个观察者会收到通知并做出反应,无缝的事件驱动机制让这种决策的传播变得高效且灵活。如果你的系统中涉及到多个模块需要对某一变化做出响应,观察者模式无疑是一个非常合适的解决方案。
2024-11-30 14:01:56
899
原创 从零打造基础HTTP服务器:揭秘背后的技术魔法-MiniTomcat
通过这次从零实现一个基础HTTP服务器的探索之旅,我们不仅深入了解了HTTP服务器的基本工作原理、代码实现方式,还学会了如何对其进行优化和拓展。虽然我们实现的这个服务器还比较简单,但它却是我们深入学习网络编程、服务器开发的一个重要基石。在未来的学习和实践中,我们可以继续深入探索,比如研究更复杂的服务器架构、学习如何保障服务器的安全性、探索如何更好地处理高并发场景等等。相信只要我们不断努力,就一定能在服务器开发的道路上越走越远,打造出更加优秀、强大的服务器,为网络世界的信息传输贡献更多的力量!💖。
2024-11-29 18:48:24
918
原创 Java设计模式——装饰模式与代理模式:深度剖析差异与应用
通过对装饰模式和代理模式的深入剖析,我们清晰地看到了它们在设计理念、实现方式和应用场景上的显著差异。理解这些差异,就如同掌握了一把开启高效编程之门的钥匙,能够帮助我们在面对不同的软件开发需求时,准确地选择合适的设计模式,打造出更加灵活、可靠、安全的软件系统。在未来的编程探索中,我们还会遇到更多精彩的设计模式,它们各自都有着独特的魅力和应用价值。让我们继续保持对技术的热情和好奇心,不断学习和实践,用设计模式的智慧点亮我们的编程之路,创造出更加优秀的软件作品!🚀。
2024-11-29 11:31:48
1049
原创 Java设计模式——职责链模式:解锁高效灵活的请求处理之道
职责链模式可是对象行为模式家族里的“明星成员”哦!想象一下,有一群对象像链条上的环一样紧密相连,每个对象都知道下一个对象是谁(持有下家的引用)。当一个请求像小包裹一样在这条链上传递时,它会逐个经过这些对象。而发出请求的客户端呢,就像把包裹送到快递公司后就安心等待结果一样,完全不用操心到底是哪个对象最终会处理这个请求。这种模式最大的魅力在于它赋予了系统超级强大的灵活性。比如说,我们可以随时调整这条链的结构,添加、删除或者重新排列处理者,而客户端那边却感觉不到任何变化,就像魔法一样!🧙♂️。
2024-11-28 18:39:27
613
原创 Java设计模式——Facade 模式:简化复杂系统的 “魔法外衣”,码农必备!
Facade 模式,从字面上理解,就是给复杂的子系统穿上一件漂亮的“外衣”,为子系统中的一组接口提供一个统一且一致的界面。它的主要使命就是将系统内部那些让人头疼的复杂性统统隐藏起来,只把一个简洁明了、易于使用和理解的接口暴露给客户端。就好像一个魔法师,把杂乱无章的魔法道具(复杂系统的内部实现)藏在身后,只在前台展示一个神奇的魔法棒(Facade 接口),让观众(客户端)看到精彩绝伦的魔法表演(轻松调用系统功能),而无需关心背后的魔法是如何施展的(系统内部细节)。🌟。
2024-11-28 08:34:39
1126
原创 Java设计模式——策略模式 vs 工厂模式:解锁软件设计 “超能力”,码农必备!
嘿,各位奋战在代码“一线”的小伙伴们!今天咱要开启一场设计模式界的“巅峰对决”,主角就是策略模式与工厂模式这两大“王牌选手”。在软件开发这片“江湖”,选对设计模式,就如同大侠手握神兵,能让代码“如有神助”,轻松应对各种复杂“战局”。闲话不多说,现在就深挖它们的“绝技”,看谁才是你项目里的“最强辅助”!
2024-11-27 12:32:51
946
原创 Java设计模式——享元模式
享元模式英文称为“Flyweight Pattern”。其定义为:采用共享来避免大量拥有相同内容对象的开销,这里最常见、直观的开销就是内存损耗。享元模式以共享的方式高效支持大量细粒度对象。在该模式中,核心概念是共享,为实现共享,区分了内蕴状态和外蕴状态。内蕴状态是共性,存储在享元内部,不会随环境改变而不同,可共享;外蕴状态是个性,随环境改变而改变,由客户端保持,在具体环境下,客户端将外蕴状态传递给享元以创建不同对象。根据《Java与模式》,享元模式分为单纯享元模式和复合享元模式。
2024-11-27 08:34:10
691
原创 Java-23种设计模式
设计模式总体分为三大类:创建型模式(5种)、结构型模式(7种)和行为模式(11种)。在深入了解各种设计模式之前,先明确一下设计所遵循的原则,主要包括单一职责、开放封闭原则 - OCP(功能开放,代码闭合)、里氏替换原则(子类型能够替换掉父类型,松耦合)以及接口隔离原则 - ISP(不能出现胖接口,应该打散dao,多定义子接口)。这些原则为设计模式的合理运用提供了指导方针,确保软件系统具备良好的可维护性、扩展性和灵活性。
2024-11-25 09:38:04
1119
原创 第三章:MiniTomcat-连接器(Connector)组件大揭秘:构建强大服务器的关键一步!
在本章节中,我们将引入连接器(Connector)组件,用于管理 HTTP 连接和请求数据的解析。连接器的作用是负责客户端的网络连接,同时解耦网络传输和请求处理的逻辑。
2024-11-25 09:13:37
1577
原创 Servlet工作原理解析
Servlet 的运行模式是一个典型的”握手型的交互式”运行模式。接下去将会调用 Tomcat 的 start 方法启动 Tomcat,如果你清楚 Tomcat 的系统架构,你会容易理解 Tomcat 的启动逻辑,Tomcat 的启动逻辑是基于观察者模式设计的,所有的容器都会继承 Lifecycle 接口,它管理者容器的整个生命周期,所有容器的的修改和状态的改变都会由它去通知已经注册的观察者(Listener),关于这个设计模式可以参考《 Tomcat 的系统架构与设计模式,第二部分:设计模式》。
2024-11-11 15:59:59
1067
原创 第二章:MiniTomcat 系列 —— 抽丝剥茧解析 HTTP 请求,轻松驾驭静态文件支持
上一章内容在本章节中,我们将为 HTTP 服务器增加对请求路径、方法和头部信息的解析能力,并基于请求路径返回服务器上的静态文件内容。通过实现这一功能,我们将使服务器能够类似于静态资源服务器,为客户端提供 HTML、CSS、JavaScript 等文件的访问。
2024-11-11 14:42:03
711
原创 Mac上Java开发环境搭建与Spring Boot项目实践指南
在IDEA中打开新创建的Spring Boot项目,在src/main/java目录下,找到主应用类(通常带有@SpringBootApplication注解),在该类中添加一个简单的REST Controller,用于处理HTTP请求并返回“Hello World”字符串。运行主应用类,启动Spring Boot应用,使用浏览器或命令行工具(如curl)访问应用的URL(http://localhost:8080/hello),查看返回的“Hello World”字符串。
2024-11-10 11:34:07
835
原创 spymemcached源码深入分析
spymemcached 是一款使用 NIO 实现的 memcache 客户端,在理解它之前,需要先了解 NIO、memcached 使用和 memcached 协议相关知识。
2024-11-09 14:22:06
1032
原创 第一章:MiniTomcat 系列:解锁实现基础 HTTP 服务器的奥秘
通过这一章,我们实现了一个非常简单的 HTTP 服务器,能够监听来自客户端的请求,并返回一个静态的 HTML 页面。这个 HTTP 服务器只是一个最基本的框架,但它为我们后续增加更多功能(如静态文件支持、Servlet 容器等)奠定了基础。在下一章,我们将开始解析 HTTP 请求,并支持静态文件的提供。
2024-11-09 13:59:59
651
原创 2024 使用IDEA查看及运行Tomcat源码指南
在IDEA中,你需要根据需要配置Tomcat的运行参数,例如-Duser.language=en -Duser.region=US -Dfile.encoding=UTF-8,以防止一些乱码问题。通过本指南,你应该能够在IDEA中成功配置并运行Tomcat源码,从而更深入地了解Java Web开发的核心技术和原理。本指南的目的是帮助开发者了解Tomcat的内部实现机制,提升对Java Web开发的理解,并掌握在IDEA中查看和运行开源项目源码的方法。在IDEA中,可以通过点击调试按钮来启动调试会话。
2024-11-08 09:56:53
560
原创 高效文本处理神器,一站式解决你的文字处理需求!https://tools.zthinker.com
在数字化时代,文本处理是每个职场人士和内容创作者的日常需求。ZThinker (https://tools.zthinker.com/) 提供了一套强大的在线文本处理工具,帮助用户快速完成格式转换、文本对比、清理和提取等任务。无论你需要将文本从一种格式转换为另一种,还是对比不同版本的文档,ZThinker 的高效工具都能让你轻松应对。平台操作简单,无需下载,所有功能免费提供,确保你的数据安全。立即体验 ZThinker,提升工作效率,简化文本处理流程!
2024-11-01 12:33:29
375
libgen网站 数据库备份
2023-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人