自定义博客皮肤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历程

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

原创 linux操作命令笔记

本文总结了Linux常用命令速查表,涵盖八大类操作:1) 文件和目录管理(ls、cd、cp等基础命令);2) 文件内容查看与编辑(cat、vim等);3) 搜索命令(find、grep);4) 权限与用户管理(chmod、useradd);5) 压缩解压(tar、zip);6) 进程管理(ps、kill);7) 网络操作(ping、ssh);8) 磁盘管理(df、du)。每个命令均配有简要说明和典型用法示例,是Linux系统操作的实用参考手册。

2025-07-09 17:43:31 239

原创 Java 17 新特性笔记

Java 17是2021年9月发布的长期支持版本(LTS),主要特性包括:1)语言增强如封闭类(Sealed Classes)、switch模式匹配预览和正式化的instanceof模式匹配;2)API改进如强封装内部API、新RandomGenerator接口、Foreign Memory API和Vector API(均为孵化);3)移除Applet等旧特性;4)JVM性能优化如ZGC和Shenandoah GC稳定化。该版本整合了Java 12-16的多项特性,在安全性、性能和开发效率方面均有提升。作

2025-07-09 17:37:07 641

原创 Java 8 相对于 Java 7 的新增特性笔记

Java 8是2014年发布的革命性版本,引入了多项重要特性:1)Lambda表达式简化函数式编程;2)函数式接口与方法引用;3)Stream API支持集合函数式操作;4)接口默认方法;5)Optional类避免空指针;6)新日期时间API;7)重复注解与类型注解;8)Nashorn JavaScript引擎;9)并发与集合类优化。这些改进使Java更现代化,提升开发效率与代码可读性。

2025-07-09 17:33:35 256

原创 记录一下ubuntu22.02可以ping通,但是telnet不行

摘要:Ubuntu 22.04系统出现ping通但telnet连接失败的问题,可能由于目标端口未监听、防火墙限制、服务未运行或IP绑定错误导致。排查步骤包括:检查网络连通性(ping/traceroute)、验证端口监听状态(ss -tuln)、配置防火墙(ufw)、确保服务运行(systemctl)、调整服务绑定IP(如0.0.0.0),以及检查Telnet客户端安装。最终需综合判断服务、防火墙及网络配置,并建议使用nc/curl等工具替代telnet测试TCP端口。

2025-07-07 23:51:49 387

原创 一条 SQL 语句的内部执行流程详解(MySQL为例)

MySQL查询执行流程详解:从客户端SQL提交到结果返回,需经历7个关键阶段。首先建立连接并进行权限验证(1),然后通过词法/语法分析生成抽象语法树(2),预处理阶段验证表字段并构建逻辑查询(3)。优化器基于成本估算选择最优执行计划(4),执行器调用存储引擎接口完成数据访问(5),InnoDB通过缓冲池和B+树索引定位记录(6)。最终结果经网络协议返回客户端(7)。整个过程涉及索引优化、执行计划选择等核心机制,EXPLAIN命令可查看具体执行策略。

2025-07-06 20:02:14 896 2

原创 Java 双亲委派机制笔记

双亲委派机制是Java类加载的核心机制,它通过层级委托方式确保类加载安全性和一致性。该机制要求类加载器先委托父加载器加载类,只有父加载器无法完成时才自行加载。Java类加载器分为启动类、扩展类、应用类和自定义类加载器,共同构成树形结构。双亲委派的优点包括避免类重复加载、保障安全性和类型一致性。但在SPI、Web容器等场景下需要打破该机制。类隔离由"类名+加载器"共同决定,不同加载器加载的相同类被视为不同类型。理解双亲委派机制对掌握Java类加载原理至关重要。

2025-07-06 19:43:33 939

原创 Java NIO 模型笔记

本文介绍了Java NIO(New I/O)的核心概念与工作机制。主要内容包括:NIO与BIO的对比,NIO三大核心组件(Channel、Buffer、Selector)的详解,以及NIO的工作流程图和示例代码。NIO采用非阻塞和选择器机制,适合高并发服务器开发,但编程复杂度较高。文章还提及基于NIO的Netty框架,建议实际开发中使用Netty等高层封装框架。全文系统性地阐述了NIO的特性、优缺点及适用场景,为构建高性能网络应用提供了技术参考。

