自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(337)
  • 资源 (1)
  • 收藏
  • 关注

原创 第二十三章 MySQL锁之表锁

表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。对于表级锁,主要分为以下三类:1. 表锁2. 元数据锁(meta data lock,MDL)3. 意向锁对于表锁,主要分以下两类类:1. 表共享读锁(read lock2. 表独占写锁(write lock二、语法加锁:表名。释放锁:客户端断开连接。三、特点A.读锁。

2025-02-04 17:07:02 355

原创 第二十二章 MySQL锁之全局锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁:锁定数据库中的所有表。表级锁:每次操作锁住整张表。行级锁:每次操作锁住对应的行数据。二、全局锁概念。

2025-02-04 16:52:44 866

原创 第二十一章 触发器

触发器是与表有关的数据库对象,指在之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

2025-02-04 15:58:36 420

原创 第二十章 存储函数

前面章节中,我们详细讲解了MySQL中的存储过程,掌握了存储过程之后,学习存储函数则肥仓简单,存储函数其实是一种特殊的存储过程,也就是有返回值的存储过程。存储函数的参数只能是IN类型的。

2025-02-04 15:44:18 201

原创 第十九章 存储过程

用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用"@变量名"使用就可以。其作用域为当前连接。

2025-02-04 14:24:37 1120

原创 第十八章 视图

一、概述视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

2025-02-04 11:34:11 1052

原创 第十七章 SQL优化(二)

sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫。的性能低,我们在优化排序操作时,尽量要优化为 Using index。把之前前面章节测试时,为tb_user表所建立的部分索引直接删除掉。通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区。通过有序索引顺序扫描直接返回有序数据,这种情况即为。对于以上的两种排序方式,Using index。都没有索引,所以此时再排序时,出现。,不需要额外排序,操作效率高。4. 创建索引后,根据。

2025-01-23 07:48:45 231

原创 第十六章 SQL优化(一)

存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 (index organized table IOT)。50的记录,我们来看看会发生什么现象,会再次开启一个页,写入新的页中吗?那也就意味着, 一个页中所存储的行也是有限的,如果插入的数据行row。在该页存储不小,将会存储到下一个页中,页与页之间会通过指针连接。注:这个里面所发生的合并页的这个现象,就称之为 "页合并"。的数据之后,那么此时,这三个页之间的数据顺序是有问题的。4. 删除数据,并将页合并之后,再次插入新的数据。

2025-01-23 07:34:14 737

原创 第十五章 理解索引的使用原则及失效场景

在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了1000w的记录。这张表中id为主键,有主键索引,而其他字段是没有建立索引的。可以看到即使有1000w的数据,根据id进行数据查询,性能依然很快,因为主键id是有索引的。我们可以看到根据sn字段进行查询,查询返回了一条数据,结果耗时 20.78sec,就是因为sn没有索引,而造成查询效率很低。

2025-01-16 22:50:38 722

原创 第十四章 SQL性能分析

MySQL客户端连接成功后,通过命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERTUPDATEDELETESELECT的访问频次:Com_deleteCom_insertCom_selectCom_update通过上述指令,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据 库优化提供参考依据。如果是以增删改为主,我们可以考虑不对其进行索引的优化。如果是以查询为主,那么就要考虑对数据库的索引进行优化了。

2025-01-10 22:46:11 975

原创 第十三章 索引的结构特点、分类及语法

索引(index)是帮助MySQL高效获取数据的数据结构有序。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。我们通过一个简单的案例来了解下索引的具体作用,如下所示的表结构及其数据:假如我们要执行的SQL语句为 :1).无索引情况在无索引情况下,就需要从第一行开始扫描,一直扫描到最后一行,我们称之为 全表扫描,性能很低。2).有索引情况。

2025-01-05 22:32:42 764

原创 第十二章 存储引擎

