自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 工厂方法模式

一、定义 工厂方法模式,又称为虚拟构造方法模式、多态性工厂模式。工厂方法模式,定义一个创建产品对象的工厂接口,将实际的创建工作推迟到子类中。 二、结构 public interface Creator{ /** * 工厂方法 */ Product factory(); } public...

2020-01-20 20:22:36 68 0

原创 简单工厂模式

一、定义 简单工厂模式,又称为静态工厂方法模式。简单工厂模式,就是由一个工厂类,根据传入的参数,决定创建出哪一种产品类的实例。 二、结构 从上图可以看出,简单工厂模式涉及到工厂角色、抽象产品角色、具体产品角色。 工厂(Creator)角色:担任这个角色的类是简单工厂模式的核心,工厂类在客户端的...

2020-01-19 21:26:21 33 0

原创 mybatis多个plugins的执行顺序

一、前言    在mybatis官网中,有插件一说  mybatis plugins . 如果同时有多个插件,那么他们的执行顺序是怎样的?   二、准备工作、代码准备 1、 项目结构 2、TestDAO public interface TestDAO { Test ...

2018-11-13 22:30:56 3385 2

原创 selectById的流程

  上一篇,我们讲过DAO层接口,是怎么被mybatis自动实现的。DAO层接口,为什么能操作数据库 这篇,我们继续下去,讲一讲DAO层接口中selectById的流程。   一、准备工作   和上一篇文章中,用到的代码几乎没有区别,只是Main类有所调整 public class M...

2018-11-12 17:14:58 1276 0

原创 DAO层接口,为什么能操作数据库

public interface TestDAO { Test selectById(Integer id); } 一、问题:   如上代码所示,为什么调用TestMapper的selectById方法,就能从数据库中读取数据?TestMapper不是个接口吗?接口怎么能直接调用方法...

2018-11-09 20:14:22 6224 0

原创 HashMap 1.8

一、HashMap的结构:数组+链表 1、那么数组在哪里?有多大? 我们来到HashMap的源码,可以发现它里面有个数组  transient Node<K,V>[] table; 数组的初始大小为16,static final int DEFAULT_INI...

2018-11-09 16:30:55 198 0

原创 Bean的实例化过程

一、Spring容器的容器启动阶段和Bean实例化阶段   1.1 容器启动阶段     容器启动阶段,主要是将利用某种工具(如XmlBeanDefinitionReader),将XML配置信息,映射为BeanDefinition,并将其注册到相应的BeanDefinitionRe...

2018-08-21 09:27:14 1841 0

原创 新手如何阅读Spring源码

一、先跟着博客一路debug下去。   期间可能会跟丢,但是请反复地debug下去(过程可能很痛苦,但是源码这关是绕不开的),能跟上博客,大致知道做了什么。 要懂得利用idea编译器debug时的drop frame功能,如果用的是idea的话。 推荐博客:Jintao_Ma的博客     ...

2018-08-17 21:32:55 6563 0

原创 BeanFactory和它的对象注册和依赖绑定的三种方式

一、Spring中的BeanFactory是什么?   BeanFactory是个基本的IoC容器,提供完整的IoC服务支持,负责对象创建的管理和依赖注入服务   如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象...

2018-08-17 20:04:56 831 0

原创 如何实现依赖注入

承接上一章,如何获取自定义注解标记的类  已经获取到所有自定义注解标记的类,并且把它们都放入了一个Map<Class<?>, Object>(类和各自实例的映射)中。   那么如何来实现依赖注入呢? @Controller publi...

2018-07-20 09:13:50 275 0

原创 如何获取自定义注解标记的类

1、如何把一个包里所有自己想要的自定义注解标记的类,放入容器(一个Set<Class<?>>)中? @Controller //比如@Controller是自定义的注解 public class HelloController{ //在A...

2018-07-19 21:28:46 3000 0

原创 如何获取.properties文件及读取配置

引子:如图所示,此配置文件是如何读取到的呢?其里面配的值,又是如何得到的呢? 1、怎么读取配置文件(比如 resources下的smart.properties)? InputStream inputStream = Thread.currentThread().getContextCl...

2018-07-19 20:50:48 226 0

原创 clone

  clone 分为浅层clone和深层clone。1. 浅层clone是指对象中的非对象实例,被复制过来。 修改复制对象的这些实例,并不会对原对象产生影响。比如下面例子中的salary。 但是修改复制对象中的对象实例,对原对象中的对象实例,也会产生影响,比如下面例子中的hireDay2. 深层c...

2018-03-26 21:10:59 121 0

原创 Head First Java零碎

1、int[] nums = new int[7]; 这一条语句分为3个步骤:        1)声明一个int数组变量,数组变量是数组对象的遥控器        2)创建大小为7的数组        3)将数组赋值给之前声明为int[]的变量nums    同理,Dog[] dogs = new...

