- 博客(12)
- 收藏
- 关注
原创 MyBatis之数据源
DataSourceFactory是数据源工厂,两个子类是PooledDataSourceFactory和UnpooledDataSourceFactory,唯一的区别是,PooledDataSourceFactory的构造函数初始化的是PooledDataSource。PooledDataSource和UnpooledDataSource都是DataSource的实现类。PooledData...
2019-06-18 08:12:50 2301
原创 Mybatis之分页插件
PageInterceptor上面的@Intercepts注解和@Signature注解,会确定需要拦截的类和方法,然后使用动态代理为Executor创建代理对象。拦截的具体逻辑是在intercept方法里面: public Object intercept(Invocation invocation) throws Throwable { try { //...
2019-06-15 21:10:47 154
原创 MyBatis之ResultSetHandler
ResultSetHandler 会负责映射select语句查询得到的结果集,public interface ResultSetHandler { //生成对应的结果对象集合 <E> List<E> handleResultSets(Statement stmt) throws SQLException;//生成对应的游标对象 <E> Curs...
2019-06-15 10:14:06 1131
原创 MyBatis之初始化
MyBatis初始化的主要工作是加载并解析mybatis-config.xml配置文件、映射配置文件以及相关的注解信息。MyBatis初始化的入口是 SqlSessionFactoryBuilder#build(Reader reader, String environment, Properties properties) public SqlSessionFactory build(Re...
2019-06-15 10:08:56 147
原创 MySQL之自增主键为什么不是连续的?
自增主键为什么不是连续的?在 MySQL 5.7 及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值 max(id),然后将 max(id)+1 作为这个表当前的自增值。在 MySQL 8.0 版本,将自增值的变更记录在了 redo log 中,重启的时候依靠 redo log 恢复重启之前的值。在 MySQL 里面,如果字段 id 被定...
2019-06-09 09:28:57 1107
原创 Linux之磁盘性能指标有哪些?
磁盘性能指标有哪些?使用率、饱和度、IOPS、吞吐量以及响应时间等。这五个指标,是衡量磁盘性能的基本指标。使用率,是指磁盘处理I/O的时间百分比。过高的使用率(比如超过80%),通常意味着磁盘 I/O 存在性能瓶颈。饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。IOPS(Input/Outpu...
2019-06-09 09:28:18 950
原创 Mybatis基础支持层之反射工具箱
Reflector是Mybatis中反射模块的基础,每个Reflector对象都有对应一个类。 //对应的Class类型 private Class<?> type; //getter属性的名称集合 private String[] readablePropertyNames = EMPTY_STRING_ARRAY; //setter属性的名称集合 privat...
2019-06-09 09:18:55 95
原创 Mybatis之整体架构
传统JDBC流程:注册数据库驱动类,指定数据库URL地址、用户名、密码等连接信息通过 DriverManager 打开数据库连接通过数据库连接创建 Statement 对象通过 Statement 对象执行SQL语句,得到ResultSet对象通过ResultSet读取数据,并将数据转换成JavaBean对象关闭ResultSet、Statement对象以及数据库连接,释放资源O...
2019-06-02 19:32:25 134
原创 Spring之IOC容器的实现
控制反转:依赖对象的获得被反转了,即依赖注入。BeanDefinition用来管理基于Spring的应用中的各种对象以及它们之间的相互依赖关系。抽象了我们对Bean的定义,是让容器起作用的主要数据模型。依赖反转功能都是围绕对BeanDefinition的处理来完成的。编程式使用IOC容器的过程: ClassPathResource resource = new ClassPathRes...
2019-06-02 17:40:56 87
原创 Redis阻塞问题
导致Redis阻塞分为内在原因和外在原因:内在原因:不合理使用API或数据结构、CPU饱和、持久化阻塞等外在原因:CPU竞争、内存交换、网络问题等定位慢查询Redis原生提供慢查询统计功能,执行 showlog get {n} 命令可以获取最近n条慢查询命令,Redis默认记录仪执行超过10毫秒的记录。...
2019-06-01 17:01:05 662
原创 Redis之持久化
RDB:RDB持久化是把当前进程数据生成快照保存到硬盘的过程,分为手动触发和自动触发。手动触发:bgsave,会fork一个子进程,持久化过程由子进程负责,save由于会阻塞因此已经废弃。自动触发:Redis一些内部机制会触发。RDB优缺点:优点:紧凑压缩的二进制文件,适合于备份,全量复制的场景。加载RDB恢复数据远快于AOF缺点:不能做到实时持久化,原因是fo...
2019-06-01 14:56:16 68
原创 Redis之Redis Cluster集群方案
数据分布:分布式数据库首先需要解决的是,把整个数据集按照分区规则映射到多个节点的问题,常见的分区规则有哈希分区和顺序分区。哈希分区:离散度好数据分布业务无关无法顺序访问顺序分区:离散度倾斜数据分布业务相关可以顺序访问Redis Cluster 采用的是哈希分区:常见的哈希分区方案:节点取余优点是简单,缺点是当节点数量变化时,数据节点映射关系需要重新计算,会导致数...
2019-06-01 11:23:41 128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人