2025-07-06 10:39:30 946 1

原创 Redis Cluster 与 Sentinel 笔记

Redis 提供两种高可用方案:Cluster 和 Sentinel。Redis Cluster 采用分布式架构,通过16384个槽位实现数据分片,支持自动故障转移和横向扩展,适合大规模部署。Redis Sentinel 专注于主从架构的故障检测和自动切换,部署简单但无法分片。Cluster 适合分布式场景,但不支持跨节点事务;Sentinel 适合小型高可用需求。两者均支持自动故障转移,但 Cluster 复杂度更高,需专用客户端支持。选择方案需根据业务规模和数据扩展需求权衡。

2025-07-05 16:59:31 917

原创 Java 创建对象过程 & JVM 内存分配并发安全笔记

Java对象创建过程详解:1)类加载检查确保类已加载;2)内存分配采用指针碰撞或空闲列表策略,并使用CAS/TLAB保证并发安全;3)初始化包括空间清零、设置对象头和调用构造方法。对象内存结构包含对象头、实例数据和对齐填充。JVM通过逃逸分析优化可能将对象分配在栈上。常见创建方式包括new、反射和clone等,各具特点。面试常考察创建步骤、并发安全机制和分配位置优化等核心问题。

2025-07-05 16:52:30 1009

原创 Ubuntu 22.04 修改默认 Python 版本为 Python3 笔记

本文介绍了在Ubuntu 22.04中将默认python命令从Python 2切换到Python 3的方法。主要内容包括:通过update-alternatives工具添加Python3为候选项并设为默认;验证切换结果;处理pip的对应配置;以及恢复Python2的方法。文中强调使用update-alternatives的安全性和必要性,同时建议在项目开发中使用虚拟环境。该操作解决了现代开发工具依赖Python3而系统默认指向Python2的兼容性问题。

2025-07-05 16:45:46 419

原创 Java 并发核心:AQS(AbstractQueuedSynchronizer) 详解

AQS(AbstractQueuedSynchronizer)是Java并发包的核心同步框架,用于构建锁和同步器。它通过FIFO队列管理线程状态,提供独占和共享两种模式。核心包括volatile的state变量、CLH队列和模板方法(tryAcquire/tryRelease)。工作流程涉及获取锁(失败入队阻塞)、释放锁(唤醒后续线程)。典型应用包括ReentrantLock、Semaphore等。AQS封装了底层线程调度,具有高复用性,但需注意死锁和性能问题。ReentrantLock通过继承AQS实现公

2025-07-04 22:46:33 1061

原创 Java 中的锁机制详解

Java 提供了丰富的锁机制实现多线程并发控制,主要包括内置锁synchronized和JUC显式锁。锁的分类维度包括实现层面、可重入性、公平性、读写粒度等。常见锁类型有:synchronized(简单同步)、ReentrantLock(高级控制)、ReadWriteLock(读多写少)、StampedLock(高性能读写)以及乐观锁(CAS)。JVM会自动进行锁升级(偏向锁→轻量级→重量级)。选型需考虑线程竞争程度、读写比例、功能需求(如公平性、中断响应)和性能要求,合理使用锁能有效避免死锁并优化并发性能

2025-07-04 22:39:03 632

原创 Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南

摘要: 在Ubuntu系统安装MySQL 8后可能因未提示root初始密码导致无法登录。传统跳过权限表修改密码的方法可能残留隐患。本文提供三步修复方案: 跳过验证启动:通过--skip-grant-tables进入无密码模式; 重建root账户:彻底删除旧root用户并创建新账户,设置强密码; 恢复配置验证:移除临时配置,重启服务确保密码生效。关键步骤包括FLUSH PRIVILEGES刷新权限表,并建议检查配置文件和密码策略。此方法可解决权限表异常问题,适用于密码丢失或损坏场景。

2025-07-04 22:30:34 425

原创 redis缓存三大问题分析与解决方案

Redis缓存三大问题分析与解决方案 摘要:缓存技术(如Redis)能提升系统性能,但会带来三大核心问题:缓存穿透(请求不存在数据)、缓存击穿(热点key失效)、缓存雪崩(大量key同时过期)。针对这些问题,文章提出了具体解决方案:缓存穿透可采用空值缓存、参数校验或布隆过滤器;缓存击穿建议使用互斥锁或逻辑过期策略;缓存雪崩可通过随机TTL、多级缓存和限流降级来应对。最后强调实战中要区分冷热数据、设置合理TTL,并建立统一缓存组件处理这些问题。

