redis集群的相关问题
Redis主从模式也称为主备模式。是一种高可用的方案。一个主服务器可以有多个从服务器。Redis的自身支持主从复制,只要更改下启动配置即可。从节点可以自动从主节点同步数据,主节点可以自动把读请求转给从节点从而实现读写分离减轻自身压力。但是,主节点如果完蛋了,从节点无法升级为主节点,client也无法自动切换,所以没有高可用的能力。redis配置从服务器的过程脑裂问题如果只有master和slave两个角色,为防止主服务器假死后又复活,但是主从服务器通信又相互中断,这样彼此都不知道对方在提供服务
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
JAVA多线程之wait¬ify¬ifyAll
原理wait&notify&notifyAll都是java的native的方法。synchronized代码块通过javap生成的字节码中包含 ** monitorenter ** 和 ** monitorexit **指令。使用这三个API的时候,外面必须调用在synchronized中。表示线程执行lock.wait()方法时,必须持有该lock对象的monitor,如果wait方法在synchronized代码中执行,该线程很显然已经持有了该对象的monitor。wait方法会将
ReentrantReadWriteLock的详解
概述内部包含一个内部类Sync,FairSync和NonfairSync都是继承自Sync。ReentrantReadWriteLock根据构造函数的不同,有公平锁和非公平锁两种形式。提供下面两种方法分别返回一个写锁和一个读锁。 public ReentrantReadWriteLock.WriteLock writeLock() { return writerLock; } public ReentrantReadWriteLock.ReadLock readLock() { re
Spring实战之Spring动态加载jar模块和卸载模块
Spring提供了下面这些类来加载外部jar。classPathResorce可以用来加载类路径上的jar。一般推荐使用 classLoader = new UrlClassLoader(new URL[] {resource.getURL()}, parentClassLoader);来创建一个classLoader。其中parentClassLoader可以通过BeanClassLoaderAware从当前Spring上下文中拿到。一般,我们会写一MyClassPa
Spring代码阅读:(1)ClassPathXmlApplicationContext类说开去
类的设计继承和实现了一系列接口比如描述生命周期的public interface Lifecycle { void start(); void stop(); boolean isRunning();}在AbstractApplicationContext中,写了核心的refresh的设计如下 public void refresh() throws BeansException, IllegalStateException { synchronized (
Spring源代码阅读(2):事务
转载https://blog.csdn.net/weixin_44366439/article/details/90381619原理编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务是建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最
Spring源代码阅读(3):AOP
创建时调用时利用反射算是一个略有变化的的责任链模式。利用CGLIBcglib会生成一个enhancedBySpringCGlib的类。其他和利用反射的时候是一致的。before:6, Asp1 (example)invoke0:-1, NativeMethodAccessorImpl (sun.reflect)invoke:62, NativeMethodAccessorImpl (sun.reflect)invoke:43, DelegatingMethodAccessorImpl (
MINA中的reactor
启动时SocketAcceptor代码服务启动时将ioHandler和acceptor绑定 IoHandler ioHandler = new DefaultIoHandler(this); try { if (null == bindIP) { acceptor.bind(new InetSocketAddress(port), ioHandler);bind的主要代码如下 synchroniz
reactor模型和其在netty中的实现
启动一个典型的nettyserver拥有两个EventLoopGroup(parent负责连接,childGroup负责具体IO).前者也一般被称为bossGroup,后者则被称为workerGroup。EventLoopGroup 是一组 EventLoop 的抽象,一个 EventLoopGroup 当中会包含一个或多个 EventLoop,EventLoopGroup 提供 next 接口,可以从一组 EventLoop 里面按照一定规则获取其中一个 EventLoop 来处理任务。启动时,bo
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
guava的LoadingCache原理
用法用户需要覆com.google.common.cache.CacheLoader#reload这个方法。这个方法返回一个 ListenableFuture。这个对象可以用 public static <V> ListenableFutureTask<V> create(Callable<V> callable) { return new ListenableFutureTask<V>(callable); }从一个Callable对象
数据库中的MVCC机制
基础知识首先要了解数据库中的redo 和undo机制。https://blog.csdn.net/define_us/article/details/84139912简介是一种多版本控制的方式。可以用来代替行级锁。假设没有MVCC,为了实现读已提交的隔离级别,第二个事务在修改第一个事务的行时,就必须等待第一个事务完成。相当于一个行级别锁。原理trx_id这个id用来存储的每次对某条聚簇索引记录进行修改的时候的事务id。roll_pointer它指向这条聚簇索引记录的上一个版本的位
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
Lindorm:一种Hbase的改进
9月18日云栖大会,阿里云推出业内首款云原生多模数据库Lindorm,同时提供宽表引擎、时序引擎、搜索引擎和文件引擎,重新定义万物互联时代多类型数据的存储方式。Lindorm可同时满足key-value数据、宽表数据、时序数据、文件、图片等多种类型数据的存储、实时查询和检索需求,解决分别部署不同类型数据库带来的架构复杂维护困难、数据存储成本高、难以应对业务规模灵活多变等问题,海量数据存储成本降低80%,是互联网、IoT、车联网、广告、社交、游戏等场景的首选。大家使用HBASE都会有如下痛点宕机恢复时间
Spring的循环依赖和三级缓存
转载https://blog.csdn.net/bntX2jSQfEHy7/article/details/111658814Spring有著名的三级缓存singletonObjects:【一级缓存】 存储的是所有创建好了的单例BeanearlySingletonObjects:【二级缓存】完成实例化,但是还未进行属性注入及初始化的对象singletonFactories:【三级缓存】提前暴露的一个单例工厂,二级缓存中存储的就是从这个工厂中获取到的对象一般而言,一个Spring对象创建分为三
今日推荐
周排行