自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql 触发器简介

update 触发器中,old 表示修改前的原数据,new 表示将要修改为的数据。old 是只读的,而 new 则可以在触发器中使用 SET 关键字进行赋值。Insert 触发器中,new 表示要插入的那条数据。delete 触发器中,old 表示删除的那条原数据。使用方式:new.字段名称。

2024-03-05 10:46:06 380

原创 Mysql 存储过程简介

数据库中的一类对象,就是一组 sql 语句集,可以调用,还可以有入参,类似于 java 中的方法。如果 sql 语句集关联性很强,使用存储过程可以提高 sql 语句集的原子性。对于经常使用的重复性的 sql 语句集,使用存储过程可以提高工作效率。使用存储过程可以隐藏具体 sql 语句集,提高安全性。

2024-03-05 10:45:58 245

原创 Mysql 视图简介

视图中的数据总是 DQL 执行后的数据,所以对表中原数据进行修改也会影响到视图。保证数据的安全性,对于不同的业务,提供不同的视图,而不是提供全部原表数据。对于一些复杂的 DQL ,我们可以提取为视图,每次对视图进行操作就可以了。我们可以面向视图对象进行增删改查,对视图对象操作会影响原表。在不同角度去看待同一份数据,这份数据我们提取为一个个视图。:只能通过 DQL 语句创建视图。

2024-03-05 10:45:49 143

原创 Mysql 索引的使用情境

索引失效的情况

2024-03-05 10:45:41 182

原创 Mysql 聚簇索引和非聚簇索引

【代码】Mysql 聚簇索引和非聚簇索引。

2024-03-05 10:45:32 149

原创 Mysql 索引为什么要使用 B+ 树作为数据结构

索引是存储在磁盘中的,考虑到索引可能会很大,所以不会一次性全部加载到内存中进行处理,每次 IO 只能取一个节点到内存中,比较后再取下一个节点,直到找到目标关键字。数据量很大时树会变得非常深,导致 IO 次数过多,效率低下。:对于千万数据量的数据库来说,3 到 4 层 B+ 树足够了,也就是最多进行 4 次 IO 便可检索指定数据;范围检索时只需要检索到范围最小值,然后通过叶子节点的指针一直遍历到范围最大值即可。:无法均匀分布数据,浪费空间;:相同层数存储数据量不及 B+ 树;范围查找效率不及 B+ 树。

2024-03-05 10:45:22 214

原创 Mysql MVCC 多版本并发控制技术

事务在进行某次快照读时同步生成的视图,也叫读视图。readview 中包含已提交的事务做出的更改。

2024-03-05 10:45:12 246

原创 Mysql 中的锁机制

事务 A B 并发,A B 都获取了数据的共享锁,此时 A B 都想要修改该数据,需要获取该数据的排它锁,出现锁冲突,A 等待 B 释放共享锁,B 等待 A 释放共享锁,进入死锁。通过唯一约束字段索引进行检索时,会在满足条件的记录上添加行锁,满足条件的记录间添加间隙锁;serializable 隔离级别:与 RR 大体相同,只是普通查询相当于 RR 的共享锁查询。RC / RU 隔离级别下只会在满足条件的记录上添加行锁,无论使用什么样的查询条件。(添加锁时,真正锁的是聚簇索引字段)

2024-03-05 10:44:59 340

原创 Mysql 事务隔离级别

事务 A 可以访问到事务 B 尚未提交的更改:一个事务前后读取的同一条记录发生了改变或删除,针对的是 delete 和 update 操作:一个事务按照相同的查询条件查询出的结果集中较之前出现了新数据,针对的是 insert 操作。

2024-03-04 16:45:11 470

原创 Mysql 事务并发时的更新丢失问题悲观锁和乐观锁的解决方案

更新丢失问题的产生悲观锁方式解决更新丢失问题乐观锁方式解决更新丢失问题:需要在余额表上新加一个 version 字段

2024-03-04 16:19:41 293

原创 Mysql 事务的四个特性

一个事务就是一个完整的业务逻辑、一个最小的工作单元,可以提交或回滚,保证多次更改全部成功或失败原子性隔离性持久性一致性

2024-03-04 16:15:55 156

原创 Mysql 约束

约束就是对表中数据的限制;可以保证表中的数据完整有效。

2024-03-04 15:52:28 317

原创 Mysql 中设置字段自增

设置字段自增(一般都是主键)

2024-03-04 15:49:31 495

原创 mysql 中常用数据类型介绍

