1. 前言
相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?
拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。
前几天,总结项目经验的时候,我突然问自己 ZooKeeper 到底是个什么东西?想了半天,脑海中只是简单的能浮现出几句话:
- ZooKeeper 可以被用作注册中心、分布式锁;
- ZooKeeper 是 Hadoop 生态系统的一员;
- 构建 ZooKeeper 集群的时候,使用的服务器最好是奇数台。
由此可见,我对于 ZooKeeper 的理解仅仅是停留在了表面。
所以,通过本文,希望带大家稍微详细的了解一下 ZooKeeper 。如果没有学过 ZooKeeper ,那么本文将会是你进入 ZooKeeper 大门的垫脚砖。如果你已经接触过 ZooKeeper ,那么本文将带你回顾一下 ZooKeeper 的一些基础概念。
另外,本文不光会涉及到 ZooKeeper 的一些概念,后面的文章会介绍到 ZooKeeper 常见命令的使用以及使用 Apache Curator 作为 ZooKeeper 的客户端。
如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!
珍藏版(1)——Mybatis入门
1.什么是MyBatis
2.为什么我们要用Mybatis?
3.Mybatis快速入门
-
3.1 导入开发包
-
3.2准备测试工作
-
3.3 创建mybatis配置文件
-
3.4 编写工具类测试是否获取到连接
-
3.5 创建实体与映射关系文件
- 3.6 编写DAO
4.Mybatis工作流程
5.完成CRUD操作
-
5.1 增加学生
-
5.2 根据ID查询数据
-
5.3 查询所有数据
-
5.4 根据id删除
-
5.5 修改
-
5.6 小细节
- 5.7 Mybatis分页
6.动态SQL
-
6.1 动态查询
-
6.2 动态更新
-
6.3 动态删除
- 6.4 动态插入
7.入门总结
珍藏版(2)——Mybatis配置信息
1.映射文件
-
1.1 占位符
-
1.2 主键生成策略
-
1.2.1 UUID
-
1.3 主键返回
-
1.4 resultMap
-
1.5 resultMap和resultType区别
-
1.6 使用resultMap
-
1.7 resultType和resultMap用法总结
- 1.8 Mybatis映射文件处理特殊字符
2.配置文件
-
2.1 别名
-
2.2 Mapper加载
-
2.3 延迟加载
- 2.4 延迟加载测试
3.配置相关总结
珍藏版(3)——关联映射
1.Mybatis【多表连接】
1.1—对一
-
1.1.1 设计表
-
1.1.2 实体
-
1.1.3 映射文件
- 1.1.4 DAO层
1.2—对多
-
1.2.1 设计数据库表
-
1.2.2 实体
-
1.2.3 映射文件SQL语句
- 1.2.4 DAO
1.3多对多
-
1.3.1 数据库表
-
1.3.2 实体
-
1.3.3 映射文件
- 1.3.4 DAO
2.关联映射总结
珍藏版(4)——缓存+Mapper代理+逆向工程
1.前言
2.Mybatis缓存
-
2.1 Mybatis—级缓存
-
2.2 Mybatis二级缓存
-
2.3 Mybatis二级缓存配置
-
2.4 查询结果映射的pojo序列化
-
2.5 禁用二级缓存
-
2.6 刷新缓存
- 2.7 了解军Mybatis缓存的—些参
3.mybatis和ehcache缓存框架整合
-
3.1 整合jar包
-
3.2 ehcache.xml配置信息
-
3.3 应用场景与局限性
-
3.3.1 应用场景
- 3.3.2 局限性
4.Mapper代理方式
-
4.1 Mapper开发规范
- 4.2 Mapper代理返回值问题
5.Mybatis解决JDBC编程的问题
6.Mybatis逆向工程
-
6.1修改pom.xml文件
-
6.2 generatorConfig.xml配置文件
-
6.3 使用插件步骤
- 6.4 最后生成代码
珍藏版(5)——Mybatis整合Spring
1.Mybatis与Spring整合
-
1.1 导入jar包
-
1.2 创建表
-
1.3 创建实体
-
1.4 创建实体与表的映射文件
-
1.5 创建Mybatis映射文件配置环境
-
1.6 配置Spring核心过滤器【也是加载总配置文件】
-
1.7 配置数据库信息、事务
-
1.8 创建Dao、Service、Action
- 1.9 JSP页面测试
2.总结
手把手教你整合开发MyBatis-Spring项目——《深入浅出MBati技术原理与实战》
《深入浅出MBati技术原理与实战》总共是分为三大部分:
第一部分是MyBatis基础应用,主要介绍如何高效地使用MyBatis。
-
第1节:MyBatis 的内容简介,告诉读者MyBatis是什么,在何种场景下使用它。
-
第2节:主要介绍MyBatis的基础模块及其生命周期,并给出实例。
-
第3节:主要介绍MyBatis 配置的主要含义和内容。
-
第4节:介绍 MyBatis 映射器的主要元素及其使用方法。
- 第5节:介绍动态SQL,助你轻松应对大部分的SQL场景。
第二部分是MyBatis 原理,我们将深入源码去理解MyBatis的内部运行原理以及插件的开发方法和技巧。
-
第6节:介绍 MyBatis 的解析和运行原理,我们将了解到SqlSession 的构建方法,以及其四大对象是如何工作的。
- 第7节:在第6节的基础上着重介绍 MyBatis 的插件,这里我们将学习插件的设计原理,以及开发方法和注意的要点。
第三部分是MyBatis的实战应用,主要讲解 MyBatis的一些实用的场景。
-
第8节:介绍MyBatis-Spring,主要讲解如何在Spring 项目中集成 MyBatis应用,帮助读者在 Spring的环境中顺利使用MyBatis。
- 第9节:介绍 MyBatis的实用场景,精选一批典型且又常用的场景。详细解析每一个场景下,开发人员需要注意避免的一些错误和性能上的损失。
还有:一本小小的MyBatis源码分析书——《MyBatis源码分析》
其次:针对MyBatis面试——收整了最常见的一些问题并附上解析
-
1.为什么需要预编译?
-
2.Mybatis都有哪些Executor执行器?它们之间的区别是什么?
-
3.Mybatis中如何指定使用哪一种Executor执行器?
-
4.Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
-
5.# {}和${}的区别?
-
6.模糊查询like语句该怎么写?
-
7.在mapper中如何传递多个参数?
-
8.Mybatis如何执行批量操作?
-
9.如何获得生成的主键?
-
10.当实体类中的属性名和表中的字段名不一样 ,怎么办
-
11.Mapper 编写有哪几种方式?
-
12.什么是MyBatis的接口绑定?有哪些实现方式?
-
13.使用MyBatis的mapper接口调用时有哪些要求?
-
14.最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
-
15.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
-
16.简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
-
17.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
-
18.MyBatis中所有标签?
-
19.MyBatis实现一对一,一对多有几种方式,怎么操作的?
-
20.Mybatis是否可以映射Enum枚举类?
-
21.Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
-
22.分页方式?
-
23.简述Mybatis的插件运行原理,以及如何编写一个插件?
-
24.Mybatis的一级、二级缓存?
- 25.pageHelper原理?
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算...
本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录