redis集群的相关问题

Redis主从模式也称为主备模式。是一种高可用的方案。一个主服务器可以有多个从服务器。Redis的自身支持主从复制,只要更改下启动配置即可。从节点可以自动从主节点同步数据,主节点可以自动把读请求转给从节点从而实现读写分离减轻自身压力。但是,主节点如果完蛋了,从节点无法升级为主节点,client也无法自动切换,所以没有高可用的能力。redis配置从服务器的过程脑裂问题如果只有master和slave两个角色,为防止主服务器假死后又复活,但是主从服务器通信又相互中断,这样彼此都不知道对方在提供服务
分类: 其他 发布时间: 02-09 13:10 阅读次数: 0

SPI和类加载器

主要目的如果同时面临下面两个问题,就可以使用SPI1)A模块依赖B模块。2)A模块又要先于B模块被类加载。大部分场景其实根本不需要SPI。合理的类依赖可以避免这个问题。一个简单的demo具体的例子见https://blog.csdn.net/qq_27292113/article/details/100324127核心代码如下在外部jar中定义services使用是是会选择第一个实现类加载机制实际应用JDBCDriverManager类会在其static代码段执行
分类: 其他 发布时间: 02-09 13:09 阅读次数: 0

JUC实战之利用JUC解决问题

题目1 使用3个线程循环打印10遍ABC方案一 public static void main(String[] args) { Maj maj = new Maj(); Thread a = new Thread(new ThreadABC(maj,"A")); Thread b = new Thread(new ThreadABC(maj,"B")); Thread c = new Thread(new ThreadABC
分类: 其他 发布时间: 02-09 13:09 阅读次数: 0

JAVA多线程之wait&notify&notifyAll

原理wait&notify&notifyAll都是java的native的方法。synchronized代码块通过javap生成的字节码中包含 ** monitorenter ** 和 ** monitorexit **指令。使用这三个API的时候,外面必须调用在synchronized中。表示线程执行lock.wait()方法时,必须持有该lock对象的monitor,如果wait方法在synchronized代码中执行,该线程很显然已经持有了该对象的monitor。wait方法会将
分类: 其他 发布时间: 02-09 13:09 阅读次数: 0

ReentrantReadWriteLock的详解

概述内部包含一个内部类Sync,FairSync和NonfairSync都是继承自Sync。ReentrantReadWriteLock根据构造函数的不同,有公平锁和非公平锁两种形式。提供下面两种方法分别返回一个写锁和一个读锁。 public ReentrantReadWriteLock.WriteLock writeLock() { return writerLock; } public ReentrantReadWriteLock.ReadLock readLock() { re
分类: 其他 发布时间: 02-09 13:09 阅读次数: 0

Spring实战之Spring动态加载jar模块和卸载模块

Spring提供了下面这些类来加载外部jar。classPathResorce可以用来加载类路径上的jar。一般推荐使用 classLoader = new UrlClassLoader(new URL[] {resource.getURL()}, parentClassLoader);来创建一个classLoader。其中parentClassLoader可以通过BeanClassLoaderAware从当前Spring上下文中拿到。一般,我们会写一MyClassPa
分类: 其他 发布时间: 02-09 13:08 阅读次数: 0

Spring代码阅读:(1)ClassPathXmlApplicationContext类说开去

类的设计继承和实现了一系列接口比如描述生命周期的public interface Lifecycle { void start(); void stop(); boolean isRunning();}在AbstractApplicationContext中,写了核心的refresh的设计如下 public void refresh() throws BeansException, IllegalStateException { synchronized (
分类: 其他 发布时间: 02-09 13:08 阅读次数: 0

Spring源代码阅读(2):事务

转载https://blog.csdn.net/weixin_44366439/article/details/90381619原理编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务是建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最
分类: 其他 发布时间: 02-09 13:08 阅读次数: 0

Spring源代码阅读(3):AOP

创建时调用时利用反射算是一个略有变化的的责任链模式。利用CGLIBcglib会生成一个enhancedBySpringCGlib的类。其他和利用反射的时候是一致的。before:6, Asp1 (example)invoke0:-1, NativeMethodAccessorImpl (sun.reflect)invoke:62, NativeMethodAccessorImpl (sun.reflect)invoke:43, DelegatingMethodAccessorImpl (
分类: 其他 发布时间: 02-09 13:07 阅读次数: 0

MINA中的reactor

启动时SocketAcceptor代码服务启动时将ioHandler和acceptor绑定 IoHandler ioHandler = new DefaultIoHandler(this); try { if (null == bindIP) { acceptor.bind(new InetSocketAddress(port), ioHandler);bind的主要代码如下 synchroniz
分类: 其他 发布时间: 02-09 13:07 阅读次数: 0

reactor模型和其在netty中的实现

启动一个典型的nettyserver拥有两个EventLoopGroup(parent负责连接,childGroup负责具体IO).前者也一般被称为bossGroup,后者则被称为workerGroup。EventLoopGroup 是一组 EventLoop 的抽象,一个 EventLoopGroup 当中会包含一个或多个 EventLoop,EventLoopGroup 提供 next 接口,可以从一组 EventLoop 里面按照一定规则获取其中一个 EventLoop 来处理任务。启动时,bo
分类: 其他 发布时间: 02-09 13:07 阅读次数: 0

JAVA集合类之LinkedHashMap

代码原理在HashMap的基础上,在节点上增加了一个前向和后向的指针。使之可以保存插入顺序或者访问顺序(默认是保存插入顺序)
分类: 其他 发布时间: 02-09 13:07 阅读次数: 0

JUC中多线程的集合——ConcurrentLinkedQueue

转载https://blog.csdn.net/qq_38293564/article/details/80798310原理入队列操作代码如下 public boolean offer(E e) { checkNotNull(e); final Node<E> newNode = new Node<E>(e); for (Node<E> t = tail, p = t;;) { N
分类: 其他 发布时间: 02-09 13:06 阅读次数: 0

guava的LoadingCache原理

用法用户需要覆com.google.common.cache.CacheLoader#reload这个方法。这个方法返回一个 ListenableFuture。这个对象可以用 public static <V> ListenableFutureTask<V> create(Callable<V> callable) { return new ListenableFutureTask<V>(callable); }从一个Callable对象
分类: 其他 发布时间: 02-09 13:06 阅读次数: 0

数据库中的MVCC机制

基础知识首先要了解数据库中的redo 和undo机制。https://blog.csdn.net/define_us/article/details/84139912简介是一种多版本控制的方式。可以用来代替行级锁。假设没有MVCC,为了实现读已提交的隔离级别,第二个事务在修改第一个事务的行时,就必须等待第一个事务完成。相当于一个行级别锁。原理trx_id这个id用来存储的每次对某条聚簇索引记录进行修改的时候的事务id。roll_pointer它指向这条聚簇索引记录的上一个版本的位
分类: 其他 发布时间: 02-09 13:06 阅读次数: 0

java中的optional

简介一个避免NPE的神器String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();这行代码一般而言,你只敢向下面这么写if (user != null) { Address address = user.getAddress(); if (address != null) { Country country = address.getCountry(); i
分类: 其他 发布时间: 02-09 13:06 阅读次数: 0

Lindorm:一种Hbase的改进

9月18日云栖大会,阿里云推出业内首款云原生多模数据库Lindorm,同时提供宽表引擎、时序引擎、搜索引擎和文件引擎,重新定义万物互联时代多类型数据的存储方式。Lindorm可同时满足key-value数据、宽表数据、时序数据、文件、图片等多种类型数据的存储、实时查询和检索需求,解决分别部署不同类型数据库带来的架构复杂维护困难、数据存储成本高、难以应对业务规模灵活多变等问题,海量数据存储成本降低80%,是互联网、IoT、车联网、广告、社交、游戏等场景的首选。大家使用HBASE都会有如下痛点宕机恢复时间
分类: 其他 发布时间: 02-09 13:05 阅读次数: 0

Spring的循环依赖和三级缓存

转载https://blog.csdn.net/bntX2jSQfEHy7/article/details/111658814Spring有著名的三级缓存singletonObjects:【一级缓存】 存储的是所有创建好了的单例BeanearlySingletonObjects:【二级缓存】完成实例化,但是还未进行属性注入及初始化的对象singletonFactories:【三级缓存】提前暴露的一个单例工厂,二级缓存中存储的就是从这个工厂中获取到的对象一般而言,一个Spring对象创建分为三
分类: 其他 发布时间: 02-09 13:05 阅读次数: 0

分布式锁的一点看法

分布式锁的主流方案基于数据库基于redis基于zookeeper
分类: 其他 发布时间: 02-09 13:05 阅读次数: 0

分布式系统限流

hystrix可以参考下面的博文https://blog.csdn.net/loushuiyifan/article/details/82702522支付宝内部用的是guardianhttps://help.aliyun.com/document_detail/149848.html资源隔离的思想参考上述的舱壁隔离模式,在hystrix中提供了两种资源隔离策略:线程池隔离、信号量隔离。线程池隔离:线程池隔离会为每一个依赖创建一个线程池来处理来自该依赖的请求,不同的依赖线程池相互隔离,就算依赖
分类: 其他 发布时间: 02-09 13:04 阅读次数: 0