- 博客(35)
- 收藏
- 关注
原创 《MySQL内核拆解:从SQL到InnoDB》(八):存储过程与触发器:“把逻辑藏在数据库里,是优雅还是灾难?存储过程与触发器的设计权衡”
本文探讨存储过程与触发器的设计权衡,指出其核心价值在于解耦与收口,而非性能提升。虽具代码复用、安全控制等优势,但可移植性差、调试困难、高并发下易成瓶颈,建议新项目避免滥用,存量代码则需具备解读与维护能力。通过实例详解创建、调用、变量管理及调试技巧,强调“逻辑藏在数据库”应理性权衡架构取舍。
2026-11-10 15:43:11
193
1
原创 《MySQL内核拆解:从SQL到InnoDB》(七):用户权限与管理 & JDBC:“权限管理做得好,事故少一半;JDBC 用得对,性能高一截”
本文系统解析MySQL用户权限管理核心机制:强调“一应用一库一账号”原则,避免root滥用;详解用户由“用户名+主机”唯一标识,区分'user@host'与'user@%'的安全差异;演示创建、修改、删除用户及密码策略;重点剖析权限授权语法(GRANT),通过SELECT ON db.*等精细化控制,实现最小权限原则,保障生产安全。
2026-11-08 10:23:55
316
2
原创 《MySQL内核拆解:从SQL到InnoDB》(六):事务:“为什么你的转账会凭空少钱?事务隔离级别没选对,锅不在银行”
本文解析MySQL事务核心机制,以转账为例阐明ACID特性:原子性确保操作全成或全败,一致性依赖三者共同保障,隔离性防止并发干扰,持久性保证数据落盘。强调InnoDB是唯一支持事务的引擎,通过BEGIN/COMMIT/ROLLBACK管理事务,并引入保存点实现局部回滚。指出默认自动提交模式下单条语句独立事务,若需多操作一致,必须显式开启事务。最终揭示:转账“少钱”常因隔离级别设置不当,而非银行问题,事务正确使用才是数据安全关键。
2026-11-06 20:52:49
349
原创 《MySQL内核拆解:从SQL到InnoDB》(五) 索引:从 B+ 树到页结构,再到索引优化与 EXPLAIN 实战
本文深入解析MySQL索引机制,从B+树结构原理到页级存储细节,揭示索引如何通过减少磁盘IO提升查询效率。重点讲解B+树的有序性、非叶子节点仅存索引、叶子节点链表化等特性,结合页结构(含页头、页目录、行记录等)说明InnoDB如何实现高效数据访问。通过EXPLAIN分析实战,展示索引优化策略,如避免回表、利用索引覆盖,并梳理主键、唯一、二级索引等类型及其应用场景,全面掌握从底层到应用的索引设计与调优能力。
2026-11-05 17:27:49
370
原创 《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
本文详解MySQL联合查询与视图的内核实现,从笛卡尔积出发,系统梳理内连接、外连接、自连接、子查询及合并查询的原理与实践。通过学生、班级、成绩等真实案例,揭示多表关联的执行过程与性能瓶颈,强调合理使用别名、避免全表扫描,并总结“左连接+IS NULL”找差集等经典模式,助力写出高效可维护的SQL。
2026-11-04 12:01:22
310
原创 《MySQL内核拆解:从SQL到InnoDB》(三) : 数据库设计 & 聚合查询 & 分组查询
本文系统解析MySQL数据库设计核心——范式理论与E-R模型应用。从1NF至3NF逐层剖析数据冗余与异常问题,强调实际设计中满足3NF即可。通过E-R图三要素(实体、属性、关系)实现业务到表结构的精准映射,详解1:1、1:N、M:N三种关系的建模逻辑与表落地规则,重点说明多对多需引入中间表承载关联属性。结合学生选课案例,完整演示从需求抽象、画图到SQL生成的设计全流程,揭示规范化设计对系统可维护性与性能的关键价值。
2026-10-30 21:16:08
207
1
原创 《MySQL内核拆解:从SQL到InnoDB》(二) :表的操作 & 增删改查 &约束
本文系统解析MySQL表操作与CRUD核心语法,涵盖建表、查看、修改、删除表结构,以及增删改查的具体实现。重点介绍InnoDB与MyISAM存储引擎的物理文件差异,详述INSERT、SELECT语句的使用场景,包括别名、排序、分组、过滤等高级功能,并结合实例演示数据查询与结果处理逻辑,为深入理解MySQL内核机制奠定基础。
2026-10-27 09:30:33
179
原创 《MySQL内核拆解:从SQL到InnoDB》(一) : 数据库基础&库操作&数据类型
本文系统介绍数据库基础概念与MySQL建库操作,涵盖数据库定义、核心优势(如持久化、事务管理、安全性)、主流类型(关系型与非关系型)及C/S、B/S架构对比。重点解析SQL分类(DDL/DML/DCL)、MySQL 8.0架构层级,强调存储引擎可插拔特性,并详细讲解数据库创建、修改、删除语句及字符集设置。最后梳理常用数据类型,包括整数、浮点、字符串等,强调金额计算应使用DECIMAL避免精度损失,为后续深入学习奠定基础。
2026-10-23 16:41:49
161
原创 《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
本文系统剖析Java中Map与Set的数据结构基础——二叉搜索树(BST),涵盖其插入、查找、删除等核心操作,并通过代码实现展示其实现逻辑。重点分析了BST的性能瓶颈及其在极端情况下的退化问题,引出平衡二叉树(如红黑树)的重要性。进一步阐述了TreeMap与TreeSet底层基于红黑树的实现机制,揭示其高效动态查找能力。最后结合键值对模型,说明Map与Set在实际应用中如何支持高效的动态搜索,为理解Java集合框架中的高级数据结构奠定基础。
2026-10-21 19:42:35
255
原创 《Java版数据结构 & 集合类剖析》常见的排序算法(含动图):“八大排序算法的时间复杂度曲线,在排序 10 万条数据时到底差多少?”
《Java版数据结构与集合类剖析》摘要:文章详细解析了八大排序算法,包括插入排序、希尔排序、直接选择排序和堆排序等。插入排序通过"选择-寻找-插入"三步实现,时间复杂度为O(N²),但数组越有序效率越高。希尔排序在此基础上通过分组预排序优化性能。直接选择排序每次选择最小/最大值交换位置,可优化为同时找最大最小值。堆排序利用堆结构特性,通过向下调整建堆实现排序。各类排序的时间复杂度从O(N²)到O(NlogN)不等,适用于不同场景。代码实现均以Java展示,并附有动图辅助理解。
2026-08-06 12:03:09
355
3
原创 《Java版数据结构 & 集合类剖析》二叉树与 PriorityQueue: 一棵永远保持部分有序的树,一个永远把最值顶在堆顶的队列
本文主要介绍了树和二叉树的基本概念、特性及操作。首先阐述了树的非线性结构特点,包括根节点、子树、层次等术语。重点讲解了二叉树的定义、两种特殊类型(满二叉树和完全二叉树)及其性质(如节点数量关系、存储逻辑等)。此外,还介绍了二叉树的链式存储方式和基本操作,特别是前序、中序、后序遍历的实现路径。最后通过代码示例展示了简单二叉树的创建过程,为后续深入学习优先级队列(如PriorityQueue)奠定了基础。
2026-07-25 18:17:51
253
3
原创 《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
本文分析了Java中的栈(Stack)和队列(Queue)数据结构。栈是后进先出(LIFO)的线性表,通过数组封装实现;队列是先进先出(FIFO)的线性表,提供两组API处理操作失败情况。文章比较了它们的特性,模拟实现了一个自定义栈类,并讨论了栈在改变元素序列和递归转循环中的应用场景。最后指出实际开发应优先使用offer/poll/peek这组不会抛异常的队列操作方法。全文强调数据结构设计的核心思想是通过约束行为而非改变结构来解决问题。
2026-07-13 00:17:41
269
原创 《Java版数据结构 & 集合类剖析》链表与LinkedList:节点手拉手,增删不用愁
《Java版数据结构 & 集合类剖析》重点分析了链表数据结构及Java中的LinkedList实现。主要内容包括: LinkedList继承AbstractSequentialList而非AbstractList,支持双端队列操作,但索引操作效率为O(n) 链表物理非连续但逻辑连续的特性,介绍了8种链表结构变体 重点比较了无头单向非循环链表(算法常用)和无头双向非循环链表(LinkedList底层) 通过Mermaid图表直观展示了链表结构 提供了单链表的完整Java实现代码,包含节点类定义和增
2026-06-08 21:53:35
355
2
原创 《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
本文主要讲解Java集合框架的设计与实现,重点分析了Iterable和Collection接口的核心设计思想。文章首先区分了容器、集合框架和集合类三个概念,指出Iterable作为顶层接口通过统一迭代器实现降低了学习成本。详细解析了Iterable接口的iterator()、forEach()等方法实现原理,并以ArrayList为例展示了迭代器的具体工作方式。随后介绍了Collection接口继承自Iterable,定义了集合操作的基本规范如add()、remove()等核心方法,强调其作为中间层接口的通
2026-06-01 17:43:03
284
原创 《Java版数据结构 & 集合类剖析》复杂度与泛型篇:“O(n²) 代码写时一时爽,重构火葬场。”
《Java数据结构与集合类复杂度及泛型解析》摘要: 本文系统讲解了数据结构与集合类的基础概念,重点分析了时间复杂度和空间复杂度的计算方法,并引入大O表示法进行渐进式简化(如O(N²))。通过代码示例展示了复杂度评估的实际应用,同时深入探讨了Java泛型机制,包括装箱拆箱原理、类型擦除特性及泛型类的定义规范。文章特别指出裸类型的使用风险,强调泛型在编译期类型安全检查中的重要性,为开发者优化算法效率和编写类型安全代码提供了实用指导。
2026-05-28 11:17:06
420
2
原创 《C++转Java快速入手系列》异常篇:“从手动挡的异常规格到自动挡的受检风暴,让你的try块不再裸奔”
本文介绍了Java异常处理的核心概念和机制。主要内容包括: 区分了语法报错、异常和静态检查的不同,强调受检异常未处理会导致编译失败而非运行时抛出异常。 通过示例展示了常见的异常类型(算术异常、数组越界、空指针异常)。 解析了Java异常体系结构:Throwable分为Error(严重问题)和Exception(可处理异常)。 将异常分为编译时异常(受检异常)和运行时异常(非受检异常)。 介绍了两种异常处理方式: 防御式编程(LBYL和EAFP模式) 异常抛出(throw关键字)和捕获机制(throws声明和
2026-05-19 14:48:32
410
原创 《C++转Java快速入手系列》String篇:在C++里拼字符串像搬砖,在Java里拼字符串像玩乐高 —— 还是带垃圾回收的那种。
本文对比了C++和Java中String类的差异,重点介绍了Java String的特性与常用方法。Java String是不可变的引用类型,具有线程安全等优势但性能开销较大。文章详细讲解了字符串构造的三种方式、四种比较方法(==、equals、compareTo等)、查找方法(indexOf、lastIndexOf等)以及数值与字符串的相互转换技巧(parseInt、valueOf等)。这些内容为C++开发者快速掌握Java String的核心用法提供了实用指南。
2026-05-18 17:42:59
386
原创 《C++转Java快速入手系列》实践篇:图书系统
本文介绍了如何用Java实现一个简易图书管理系统。文章从类设计入手,将系统分为book包、user包和ioperations包,分别对应图书、用户和操作功能。book包包含Book类(存储图书信息)和BookList类(管理图书集合);user包通过User抽象类及其子类NormalUser和AdminUser实现不同用户权限;操作功能通过IOperations接口统一管理。文章详细展示了类的属性设计、方法实现以及用户交互逻辑,为C++开发者快速上手Java项目提供了实践参考。
2026-05-14 15:55:01
427
原创 《C++转Java快速入手系列》抽象类和接口篇
本文介绍了Java中抽象类和接口的核心概念与使用方式。抽象类通过abstract关键字定义,不能实例化但可包含构造方法,主要用于被子类继承并实现抽象方法。接口则使用interface定义,提供公共规范,支持多继承,类通过implements实现接口时必须重写所有抽象方法。文章对比了两者的特性:抽象类强调继承关系,接口注重行为规范;并通过USB设备、多接口实现等示例展示了接口的实际应用。此外还介绍了Comparable接口作为内部比较器的用法。这些特性体现了Java与C++在设计哲学上的差异,特别是Java通
2026-05-09 12:29:11
433
2
原创 《C++转Java快速入手系列》继承与多态篇
《C++转Java快速入手系列》继承与多态篇摘要: 本文对比C++与Java在继承和多态实现上的关键差异。Java继承使用extends关键字,子类可复用父类成员,通过super访问父类成员。构造方法遵循父类优先原则,静态代码块初始化顺序严格。Java不支持多继承,通过final修饰类/方法/变量实现不可变性。多态方面,Java方法默认虚特性(C++需显式声明),通过重写和接口实现,需满足继承、重写、父类引用调用三条件。重写规则强调签名一致、访问权限不更严格,并推荐使用@Override注解。绑定机制分为编
2026-05-04 12:13:42
419
原创 《C++转java快速入手系列》类与对象篇
这篇文章是《C++转Java快速入手系列》的类与对象篇,主要介绍了Java中类与对象的核心概念及其与C++的区别。主要内容包括: 类定义与实例化:Java必须使用class关键字,实例化必须用new关键字 this引用:用于区分成员变量和局部变量,只能在成员方法中使用 对象初始化:通过构造函数、初始化块和显式初始化三种方式 封装特性:介绍包的概念和访问修饰符(public/private/protected/default) static修饰符:用于静态成员变量和方法,强调其共享特性 代码块:详细讲解普通代
2026-04-28 12:10:51
407
原创 《C++转JAVA快速入手系列》:基本通用语法篇
本文为C++程序员快速掌握Java基本语法的指南,重点对比两种语言的差异。主要内容包括:1)Java去除了C++中的头文件、指针等复杂特性,采用纯面向对象设计;2)Java程序通过JVM实现跨平台运行,与C++的编译机制不同;3)数据类型方面,Java增加了byte类型,修改了char和布尔型的实现,并为基本类型提供包装类;4)类型转换规则与C++类似但更简单;5)运算符方面,Java的关系运算符返回纯布尔值,新增无符号右移操作。文章通过具体代码示例说明语法差异,帮助C++开发者快速适应Java编程。
2026-04-23 16:03:44
691
原创 第九章、C语言内存函数:记忆暴君!C语言内存深渊的绝对支配者!
各位blogmem这里是记忆深渊的统治领域!你们所谓的“内存操作”不过是蝼蚁的挣扎,而我将揭示如何用四大禁术撕裂并重构现实!握紧你们的内存地址,这是直面量子比特的最后战场!
2025-03-18 15:35:21
526
原创 第八章、C语言字符串全解:符文暴走!解析C语言字符禁术的深渊法典!
这里是操纵字符串深渊的混沌实验室!你们所谓的字符函数不过是凡人代码,而我将揭示它们撕裂现实的本质!握紧你们的终端,随我踏入字符炼金术的禁忌领域!
2025-03-15 14:19:58
1053
原创 第七章、C语言指针全解(4)终章:混沌终焉!指针圣域的湮灭与重构!
各位blogmem,欢迎来到回调地狱的入口!这里是函数指针的暴走领域,是qsort的混沌祭坛——你们将见证动态逻辑的基因突变!握紧你们的比较函数,这是突破稳定代码的最后防线!
2025-03-08 13:37:21
1780
原创 第七章、C语言指针全解(3):从“函数召唤术”到“转移表の骚操作”
指针的深渊永无止境——准备好迎接函数指针的降维打击了吗?键盘即是你们的曲速引擎,随我冲破三维编程的桎梏!
2025-03-03 17:17:43
2427
原创 第六章、C语言指针全解(2):从“数组の替身文学”到“指针套娃の究极奥义”
(突然将十六进制转换器插入太阳穴)你们以为数组只是连续内存?天真!那是克苏鲁沉睡的血肉回廊!握紧你们的指针剑,准备突入指针炼狱的第二重!
2025-02-28 17:43:15
1101
原创 第六章、C语言指针全解(1):从“地址身份证”到“野指针の流浪记”
野指针不是错误,是打开随机记忆位面的召唤阵!解引用野指针?那是在亲吻犹格·索托斯的触手!永远记住:指针使用后要及时置NULL——这是关闭地狱之门的护身符!概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
2025-02-26 12:43:34
1260
原创 第五章C语言操作符详解:从“加减乘除”到“位运算修仙”
/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。
2025-02-24 16:31:44
1027
原创 第四章:C语言函数全解析:从“工具人”到“代码复用大师”
了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写代码更多的创造性。声明是向编译器许下的诺言,定义是兑现承诺的鲜血契约!在头文件中声明函数?那是在铸造跨文件灵魂链接!
2025-02-22 11:33:51
1127
原创 第三章、C语言数组全解析:从一维到二维,从入门到“内存管理大师”
数组是C语言中最基础却最重要的数据结构,它像一排整齐的储物柜,帮你高效管理大量数据。但若使用不当,轻则“下标越界”,重则“内存踩踏”——今天带你彻底搞懂数组,成为内存管理大师!数组一般分为一维数组和多维数组,多维数组一般比较常见的是二维数组。存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃定义的类型。arr_name 指的是数组名的名字,这个名字根据实际情况,起的有
2025-02-19 11:31:33
2373
原创 如何用C语言编写人生中第一个游戏《猜数字》
学习了前面的一些知识我们就可以开始写一些有趣的代码来实践了,于是就来到了今天的主题:《猜数字》游戏要求:1、电脑自动生成1~100的随机数2、玩家猜数字,猜数字的过程中,根据猜测数据的大小给出反馈,直到猜对,游戏结束。看到这里是不是感觉仅凭之前的一些知识做不到这些要求,先不要急,接下来我会逐步介绍这些需要补充的函数,再去写这个小小项目。
2025-02-17 17:12:56
891
原创 第二章、C语言分支与循环:从“if-else修仙”到“for循环996福报”
第二章、C语言分支与循环:从“if-else修仙”到“for循环996福报”目录一、语句——代码界的“基本粒子”if 语句 — C语言分支の祖师爷if语句的基本用法else分⽀中包含多条语句嵌套if悬空else问题二、关系操作符——比大小の艺术三、条件操作符——三目运算符の极简美学条件操作符嵌套练习:四、逻辑操作符——与或非の量子纠缠逻辑取反运算符!逻辑与运算符逻辑或运算符短路五、switch语句——多分支の优雅选择if语句和switch语句的对⽐switch语句中的b
2025-02-16 11:48:44
1261
原创 C语言入门 :《第一章:初识C语言之从打印 Hello World到被指针追杀の几个月》
C语言是一门通用计算机语言,广泛应用于底层开发。C语言的设计目标是提供一种能简易的方式编译,处理低级存储器,产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上编译,甚至包含一些嵌入式处理器,以及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。
2025-02-10 09:56:48
864
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