logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Redis第14讲——Redis实现分布式锁(Redission源码解析)

在多线程环境下,为了保证数据的线程安全,我们通常用加锁的方式,使同一时刻只有一个线程可以对这个共享资源进行操作,在单服务系统我们常用JVM锁——Synchronized、ReentrantLock等。然而在多台服务系统的情况下,JVM锁就无法在多个服务器之间生效了,这时候我们就需要用分布式锁来解决线程安全的问题。分布式锁的实现方式有很多,主流的就是基于数据库、zookeeper以及redis,当然

文章图片
#面试
Redis第10讲——Redis数据分片的三种算法

一致性哈希环顺时针映射优先考虑的是:如何实现最少的节点数据发生数据迁移,当增加或移除节点,只有离新节点最近的节点会涉及到数据迁移。redis cluster哈希槽是静态映射,优先考虑的是如何实现数据均匀分布,当增加或移除节点时,所有的节点都会参与进来平摊压力。(我们搞集群的目的是啥?还不是单机容量不足,需要扩容多机组成集群,然后将数据尽可能的均匀分布吗)。同时,redis cluster哈希槽静态

文章图片
#redis#面试
Redis第14讲——Redis实现分布式锁(Redission源码解析)

在多线程环境下,为了保证数据的线程安全,我们通常用加锁的方式,使同一时刻只有一个线程可以对这个共享资源进行操作,在单服务系统我们常用JVM锁——Synchronized、ReentrantLock等。然而在多台服务系统的情况下,JVM锁就无法在多个服务器之间生效了,这时候我们就需要用分布式锁来解决线程安全的问题。分布式锁的实现方式有很多,主流的就是基于数据库、zookeeper以及redis,当然

文章图片
#面试
idea无意拖出一个窗口,教你如何复位

今天就深受其害,虽说不重要,但也挺闹心的,网上搜了半天没有可用的方案,好在功夫不负有心人,自己摸索出来了,话不多说,上教程:

文章图片
#ide#java#intellij-idea +1
Redis第15讲——RedLock、Zookeeper及数据库实现分布式锁

由于篇幅原因,在上篇文章我们只介绍了redis实现分布式锁的两种方式——setnx和Redission,并对Reidssion加锁和看门狗机制的源码进行了分析,但这两种方案在极端情况下都会出现或多或少的问题。那么针对上述问题,比较主流的解决方案有两种:RedLock和Zookeeper实现的分布式锁。

文章图片
#zookeeper#数据库#面试
inputStream.avaliable()方法网络操作读取不全BUG

用InputStream.available()方法,这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。这是因为网络通讯往往是间断性的,一串字节往往分几批进行发送。例如对方发来字节长度100的数据,本地程序调用available()方法有时得到0,有时得到50,有时能得到10

文章图片
#bug
Redis第13讲——缓存不一致问题四种解决方案

​上篇文章介绍了缓存常用的三种设计模式,并且对使用最广泛的Cache Aside Pattern进行了深入的探讨,在比较先操作数据库or先操作缓存、删除缓存or更新缓存之后发现,先操作数据库再删除缓存是最优的选择,但是依然存在数据一致性问题,那么,本章在“先操作数据库再删除缓存”这种方案的基础上,给出3个更加完备的方案来解决缓存于数据库一致性问题。

文章图片
#redis#面试
5种Redis热key问题解决方案

如果在同一时间点上,Redis中的同一个key被大量访问,就会导致流量过于集中,使得很多物理资源无法支撑,如网络带宽、物理存储空间、数据库连接等。这也是为什么某某明星官宣之后,微博上面就会出现宕机的情况。有时候这种宕机发生后,其他功能都是可以使用的,只是和这个热点有关的内容会无法访问,这其实就和热点数据有关系了。对于热key的处理,主要在于事前预测和事中解决。对于事前预测就是根据一些经验,提前识别

文章图片
#redis#缓存#java +1
Java并发编程第11讲——AQS设计思想及核心源码分析

AQS全称AbstractQueuedSynchronizer。JDK 1.5之前只有synchronized同步锁,并且效率并不高,因此并发大神Doug Lea在JDK 1.5的时候自己写了一套框架,希望能够成为高效率地实现大部分同步需求的基础,也就是我们现在熟知的AQS(队列同步器)。AQS提供了一个同步器的框架,JUC包下大多数同步器都是围绕着AQS 使用的一组共同的基础行为(如等待队列、条

文章图片
#面试
Java并发编程第5讲——volatile关键字(万字详解)

本篇文章从volatile的定义谈起,由于volatile与Java内存模型有较多的关联,所以接着介绍Java内存模型的相关概念、线程、主内存和工作内存之间的关系以及内存间的交互规则;随后详细介绍了volatile和synchronized在Java并发编程的三大特性——原子性、可见性和有序性中的表现(重点介绍volatile)。最后介绍了一下“重排序”、“内存屏障”和“先行发生原则(happen

文章图片
#java
    共 40 条
  • 1
  • 2
  • 3
  • 4
  • 请选择