自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 从一题了解 CROSS JOIN 与 DATEDIFF:SQL 天气温度对比实战

同表不同行对比 → 用自连接(将表视为两张独立表);日期差值计算 → 用DATEDIFF(根据数据库选择对应语法);等同于INNER JOIN,核心是通过条件筛选有效配对。这类“对比相邻记录”的场景在实际业务中非常常见(如环比增长、连续登录判断等),掌握自连接和日期函数的组合用法,能轻松应对这类问题。建议大家多尝试修改条件(如查询温度比后一天高的记录、计算连续 2 天升温的 id),加深对知识点的理解~

2025-11-05 23:14:52 853

原创 认识多线程:单例模式

单例模式的两种实现(饿汉模式简单安全,懒汉模式需双重检查+volatile保证线程安全)阻塞队列的特性及生产者消费者模型(解耦+削峰填谷的关键工具)阻塞队列的手动实现(基于锁和条件变量的经典并发编程实践)掌握这些基础知识,是深入学习多线程编程的基础。实际开发中,JDK提供了丰富的并发工具类(如等),理解其底层原理能帮助我们更好地运用它们解决实际问题。

2025-11-02 16:46:50 377

原创 认识多线程:初阶基础知识之等待 / 通知机制

wait()notify()是线程间协作的核心方法,必须在代码块 / 方法中使用,且依赖对象锁。wait()释放锁并进入等待,notify()唤醒一个等待线程,唤醒所有等待线程。wait()与sleep()的核心区别在于是否释放锁和使用场景,面试中需重点区分。掌握这些基础后,就能更好地理解多线程协作模型(如生产者 - 消费者),为进阶学习打下基础。如果有疑问或补充,欢迎在评论区交流!

2025-11-02 01:54:40 273

原创 初识多线程(线程的状态与线程安全)

线程状态中BLOCKEDWAITING的区别。线程安全的本质是多线程对共享数据的并发修改,根源在于线程调度的随机性,辅以原子性、可见性、有序性问题。(保证原子性、可见性、有序性)和volatile(保证可见性、有序性)。标准库中线程安全类的特点及使用场景。多线程编程的核心是"控制并发",理解线程安全的本质和解决方案,是编写可靠并发程序的基础。

2025-11-02 00:04:36 798

原创 初识多线程:Java多线程初阶基础知识

线程(Thread)是进程中的一个执行单元,是操作系统进行调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件描述符等),但各自拥有独立的程序计数器、栈空间和局部变量。本文介绍了Java多线程的基础知识,包括线程与进程的区别、线程的五种创建方式、Thread类的构造方法与属性、线程的启动与中断、等待线程、获取当前线程及线程休眠等内容。多线程是Java编程中的重要知识点,掌握基础后还需深入学习线程同步(如Lock)、线程池、并发容器等进阶内容。

2025-11-01 13:51:42 603

原创 栈与队列深度解析:概念、实现与应用

/ 存储元素的数组// 栈中有效元素个数// 构造方法:初始化数组容量为3// 压栈操作// 检查容量,不足则扩容return e;// 出栈操作// 栈空则抛异常throw new RuntimeException("栈为空,无法执行出栈操作");size--;// 直接通过size减少实现“删除”(后续元素会覆盖)// 获取栈顶元素throw new RuntimeException("栈为空,无法获取栈顶元素");// 获取元素个数// 判断栈是否为空。

2025-10-10 00:58:56 347

原创 深入理解ArrayList与LinkedList:Java集合框架核心对比(含实战案例+面试考点)

线性表是n个相同类型数据元素的有限序列,逻辑上呈“连续直线”结构,比如数组、链表都属于线性表。用ArrayList:频繁随机访问(查多改少)、元素数量稳定;用LinkedList:频繁头尾插入/删除、需实现栈/队列;不确定时:优先用ArrayList(日常开发中“查”比“改”更频繁)。2倍扩容可能导致后续扩容时,旧数组无法被复用(比如容量100扩到200,只用101个元素,浪费99个,且旧数组占内存);1.5倍扩容更易触发内存回收,减少碎片。ArrayList和LinkedList。

2025-10-04 21:40:38 1494

原创 Java 集合框架之 List 全面解析(从概念到实践)

接口特性:List 是有序、可重复的线性表接口,继承自Collection。核心操作:支持通过下标进行增删改查,提供子列表视图等工具方法。实现类选择ArrayList适合查询,LinkedList适合频繁增删。下期将深入分析ArrayList与LinkedList的底层实现及性能差异。

2025-10-01 23:19:51 588

原创 Java包装类与泛型详解

/ ...类型实参必须是类类型,基本类型需使用对应的包装类。

2025-10-01 16:56:58 222

