- 博客(72)
- 收藏
- 关注
原创 C++中的智能指针现代C++内存管理的核心利器
智能指针的核心思想是将动态分配的内存所有权与对象的生命周期绑定,当智能指针对象离开其作用域时,其析构函数会自动释放所管理的内存,从而避免了手动管理带来的问题。weak_ptr是shared_ptr的配套指针,它允许访问由shared_ptr管理的对象,但不增加引用计数。当发生复制赋值时,原auto_ptr会失去对内存的所有权,这容易导致难以察觉的错误。C++11标准引入了三种主要的智能指针:unique_ptr、shared_ptr和weak_ptr,它们共同构成了现代C++内存管理的核心工具集。
2025-10-14 02:27:09
308
原创 C++编程艺术从新手到大师的进阶之路
此时,编写简单的程序,如计算器或数字排序,是巩固基础的有效方式。优秀的C++程序员懂得如何设计良好的类接口,将内部实现细节隐藏起来,只暴露必要的操作,从而增强代码的安全性和可维护性。深入理解虚函数、纯虚函数以及动态绑定的原理,是运用多态的关键,这也是区分中级和高级程序员的重要标志。从新手到大师的旅程,最终是形成一套自己的编程哲学和设计思想的过程。从简单的函数模板和类模板开始,逐步理解模板特化、偏特化等概念,最终可以窥见模板元编程的奇妙世界,它能够在编译期完成复杂的计算和类型推导,从而实现极高的运行时效率。
2025-10-14 02:26:11
377
原创 C++从右值引用到完美转发一场移动语义的革命
标准库中的容器(如`std::vector`, `std::string`)和智能指针(如`std::unique_ptr`)都因此获得了巨大的性能提升。传统的左值引用无法绑定到右值,导致在对象拷贝时,即使源对象是一个即将销毁的临时对象,也会触发昂贵的深拷贝操作,这在处理大型对象(如字符串、容器)时造成了显著的性能损耗。右值引用(使用`&&`符号表示)的提出,首次为语言提供了明确区分和操作临时对象的能力,为后续的移动语义和完美转发奠定了坚实的基础,堪称一场语法层面的革命。
2025-10-14 02:24:58
340
原创 [C++]智能指针在现代C++中的核心应用与内存管理艺术
std::unique_ptr`、`std::shared_ptr`和`std::weak_ptr`构成了现代C++资源管理的核心,将资源获取即初始化的理念发扬光大,极大地提升了代码的安全性与可维护性。`std::weak_ptr`是为了解决`std::shared_ptr`可能引起的循环引用问题而设计的。在现代C++开发中,首选`std::unique_ptr`来表达独占所有权,仅在确需共享所有权时才使用`std::shared_ptr`,并谨慎使用`std::weak_ptr`来避免循环引用。
2025-10-14 02:23:49
441
原创 C++编程艺术从新手到大师的进阶之路
你需要清晰地分辨栈内存和堆内存,精通智能指针(unique_ptr, shared_ptr, weak_ptr)的使用场景,以安全的方式管理动态内存,告别手动new/delete带来的烦恼。同时,应开始探索C++的高级特性,如模板元编程的初步概念、移动语义(移动构造函数、移动赋值运算符)和完美转发,这些是现代C++高效编程的利器。大师之路的最后一程,是将精湛的技术融入大规模的工程实践。在软件开发的浩瀚宇宙中,C++以其强大的性能、灵活的控制能力和广泛的应用领域,始终占据着举足轻重的地位。
2025-10-14 02:22:41
369
原创 C++编程艺术从入门到精通的实战指南
继承允许创建层次化的类结构,实现代码复用。从简单的函数模板到复杂的类模板,再到模板元编程,这一特性使得C++能够实现极高的抽象级别和运行时效率。指针提供了直接操作内存的能力,这是C++高效性的源泉,但也带来了复杂性和潜在风险,如内存泄漏和悬空指针。同时,C++语言生态在不断进化,持续关注社区动态、阅读优秀的开源代码(如Boost库)、参与标准讨论,都将帮助你保持技术的领先性,真正步入C++编程艺术的神圣殿堂。其强大的功能与复杂的语法特性并存,使得学习C++既是一场挑战,也是一次深刻的编程思想洗礼。
2025-10-14 02:21:39
337
原创 探究C++中智能指针的原理与应用从内存管理到现代编程实践
其次,在需要共享所有权的场景下使用shared_ptr,并时刻警惕潜在的循环引用问题,必要时使用weak_ptr作为补充。此外,在工厂函数中返回智能指针(通常是unique_ptr)已成为返回动态分配对象的推荐做法,它能明确所有权的转移,并避免客户端代码忘记释放内存。std::shared_ptr虽然强大,但可能引发循环引用问题:如果两个或多个shared_ptr相互引用,它们的引用计数将永远不会降为零,从而导致内存泄漏。当需要管理单个动态分配的对象或数组时,unique_ptr是首选工具。
2025-10-14 02:20:35
377
原创 标题深入理解C++智能指针从auto_ptr到unique_ptr的演进与最佳实践
对于遗留代码中使用的`auto_ptr`,现代C++开发中应坚决将其迁移至`unique_ptr`。由于语义相近,迁移过程通常比较直观。这一演进过程深刻反映了C++语言设计思想的成熟:从解决基本问题但存在缺陷的初始方案,发展到利用现代语言特性(如移动语义)构建出的安全、高效且表达力强的工具。理解`unique_ptr`不仅是掌握一个工具,更是理解现代C++资源所有权管理和移动语义思想的关键一步。
2025-10-14 02:19:32
262
原创 C++编程艺术从高效代码到系统设计的思维跃迁
现代C++的发展,特别是C++11以来引入的移动语义、智能指针等特性,极大地改变了我们编写高效代码的方式。从C++11的自动化类型推导和Lambda表达式,到C++17的结构化绑定和std::optional,再到C++20的协程和概念,现代C++正在变得更安全、更易用、更强大。保持学习的态度,理解新特性解决的问题和适用的场景,是每个C++开发者必备的素养。优秀的C++开发者懂得在模板的威力与复杂性之间找到平衡,并适时使用C++20引入的概念(concepts)来约束模板参数,提升代码的清晰度和可维护性。
2025-10-14 02:18:25
285
原创 C++标准库中智能指针的演进与最佳实践
为此,`std::weak_ptr`被设计为`shared_ptr`的观察者(Observer)。例如,将`auto_ptr`作为参数传递给函数,或者在标准容器(如`std::vector`)中存储`auto_ptr`,都会导致意外的所有权转移,使得后续对原`auto_ptr`的使用变得危险且难以预测。基于`auto_ptr`的经验教训,C++11标准带来了一个成熟且功能明确的智能指针家族,主要包括`std::unique_ptr`、`std::shared_ptr`和`std::weak_ptr`。
2025-10-14 02:17:27
354
原创 Java开发者必备深入剖析Lambda表达式与函数式编程实战技巧
例如,我们可以用一行代码完成对列表的过滤、转换和收集:list.stream().filter(s -> s.startsWith(A)).map(String::toUpperCase).collect(Collectors.toList())。方法引用是Lambda表达式的一种简化写法,当Lambda体仅仅是调用一个已存在的方法时,可以使用方法引用代替。Lambda表达式通过简洁的语法“(参数) -> 表达式”极大地简化了代码编写,使得开发者能够以更函数式的方式思考问题,提高代码的可读性和表现力。
2025-10-13 02:22:53
319
原创 深入解析Java中的StreamAPI高效数据处理与函数式编程实践
Stream API的核心思想在于将数据的计算过程抽象为一系列连续的数据处理流水线,这使得开发者能够以声明式的方式处理数据,而无需关心底层的实现细节。与传统的循环迭代操作相比,Stream API能够充分利用多核架构,通过内部迭代和惰性求值等机制,实现更简洁、更高效的数据处理。理解Stream的本质至关重要——它并非数据结构,而是关于计算的抽象,数据来源可以是一个数组、集合或I/O通道,其操作不会修改底层数据源,并且许多操作(如filter、map等)是惰性的,只有在需要结果时才会执行计算。
2025-10-13 02:21:54
270
原创 深入理解Java中的函数式编程Lambda表达式与StreamAPI实战指南
Lambda表达式和Stream API是Java现代编程风格的基石。通过拥抱函数式编程思想,开发者能够写出更简洁、更具表现力且更易于并行化的代码。掌握它们的关键在于理解函数式接口的概念、熟悉Stream的操作流程,并通过大量实践来体会其带来的便利与威力。随着对这些特性的深入理解,你将能显著提升Java开发的效率与代码质量。
2025-10-13 02:20:33
1697
原创 Java性能优化实战从代码细节到架构设计的深度调优指南
Java性能优化是一项需要全方位考虑的系统工程,从细微的代码习惯到宏观的架构决策,每一环节都可能成为性能提升的关键点。优秀的Java开发者应当具备跨越不同层面的性能优化思维,在保证代码可读性和可维护性的前提下,有针对性地实施优化策略。通过持续学习、实践和监控,才能构建出既高效又稳健的Java应用程序,满足不断增长的业务需求。
2025-10-13 02:19:07
380
原创 Java流式编程解锁集合操作的全新维度
例如,在一个巨大的集合中寻找第一个满足条件的元素时,流可以在找到该元素后立即停止处理后续数据,而不必遍历整个集合,这通过`findFirst()`等短路(short-circuiting)操作实现。此外,流提供了丰富的终端操作来满足各种收集需求,从简单的转换为列表(`toList`)到复杂的分组(`groupingBy`)、分区(`partitioningBy`)和汇总(`summarizingInt`)。总而言之,Java流式编程为集合操作开启了一个以声明式、函数式和并行化为核心的全新维度。
2025-10-13 02:18:13
416
原创 SpringBoot3.0中的响应式编程使用WebFlux构建高性能异步服务
Spring Boot 3.0作为Spring框架的重要里程碑,其一大核心特性便是对响应式编程的深度支持和优化。响应式编程是一种基于异步数据流和变化传播的编程范式,旨在构建具有弹性、可伸缩性和响应性的应用程序。在Spring Boot 3.0中,这一范式主要通过Project Reactor库和Spring WebFlux模块得以实现。
2025-10-13 02:16:57
306
原创 Java流式编程用StreamAPI重构传统循环的艺术
Stream API重构传统循环不仅仅是一种技术升级,更是一种编程哲学的转变。它鼓励开发者从繁琐的操作细节中解脱出来,专注于数据处理的本质逻辑。掌握这种艺术意味着能够写出更简洁、更安全、更易维护的Java代码,同时也为应对大数据量和并行计算场景提供了更好的工具。随着函数式编程理念的普及,Stream API无疑已成为现代Java开发者必备的核心技能之一。
2025-10-13 02:16:01
283
原创 《Java新特性解析深入理解Record类的应用与实践》
虽然Record能自动生成大部分代码,但它也允许开发者进行有限的自定义。你可以在Record体内声明额外的方法、静态字段和静态方法。更重要的是,你可以重写规范构造函数或访问器方法。} }}这是一种紧凑的构造函数写法,参数会隐式初始化对应字段,你只需添加校验逻辑即可。Java Record类是一个旨在提高开发效率、减少样板代码的强大特性。它通过简洁的语法定义了一种透明的数据聚合方式,强制实施了不可变性和值语义,适用于DTO、多返回值、复合键等多种场景。
2025-10-13 02:15:15
451
原创 《深入剖析ThreadLocal内存泄漏的根源与最佳实践》
ThreadLocal是一把双刃剑,它提供了简洁的线程隔离方案,但也要求开发者对其内存管理机制有清晰的认识。理解其内存泄漏的根源——即ThreadLocalMap中Entry对值的强引用——是避免问题的第一步。而养成在使用后立即调用`remove()`方法的习惯,并将其置于finally块中以保证执行,则是防止内存泄漏的最佳实践。通过遵循这些准则,开发者可以安全、高效地利用ThreadLocal来构建健壮的并发应用程序。
2025-10-13 02:14:16
314
原创 Java内存模型深度解析可见性、有序性与原子性的协同之道
Happens-Before规则定义了一系列偏序关系,如果操作A Happens-Before 操作B,那么A操作的结果对B操作是可见的,且A操作按顺序排在B操作之前。这就可能导致一个问题:一个线程修改了共享变量的值,但还没来得及将修改后的值同步回主内存,此时另一个线程读取到的仍然是旧的值,从而造成数据不一致。最基本的原子性操作是对基本数据类型(除long和double外)的读写,但更常见的需求是保证一段代码块的原子性,例如经典的“读-改-写”操作(i++)。包下的原子类来保证。)中的许多工具类,如。
2025-10-13 02:13:14
268
原创 Java中的StreamAPI现代数据处理与函数式编程的完美融合
Java Stream API与现代数据处理的完美融合,不仅仅是语法糖,它更是一种思维方式的进化。它鼓励开发者以更抽象、更声明式的方式来思考问题,专注于数据流动和转换的逻辑。尽管在简单循环的场景下,传统方式可能仍有其用武之地,但对于复杂的数据处理任务,Stream API在可读性、可维护性和性能潜力上都具有明显优势。掌握Stream API和其背后的函数式编程思想,是每一位Java开发者迈向现代软件开发的必经之路。
2025-10-13 02:11:50
443
原创 《Java流式编程用StreamAPI重构传统循环的深度探索》
Stream API是Java迈向现代编程语言的重要一步,它提供了一种更高级别的抽象来处理数据。其声明式、函数式的风格极大地提升了代码的可读性、可维护性,并简化了并行编程。虽然传统循环在特定场景下仍不可替代,但对于大多数复杂的数据处理任务,Stream API无疑是更优的选择。掌握Stream API,并理解其背后的思想,是现代Java开发者必备的技能。
2025-10-13 02:10:39
1312
原创 探索Java17中的模式匹配与switch表达式现代编程新范式
Java 17中的模式匹配与switch表达式现代化代表了Java语言发展的一个重要方向。通过减少样板代码、提高类型安全性以及增强代码表达力,这些特性使开发者能够编写更简洁、更健壮的代码。尽管部分功能仍处于预览阶段,但它们已经展示了Java在保持向后兼容的同时,积极拥抱现代编程范式的决心。随着这些特性的成熟和扩展,Java将在表达力和安全性方面达到新的高度。
2025-10-13 02:09:43
394
原创 【JVM深度解析类加载机制与双亲委派模型的源码剖析】
JVM的类加载机制与双亲委派模型共同构筑了Java应用稳定运行的基石。通过层次化的加载器结构和“向上委派”的加载策略,它不仅确保了核心库的安全,也维护了类的一致性与隔离性。深入理解其源码实现,有助于开发者洞悉JVM的内部工作原理,在遇到类加载冲突、类找不到等复杂问题时能够快速定位根源。同时,了解如何以及为何要打破这一模型,也为实现更高阶的动态化、模块化技术方案提供了理论依据和实践指导。
2025-10-13 02:08:11
406
原创 JavaStreamAPI深入剖析数据处理的现代化范式
通过`Collectors`,可以轻松实现各种复杂的转换:从简单的转换为List、Set、Map,到高级的分组(`groupingBy`)、分区(`partitioningBy`)、连接字符串(`joining`),乃至自定义的复杂汇总(`summarizingInt`)。许多流操作(如`findFirst`, `max`, `min`)的返回结果是`Optional`类型,这强制开发者以安全的方式处理空值问题,避免了令人头疼的`NullPointerException`。
2025-10-13 02:06:27
304
原创 在数字迷宫中追寻逻辑之光编程与哲学的交叉探索
因此,编程远不止是冰冷的工具理性。在数字迷宫中追寻逻辑之光,是一次充满哲思的探险。它要求我们兼具严谨的逻辑思维和深刻的抽象反思能力,在构建数字世界的过程中,不断地叩问存在、因果、系统、知识和局限等根本问题。当代码被赋予逻辑的生命,它便成为我们探索理性边界、理解世界结构的一面镜子。编程与哲学的交叉探索,最终指向的不仅是如何让机器更“智能”,更是如何让我们自身在数字时代获得一种清晰的、批判性的生存智慧。
2025-10-11 17:46:28
283
原创 深入理解TypeScript类型编程从泛型到条件类型的实战指南
TypeScript的类型系统从简单的泛型到复杂的条件类型,提供了一套强大的工具集,使我们能够表达复杂的类型关系和约束。通过熟练掌握这些概念,我们可以构建出既灵活又类型安全的代码库,减少运行时错误,提高开发效率。实际应用中,这些类型编程技巧特别适合用于构建库、框架以及需要高度类型安全的业务逻辑中。记住,类型系统的目标不是增加复杂性,而是通过编译时的检查,让我们的代码更加可靠和易于维护。
2025-10-11 17:45:26
254
原创 如何构建一个完美的[编程语言]生态系统工具链、社区与最佳实践
大力倡导“文档即代码”的文化,鼓励所有 crate 的维护者为其项目提供清晰、可搜索的文档,并利用Cargo和docs.rs服务自动生成和发布文档。在关键领域(如Web框架、异步运行时、GUI库)鼓励健康的竞争和创新,避免形成单一的、官方的垄断解决方案。对于标准库范围之外但具有普遍需求的功能(如HTTP客户端/服务器、序列化、数据库连接等),可以通过官方或社区大力支持的“赏金”计划或工作组(Working Groups)来重点扶持关键库的开发,确保其达到生产级质量。工具链是骨架,而社区则是生态系统的灵魂。
2025-10-11 17:44:25
280
原创 未来城市智慧化转型编程语言在数字孪生中的关键角色
新型的编程语言,如专注于并发处理的Go语言、适用于数据密集型和AI任务的Python,以及专为物联网边缘计算设计的Rust等,扮演了至关重要的“翻译官”角色。同时,支持微服务架构的编程范式,允许数字孪生体的不同功能模块(如交通模块、能源模块)独立开发、部署和升级,从而使整个系统能够像生物体一样,随着城市的发展而持续迭代优化,真正成为与物理城市同生共长的“智慧双胞胎”。这些语言不仅是编写代码的工具,更是城市智能化转型过程中的关键塑造者,它们决定了数字孪生体的构建效率、交互能力与进化潜力。
2025-10-11 17:43:22
294
原创 从Python到Rust系统编程语言的学习路径与实践解析
从Python转向Rust是一场充满挑战但回报丰厚的旅程。初期必然会遇到编译错误的挫败感,但每一次解决错误都是对系统编程理解的深化。关键在于保持耐心,不要试图一次性理解所有概念,尤其是所有权和生命周期。通过不断编写代码、阅读文档和社区交流,你会逐渐适应Rust的思维方式,并最终能够利用其强大的能力构建高效、安全的系统级软件。记住,目标不是取代Python,而是为你的技术栈增添一件解决特定问题的强大武器。
2025-10-11 17:42:28
413
原创 **用Python实现一个简单但强大的命令行待办事项列表管理器**
在日常生活和工作中,我们常常需要管理各种待办事项,以有效追踪任务进度并提高效率。虽然市面上有许多复杂的任务管理应用,但一个轻量级、可定制且无需依赖图形界面的工具往往更具吸引力。本文将介绍如何使用Python构建一个简单而强大的命令行待办事项列表管理器。该工具将具备添加、查看、标记完成和删除任务等核心功能,所有数据存储在本地JSON文件中,确保数据持久化。我们将为每个操作编写独立的函数:: 从文件加载任务列表。: 将当前任务列表保存到文件。: 添加新任务,自动生成ID和时间戳。
2025-10-11 17:41:30
456
原创 以Python在金融数据分析中的实战应用
Python在金融数据分析中的应用已经深入到行业的各个环节,从基础的数据处理到复杂的模型构建。其丰富的库生态系统、简洁的语法和强大的社区支持,使其成为金融专业人士的首选工具。随着人工智能和大数据技术的不断发展,Python在金融领域的应用将更加广泛和深入。然而,需要注意的是,金融市场的复杂性和不确定性意味着任何模型和策略都存在局限性。在实际应用中,应当结合领域知识,谨慎评估模型风险,确保数据分析结果能够为决策提供可靠支持。
2025-10-11 17:40:35
422
原创 函数式魔法当编程语言遇见哲学思辨
因此,函数式编程远不止是编码技巧的集合。它是一种深刻的思维方式,一种将计算视为数学映射而非状态转换的世界观。当程序员沉浸于函数式魔法时,他们实际上是在进行一场持续的哲学思辨:关于纯净、抽象、不变性与本质的思考。这种范式教会我们的,或许不仅仅是写出更简洁、更安全的代码,更是一种如何清晰、严谨地理解和构建复杂系统的智慧。在代码与思辨的交汇处,函数式编程成为连接技术实践与哲学思考的一座迷人桥梁。
2025-10-11 17:39:17
330
原创 编程语言赋能数字时代的创造力引擎
但毋庸置疑的是,熟练驾驭编程语言这一创造力引擎,将是个人与社会在数字时代保持竞争力的关键。全球的开发者通过GitHub等平台协作,共享代码库和开发工具,使得创新不再是孤军奋战,而是基于集体智慧的接力与迭代,极大地加速了技术进步的进程。从智能手机上的便捷应用到探索宇宙的航天科技,编程语言无处不在,将抽象的思想转化为具象的现实,赋能每一个个体成为数字世界的创造者。他们无需从零开始,而是可以复用、修改和增强已有的优秀代码,将精力集中于最具有创造性的环节,这本质上是一种创造力的指数级增长模式。
2025-10-11 17:38:18
258
原创 [编程代码]编织诗意当算法邂逅唐宋风骨
编程与诗词,一者服务于现代科技,一者孕育于古典文化,看似殊途,实则同归。它们都需要创造力、逻辑思维和对形式美的追求。当算法与诗意邂逅,代码便不再仅仅是功能性的符号,它也可以承载一种思维之美、结构之美。在数字时代,程序员用代码编织的,正是属于这个时代的独特诗篇,其中蕴含的严谨、智慧与创造力,与唐宋风骨一脉相承。
2025-10-11 17:36:15
431
原创 《代码深处的诗意当编程语言遇见中文之美》
开发者命名时,不仅是在定义一块内存空间,更是在进行一场微型的文学创作,将抽象的逻辑转化为具象的诗行,让代码在机器执行之外,平添几分人文的温度与想象的余地。一个高内聚、低耦合的函数,恰似一首完整的五言绝句,在有限的篇幅内完成一个独立的意念表达。模块的划分、层次的安排、数据流的走向,都需要一种整体的布局感,追求的是“气韵生动”的效果。一段优美的注释,可以用简洁的中文点明代码段的意图、背景或精妙之处,如同为代码这首“诗”作注,引导读者(后来的开发者)深入其境,理解创作者当时的构思与情怀,完成一次跨越时空的对话。
2025-10-11 17:35:26
287
原创 《码上诗篇当编程语言邂逅中文之美》
当编程语言邂逅中文之美,代码便超越了纯粹的工具属性,成为承载思想与文化的载体。每一位开发者,都是这场邂逅的诗人,用逻辑作韵脚,以算法为平仄,在数字时空里书写着属于这个时代的“码上诗篇”。这诗篇,既解决着现实世界的难题,也展现着中文在科技领域的独特魅力与无限可能。
2025-10-11 17:34:35
359
原创 《代码编织诗意当编程语言遇见中文之美》
当编程语言遇见中文之美,代码便超越了其工具属性,成为一种新的文化表达形式。它用逻辑的丝线,编织着感性的图景;用精确的语法,承载着朦胧的意境。在这个过程中,程序员不仅是构建者,更成为了数字时代的诗人,在0与1的二元世界里,以键盘为笔,以屏幕为卷,持续书写着融汇科技与人文的崭新诗篇。这种相遇,让技术拥有了温度,也让古老的文字焕发出时代的生机。
2025-10-11 17:33:45
387
原创 “代码的禅意当逻辑遇见诗意”
这种“见山是山,到见山不是山,再到见山还是山”的认知过程,在代码的抽象层次中得到了完美的体现,营造出一种功能性与美感兼具的空灵意境。它的缩进是节拍,函数是诗节,算法是内在的韵律。当逻辑的严谨为诗意的表达提供了坚实的基石,诗意的想象又为逻辑的应用注入了人文的温度,代码便不再是冰冷的指令集合,而成为人类智慧与创造力的一首首凝固的诗,在数字世界中静静地散发着理性与美感交织的光芒。运用恰当的模式,能使代码具有更强的适应性和表现力,犹如诗人娴熟运用典故,以寥寥数语引发丰富的联想,使程序结构清晰、意境深远。
2025-10-11 17:32:52
485
原创 深入解析MySQL索引优化从B+树原理到实战SQL性能提升
首先,使用`EXPLAIN`命令分析SQL语句的执行计划,关注`type`(访问类型)、`key`(使用的索引)、`key_len`(索引使用长度)、`rows`(扫描行数)和`Extra`(额外信息)等列。该原则指的是,查询条件必须从索引的最左列开始,并且不能跳过中间的列,才能充分利用索引。但如果创建一个复合索引`(username, user_id)`,那么这个索引的叶子节点已经包含了`user_id`和`username`,查询可以直接在索引中完成,速度会快得多。选择性越高,索引的效率通常也越高。
2025-10-10 01:58:26
315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