2025-07-03 22:32:04 966

原创 项目中数据库表设计规范与实践(含案例)

数据库表设计核心原则:单一职责、规范命名、原子字段、合适数据类型、适度冗余、逻辑删除。遵循高内聚低耦合,兼顾性能与扩展性。秒杀系统建议用逻辑约束代替外键,避免性能损耗。典型表结构包括用户表、商品表、订单表等,需注意索引优化和状态管理。良好设计应具备清晰结构、统一命名、适度冗余等特点,并配套完整文档说明。

2025-07-03 22:18:34 1229

原创 服务器部署流程笔记(Docker + 前后端项目)

本文介绍了在CentOS系统上使用Docker部署前后端项目的完整流程。主要内容包括:1)卸载旧版Docker并配置阿里云Yum源;2)安装Docker并设置镜像加速器;3)创建Docker网络并安装MySQL、Redis、RabbitMQ等基础组件容器;4)前端项目打包及Nginx配置(含Dockerfile示例);5)SpringBoot后端项目的Docker部署;6)可选的使用Docker Compose编排服务。文章提供了详细的命令示例和配置文件模板,涵盖了从环境准备到应用部署的全过程,适合作为服务

2025-07-03 09:06:15 237

原创 HTTPS详解:原理 + 加解密过程 + 面试问答

HTTP与HTTPS的核心区别在于安全性:HTTP明文传输(80端口),HTTPS通过TLS加密(443端口)。HTTPS实现三大安全目标:机密性(对称加密)、身份认证(数字证书)、完整性校验(摘要算法)。TLS握手采用混合加密:非对称加密交换密钥,对称加密传输数据。TLS 1.3比1.2更快更安全(0-RTT、强加密)。数字证书由CA签发,浏览器验证防止中间人攻击。HTTPS适用于所有需保密的场景(登录、支付等),是当前网络安全的基础保障。

2025-07-02 18:57:10 902

原创 Redis 持久化机制

Redis持久化机制详解:RDB、AOF与混合模式 Redis提供了三种持久化方式保障数据安全:RDB快照、AOF日志和混合持久化。RDB通过定时全量备份内存数据,适合备份场景,但可能丢失最新数据;AOF记录每条写命令,数据更完整但性能开销较大;混合模式(Redis 4.0+默认)结合了两者优势,在AOF文件中嵌入RDB快照,既保证恢复速度又保持数据完整性。实际应用中,小型系统可单独使用RDB,高可靠系统推荐AOF,多数场景建议开启混合模式。持久化机制可根据业务需求在redis.conf中灵活配置。

2025-07-02 17:05:43 1013

原创 MySQL 日志机制 + 二阶段提交详解

MySQL日志系统解析:InnoDB引擎的核心日志包括Redo Log(物理日志,保证事务持久性)、Undo Log(逻辑日志,实现回滚和MVCC)以及Server层的Binlog(逻辑日志,用于主从复制)。通过二阶段提交机制(2PC)确保Redo Log与Binlog的一致性,防止数据丢失。Redo Log采用WAL机制先于数据页刷盘,Undo Log记录修改前值支持事务回滚,Binlog则提供数据恢复和复制功能。三种日志各司其职,共同保障MySQL的事务特性和数据可靠性,其中二阶段提交是解决跨层日志一致

2025-07-02 16:52:56 762

原创 Java ArrayList 扩容机制

ArrayList是Java中基于数组实现的可变长度列表,支持随机访问和动态扩容。其底层使用Object[]数组存储元素,默认初始为空数组,首次添加元素时扩容至10。扩容机制采用1.5倍增长策略,通过Arrays.copyOf()复制数组,时间复杂度为O(n)。为避免性能损耗,建议预估容量并指定初始大小或提前调用ensureCapacity()。最大容量限制为Integer.MAX_VALUE-8。与默认构造相比,指定初始容量可显著提升性能。

2025-07-01 17:01:21 366

原创 java 线程池参数选择原则