原创 时间复杂度与空间复杂度知识框架

衡量算法效率的两个核心维度是时间复杂度和空间复杂度。时间效率反映算法执行速度,空间效率反映算法对存储资源的消耗。随着硬件存储容量的提升,现代算法设计更注重时间效率优化。斐波那契数列递归算法是典型例子,其时间效率低下(指数级复杂度),凸显复杂度分析的必要性。

2025-10-01 15:49:24 219

原创 Java 异常全方位解析:从基础到实战的完整指南

定义:程序运行时偏离预期的非正常情况(如空指针、数组越界)与错误(Error)的区别:异常可处理,错误(如 OOM)通常无法恢复生活类比:用 “开车遇到爆胎(异常,可修复)” 和 “发动机报废(错误,无法修复)” 辅助理解场景:业务错误需要区分(如 “用户不存在异常”“余额不足异常”)实现步骤:继承 Exception(受检)或 RuntimeException(非受检)实现无参、带消息、带 cause 的构造方法代码示例:自定义业务异常。

2025-09-23 01:29:35 935

原创 String的使用:从基础到透彻

实现(JDK 8),修改操作实际生成新对象。关键点标注参数范围规则(左闭右开),避免读者误用。方法讲解需包含功能说明、代码示例与注意事项。

2025-09-23 01:20:26 430

原创 MySQL DENSE_RANK () 窗口函数:一篇搞懂连续排名用法

DENSE_RANK() 是 MySQL 窗口函数,用于计算连续排名,遇到并列值时不会跳过后续排名。例如,两个分数相同的记录并列第 1,下一条记录直接排第 2,而非第 3。关键点:需求:对数学成绩降序排名,不分组。结果示例:需求:按科目分组,组内分数降序排名。结果特点:需求:同科目同分数时,按学生 ID 升序排序。结果示例:语文 92 分的记录中,ID 小的学生排在前面,但排名仍为 1。区别总结:

2025-08-23 21:57:22 690

原创 Java 接口详解:从语法到实战的全面剖析

