自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 Springboot--使用JdbcTemplate访问数据库

导入依赖在 pom.xml 中添加对 JdbcTemplate 的依赖:<!-- Spring JDBC 的依赖包,使用 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 将会自动获得HikariCP依赖 --><dependency> <groupId>org.springfra...

2019-01-24 17:29:19 230

翻译 NIO--Buffer

1. 概述一个 Buffer ,本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据。通过将这块内存封装成 NIO Buffer 对象,并提供了一组常用的方法,方便我们对该块内存的读写。Buffer 在 java.nio 包中实现,被定义成抽象类,从而实现一组常用的方法。整体类图如下:2. 基本属性  Buffer 中有 4 个重要的属性:capacity、...

2019-01-22 16:53:05 127

翻译 NIO --Selector

1. 概述 Selector , 一般称为选择器。它是 Java NIO 核心组件中的一个,用于轮询一个或多个 NIO Channel 的状态是否处于可读、可写。如此,一个线程就可以管理多个 Channel ,也就说可以管理多个网络连接。也因此,Selector 也被称为多路复用器。那么 Selector 是如何轮询的呢?首先,需要将 Channel 注册到 Selector 中,这样...

2019-01-17 17:32:26 181

翻译 Mybatis--SQL执行流程

1. SqlSessionFactory 与 SqlSession我们首先来看一张图片,如下:(1)首先,SqlSessionFactoryBuilder去读取mybatis的配置文件,然后build一个DefaultSqlSessionFactory。源码如下: /** * 一系列的构造方法最终都会调用本方法(配置文件为Reader时会调用本方法,还有一个InputStr...

2019-01-15 12:24:53 124

翻译 Mybatis--Binding模块

1、概述 Mybatis的Binding模块对应的是io包,如下图所示:              Binding模块所涉及的类如下图所示:  2. MapperRegistry 2.1 构造方法//MyBatis Configuration 对象private final Configuration config;private final Map<...

2019-01-10 17:43:00 174

翻译 Mybatis--IO模块

1、概述 Mybatis的IO模块对应的是io包,如下图所示:                                      IO模块所涉及的类如下图所示:                            2. ClassLoaderWrapper org.apache.ibatis.io.ClassLoaderWrapper ,ClassLoader 包...

2019-01-08 17:41:08 402

翻译 Mybatis--日志模块

1、概述 Mybatis的日志模块对应的是logging包,如下图所示:                                        日志模块所涉及的类如下图所示:                                                         从图的上面部分,是非常多的 Logger 类的实现,分别对应我们常用的日志框架 Lo...

2019-01-03 17:29:33 1156

翻译 Mybatis--解析器

1.概述MyBatis 的解析器模块,对应 parsing 包。如下图所示:                                  解析器模块,主要提供了两个功能:一个功能,是对 XPath 进行封装,为 MyBatis 初始化时解析 mybatis-config.xml 配置文件以及映射配置文件提供支持;另一个功能,是为处理动态 SQL 语句中的占位符提供支持。2.X...

2018-12-29 16:43:48 566

翻译 Mysql锁

MySQL锁概述         相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁;BDB存储引擎采用的是页面锁,但也支持表级锁;InnoDB存储引擎既支持行级锁,也支持表级锁,但默认情况下是采用行级锁。          表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最...

2018-12-26 18:00:03 84

翻译 Http协议

简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。...

2018-12-24 17:32:38 80

翻译 观察者模式

观察者模式的定义:  在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。观察者模式结构图  观察者四个角色         抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。       ...

2018-12-20 11:02:41 308 1

翻译 装饰者模式

   概念装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。  结构 在装饰模式中的角色有:  抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。    具体构件(ConcreteCompon...

2018-12-17 15:23:50 73

翻译 单例模式

概念单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。特点单例类只能有一个实例。           单例类的实例必须由该单例类...

2018-12-13 17:41:30 85

翻译 工厂模式

      为什么要用工厂设计模式?工厂设计模式就是用来帮助你new对象的。为什么不直接new对象,而是通过工厂模式呢?避免直接对对象进行创建,而且把所有的对象都集中起来管理,也可以在不改动应用程序的基础上直接添加对象,便于对象的维护。     工厂模式的种类:  1、简单工厂 Car源码:public interface Car {}Audi源码: public ...

2018-12-10 12:38:02 163

翻译 线程池

为什么使用线程池? 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:1.降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗;           2.提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度;       ...

2018-11-21 17:38:26 78

翻译 Java内存模型

1.共享变量   在java程序中所有实例域,静态域和数组元素都是放在堆内存中(所有线程均可访问到,是可以共享的),而局部变量、方法定义参数和异常处理器参数不会在线程间共享。共享数据会出现线程安全的问题,而非共享数据不会出现线程安全的问题。 2.JMM结构模型         在多线程条件下,多个线程肯定会相互协作完成一件事情,一般来说就会涉及到多个线程间相互通信告知彼此的状态以及...

2018-11-15 17:54:16 82

翻译 HashMap解析

 在早期(JDK1.8以前)的HashMap中,最常用的两种数据结构一种是数组,一种是链表结构。HashMap为了解决hash算法带来的hash冲突,所以采用了数组和链表的结合模式,它的底层是一个数组,然后根据求得的hash值在数组相应位置将相应的值插入链表中。但是这样的问题就是,数组的某一个桶的元素很多,那么链表就会很长,从而使得访问效率比较低。因此后来(JDK1.8)HashMap引入了红黑树...

2018-11-13 17:33:37 141

翻译 FileInputStream分析

我们先写个简单的Demo,代码如下:package com.lg.io;import java.io.FileInputStream;import java.io.IOException;public class FileInputStreamDemo { public static void main(String[] args) throws IOException {...

2018-11-09 15:55:29 841

翻译 OutputStream分析

上篇我们写了字节输入流的父类:InputStream,这篇我们接着分析字节输出流的父类:OutputStream。它实现了Closeable, Flushable接口,上篇介绍了Closeable接口,这篇我们就介绍Flushable接口,Flushable接口定义如下:public interface Flushable { //通过将任何缓冲的输出写入基础流来刷新此流 ...

2018-11-09 14:48:03 225

翻译 InputStream分析

IO流操作一般分为两类:字符流和字节流。今天我们就来分析下字节输入流的父类:InputStream。它实现了Closeable 接口,我们先来看下Closeable 接口定义,如下:public interface Closeable extends AutoCloseable { // 关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。 publi...

2018-11-09 11:29:26 410

翻译 JAVA的clone

1.为什么要克隆?这无非就是比较克隆的对象与new的对象之间的区别,首先克隆的对象包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值;其次我们以前用过Object a=new Object();Object b=a;这种形式的代码复制的是引用,即对象在内存中的地址,a和b对象仍然指向了同一个对象,而通过clone方法赋值的对象跟原来的对象时同时独立存在的。2.如何实现克...

2018-11-01 15:53:13 71

原创 JAVA序列化和反序列化

1、什么是序列化和反序列化序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。反序列化:客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,通...

2018-11-01 15:52:54 179

翻译 java的动态代理

昨天看分页插件的时候,遇到动态代理不是很清楚它的实现原理,所以今天打算来看看动态代理。首先我们来写下动态代理的Demo,代码如下:public interface AppService { public boolean createApp(String name);}public class AppServiceImpl implements AppService { ...

2018-10-30 16:42:26 79

翻译 Mybatis的plugin

plugin的配置本来想直接写Mybatis插件PageHelper的,但里面涉及了mybatis的plugin,所以就顺便了解下Mybatis的plugin。通常我们使用 Mybatis插件时,都会使用下面的配置。配置如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//...

2018-10-29 22:30:24 145

翻译 Mybatis分页插件PageHelper

上篇我们了解了Mybatis的plugin,最后顺便提到了分页插件,现在我们来看看分页插件PageHelper怎么实现分页的。1.PageHelper的插件配置 <!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, ob...

2018-10-29 22:30:09 395

翻译 Mybatis一级缓存

为什么要用一级缓存?Mybatis在开始使用一次数据库的时候,会创建一个新的SqlSession,简称一次会话。在对数据库的一次会话中,有时候会反复快速地执行完全相同的查询语句,如果没一级缓存的话,每一次查询都会查询一次数据库,那么它们的结果极有可能完全相同,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。如果使用一级缓存的话,会将每次查询结果缓存起来,当下次查询的时候,会判断是否...

2018-10-25 17:45:28 346

翻译 Mybatis事务管理

一、Mybatis事务概述      对于数据库事务而言,一般包括以下几个操作:创建、提交、回滚、关闭。MyBatis把这些抽象为Transaction接口:                        接口定义如下:            接口定义了Connection连接、提交、回滚、关闭等功能。Mybatis事务管理分为两种方式:     1、使用JDBC的事务管理机制...

2018-10-24 20:07:19 5395 1

空空如也

空空如也

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

TA关注的人

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