本文详细介绍了Java线程池ThreadPoolExecutor的核心参数配置方法。重点解析了corePoolSize、maximumPoolSize、keepAliveTime、workQueue、threadFactory和handler等参数的适用场景与选择原则,针对CPU密集型和IO密集型任务给出了具体配置建议。文章强调应避免使用无界队列,推荐采用有界队列配合合理的拒绝策略,并提供了典型场景的参数配置表和一个完整的线程池构建示例。最后通过流程图总结了线程池的任务处理逻辑,帮助开发者构建高效稳定的线程

2025-07-01 16:27:40 1096

原创 Spring AI 向量数据库详解与 RAG 简单实战项目

Spring AI 提供了统一的 VectorStore 接口,支持多种向量数据库(Redis、PGVector、Milvus、Qdrant等),用于构建RAG(检索增强生成)系统。通过 EmbeddingClient 将文本转为语义向量存储,支持近似最近邻搜索(ANN)进行语义检索。示例展示了PGVector的工作流程,包括文档向量化存储、相似度查询及RAG问答系统的实现方法。项目采用分层架构,包含配置、服务、控制器等模块,并提供了数据库选择建议和可视化工具推荐,帮助开发者快速搭建企业级智能问答系统。

2025-07-01 11:22:31 776

原创 大语言模型(LLM)笔记

摘要 大语言模型(LLM)是基于Transformer架构的海量文本训练模型,通过预测下一个token展现类人智能。其核心为Transformer的自注意力机制,训练采用预训练+微调范式。三大主流应用包括: 1)RAG(检索增强生成):结合外部知识库提升回答准确性; 2)Agent:赋予模型规划决策能力,实现多工具调用; 3)MCP(模块化提示):结构化拆解复杂任务。 LangChain(Python)与Spring AI(Java)是构建LLM应用的主流框架,前者侧重灵活工作流编排,后者强调Spring生

2025-06-30 21:39:25 1224

原创 Spring 中 Bean 的生命周期

Spring Bean生命周期是指Bean从创建到销毁的完整过程,主要包括实例化、属性注入、初始化前处理、初始化、初始化后处理、就绪可用和销毁阶段。关键流程包括:通过构造器实例化、依赖注入属性、Aware接口回调感知容器信息、BeanPostProcessor扩展点处理初始化前后的逻辑(如AOP代理)、@PostConstruct或InitializingBean执行初始化逻辑,以及容器关闭时通过@PreDestroy或DisposableBean释放资源。生命周期钩子允许开发者在各阶段插入自定义逻辑,实现

2025-06-30 19:04:28 707

原创 JVM 垃圾回收(GC)笔记

Java垃圾回收机制解析:从原理到实践 本文系统介绍了Java垃圾回收机制的核心知识点。主要内容包括:垃圾回收的必要性(防止内存泄漏)、JVM内存区域划分(堆、栈、方法区等)、对象回收判定算法(引用计数和可达性分析)、不同内存区域的回收策略(新生代采用复制算法,老年代使用标记清除/压缩算法)。文章详细解析了常见垃圾收集器(如Serial、G1、ZGC)的特点及适用场景,并提供了GC日志分析和内存问题排查的实用工具。最后还介绍了三色标记法在并发GC中的应用原理及解决"漏标"问题的技术方案。

2025-06-30 16:35:41 1210

原创 Spring 中事务详解

Spring事务管理提供了编程式、XML配置式和注解式三种实现方式,其中注解式(@Transactional)最为常用。事务传播行为定义了7种方法调用时的处理策略,如REQUIRED(默认)、REQUIRES_NEW(独立事务)和NESTED(嵌套事务)。常见事务失效原因包括内部调用、非public方法、异常未抛出等。Spring支持5种隔离级别,默认使用数据库设置,并自动适配不同数据源的事务管理器。开发者应根据业务需求选择适当的事务策略,并注意AOP实现的限制条件。事务管理的关键在于平衡隔离性与性能,同时

2025-06-30 15:41:28 979

转载 一文看懂什么是RAG(检索增强生成)