2018-03-24 10:19:59 91 0

转载 对redis中setbit命令的理解

作者:知乎用户链接:https://www.zhihu.com/question/27672245/answer/123641959来源:知乎这个是SETBIT使用方法的简单说明在redis中,存储的字符串都是以二级制的进行存在的。举例:设置一个 key-value ,键的名字叫“andy” 值...

2018-03-22 10:34:52 270 1

转载 对象引用变量

    Vehicle veh1 = new Vehicle(); veh1是对象引用变量,它不是对象的容器,而是类似于指向对象的指针,或者可以说是地址。对象只会存在垃圾回收的堆上。     Vehicle veh1 = new Vehicle(); 代表取得Vehicle对象的方法,以字节形式,...

2018-03-17 21:29:22 617 0

转载 什么是面向对象

转自:一句话说明什么是面向对象--知乎 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的泛化(generation)/特化(specializ...

2017-10-30 08:38:14 956 0

转载 mysql索引总结----mysql 索引类型以及创建

文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细。直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能...

2017-10-24 16:07:09 259 0

转载 SQL的四种连接-左外连接、右外连接、内连接、全连接

SQL的四种连接-左外连接、右外连接、内连接、全连接   今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。   联接...

2017-10-24 11:19:12 1433 0

转载 synchronized和Lock的区别

先把结论写一下: 1)Lock是个接口,而synchronized是java关键字,synchronized是内置语言实现 2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象的发生;而Lock在发生异常时,如果没有主动通过unlock()去释放锁,则很有可能...

2017-10-24 10:14:20 994 0

转载 计算机各层网络协议

转自:计算机网络各层协议 计算机各层网络协议  应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP)  DHCP(Dynamic Host Configuration Protocol)动态主机分配协议,使用 UDP 协议工作,主要有两个用途:给内...

2017-10-18 18:45:25 538 0

转载 在由N个正整数的集合S中,找出最大元素C,满足C=A + B

转自:在由N个正整数的集合S中.... 【题目】 在由N个正整数的集合S中,找出最大元素C,满足C=A + B 其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析。 【分析】 1,对集合S进行排序(快排),从小到大排序 2,让C指向集合最后一个元...

2017-10-18 18:38:51 275 0

原创 a += a-= a*a

int a = 3; a += a-= a*a; 最终a的值是多少? 这要分语言了。 1)在c语言中,结果是-12。原因是先算a*a(结果为9,此时a的值没变,还是3);然后算 a-=a*a,等效于 a = a - 9;(结果为-6,因为赋值符号,此时a的值为-6,发生了改变);最...

2017-10-18 17:27:26 5003 0

转载 Java单例模式

转自:Java单例模式 Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。        单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每...

2017-10-14 11:27:07 239 1

转载 3个线程依次轮流打印出75个数

转自:详解使用synchronized解决三个线程依次轮流打印出75个数 原帖见:http://www.iteye.com/topic/1117703 问题描述: 一个关于线程的经典面试题,要求用三个线程,按顺序打印1,2,3,4,5.... 71,72,73...

2017-10-14 10:02:52 1347 1

转载 java堆结构,以及堆中的永久代

转自:java堆的结构以及堆中的永久代 java堆不是数据接口意义上的堆(一种有序的树),而是jvm的堆,也即是运行时的数据区。所有类的实例和数组都是在堆上分配内存,它在JVM启动时被创建,对象所占的内存是由自动内存管理系统也就是垃圾回收器回收。 堆内存是由存活的对象以及死亡的对象组成的。存活的对...

2017-10-14 08:42:07 3205 0

转载 什么是迭代器(Iterator)

转自:牛客网 一、什么是迭代器(Iterator)? 答:Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包括了可以返回迭代器实例的迭代方法。迭代器可以在迭代过程中删除底层集合的元素,但是不可以直接调用集合的remove(Object obj)删除,可以通过迭代器的rem...

2017-10-13 11:01:56 18667 0

转载 为什么集合类没有实现Cloneable和Serializable接口