大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器的核心组件。比如,对于舰载机、直升机、火箭来说,他们都有各自的引擎,是他们最为核心的组件。而我们在选择引擎的时候,需要在合适的场景,选择合适的存储引擎,就像在直升机上,我们不能选择舰载机的引擎一样。而对于存储引擎,也是一样,他是mysql数据库的核心,我们也需要在合适的场景选择合适的存储引擎。接下来就来介绍一下存储引擎。存储引擎就是存储数据、建立索引、更新查询数据等技术的实现方式。

2024-12-26 07:55:52 256

原创 第十一章 事务

事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。比如张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。正常情况转账这个操作需要分为以下这么三步来完成三步完成之后张三减少1000,而李四增加1000,转账成功异常情况转账这个操作也是分为以下这么三步来完成。

2024-12-26 07:49:20 794

原创 第十章 多表查询

我们在前面几个章节讲解SQL语句的时候,涉及到了DQL语句即数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作。‌是指在数据库查询中涉及多个表的操作,通过连接运算来获取多个表中的数据。多表查询主要包括内连接、外连接、自连接等多种方式。在项目开发中,数据库表结构设计通常根据业务需求及模块之间的关系进行设计。常见的表关系有一对多、多对多和一对一。例如,部门与员工的关系是一对多关系,一个部门对应多个员工;

2024-12-18 23:13:35 314

原创 第九章 约束

用讲就是,指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS即数据库管理系统(Database Management System)自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。数据完整性约束是一组完整性规则的集合。、参照完整性、用户定义完整性。三者都满足即满足了数据完整性约束。因此本概念的定义是一个描述性定义。我们的话,约束是作用于表中字段上的规则,用于限制存储在表中的数据。

2024-12-17 23:12:39 718

原创 第八章 函数

‌它们可以分为单行函数和多行函数(聚合函数),前者对单行数据进行运算并返回结果,后者则对多行数据进行处理并返回一个结果。‌。

2024-12-17 07:42:08 1109

原创 第七章 DCL

DCL英文全称是数据控制语言‌是一种用于控制数据访问权限的语言,主要用于管理数据库中的用户权限。DCL的主要功能是通过SQL语句来授予或撤销用户对数据库对象的访问权限。​二、管理用户。

2024-12-14 22:35:55 743

原创 第六章 DQL

DQL英文全称是数据查询语言,用来查询数据库中表的记录。--例如:找出emp表中员工号为007的员工的工资:在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

2024-12-14 22:06:59 810

原创 第八章 手写一个万能的动态Feign调用

我们在日常开发过程中,在通过Feign进行微服务间的接口调用时,经常会编写各个微服务功能模块的Feign接口,每新增一个功能模块,我们就需要新定义一个这样的接口,非常地不方便。本章节为我们将通过一个实际的案例来给大家演示如何动态的实现Feign接口调用,减少业务代码量。

2024-12-14 11:55:21 664

原创 第七章 函数式接口消除if else