RAG(检索增强生成)是结合检索技术与大语言模型的新兴解决方案,通过从外部数据源获取相关信息并注入提示词,提升模型生成质量。文章系统介绍了RAG的核心价值(解决知识局限、幻觉问题和数据安全)、发展历程(从2020年概念到当前商业应用),以及包含数据准备、嵌入模型、向量数据库等五大关键流程。重点剖析了12项优化策略,包括数据清洗、分块处理、查询转换等技术创新点,并对比了初级、高级和模块化三类RAG范式的优缺点。全文兼顾技术深度与实践指导性,为AI开发者提供了全面的RAG技术全景图。

2025-06-29 21:14:49 25

原创 初学Spring AI 笔记

Spring AI是Spring团队推出的人工智能集成框架,支持OpenAI、Azure等主流LLM提供商的无缝对接。核心功能包括Prompt模板引擎、向量数据库集成和RAG应用开发,提供标准化的ChatClient接口和Embedding支持。通过自动配置和starter依赖简化了AI模型集成,特别适合Java企业级应用。相比Python的LangChain,Spring AI在SpringBoot生态中更易上手,但功能相对基础。快速入门需配置API密钥和模型参数,支持Prompt模板化调用和向量检索,是

2025-06-29 21:06:56 474

原创 Git 学习笔记

本文全面介绍了Git版本控制系统及其与IntelliJ IDEA的集成使用。首先概述了Git作为分布式版本控制系统的核心特点(高效、安全、分布式),然后详细说明各平台安装方法、基础配置和常用命令(提交、分支、合并等)。接着讲解远程仓库操作、标签管理、忽略文件配置等高级功能,并比较了Git Flow、GitHub Flow等工作流。最后重点演示了IDEA中Git的完整使用流程,包括配置、提交、分支管理、冲突解决等,并提供了常用快捷键和典型开发流程示例。文章为开发者提供了从Git基础到IDE集成的实用指南。

2025-06-29 20:58:45 1072

原创 Linux 面试知识(附常见命令)

本文总结了Linux常用的核心知识,包含目录结构解析、文件权限说明、基础命令分类整理以及系统管理技巧。重点包括:1)Linux标准目录作用(如/bin存放命令、/etc存储配置);2)文件权限的数字与字母表示法;3)文件操作、用户管理、网络配置等命令速查;4)进程监控/软件安装/环境变量配置等系统管理方法。同时提供了面试常见问题解答(如软硬链接区别)和实用工具推荐(如lsof/grep)。适合作为Linux入门参考手册,涵盖系统管理所需的基础命令和关键概念。

2025-06-29 20:30:15 414

原创 ThreadLocal 原理详细解析

摘要: ThreadLocal是Java中实现线程隔离的类,每个线程可独立存取变量副本,避免共享资源冲突。其核心通过ThreadLocalMap实现,每个线程存储独立的键值对(ThreadLocal对象为键,变量副本为值)。典型应用包括数据库连接池、会话管理及日志处理,能提升并发效率。但需注意内存泄漏风险,建议使用后调用remove()清理。适用于无共享需求的高并发场景,但不替代常规同步机制。

2025-06-28 16:41:18 777

原创 Synchronized笔记

Synchronized 锁原理与粒度分析 锁原理 synchronized是Java实现线程同步的关键字,通过监视器锁(Monitor)机制确保线程安全。早期版本因依赖操作系统Mutex Lock导致性能较低,涉及用户态与内核态切换开销。底层实现基于monitorenter和monitorexit指令,每个对象头包含指向Monitor的指针,通过计数器控制锁获取与释放。 锁粒度 分为对象锁和类锁两种: 对象锁:锁定特定实例,不同实例互不干扰 实现方式:同步代码块(synchronized(this))或同

2025-06-28 16:35:55 962

原创 Java 设计模式

本文总结了Java三种常用设计模式:单例模式确保全局唯一实例,实现方式包括懒汉式、饿汉式;工厂模式(简单工厂、工厂方法、抽象工厂)封装对象创建过程,解耦使用与创建;策略模式定义可互换算法,替代多分支条件。每种模式都包含定义、实现代码、适用场景和优缺点分析,适用于支付方式、资源池管理等实际开发场景,帮助开发者构建灵活、可维护的系统架构。

2025-06-27 17:33:29 988

原创 Maven 笔记——生命周期、阶段与核心字段