接口的定义与类类似,但使用interface关键字,内部主要包含抽象方法(默认无需实现)。public interface 接口名称 {// 抽象方法(以下四种写法等价,推荐第四种,更简洁)// 推荐:默认被public abstract修饰命名规范(重要!接口名通常以大写字母I开头(如IRunningISwimming名称多使用形容词(体现 “具备某种特性”,如 “可运行的”“可游泳的”);阿里编码规范要求:接口中的方法和属性不加修饰符,保持简洁。接口中的所有方法都会被隐式指定为。

2025-08-20 00:13:25 1157

原创 深入理解抽象类

它强制子类遵循特定规范,如所有Animal子类必须实现bark()方法。当需要强制子类实现特定方法时,抽象类提供编译时检查。子类必须实现所有抽象方法,除非子类也是也是抽象类。关键字修饰的类可以包含未实现的方法(抽象方法),这些方法由子类具体实现。抽象类类似于"交通工具"这样的概念,需要具体子类(如汽车、火车)来实现具体功能。抽象类中可包含抽象方法(无实现体)和普通方法/属性,抽象方法必须被子类实现。抽象类用于描述没有足够信息描绘具体对象的类,如"图形"或"动物"这类概念。抽象类不能直接实例化,尝试。

2025-08-19 23:53:13 463

原创 《别再用 IF 嵌套了!MySQL 的 CASE 表达式才是处理多条件判断的神器》

为什么需要CASE表达式业务中常遇到数据转换需求,例如将数字状态码转为可读文本、按条件分组统计。传统方法如多层IF嵌套或多次查询UNION会导致代码冗长且难以维护。表达式能直接在SQL中实现条件逻辑,提升查询效率和可读性。语法结构:适用场景:字段值精确匹配语法结构:适用场景:复杂条件判断需求:统计25岁以下(含NULL)和25岁及以上用户数需求:划分年龄区间并处理NULL值可通过在GROUP BY或JOIN中结合CASE表达式实现复杂分析,同时保持查询语句的简

2025-08-16 17:07:12 525

原创 深入理解Java继承中的转型机制与绑定原理

向上转型是多态的基础,提高代码灵活性;向下转型需谨慎,依赖instanceof判断。静态绑定在编译期确定,适用于静态/私有/final成员;动态绑定在运行期确定,实现多态。掌握这些概念是理解Java继承和多态的关键,也是写出灵活可扩展代码的前提。

2025-08-12 01:11:05 488

原创 带你掌握Java代码块

代码块是Java中灵活控制初始化逻辑和线程同步的重要工具。合理使用可提升代码可读性和执行效率,同时需注意其执行顺序和适用场景。

2025-08-12 00:58:04 554

原创 面向对象三大特性:封装,继承和多态详解

封装是基础,确保对象完整性继承建立类层次,实现代码复用多态基于继承/接口,提供灵活的行为扩展。

2025-08-12 00:52:54 603

原创 类与对象的基本概念

定义类需要使用class关键字,后跟类名。类体中可以包含属性和方法。属性用于描述对象的特征,方法是对象可执行的操作。// 属性int age;// 方法System.out.println(name + "正在学习");

2025-08-11 23:57:06 344

原创 Java数组基础

数组是Java基础且高效的数据结构,适用于固定长度的数据存储。建议结合内存模型(如栈与堆)深入理解,并探索不规则数组等高级用法。

2025-08-07 14:18:46 290

原创 Java 方法详解:从基础到实战应用

掌握方法是Java开发的基础,后续可结合Lambda表达式(如Function接口)和方法引用()进一步简化代码。

2025-08-07 13:27:16 613

原创 Java 逻辑控制详解

多分支if-else if适合处理连续范围判断,如成绩等级划分。顺序结构是程序执行的默认方式,代码按照从上到下的顺序逐行执行。这种结构适用于简单的线性流程任务,如数据初始化、连续计算等。单分支if处理单一条件判断,当条件为true时执行特定代码块。双分支if-else在两种互斥情况中选择执行路径,如判断用户是否VIP以提供不同服务。例如用户注册流程:先验证输入格式,再检查用户名唯一性,最后保存数据库,这些步骤必须按固定顺序执行。逻辑控制是算法实现的基础,需结合设计模式如策略模式处理复杂分支。

2025-08-07 11:03:22 574

原创 Java运算符详解:从基础到进阶的全面指南

熟练掌握运算符可提升代码效率和可读性。建议通过实际编码练习验证运算符特性,尤其是易混淆场景。后续可结合表达式和流程控制语句深化理解。

2025-08-05 22:49:24 751

原创 Java数据类型详解:从基础到实战应用

两类核心区别在于基本类型通过值传递,引用类型通过地址传递,修改引用类型会影响所有指向该地址的变量。数据类型在编程中决定内存分配方式、运算效率和类型安全,Java作为强类型语言,要求变量必须先声明类型后使用。byte(-128~127)、short(-32768~32767)、int(-2³¹~2³¹-1)、long(-2⁶³~2⁶³-1),默认值均为0。float(约±3.4e38,精度6-7位)需加F后缀,double(约±1.8e308,精度15位)是默认类型。包括类、接口、数组等,默认值为null。

2025-08-05 21:52:17 322

原创 MYSQL中的REGEXP

正则表达式是一套用于描述字符串模式的规则,通过特殊符号(元字符)定义匹配逻辑,比如 “匹配以字母开头、数字结尾的字符串”。

2025-08-01 16:23:24 1652

原创 保姆级 JDBC 操作 MySQL 教程(附避坑指南 + 最佳实践)

拼接 SQL 写法(不推荐):你代码里用了,简单场景能用,但一旦用户输入特殊字符就出问题(比如姓名带单引号O'Neil,SQL 直接报错)。正确姿势:换成(后面详细讲),代码会更安全!核心流程:加载驱动 → 获取连接 → 执行 SQL → 处理结果 → 关闭资源。必避坑点用防 SQL 注入;用自动关资源;敏感信息放配置文件,别写死代码;结果集取值用列名,别依赖索引。学会这些,JDBC 操作 MySQL 就稳了!如果遇到问题,评论区留言,一起解决~

2025-07-15 23:33:00 1070

原创 《MySQL事务基础:从入门到精通》

脏读:读到别人没写完的草稿(可能错)。不可重复读:同一行数据,读两次不一样(被修改了)。幻读:同一批数据,读两次数量不一样(新增/删除了数据)。

2025-07-13 17:39:53 861

原创 《MySQL索引入门到精通:从零开始优化查询性能》

索引通过高效数据结构(如B+树)减少磁盘I/O,但需平衡查询加速与维护成本。实际应用中需结合业务查询模式、数据分布及EXPLAIN分析持续优化。进阶方向包括自适应哈希索引、索引条件下推(ICP)等。

2025-07-13 14:17:14 952

原创 《从全表扫描到毫秒响应:剖析MySQL索引引擎的核武器——B+树与页结构》

B+树是 MySQL 索引的骨架,页(Page)是 InnoDB 管理数据的最小单元。它们的精妙设计与紧密结合,是数据库高效运行的关键。本篇博客将探讨这两大核心机制,解析 MySQL 快速数据访问的底层逻辑。

2025-07-10 22:44:57 416

原创 MySQL 视图详解:简化查询、提升安全性的利器

视图是基于一个或多个表的查询结果集,本质上是虚拟表。每当查询视图时,数据库引擎会实时执行其定义的查询语句生成结果。:并非所有视图都支持更新操作。:创建视图需有基表的SELECT权限,但用户访问视图时只需视图权限,无需基表权限。:将频繁使用的复杂查询(如多表连接、聚合计算)封装为视图,后续直接调用视图即可。:通过视图限制用户访问敏感字段。:修改底层表结构时,若视图查询字段不变,无需调整依赖视图的应用程序。:视图查询可能因底层表数据量大或逻辑复杂而变慢。:删除或修改基表时,依赖该表的视图可能失效。

2025-07-10 21:52:19 353

原创 MySQL进阶查询五剑客:插入结果、聚合统计、分组剖析、多表联合、子查询

数据库查询优化与复杂数据处理能力是开发者的关键技能。掌握插入结果集、聚合统计计算、分组维度分析以及多表关联操作,能够高效解决实际业务中的数据整合、分析需求。这些技术将显著提升数据操作效率,实现从基础增删改查到高级分析的跨越。要求:列数相同,对应列数据类型兼容。聚合函数通常忽略NULL值。

2025-07-09 08:25:37 437

原创 从需求到表结构:MySQL表设计实战指南(含关系详解+SQL示例

简要介绍MySQL表设计的重要性,提及关系型数据库的核心概念(实体、关系、约束),引出三种关系类型(一对一、多对一、多对多)和设计流程。从业务需求中提取核心名词(如电商系统的“用户”、“商品”、“订单”),排除非实体属性(如“价格”是属性而非实体)。设计方法:共享主键(主键同时作为外键)或独立外键约束。适用场景:如用户与身份证信息、员工与社保档案。设计方法:在“多”方表添加外键指向“一”方表。设计方法:通过中间表分解为两个多对一关系。适用场景:文章与作者、订单与客户。适用场景:学生与课程、商品与订单。

2025-07-07 01:00:12 428

原创 数据库设计第一步:搞懂MySQL三大范式,写出优雅SQL

三大范式关系满足更高范式的前提是满足低阶范式。范式的核心价值数据一致性:避免冗余导致的数据不一致。结构清晰:表结构逻辑明确,易于维护。范式与反范式的权衡性能:高范式可能导致多表连接,降低查询效率。业务需求:历史快照或频繁读取的场景可能需要冗余。维护成本:反范式设计可能增加更新复杂度。建议先按范式设计,再根据性能测试和业务需求选择性反范式优化。掌握三大范式是数据库设计的基础,但实际应用中需灵活权衡。通过实践理解范式的价值,并探索适合业务场景的最佳设计。

2025-07-07 00:28:57 850

原创 《SQL必备技能:ALTER TABLE语句基础详解(MySQL示例)》

通过分节讲解、代码示例和注意事项,帮助读者快速掌握。注意:数据不可逆丢失,操作前需备份。的核心用法,同时规避常见风险。

2025-07-06 21:37:26 392

原创 MySQL数据库约束全解析:主键、外键、唯一、非空...一篇搞定!

约束是强加于数据列的规则✅ 防止无效数据插入(如空值、重复值)✅ 维护表间关系完整性(如订单必须关联有效用户)✅ 自动执行数据规则(如年龄不能为负数)-- 典型约束示例id INT PRIMARY KEY, -- 主键约束email VARCHAR(50) UNIQUE NOT NULL, -- 唯一+非空age INT CHECK (age >= 18) -- 检查约束约束类型核心作用关键要点主键唯一标识不允许NULL,每表仅一个外键跨表引用完整性注意ON DELETE。

2025-07-06 16:01:52 608

原创 [特殊字符] MySQL新手必看:最常用数据类型详解(附避坑指南)

选数据类型的黄金法则数字:整数用INT,钱用DECIMAL文字:变长用VARCHAR,定长用CHAR时间:日期用DATE,精确时间用DATETIME下一步学习建议👉 建表时动手试试这些类型!👉 尝试错误示范(如用FLOAT存金额),观察精度丢失问题!

2025-06-07 16:00:11 450

原创 MySQL从零到精通:三步上手数据库创建与数据操作全攻略

本文专为数据库新手打造!无论你是想快速入门MySQL的开发者,还是需要巩固基础的技术爱好者,我们将以最直观的方式带您掌握两大核心技能:数据库创建与数据操作(CRUD)。数据库作为现代应用的"记忆中枢",其操作能力直接影响系统性能与数据安全。✅ 数据库创建全流程解析✅ 增删改查四大核心操作详解✅ 20+个真实场景代码示例✅ 关键安全操作警示与优化技巧。

2025-06-07 15:59:10 399

空空如也

空空如也

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

TA关注的人

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