本章节通过几个简单的demo示例代码,来演示下通过函数式接口消除代码中的if else 语句/*** 如果参数为true抛出异常信息* @return*//*** 分支操作* @param b 为true时要进行的操作, 为false时要进行的操作*/if (b) {} else {});/*** 参数为true或false时,分别进行不同的操作* @return*/} else {

2024-12-14 11:12:44 241

原创 第六章 状态模式优化代码

我们在日常开发过程中一定会遇到下述场景:业务中有类似订单这样需要修改状态的功能模块,订单状态的修改变化为未支付 -> 已支付 -> 已完成因此我们每次在修改状态之前,都得先判断下现有的订单状态值是多少,这样就会的导致代码中产生很多不必要的if set语句,非常的不优雅。/*** 订单枚举类*/// 未支付UNPAY(0, "未支付"),// 已支付PAID(1, "已支付"),// 已完成FINISHED(2, "已完成");@Data。

2024-12-14 09:55:41 715

原创 第五章 DML

语言中,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。在使用数据库的系统开发过程中,其中应用程序必然会使用的指令;而加上 SQL的SELECT语句,欧美地区的开发人员把这四种指令,以“数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集,例如在信息软件产业通行标准的。表所有的字段添加数据。

2024-12-11 07:33:49 890

原创 第四章 DDL

目录一、DDL概念二、DDL数据库操作2.1. 查询所有数据库2.2. 查询当前数据库2.3. 创建数据库三、数据库操作示例3.1. 创建数据库3.2. if not exists3.3. 创建库并指定字符集3.4. 删除数据库3.5. 切换数据库四、表/表结构查询与创建4.1. 查询当前数据库所有表4.2. 查看指定表结构4.3. 查询指定表的建表语句4.4. 创建表结构4.5. 数据类型4.5.1. 数值类型4.5.2. 字符串类型4.5.3. 日期时间类型4.6. 数据类型示例五、表修改5.1. 添加

2024-12-10 23:03:51 1086

原创 第三章 SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,作为数据库查询和,用于存取数据以及查询、更新和管理。即操作关系型数据库的编程语言,定义了一套操作关系型数据库统一。结构化查询语言是高级的非过程化,允许用户在高层上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

2024-12-08 22:45:42 645

原创 第二章 MySQL版本和Windows安装

从MySQL官网我们可以看到安装的版本只有32位的,其实这个32位安装包里包含了64位,在我们下载安装的时候便可以看到。‌:安装MySQL所有的产品和功能,包括服务器、客户端工具等,适合需要完整MySQL功能的用户。‌:这是默认安装类型,会安装MySQL开发所需的所有产品,适合开发者使用。‌:仅安装MySQL客户端工具,适合只需要使用MySQL客户端工具的用户。‌:允许用户自定义安装产品,可以选择安装哪些组件,适合需要灵活安装的用户。的相关组件,这个过程可能需要耗时几分钟,耐心等待。

2024-12-08 22:01:46 1062

原创 第一章 初识MySQL

数据库是在 20 世纪 60 年代末发展起来的一项重要技术,20 世纪 70 年代以来数据库技术得到迅猛发展,已经成为计算机科学与技术的一个重要分支。数据库技术和系统已经成为信息基础设施的核心技术和重要基础,数据库技术作为数据管理的最有效的手段,极大地促进了计算机应用的发展。‌。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。‌数据库技术主要是用来解决数据处理的非数值计算问题,其主要功能包括数据的存储、查询、修改、排序和统计等。

2024-12-08 20:27:56 956

原创 第四章 ACP考题错题汇总(四)

2024-11-30 00:29:15 120

原创 第三章 ACP考题错题汇总(三)

2024-11-27 23:25:20 137

原创 第五章 if语句优化之工厂策略模式+Supplier接口(四)

我们在实际项目开发中,一定会充斥着大量这种if elseif的等号条件判断语句,这种写法我们称之为流水账。随着后续判断条件逐步递增,执行体的业务功能越来越复杂、代码量越来越多时,包含该if elseif条件的方法体的代码行数将为每日递增,造成非常难以维护的局面,代码的可读性也会变得非常差。

2024-11-26 22:34:56 793

原创 第四章 if语句优化之数字范围大小比较的if elseif(三)

很多人看到优化前后的代码可能会很疑惑,这优化后的代码量比优化前多了这么多,除了看着优雅点,有什么意义?我们要知道在设计模式中的一个重要原则就是对扩展开放对修改关闭,当后面有需要增加新的判断分支的时候,我们不需要改变主体调用者的代码,只需要在枚举类中增加一个新的枚举扩展即可。另外我们在编写代码时,结构化是非常重要的一个点,很多人写代码就像流水账,一个方法中通过嵌套各种if elseif 代码量可以达到几百上千行,这样的代码让后续接手的人会叫苦不迭!

2024-11-26 13:07:26 392

原创 第二章 ACP考题错题汇总(二)

2024-11-24 23:54:37 141

原创 第一章 ACP考卷错题汇总(一)

2024-11-24 00:28:55 122

原创 第一章 国产开源数据库建模工具PDManer

PDManer元数建模,是一款多操作系统开源免费的桌面版关系数据库模型建模工具,相对于PowerDesigner,他具备界面简洁美观,操作简单,上手容易等特点。支持Windows,Mac,Linux等操作系统,也能够支持国产操作系统,能够支持的数据库如下:MySQL,PostgreSQL,Oracle,SQLServer等常见数据库支持达梦,GuassDB等国产数据库支持Hive,MaxCompute等大数据方向的数据库用户还可以自行添加更多的数据库扩展。

2024-11-23 00:01:02 3946

原创 第三章 if语句优化之多层嵌套的if判空语句(二)

我们在日常开发过程中,肯定见过上述两种写法的if判空语句,两种写法都能实现我们的业务逻辑非空判断。之所以推荐第二种写法,是因为通过这种提前判空回执,能够尽可能地减少代码嵌套的层级数,增加代码的可读性、可维护性和可扩展性。我们在实际项目的开发过程中经常会看到这种多层嵌套的if非空判断语句,这种写法不管是从可读性、维护性、扩展性还是系统性能而言,都是非常艰难且具有挑战性的。

2024-11-21 00:09:59 306

原创 第二章 if语句优化之单字符串比较的if elseif(一)

日常开发中,我们经常会看到这种多if else的条件判断语句,随着业务代码量越来越复杂,这种代码会非常难以维护。通过hutool的工具包,替代字符串的非空判断,并通过switch来替代if else if else语句,更加结构化。从原始的代码中可以看到,本质是想做一个入参和出参的映射关系,因此我们可以通过枚举来实现。

2024-11-20 23:19:54 276

原创 第一章 不要在SQL语句里写where 1=1

很多人可能对自己的代码很自信,觉得自己的调用代码写的非常严谨,会规避这种错误。但是我们无法保证其他人员在调用的过程中存在的代码编写的风险。因此,即使我们SQL中报错,也不要加where 1 = 1。

2024-11-20 22:44:18 563

原创 第十五章 JDK 8 重复注解与类型注解

以来,注解开始变得非常流行,并在各个框架和项目中被广泛使用。不过注解有一个很大的限。引入了重复注解的概念,允许在同一个地方多次使用同一个注解。:表示该注解能写在类型参数的声明语句中。制是:在同一个地方不能多次使用同一个注解。:表示注解可以在任何用到类型的地方使用。1.1.4. 解析得到指定注解。1.1. 重复注解的使用步骤。定义一个可以重复的注解。定义重复的注解容器注解。

2024-11-20 00:49:47 272

原创 第十四章 JDK 8新的日期和时间 API

JDK 8中增加了一套全新的日期时间API,这套API设计合理,是线程安全的。新的日期及时间API位于java.time包中,下面是一些关键类。LocalDate。

2024-11-19 23:05:47 1047

原创 第十三章 Optional类的使用

检查,防止NullPointerException。如果调用对象包含值,返回该值,否则返回参数。它的作用主要就是为了解决避免。如果调用对象包含值,返回该值,否则返回。如果有值对其处理,并返回处理后的。是一个没有子类的工具类,有值则将其返回,否则抛出。

2024-11-19 22:00:51 873

原创 第十二章 并行Stream流

使用的是Fork/Join框架。Fork/Join框架自JDK 7引入。Fork/Join框架可以将一个大任务拆分为很多小任务来异步执行。Fork/Join框架主要包含三个模块:1.线程池:2.任务对象:3.执行任务的线程:

2024-11-19 21:26:12 1068

dubbo-admin-develop.zip

Dubbo Admin安装包 主要用户在使用Dubbo分布式框架时,能够通过部署这么一套管理界面,充分有效地使用Dubbo

2019-12-14

空空如也

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

TA关注的人

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