Maven是Apache提供的Java项目构建与依赖管理工具,核心功能包括标准化构建流程(clean/default/site三大生命周期)、POM项目模型和自动化依赖管理。其中default生命周期包含编译(compile)、测试(test)、打包(package)等关键阶段,执行时会自动触发前置阶段。通过pom.xml文件定义项目坐标(groupId/artifactId/version)和打包方式(jar/war),常用命令如mvn compile、mvn package实现不同构建目标。标准项目结构

2025-06-27 16:59:28 279

原创 MyBatis 笔记——动态参数与 `#` 和 `$` 的使用

本文介绍了MyBatis中的动态SQL功能以及#和$参数占位符的使用区别。主要内容包括:1) 动态SQL通过<if>,<choose>,<foreach>等标签实现条件查询;2) #占位符能自动转义参数,防止SQL注入,适用于大多数场景;3) $占位符直接拼接参数,存在安全风险,仅限表名/列名等特殊场景使用;4) 提供了多种动态SQL与参数占位符结合的示例代码。最后强调应优先使用#以确保安全性,仅在必要时谨慎使用$。

2025-06-26 21:35:41 1166

原创 SQLyog 连接 MySQL 8.0.24 报错 2058

SQLyog连接MySQL 8.0.24报错2058的解决方法:该错误是由于MySQL 8.0默认使用caching_sha2_password认证插件,而SQLyog旧版使用mysql_native_password插件不兼容导致。两种解决方案:1)修改用户认证插件为mysql_native_password;2)创建新用户并指定使用兼容插件。此外还需确认MySQL允许远程连接及防火墙放行3306端口。修改完成后即可在SQLyog中正常连接。本文还提供了相关配置检查和操作步骤。

2025-06-26 19:49:16 353

原创 Ubuntu 22.04 庙算平台训练环境搭建指南

本文详细介绍了在Ubuntu 22.04.3 LTS系统上搭建庙算推演离线平台的完整流程。内容涵盖Linux环境安装、GPU加速配置(包括CUDA和cuDNN)、Miniconda环境管理、Python虚拟环境创建、平台代码部署和依赖安装等关键步骤。同时提供了常见问题解决方案,如SDK认证失败的处理方法和"NVIDIA-SMI not found"等驱动问题的排查指南。文档推荐了VS Code等开发工具,并附带了详细的参考教程链接,帮助用户快速搭建支持GPU加速的训练环境。

2025-06-26 12:55:02 979

原创 Spring 笔记——配置方式汇总

本文介绍了Spring框架的四种配置方式:XML配置、注解配置、Java配置类和Spring Boot自动配置。XML配置适用于传统项目,注解和Java配置更灵活现代,而Spring Boot提供了最简化的自动配置方案。文章对比了各方式的优缺点,推荐初学者从XML入手理解原理,实际开发中优先使用Java配置或Spring Boot。核心要点包括@ComponentScan注解、@Bean定义以及Spring Boot的"约定优于配置"理念,这些技术组合使用可以满足不同场景的开发需求。

2025-06-26 12:36:26 416

原创 SQL 笔记——窗口函数

窗口函数是SQL中用于数据分析的强大工具,它能对数据进行分区排序并计算,而不改变行数。本文介绍了6种常用窗口函数:ROW_NUMBER()为每行生成唯一序号;RANK()和DENSE_RANK()用于排名统计(前者会跳过相同排名);NTILE()将数据分桶;LEAD()/LAG()获取前后行数据。此外,聚合函数如SUM()可与窗口函数结合进行分组累计计算。这些函数适用于排名、分页、销售预测、利润对比等多种分析场景,通过OVER()子句实现灵活的数据处理。

2025-06-25 20:55:58 762

原创 SQL 笔记——连接(JOIN)

SQL JOIN 是一种跨表查询语法,通过关联字段将多表数据组合返回。主要类型包括:INNER JOIN(仅返回匹配记录)、LEFT JOIN(保留左表所有记录)、RIGHT JOIN(保留右表所有记录)和FULL OUTER JOIN(保留所有记录)。其中INNER JOIN和LEFT JOIN最常用,LEFT JOIN配合IS NULL可查找未匹配记录。多表连接时需注意关联顺序和字段,建议使用表别名保持清晰。CROSS JOIN会产生笛卡尔积,需谨慎使用。JOIN是处理关联数据查询的核心技术,正确选择类

2025-06-25 10:30:31 1245

空空如也

空空如也

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

TA关注的人

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