自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 mybatis源码-解析mappers标签

mybatis源码-解析mappers标签解析mappers标签下的子标签(package)解析mappers标签下的子标签(mapper)解析mappers标签下的子标签(package) <mappers> <package name="com.example.maybatissource.dao"/> </mappers>package标签配置的是一个包的权限路径,name表示的是mapper的接口文件。public class X

2023-03-17 12:16:20 309

原创 ZooKeeper学习笔记

ZooKeeper- 概述:1.Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。2.大数据生态系统里很多组件的命名都是某种动物的昆虫,入Hadoop就是????,hive就是????。Zookeeper即动物园管理者,故名思义就算管理大数据生态系统各组件的管理员,如图所示。它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、服务器动态上下线、统一集群管理、分布式应用统一配置管理、软负载均衡等。简单来说zookeeper=文件系统+监听通知机

2023-03-17 12:14:12 80

转载 Java 常用工具类整理

目录第一部分:常用的16个工具类第二部分:java开发常用工具类(正则校验)第一部分:常用的16个工具类一、org.apache.commons.io.IOUtils1、closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。2、toString 转换IO流、Uri、byte[]为String。3、copy IO流数据复制,从输入流写到输出流中,最大支持2GB。4、toByteArray 从输入流、URI获取byte[]。5、

2021-09-18 09:56:15 380

原创 java-观察者模式

