自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用SpringBoot和MyBatis实现分页功能

需求从数据库查询所有元素,并分页显示在界面上实现创建分页页面对象/** * 封装分页相关的信息. */public class Page { // 当前页码 private int current = 1; // 显示上限 private int limit = 10; // 数据总数(用于计算总页数) private int rows; // 查询路径(用于复用分页链接) private String path;

2022-01-12 21:58:14 957

原创 解决IDEA使用本地Maven并使用阿里云镜像仓库Could not transfer artifact xxx的问题

问题背景今天IDEA更换了Maven的版本,并配置了阿里云镜像和本地仓库创建Maven项目发现无法下载所需要的依赖到本地仓库搞了一下午,尝试了n种方法,都无果解决方法无奈只能更换成华为云镜像,问题解决(华为nb!!!)。<mirror> <id>huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.hu

2021-12-27 09:22:14 872

原创 并发条件下HashMap的死循环问题

并发条件下HashMap的死循环问题HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候,HashMap需要扩展它的长度,也就是进行Resize。发生Resize的条件HashMap的元素的个数 >= 数组容量 x 负载因子步骤:1、扩容创建一个新的空数组,长度为原数组的2倍2、rehash遍历原Entry数组,把所有的Entry重新Hash到新数组。rehash代码/** * Transfers a

2021-12-23 21:39:51 784

原创 【MySQL】Innodb存储引擎关键特性之——自适应哈希索引和异步IO

自适应哈希索引(AHI)问题背景众所周知,Innodb存储引擎索引底层数据结构是B+树,而B+树查找的时间复杂度取决于B+树的高度。而有一种数据结构,它查找的时间复杂度是O(1),那就是——数组。想到数组,进而联想到哈希(hash)查找方法。因此,Innodb存储引擎在B+树索引的基础上,又引入了自适应哈希索引来提高查找效率。解决方案Innodb会监控对表上各个索引页的查询,如果观察到建立Hash索引可以带来速度提升,则建立哈希索引,又称为自适应哈希索引(AHI)。AHI是通过缓冲池中的B+树页构

2021-12-23 21:07:23 576

原创 【MySQL】Innodb存储引擎关键特性之——double write

【MySQL】Innodb特性之——double write问题背景当数据库发生宕机时,Innodb可能正在把内缓冲区中的脏页写到表中,此时假如一个页只写了一部分,则出现部分写失效问题。Innodb使用双写机制(double write)解决部分写失效导致的数据丢失问题。解决方案有人会想到可以通过重做日志恢复,但是,重做日志中记录的是对页的物理操作,但如果页本身已经损坏,则重做日志不再起作用。这时,在应用重做日志之前,可以copy一个页的副本,先用副本重放日志,进行重做,这就是双写机制。内部实现

2021-12-22 21:53:37 1006

原创 【MySQL】InnoDB存储引擎关键特性之——Insert Buffer

目录问题背景解决方案使用条件:存在问题:升级:内部实现:Insert Buffer Bitmap合并过程问题背景在Innodb存储引擎中,主键是行唯一标识符,并且对数据的插入和读取是按页进行。行记录按主键顺序插入效率会非常高,因此插入聚集索引一般是磁盘的顺序插入,不需要随机读取。如果表存在主键a(自动增长),对a列的插入NULL,页中数据都是按a的值顺序存放,则不需要随机读取另一个页的记录,因此效率很高。不是所有的主键插入都是有序的,例如主键是uuid这

2021-12-21 21:11:57 723

原创 Docker小结

为什么会出现?在企业级应用开发过程中,传统的开发上线流程是程序员将代码打成war/jar包,交由运维工程师进行部署上线。但这样存在一个问题,就是运维程序员本地的环境可能与开发工程师本地环境不一致,导致在开发工程师本地可以正常运行的程序在运维工程师本地不可以正常运行。因此,可以考虑是否可以把程序连同环境一起“打包”,这样一个“包”就可以在任意机器上运行,而不需要运维工程师进行环境配置,即“软件带环境安装”。于Docker虚拟化技术应运而生。定义一句话,Docker是解决了运行环境和配置问题

2021-12-16 21:11:00 1071

原创 自定义校验注解

目录问题背景解决方案引入依赖添加自定义注解类接口实现自定义校验器类实现校验工具类问题背景开发过程中,常常需要对某些字段进行校验,每次都去写校验逻辑不仅麻烦,而且不能复用,因此可以使用自定义校验注解进行校验。使用时,只需要在需要添加校验的字段上加上自定义的注解即可。解决方案这里以自定义手机号校验注解为例进行讲解引入依赖 <dependency> <groupId>org.springframework.boot</gr

2021-12-08 20:18:25 1734

原创 【I/O】常见的I/O线程模型

目前常见的I/O线程模型有:传统阻塞I/O服务模型和Reactor模式传统阻塞I/O服务模型模型特点:采用阻塞I/O模式获取输入的数据 每个连接都需要独立的线程完成数据的输入、处理和返回存在问题:当并发数很大,就会创建大量的线程,占用很大系统资源 连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在 Handler对象中的read操作,导致上面的处理线程资源浪费...

2021-12-06 22:12:27 594

原创 【分布式】一致性协议之Paxos算法

之前文章介绍了2PC和3PC一致性协议,本文将继续介绍另一个Paxos算法前置知识对于分布式一致性算法,有两个最重要的属性:安全性:指那些需要保证永远都不会发生的事情 活性:指那些最终一定会发生的事情问题描述假设有一组可以提出提案的进程集合,对于一致性算法,要求:这些提案最终只有一个被选定 当一个提案被选定后,进程可以获取被选定的提案信息对于Paxos,安全性要求有:只有被提出提案才能被选定 只有一个值会被选定 如果某个进程认为某个提案被选定了,那这个提案必须真的是被选定

2021-12-01 22:08:17 153

原创 【分布式】一致性协议之2PC与3PC

目录2PC阶段一:投票流程阶段二:执行阶段优点缺点3PC阶段一:CanCommit阶段二:PreCommit(存在两种可能)阶段三:doCommit(存在两种可能)优点缺点分布式系统中往往是由分布在不同位置的多台机器组成,如何保证这些机器的数据一致性,成为分布式系统需要解决的问题之一。为了解决这一问题,出现了一大批经典的一致性协议和算法,其中最著名的是二阶段提交(2PC)、三阶段提交(3PC)和Paxos算法。2PC二阶段提交,在多台机器中选出一个“协

2021-11-29 22:18:56 595

原创 内存零拷贝详解

目录前置知识标准设备标准协议利用中断减少CPU开销利用DMA进行继续优化零拷贝零拷贝之mmap零拷贝之sendfile前置知识标准设备一个标准的硬件设备包括两部分:面向系统其他部分展现的硬件接口(类似于软件的接口),供其他硬件或软件调用 内部结构,包括设备相关的特定实现,负责具体实现设备展示给系统的抽象接口标准协议一个标准设备的接口包含三个寄存器,通过读写这些寄存器,操作系统可以控制设备的行为:一个状态(status)寄存器,可以读取并..

2021-11-25 16:23:33 5661

原创 【分布式应用】分布式锁学习总结

应用场景:当前分布式应用中,往往存在这样的场景,高并发流量访问db,为了防止数据库被打挂,通常在db层以上加一层cache。当今市面上使用的最多的缓存是用redis来作缓存,众所周知,redis缓存存在三个常见问题:缓存穿透:高并发访问的数据在数据库(db,cache)根本没有,导致流量穿过cache直接打到db 缓存雪崩:大量数据同时在cache中失效,导致流量直接打到db 缓存击穿:高并发流量访问热点数据,当热点数据在cache中失效的时候,导致高并发直接打到db而应对上述问题的办法往

2021-10-28 18:49:23 137

空空如也

空空如也

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

TA关注的人

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