自定义博客皮肤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)
  • 收藏
  • 关注

原创 elk+kafka+zookeeper整体架构及安装

elk+kafka+zookeeper整体架构,安装部署kafka架构组件概念详解Zookeeper 在 Kafka 中的作用

2021-03-25 17:48:11 231

原创 InnoDB与MyISAM 聚集索引与非聚集索引

InnoDb:支持acid事务,支持行级锁和外键约束,容灾性好,可建立缓冲池存数据及索引,不保存行数,锁粒度为行。MyLASM:不支持事务,外键,读写时需锁表,效率低,保存了行数,读多于写时可选择。复合索引速度快于innodb聚簇索引和非聚簇索引:InnoDB使用的是聚簇索引,MyLASM使用非聚簇索引,对于聚簇索引存储来说,行数据和主键B+树存储在一起,辅助键B+树只存储辅助键和主键,主键和非主键B+树几乎是两种类型的树。对于非聚簇索引存储来说,主键B+树在叶子节点存储指向真正数据行的指针,而非

2021-03-24 19:31:08 317

原创 多线程基础知识问答

线程间如何通信?线程通信主要可以分为三种方式,分别为共享内存、消息传递和管道流。每种方式有不同的方法来实现共享内存:线程之间共享程序的公共状态,线程之间通过读-写内存中的公共状态来隐式通信。volatile共享内存消息传递:线程之间没有公共的状态,线程之间必须通过明确的发送信息来显示的进行通信。wait/notify等待通知方式join方式管道流管道输入/输出流的形式线程的生命周期有哪些状态?五种状态,创建,就绪,运行、阻塞和死亡状态。wait 和 sleep 有什么区别?sleep

2021-03-23 17:23:17 83

原创 Redis与数据库一致性问题解决方案

1、先删缓存,再更新数据库该方案会导致不一致的原因是。同时有一个请求A进行更新操作,另一个请求B进行查询操作。那么会出现如下情形:(1)请求A进行写操作,删除缓存(2)请求B查询发现缓存不存在(3)请求B去数据库查询得到旧值(4)请求B将旧值写入缓存(5)请求A将新值写入数据库上述情况就会导致不一致的情形出现。而且,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。那么,如何解决呢?采用延时双删策略伪代码如下public void write(String key,Object d

2021-03-17 17:14:49 433

原创 Spring循环依赖以及解决方式

Spring为了解决单例的循环依赖问题,使用了三级缓存。这三级缓存分别指:3 singletonFactories : 单例对象工厂的cache2 earlySingletonObjects :提前暴光的单例对象的Cache1 singletonObjects:单例对象的cacheSpring首先从一级缓存singletonObjects中获取。如果获取不到,并且对象正在创建中,就再从二级缓存earlySingletonObjects中获取。如果还是获取不到且允许singletonFactorie

2021-03-15 19:45:59 429

原创 说一下公平锁和非公平锁的区别?

**公平锁:按照队列顺序,一个接一个的获取锁优点:所有线程都能得到资源缺点:吞吐量会降低,唤醒下一个线程的cpu开销比较大非公平锁:无需排队,直接去获取锁,获取不到则会回到队列继续等待,合适时机可随时再去获取优点:吞吐量加大,无需唤醒其他线程缺点:会有部分线程从头至尾都获取不到锁,导致线程饿死**参考文章:https://www.imooc.com/article/302143...

2021-03-10 18:53:57 173

原创 设计模式之模板方法模式

模板设计模式—基于抽象类的,核心是封装算法模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供具体实现模板(模板方法)模式(Servlet、AQS)在一个方法中定义一个算法的骨架,并将一些具体步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的基础上,重新具体定义算法中的某些步骤讲模板设计模式之前,我们用代码来实现咖啡和茶制作的类:class Coffee { /* * 咖啡冲泡法(算法) */ void prep

2021-03-10 18:34:46 81

原创 Redis的缓存穿透——布隆过滤器BloomFilter

什么是缓存击穿在高并发场景下,如果某一个key被高并发访问,没有被命中,出于对容错性考虑,会尝试去从后端数据库中获取,从而导致了大量请求达到数据库,而当该key对应的数据本身就是空的情况下,这就导致数据库中并发的去执行了很多不必要的查询操作,从而导致巨大冲击和压力。在高并发的场景下,缓存相当于数据库的防火墙,如果用一个肯定不存在的key去访问系统,每次都会绕过缓存去访问数据库,缓存则失去了作用。BloomFilter原理:简单的说就是:通过将一个key的hash值分布到一个大的bit数组上面,判断一

2021-03-03 19:10:56 271 2

空空如也

空空如也

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

TA关注的人

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