观察者模式什么叫做观察者模式:举个例子吧,以前读书的时候上课玩游戏,聊天,撩妹的是不是担心班主任来巡查,这时候是不是会叫一个人去观察班主任来没来?这里的上课开小差的是被通知的人,看班主任来没来的是观察者,同时他需要负责通知开小差的人。班主任是被观察的人。这就是一个很典型的观察者模式。何时使用:当一个对象的改变对其他多个对象有影响的话,就可以考虑使用。注意:1.避免观察者和观察目标之间循环引用导致系统崩溃2.如果顺序执行,某一观察者错误或者超时会导致系统卡壳,一般采用异步方式代码示例:/**

2021-02-20 17:04:49 78

原创 MyBatis-ResolverUtil

ResolverUtilResolverUtil用于查找在类路径可用并满足条件的类。最常见的两种条件是判断一个类是否继承或实现了另一个类 ,比如:IsA 类的matches方法。或者判断此类是否被指定的注解标记了比如:AnnotatedWith 类的matches方法。然而,通过实现Test类,自己编写matches的逻辑,可以满足相对应的条件搜索。其中有一个接口、两个内部类。用到的设计模式原则之开放-封闭原则,对于扩展是开放的(Open for extension),对于更改是封闭的(Closed f

2021-02-08 15:23:31 243

原创 java-装饰者模式

装饰者模式介绍:简单点来说,就是为这个对象动态的赋予它其他的功能。装饰者模式是动态的将责任附加到对象上(引自《Head First设计模式》)。这里的重点在于动态这两个字,我们都知道继承的实现的方式,它是是类编译的时候就去加载文件,属于一种静态的附加,而我们要实现动态的附加就不能单纯的通过继承来实现。在这种背景下,装饰者模式就应运而生了。装饰者模式的实现:首先所有的类都有一个共同的抽象,这个抽象可以是一个抽象类,也可以是一个接口,所有的类该抽象的子类或者实现。举例:我们给一个人添加一下他的穿着。

2021-02-07 16:10:06 87

原创 java-模板模式

模板模式介绍:先定义某件事的步骤,不同的人根据自己的情况来实现不同的操作,比如说早上起床步骤是起床,穿衣服,刷牙,洗脸,穿鞋,同样的步骤不同的人可能穿衣服就需要比其他人多一些时间,刷牙也可能比其他人少一些时间,这就是模板方法模式。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,其他步骤在子类实现。优点:1、封装不变部分,扩展可变部分。2、提取公共代码,便于维护。3、行为由父类控制,子类实现。

2021-02-05 15:48:47 86

原创 MyBatis插件源码解析

MyBatis插件源码解析我们知道Mybatis插件本质上是一个拦截器,拦截的是Mybatis的四大对象(1)ParameterHandler:处理SQL的参数对象(2)ResultSetHandler:处理SQL的返回结果集(3)StatementHandler:数据库的处理对象,用于执行SQL语句(4)Executor:MyBatis的执行器,用于执行增删改查操作/** * @author Clinton Begin */public class InterceptorChain {

2021-02-04 20:37:12 242 3

原创 Java注解的编写

Java注解工作机制注解是什么:注解就是用来描述包、类、成员变量、方法或者参数具体应该是什么样子的。官方一点的话就是,注解可以用一个词来描述:元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。注解本身也是一个类(Java里一切都是对象)。配置过Spring的肯定很清楚,Spring中的Bean需要在xml里面声明,比如说一个Bean他的构造方法是啥,他依赖哪些其他bean,初始化变量值是多少,这些都是描述性的数据告知Spring按照这个描述去创建这个Bean。举个例子: <b

2021-01-28 15:05:27 464

原创 MyBatis插件编写

Mybatis自定义插件什么是Mybatis插件:它是一个拦截器,应用代理模式,在方法级别上进行拦截。拦截的对象:我们知道,MyBatis有四大核心对象:(1)ParameterHandler:处理SQL的参数对象(2)ResultSetHandler:处理SQL的返回结果集(3)StatementHandler:数据库的处理对象,用于执行SQL语句(4)Executor:MyBatis的执行器,用于执行增删改查操作MyBatis拦截器针对的对象就是上面四大核心对象。/** * 自定义

2021-01-26 15:37:20 234 1

原创 mybatis源码-解析settings标签

解析settings标签解析入口:private void parseConfiguration(XNode root) { try { //issue #117 read properties first //省略其他代码 Properties settings = settingsAsProperties(root.evalNode("settings")); loadCustomVfs(settings); loadCustomL

2021-01-25 17:04:37 139 1

原创 mybatis源码-解析配置文件之配置文件Configuration解析

Configuration解析配置文件mysql.propertiesmybatis-config.xmlConfiguration 类及其解析解析入口常用函数获取节点获取子节点获取子节点并存到 Properties 对象中节点相关成员变量及其解析properties 属性相关成员变量对应 XML 节点:作用解析过程settings 属性相关成员变量对应 XML 节点:作用解析过程typeAliases 相关属性成员变量对应 XML 节点:作用解析过程plugins 相关属性成员变量对应 XML 节点:作用

2021-01-25 15:31:15 478

原创 java-代理模式

代理模式什么叫做代理:举个例子你叫你朋友(委托类又名代理类)给你(被代理)带饭,然后你朋友出去吃饭的时候顺带给你带了,这时你在宿舍bb说要他给你带个饮料。这时你朋友就还忍了给你带了饮料,但是你不满足你还要让他给你带个手抓饼,这时你朋友就不能忍了,说老子不干了,给爷爬。现在我们分别用静态代理和动态代理来实现这个需求一、静态代理代理接口:/** * 带东西 */public interface TakeSomething { void take();}代理类:/** * 代

2021-01-22 15:17:36 104

原创 java-责任链模式

责任链模式每个类都有是否可以处理它的任务方法,如果不能就将任务转到下一个类,以此类推所有的类组成一个链。(官方一点的话:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。)主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。何时使用:在处理消息的时候以过滤很多道。如何解决:拦截的类都实现统一接口。优点:1、降低

2021-01-21 15:36:54 103

转载 mybatis源码-解析配置文件之XML的DOM解析方式

@目录简介Java 中 XML 文件解析解析方式DOM 方式SAX 方式StAX 方式DOM 解析 XML新建 XML 文件DOM 操作相关类Java 读取 XML 文件通过 Resources 工具类读取 mybatis-config.xml, 存入 Reader;SqlSessionFactoryBuilder使用上一步获得的reader创建SqlSessionFactory对象;通过 sqlSessionFactory 对象获得SqlS

2021-01-19 11:04:55 151

原创 Mybatis源码解析-SqlSessionFactory

Mybatis源码解析传统的写法JDBC源码SqlSessionFactory创建用到的设计模式源码SqlSessionFactory的创建传统的写法JDBC String URL = "jdbc:mysql://127.0.0.1:3306/student?serverTimezone = GMT"; String USER = "root"; String PASSWORD = "123456"; // 1.加载驱动程序

2021-01-18 17:29:51 787

转载 java-建造者模式

建造者模式前言建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。一、简介1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。3、如何使用:用户只需要给出指定复杂对象的类型和内容,建造者模式

2021-01-18 12:00:44 82

转载 java-工厂模式

工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象

2021-01-18 10:08:31 71

原创 java-Akka学习笔记

Akka学习笔记Akka是什么Akka特点:二级目录三级目录Akka是什么Akka是JAVA虚拟机平台上构建高并发、分布式和容错应用。Akka用Scala语言编写,同时提供了Scala和Java的开发接口。Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递对并发模型进行了更高的抽象Akka特点:1.是异步(也可以做到同步)、非阻塞、高性能的事件驱动编程模型2.是轻量级事件处理(1GB内存可容纳百万级别个Actor)3.它提供了一种称为Actor的并发模型,其粒度

2020-08-25 10:23:04 457

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除