摘要:
MyBatis-plus是完全基于MyBatis开发的一个增强工具,是在MyBatis的基础上做增强的框架,为简化开发、提高效率而生。它在MyBatis原本的框架上增加了很多实用性功能,比如乐观锁插件、字段自动填充功能、分页插件、条件构造器、sql 注入器等等。使用 MyBatis-plus 可以完 阅读全文
摘要:
分布式一致性算法分布式一致性算法可以保证多个数据节点上有一致的数据,目前有Paxos、Raft、Zab和Gossip几种,其中Zookeeper使用的是Zab,而Zab又和Raft比较类似,因此本文主要记录一下Raft和Zab。ZAB协议用途ZAB(Zookeeper Atomic Broadcas 阅读全文
摘要:
Zookeeper能保证任何时刻读到的数据绝对一致吗?Zookeeper的特点就是,分布式,高可用,自带容错,所有节点读到的数据都是一致的。使用的场景通常是微服务的注册中心,或者一些分布式的开源软件用来保存元数据,或者监测生命状态。这些使用场景默认Zookeeper永远是可用的,而且去Zookeep 阅读全文
摘要:
本次zk测试部署版本为3.7.0版本,下载地址http://mirrors.cnnic.cn/apache/zookeeper/限于服务器个数有限本次测试了两种情况1、单节点方式:部署在一台服务器上2、单IP多节点(伪集群):部署在同一IP,但是有多个节点,各有自己的端口3、多IP多节点:部署在不同 阅读全文
摘要:
一、选举流程简述目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下: 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。 服务器2启动,给自己投票,同时 阅读全文
摘要:
生产环境上,或者其他要测试 GC 问题的环境上,一定会配置上打印GC日志的参数,便于分析 GC 相关的问题。但是可能很多人配置的都不够“完美”,要么是打印的内容过少,要么是输出到控制台,要么是一个大文件被覆盖,要么是……本文带你一步一步,配置一个完美的 GC 日志打印策略打印内容为了保留足够多的“现 阅读全文
摘要:
大家都知道Oracle默认的隔离级别是 RC,而MySQL默认的隔离级别是 RR。那么,你知道为什么Oracle选择RC作为默认级别,而MySQL要选择RR作为默认的隔离级别吗?前面我们说过,Oracle只只支持ANSI/ISO SQL定义的Serializable和Read Committed,其 阅读全文
摘要:
我之前写过一篇文章《为什么MySQL选择REPEATABLE READ作为默认隔离级别?》介绍过MySQL 的默认隔离级别是 Repeatable Reads以及背后的原因。主要是因为MySQL在主从复制的过程是通过bin log 进行数据同步的,而MySQL早期只有statement(语句模式,会 阅读全文
摘要:
在spring框架下做开发时,@Import是常见的注解,可以用来动态创建bean,今天我们先从源码分析原理,再用实战来验证Import的作用;文章概览本章由以下几部分组成:1. 从Enable前缀的注解谈起,揭示常见的Enable注解与Import注解的关系;2. 常见的四种Import注解用法列 阅读全文
摘要:
在使用@Import注解来注册bean的时候,Import注解的值可以是ImportSelector或者DeferredImportSelector的实现类,spring容器会实例化这个实现类,并执行其selectImports方法,那么问题来了:ImportSelector和DeferredImp 阅读全文