varchar :最大 255 ,代表的是字符;实际使用时会根据数据长度动态分配空间;节省空间,但存储效率稍微慢一些;使用例子:姓名,因为姓名长度不固定char :最大 255 ,代表的是字符;定长字符串,分配固定长度的空间去存储数据;使用不正确会浪费空间,但效率稍微快一点;使用例子:性别,因为性别是固定长度的int:数字中的整数型,等同于 java 中的 int ,占 4 字节bigint:数字中的长整型,等同于 java 中的 long ,占 8 字节float:单精度浮点数double:双

2024-03-04 10:16:34 162

原创 SpringBoot 实现发送邮件

【代码】SpringBoot 实现发送邮件。

2024-03-04 09:54:44 219

原创 为什么要引入缓存?数据一致性与缓存利用率的优化方向

所有方案都无法做到强一致,就像 CAP 定理中所描述的一样,我们引入缓存的目的就是提高用户感知的可用性,所以也只能在这个基础上尽量提高一致性,追求强一致的结果只能是牺牲可用性,这就与我们引入缓存的初衷背道而驰了。但这就会产生一个悖论,业务体量小的时候一般也不需要引入缓存,因为缓存解决的首要问题就是业务量大时的数据查询效率问题。缓存命中率为百分之百,性能很高,但缓存利用率低,数据一致性取决于定时任务的执行频率。缓存利用率:缓存中只保存热数据,也就是最近访问过的数据,提高缓存利用率。

2024-03-04 09:54:31 416

原创 MySql 深度分页问题优化思路

当我们把页码调高,比如第 10w 页,server 会在存储引擎的主键索引中依次获取第 0 到 10w*10+10=1000010 条完整行数据,然后抛弃不需要的数据行,只留下最后的 10 条,放到 server 层的结果集中,返回给客户端。当我们执行上面的 sql 取第一页的 10 条数据时,server 层会在存储引擎的主键索引中依次获取到第 0 到 10 条完整行数据,并放到 server 层的结果集中,返回给客户端。问题来了,这种方式同样拿十条数据,第一页和第一百页的查询速度是不一样的。

2024-03-04 09:54:01 321

原创 File 和 MultipartFile 相互转换方式

【代码】File 和 MultipartFile 相互转换方式。

2024-03-04 09:53:47 477

原创 Vue 简介与快速上手

3.大米13Pro</li>\n''<div>你好,欢迎来到大米商城</div>'' <li>1.大米12</li>\n'' <li>2.大米13

2024-03-04 09:53:30 666

原创 慢 Sql 查找与优化思路

MySql 主要定义了三个与慢 Sql 相关的 MySql 系统参数( MySql 系统参数可以通过 show variables like ‘slow_query%’ 语法查看,通过 SET GLOBAL slow_query_log = ON 语法修改)这里我们开启慢 sql 记录,设置日志位置为 D:\Files\slow-query.log ,并设置慢 sql 的阈值为 0.1s (需要重新连接数据库才会生效)虽然叫慢查询日志,但不光会记录 select 语句,其他慢语句也会记录。

2024-03-04 09:53:16 527

原创 几种方式实现定时任务

【代码】几种方式实现定时任务。

2024-03-04 09:53:01 176

原创 递归思想明晰

把一个问题层层转化为一个与原问题相似的规模较小的问题来求解的思路就是递归;逻辑上就是函数自己调用自己。递归策略只需要少量的代码就可以描述出解题过程所需要的多次重复计算,且很多算法只能通过递归实现。学的越多,就会发现不会的越多。我们不就是处在无限递归式自学的模式中嘛。递归思想的运用要解决两个问题。

2024-03-04 09:52:45 143

原创 数据结构之 B 树和 B+ 树

非叶子节点只包含若干关键字和指向其子节点的指针,所以非叶子节点只用来检索,具体数据需要检索到叶子节点来获取叶子节点还额外包含了一个指向下一个叶子节点的指针非叶子节点中的关键字会再次出现在叶子节点中下面是一个简单的三阶 B+ 树的例子。

2024-03-04 09:52:20 1188

原创 数据结构之堆

最大堆和最小堆是对称关系,这也意味着我们了解其中之一即可,其中较为重要的算法为插入和删除。

2024-03-03 11:28:10 198

原创 数据结构之二叉查找树

弱势在于性能上的不稳定,形式上退化为链表后性能甚至不如链表。所以二叉查找树在实际应用中并不常见,但不失为帮助我们理解更高级数据结构的好帮手。二叉查找树的查找最坏情况就是退化为链表,最好情况可以和有序数组效率相同;增删也不用考虑扩展问题,整体适用性较数组和链表都高。有序数组查找时也可使用二分法进行查找;但劣势较为明显,无法很轻松的进行数组的扩展,且增删较慢。链表的优势在于增删可以通过指针,但弱势很明显,查找需要从头开始遍历。

2024-03-03 11:25:56 167

原创 数据结构之哈希表

