自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java的四种引用类型

一、四种引用类型概述在JDK1.2版本后,Java对引用的概念进行扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)。这四种引用类型强度依次逐渐减弱,除了强引用外其他引用都继承自Reference抽象类,在java.lang.ref包中可以找到它们。二、强引用(Strong Reference)强引用是最传统的引用定义也是使用最频繁比如Object obj = new

2021-06-29 19:05:27 313

原创 InnoDB存储引擎MVCC

一、MVCC是什么MVCC,全称Multi-Version Concurrency Control 多版本并发控制,MVCC是一种并发控制方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务的内存。那InnoDB存储引擎使用MVCC有什么用,又如何实现呢。

2021-06-02 13:44:56 330

原创 MySQL数据库InnoDB锁

前言当我们在讨论MySQL数据库InnoDB的锁时,总会想到表锁、行锁、悲观锁、乐观锁等等。如果没有进行深入了解,我们很难知道它们之间关系是什么,有什么作用。本文主要是对InnoDB的锁之间关系和作用进行讲解。一、锁是什么?当并发访问数据库时有可能会导致用户修改和读取数据不一致性问题,为了解决这些问题,目前InnoDB存储引擎提供了两种技术解决方案:多版本控制(MVCC)和基于锁的并发控制(LBCC)。二、使用步骤1.引入库代码如下(示例):import numpy as npimport

2021-05-28 11:53:47 813 1

原创 MySQL数据库InnoDB事务

一、MySQL事务是什么?事务是指作为单个逻辑工作单元一系列操作,要么全部执行成功,要么全部执行失败。常见的业务场景比如:A用户使用自己银行账户转账200元到B用户的账户,那么至少需要三个步骤检查A用户银行账号余额是否大于200元。A用户的银行账户减去200元。B用户的银行账户添加200元。以上三个步骤必须作为一个事务,只要其中一个步骤失败,那么全部的步骤都要进行回滚。上面举了关于事务的业务场景,那如何定义事务呢,一般来说事务具有四大特性(ACID):原子性(Atomicity)、一致性(Co

2021-05-25 10:37:53 382

原创 MySQL数据库InnoDB存储引擎Page页

我们大多数时候,在操作数据库一般只关注如何保存或者获取到正确的数据,但是对于数据是以何种格式存储到磁盘里是少有去了解的。个人觉得理解这个过程有很大意义,于是顺带好奇对MySQL数据库InnoDB存储引擎中Page页进行探究。

2021-05-21 19:38:10 917

原创 MySQL数据库InnoDB存储引擎底层原理详解

从1996年发布MySQL1.0版本到现在已经历经25年头啦,在这期间不断更新版本,目前最新的版本是8.0。那InnoDB是什么东西?首先它肯定是MySql的存储引擎并且实现技术相当复杂,如果要描述清楚是怎么实现,可能在烧烤桌上来几打啤酒也讲不完。本文对InnoDB存储引擎底层原理详解仅限目前所掌握的知识进行讲述。

2021-05-20 17:43:08 3181 4

原创 彻底理解B+树

B+树广泛应用在文件系统和数据库系统如windows的HPFS 文件系统,Linux的JFS 文件系统还有数据库MYSQL的 InnoDB索引等。掌握好B+树基础对如何正确使用MYSQL索引和性能优化有很大帮助。前面写了篇对B树理解总结的文章,现在对B+树继续学习理解。

2021-05-05 18:45:55 3953 2

原创 彻底理解B树

最近我们的项目使用到MongoDB,因为之前的数据存储都是选择MySql或者PostgressSQL,为什么这个项目要选择MongoDB呢?进一步了解到原来MongoDB的默认存储引擎是WridedTiger,并使用B树作为索引底层的数据结构。本着好奇最后打算对B树进行深入了解

2021-04-22 23:03:56 3631 3

Java实现电商秒杀项目

电商秒杀项目设计方案 项目启动时将商品库存信息缓存到redis 当前用户秒杀商品时,首先去redis查询用户是否秒杀商品,没秒杀过,再去数据库查询,若该用户已秒杀过商品则不能,在参与秒杀同样商品。 若用户没有参与过秒杀商品,则去redis缓存预减库存,库存数量少于0,则返回错误信息。 预减库存成功后,将订单任务发送到MQ。 MQ收到订单消息后,到数据库预减库存。 若数据库库存减成功,生成订单和秒杀订单并将订单信息缓存到redis,否则将错误信息缓存到数据库里。 前端通过用户id和商品id,轮询查看秒杀结果,后端先去redis查询订单信息不存在,就去数据库查询,查询成功则返回秒杀结果信息。 若缓存和数据库都查询失败,则继续去redis查询是否有秒杀订单失败信息比如库存不足等信息,若存在则返回秒杀失败,否则返回该订单下单正在排队中。 接口

2021-09-07

空空如也

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

TA关注的人

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