- 博客(17)
- 收藏
- 关注
原创 二叉搜索树
二叉搜索树基本概念 二叉搜索树(也叫BST树)是一种非常常用的树结构,其衍生出来的其他树如:AVL树,23树,红黑树都具有该树的基本特性。 特性: 1.每一个节点都应该由一个key和value 2.如果一个树不是空树那么当一个节点的左子树不为空时,左子树所有节点的Key值小于当前节点的key,当一个节点的右子树不为空时,右子树所有节点的...
2018-08-07 22:39:48
178
原创 关于解耦的思考
前言 代理是一种很普遍的机制类似于装饰者模式,同时代理类和委托类一般要求实现同样的接口。在java中由静态代理和动态代理。静态代理的好处在于可以提前写好代理类,但是一定委托类的实现功能过多时便不好处理甚至有很多冗余的代码,因此较为普遍的使用动态代理. 动态代理是一种普遍的应用,在非侵入式的情况下实现对方法的增强,通常有两种方式实现,一种是基于jdk的代理,不过约束也明显那就是需要接口,一种是利...
2018-06-23 16:28:18
327
原创 spring的aop实现
前言: spring的aop是spring框架中很重要的功能,提供了一个面向切面的实现方式,从而实现了诸如日志,事务,拦截等切面的实.由于spring已经整合了一个aop框架AspectJ,因此我们既可以用spring的代理工厂方式,也可直接使用AspectJ框架的方式来实现切面功能,并且AspectJ框架的实现也有两种,因此总的来说由三种实现方式。一.基于spring的ProxyFacto...
2018-06-22 16:34:15
376
原创 利用软引用实现简单的缓存
前言: 前面已经可以看到软引用的缓存方式,不过还不够具体这里专门写一个类来实现缓存:public class Cache { private HashMap<Object,ObjectRef> SoftCache;//用于cache内容的存储 private ReferenceQueue<Object> queue;//referen...
2018-06-15 22:33:19
1298
原创 JAVA的四种引用
引子在mybatis的缓存的cache的包里种有两个特别的缓存,SoftCache,WeakCache类 而这两个类的实现原理就是使用了java的软引用和虚引用实现的功能,那么这两个缓存有什么功能呢,这就要介绍一下java的四种引用.一.为什么要有四种引用首先要谈到JAVA的四种引用,就不得不说java的GC(垃圾回收)机制,在1.2版本以前我们只有一种引用方式——强引用即Obj...
2018-05-18 22:46:18
691
原创 mybatis二级缓存(四)-二级缓存实现基本原理之二级缓存的使用原理
引子 上一篇文章以及讲解了mybatis自带的二级缓存是如何被创建的,现在我们就来看看二级缓存的是如何使用的其实在前面的介绍二级缓存的时候我说过,二级缓存是利用一级缓存的数据在SqlSession调用commit或者close时导入到二级缓存的,那么如果在利用一个SqlSession实现了更新等操作时便会刷新一级缓存从而导致在提交了事务或关闭时,一级缓存传入到二级缓存的数据是空的。从结果来说...
2018-05-04 17:20:54
11039
3
原创 Mybatis的二级缓存(三)--二级缓存实现基本原理之二级缓存的创建
引子 前面已经讲了mybatis的二级缓存的实现方式和ehcache框架的利用,现在来看一看mybati二级缓存的实现基础首先我们知道二级缓存是mapper级别的数据域,那么二级缓存到底是如何创建,保存以及是如何获取的呢?其实二级缓的cahce在SqlSessionFactoryBuilder解析mmaper的时候就已经开始创建了只是没有数据而已,这也说明了为什么二级缓存不是session级...
2018-05-04 15:32:10
275
原创 mybatis二级缓存(二)-ehcache缓存框架
引子: 上一篇文章讲了mybatis的二级缓存方式,但同时mybatis也支持其他的缓存框架,只要实现了mybatis下的cache接口即可。利用ehcache缓存框架首先首先就是基本的jar包,包括ehcache.jar和mybatis-ehcache.jar以及slf4j.下面就来看看ehcache的缓存框架使用方式首先配置文件: ehcache.xml放在classpath根目录...
2018-05-03 18:50:37
345
原创 Mybatis的二级缓存(一)
引子: 再上一篇文章中介绍了一级缓存,但是也可以看出一些一级缓存的局限,一是一级缓存的范围是session级别的,不同的session之间无法实现缓存共享,二是一级缓存是放到内存中的一旦数据过大有可能会出现内存不足的情况。为此mybatis还有一种二级缓存机制。二级缓存 首先二级缓存的范围要比session大属于mapper级别的,即在同一个namespace下的缓存,因此可以实现不同se...
2018-05-03 18:06:56
311
原创 Mybatis的一级缓存
引子: 在现在的网络中,缓存是一个很重要的概念如果没有缓存机制的话,非常影响数据的读取效率,那么mybatis有吗,当然有啦,mybatis中有两种缓存一种时一级缓存,一种是二级缓存。先来讲一讲一级缓存一级缓存 首先一级缓存是mybatis的自动的缓存,即不需要开启也不能关闭(不过mybatis的利用插件设置关闭),但我们可以人为的清除一级缓存。其次一级缓存的域只针对一个sessi...
2018-04-17 21:49:56
371
原创 mybatis的懒加载
在Mybatis中有一种懒加载机制也叫做延迟加载,在前面的文章中,我们可以看到,对于pojo对象中内部的自定义对象要么专门写处理器处理要么利用association或者collection标签来进行关联。再利用标签是我列举了三种方法,其中有利用select属性来实现关联的,不过会产生N+1问题,但既然有整个属性必然有作用,而主要的作用便是可以使用懒加载。 懒加载是一种延迟技术,当我们没有使用被标...
2018-04-17 20:08:36
8870
原创 Mybatis的关联映射之一对多
上一篇讲了一对一,那么现在来讲一对多,这里用到了两张表:CREATE TABLE `article` ( `article_id` int(11) NOT NULL AUTO_INCREMENT, `date` datetime DEFAULT NULL, `content` text COLLATE utf8_bin, `blog_id` int(11) DEFA...
2018-04-10 11:38:25
4454
原创 Mybatis的关联映射之一对一
在数据库设计中我们会都会涉及到表与表之间的关系,如:一对一,一对多,多对多的情况,那么在java中为了反映数据库中的表都会设计基本的POJO对象来进行数据的传递,而在POJO对象中为了反映数据库中的关联关系,通常都会在该对象加入其他表的对应对象:比如在一对一关系中,一个用户只能有一个博客,一个博客只对应一名用户。 工程目录: mysql:CREATE TABLE `blog` ( ...
2018-04-09 16:07:52
278
原创 Mybatis学习之路(二):property元素应用
1.property元素 在配置mybatis与SQL映射时时常会用到property元素,例如配置dataSource时。注意要区别的是,property在中文翻译过来是属性,但元素内的attribute也会翻译成属性,所以个人倾向用英文。property元素也是一种键值的格式:<property name="username" value="123"/>2.预先设置property元素
2017-11-05 16:23:28
3724
原创 Mybatis学习之路(三):typeAliases应用
在上一篇中我们映射SQL语句时,可以看到resultType的返回结果集中的的元素的类使用完全限定名,有时候会偏长所以我们可以在配置Mybatis时利用typeAliases元素为自己的类设计别名从而简化:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config
2017-11-03 15:58:15
266
原创 Mybatis学习之路(一)
1. Mybatis的作用 Mybatis是一种框架,可以定制SQL、存储过程以及高级映射,总的来说就是可以帮助我们很好的解决手写JDBC代码的麻烦,包括建立连接和对结果集的处理等等,可以很大程度上简化代码。2. Mybatis的使用方法 Mybatis的核心是SqlSessionFactory实例,通过该实例可以为每一个线程创建一个SqlSession利用其达到对数据库的操作
2017-11-03 14:15:27
271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人