哈希函数哈希冲突和常见解决方法哈希表的扩容

2024-03-03 11:11:16 158

原创 数据结构之栈和队列

队列:一种可以实现先进先出的数据结构,所有时间相关的操作都可以考虑使用队列;主要使用入队和出队两种算法。栈:一种可以实现先进后出的数据结构;常用于函数调用、表达式求值等场景;主要使用压栈和出栈两种算法。

2024-03-03 11:09:40 350

原创 数据结构之数组和链表及 C 语言表现

新增和删除速度较快,虽然也需要从头节点开始依次访问,但定位到元素后只需要改变指针的指向即可。双链表:每个节点有两个指针域,每个节点之间的指向都是双向的,除了头节点、首节点和尾节点。每个节点只有一个前驱节点和一个后续节点,首节点没有前驱节点,尾节点没有后续节点。常用算法:初始化、遍历输出、追加元素、插入元素、删除元素、排序、倒置等。常用算法:遍历、查找、清空、销毁、求长度、排序、删除节点、插入节点等。类型相同的占用一块定长的连续内存空间的节点集合。类型相同的离散的彼此通过指针相连的节点集合。

2024-03-03 11:08:08 157

原创 设计模式之模板模式及 Java 代码实现

【代码】设计模式之模板模式及 Java 代码实现。

2024-03-03 10:53:06 184

原创 设计模式之单例模式及 Java 代码实现

【代码】设计模式之单例模式及 Java 代码实现。

2024-03-03 10:52:00 97

原创 设计模式之代理模式及 Java 代码实现

代理分为静态代理和动态代理两种静态代理中代理类需要手动编写;动态代理中代理类通过 Proxy.newInstance() 方法生成。其他没有任何区别代理模式的主要作用及本质,还是在不修改被代理对象的源码上,进行功能的增强代理模式在 AOP 领域很常见,主要用于如日志记录,性能统计,安全控制,事务处理,异常处理等方面我的理解:代理的实质是面向接口中的方法进行编程,当需要对某些方法做一些业务不相关的相同的操作时,我们就可以考虑用代理来实现。

2024-03-03 10:50:19 670

原创 网络协议模型,TCP/IP 协议

网络通信时,首先由 IP 协议在复杂的物理网络中寻找对方的地址并确定一条合适的传输路径;然后由 TCP 协议建立连接并传输信息,为了保证信息传输的可靠与方便,TCP 协议会对信息进行切分,为每个包标注大小和顺序,并有确认机制;Http 协议声明要请求的路径和返回数据的信息长度、信息类型(图片、文字、音频等)等,利用 TCP 协议进行数据传输以完成请求和响应TCP 传输控制协议UDP 用户数据协议

2024-03-03 10:47:14 314

原创 Http 常见状态码介绍

用来反应请求状态。

2024-03-03 10:20:22 112

原创 Http 协议介绍

请求信息响应信息请求方法

2024-03-03 10:19:35 134

原创 网络、网络通信、ip 地址、域名、DNS 服务器、端口号的概念

网络通信本质上是两台计算机端口间的通信:服务端的端口由客户端指定访问,客户端的端口由 TCP/IP 协议自动分配

2024-03-03 10:11:58 454

原创 编解码是什么意思?编解码方式的发展

ASCII 码(美国信息交换标准代码)UnicodeUTF-8GBK 编码方式

2024-03-03 10:07:38 630

原创 SpringAMQP 集成 RabbitMQ

SpringAMQP :基于 AMQP 协议定义的一套 API 规范,提供了模板来发送和接收消息。SpringAMQP 包含两部分,基础抽象 spring-amqp 和底层实现,默认以 spring-rabbit 作为底层实现。AMQP :Advanced Message Queuing Protocol ,应用间消息通信的一种协议,与语言和平台无关。可查看原生实现方式)

2024-03-03 09:52:10 365

原创 RabbitMQ 简介与基本使用(附代码)

提到各种消息中间件的用处,首先想到的是异步调用,那这便引出了异步调用模式,较为成熟的要数。

2024-03-03 09:46:14 479

原创 缓存穿透、雪崩、击穿的概念与解决方案(附代码)

【代码】缓存穿透、雪崩、击穿的概念与解决方案(附代码)

2024-03-02 12:15:24 392

原创 Redis 分片集群搭建

执行 redis-cli --cluster create --cluster-replicas 1 192.168.255.128:6379 192.168.255.128:6380 192.168.255.128:6381 192.168.255.128:6389 192.168.255.128:6390 192.168.255.128:6391 命令构建集群(–cluster-replicas 1 表示使用 1 模式,即最简单的模式构建集群,一台主机、一台从机,正好三组)

2024-03-02 11:36:29 615

空空如也

空空如也

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

TA关注的人

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