转自:牛客网 为什么集合类没有实现Cloneable和Serializable接口? 答:克隆(cloning)或者序列化(serialization)的语义和含义是跟具体的实现相关的。因此应该由集合类的具体实现类来决定如何被克隆或者序列化 一些解释: (1)什么是克隆? 克...

2017-10-13 09:44:55 12557 0

转载 java集合类框架的基本接口有哪些

转自:牛客网 java集合类框架的基本接口有哪些? 答:Collection:代表一组对象,每一个对象都是它的子元素 Set:不包括重复元素的Collection List:有顺序的Collection,并且可以包含重复元素 Map:可以把键(key)映射到值(value)的对象,键...

2017-10-13 08:57:47 13358 1

转载 如何确保N个线程可以访问N个资源同时又不导致死锁

转自:牛客网 如何确保N个线程可以访问N个资源同时又不导致死锁? 答:使用多线程时,一种非常简单的避免死锁的方式就是:指定锁的顺序,并强制线程按照指定的顺序获取锁。因此所有的线程都是以同样的加锁和释放锁,就不会出现死锁了 下面是详细解释: 预防死锁,预先破坏产生死锁的四个条件。互斥...

2017-10-12 19:30:22 9924 1

转载 什么是死锁

转自:牛客网 死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们都将无法推进下去,陷入死循环 例子:当线程1和2都已经成功获取到第一个锁时,死锁就发生了。     //线程1 Synchorized(objectA){...

2017-10-12 19:05:27 415 0

转载 在监视器(Monitor)内部,是如何做到线程同步的

转自:牛客网 在java虚拟机中,每个对象(object和class)通过某种逻辑关联监视器,每个监视器和一个对象引用相关联,为了实现监视器的互斥功能,每个对象都关联着一把锁 一旦方法或者代码块被synchronized修饰,那么这个部分就放入了监视器的监视区域,确保一次只能有一个线程...

2017-10-12 18:49:29 1334 0

转载 同步方法和同步代码块的区别

转自:牛客网 1.同步方法使用synchronized修饰方法,在调用该方法前,需要获得内置锁(java每个对象都有一个内置锁),否则就处于阻塞状态 代码如: public synchronized void save(){//内容} 2.同步代码块使用synchroni...

2017-10-12 18:25:11 13281 0

转载 概括解释线程的几种状态

转自:牛客网 1.新建(new):新创建了一个线程对象 2.可运行(runnnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权 3.运行(running):可运行状态(runnab...

2017-10-12 10:06:05 613 0

转载 解决request中文乱码

转自:解决request中文乱码问题 解决request中文乱码的问题 一, request.setCharacterEncoding(charset);必须写在第一次使用request.getParameter()之前, 这样才能保证参数是按照已经设置的字符编码来...

2017-10-04 19:02:34 8756 0

转载 JAVA多线程实现的四种方式

转自:JAVA多线程实现的四种方式 JAVA多线程实现的四种方式 Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService...

2017-10-02 10:59:32 169 0

转载 数据库索引到底是什么,是怎样工作的?

转自:数据库索引到底是什么,是怎样工作的? 我们通过一个简单的例子来开始教程,解释为什么我们需要数据库索引。假设我们有一个数据库表 Employee, 这个表有三个字段(列)分别是 Employee_Name、Employee_Age 和Employee_Address。假设表Employe...

2017-10-02 10:26:19 194 0

转载 进程和线程的区别

一、进程和线程的区别 1)进程是一个正在执行的程序;线程隶属于某个进程,是进程内部的一个执行序列 2)进程是CPU、内存等资源占用的基本单位;线程不能占有这些资源 3)进程之间相互独立,通信比较困难;线程共用一块内存区域,通信较为方便 4)进程在执行过程中,包含了比较固定的入口、执行顺序、...

2017-09-19 15:33:50 329 0

转载 什么是值传递和引用传递

一、什么是值传递和引用传递? 值传递,是对于基本数据类型的变量而言的。传递的是该变量的一个副本,改变副本并不影响原变量 引用传递,是对于对象型变量而言的。传递的是该变量地址的一个副本,并不是该对象本身 链接:https://www.nowcoder.com/questionTermi...

2017-09-19 15:17:47 3212 0

转载 接口和抽象类的区别

一、接口和抽象类的区别是什么? 1)接口中的成员变量都是public static final 的; 而抽象类随意,且不必是public的 2)接口中的成员函数都是public abstract的;而抽象类可以存在非抽象的方法,且不必是public的 3)java类能实现多个接口,但是只能继承一个...

2017-09-19 14:58:14 342 0

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