8 止步前行

尚未进行身份认证

从小白到大师,是一个过程,请相信过程

等级
博文 105
排名 3w+

单例模式创建的七种方式和缺点

一、引言在《Java编程思想》的第六章,介绍访问权限控制关键字private时,引出了单例模式,但书中并没有详细的说明,只是一带而过。关于private访问控制符,书中这样描述:“关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问这个成员”。二、代码单例模式的原理就是基于上面那句话,具体的做法是:将类的构造函数设置为private,这样,除了类自己的方法,无...

2019-07-14 22:59:14

Maven几个重要知识点记录

一、引言二、重要知识点开发过程中,所有的路径或配置文件中配置的类路径等都是以编译结果的目录结构为标准的。在实际项目中整合第三方框架,Web工程中除了Java程序和JSP页面、图片等静态资源之外,还包括第三方框架的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构部署到服务器上,项目才可以运行。所以综上所述:构建就是以我们编写的Java代码、框架配置文件、...

2019-06-24 21:12:04

Java中的注解是如何工作的?

一、引言在Spring项目的早期,是通过配置文件来实现Bean的依赖注入的二、什么是注解?自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用...

2019-06-13 10:46:36

Cookie、Session、Token详解

发展史1、很久很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应,尤其是我不用记住是谁刚刚发了HTTP请求,每个请求对我来说都是全新的。这段时间很嗨皮2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪...

2019-05-31 16:12:36

观察者设计模式

publicclassSubject{privateList<Observer>observers=newArrayList<>();privateintstate;publicintgetState(){returnthis.state;}publicvoidset...

2019-05-06 10:19:39

对过去五年工作经历的总结

准备了一个半月的跳槽工作,终于在此刻尘埃落定,利用点时间,总结一下自己过去五年的实习和工作经历,主要是工作环境吧。因为鄙人从实习到现在,待过好几种类型的公司。从初创公司,到大型互联网公司,再到初创公司,最后到提供软件服务公司,到此刻跳槽去国企。可能这个过程就是现在IT领域的主要分布行业,分享一下自己所感受到的和所想到的,希望对需要的人有点作用,也希望大家少走点弯路吧。1、领导不懂技术的初创公司...

2019-04-29 20:12:28

模板方法设计模式

一、引言对于模板方法设计模式,我们在平时的编码过程中,或多或少都用到过,不知道的互啊,可能只是我们并没有注意。本文在分析Thread类的源码的基础上,总结出其中使用的模板方法设计模式。模板方法设计模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。本文旨在用最通俗易懂的方式对模板方法设计模式进行...

2019-04-27 19:50:48

CentOS7下Redis集群搭建

一、引言二、安装Redis1、查询系统版本2、下载Redis https://redis.io/download3、解压4、安装C语言环境(因为Redis使用C语言写的,CentOS自带C语言环境,执行以下命令会更新C语言环境)5、编译Redis源码6、安装Redis(默认安装在当前目录下,可以使用PREFIX参数更改安装位置)7、将解压缩包下的Redis配置文件...

2019-04-07 12:57:22

Java并发编程——自定义Lock锁

一、引言publicinterfaceLock{ classTimeOutExceptionextendsException{ publicTimeOutException(Stringmessage){ super(message); } } voidlock()throwsInterruptedException; voidlock(...

2019-03-30 23:56:30

Java动态代理机制

一、引言曾经的一篇文章,使用代理(Proxy)实现Spring的AOP功能,使用代理简单实现了Spring的AOP功能。对于动态代理的底层是怎么样的一个原理,并没有做过多解析,所以本篇随笔就对Java的动态代理机制进行一个回顾。二、InvocationHandler接口和Proxy类在Java的动态代理机制中,有两个重要的类或接口,一个是InvocationHandler(...

2019-03-30 23:39:54

Java并发编程——CountDownLatch和CyclicBarrier

什么时候使用CountDownLatch正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编程中跟CountDownLatch相关的以下几点:目录Coun...

2019-03-23 12:38:58

Java并发中各种锁介绍

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:1.公平锁/非公平锁2.可重入锁/不可重入锁3.独享锁/共享锁4.互斥锁/读写锁5.乐观锁/悲观锁6.分段锁7.偏向锁/轻量级锁/重量级锁8.自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁...

2019-03-10 22:02:27

并发示例——实现简易的数据库连接池

packagecom.scorpios.mybatis.thread;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.LinkedList;publicclassMyDataSource{ privateLink...

2019-03-01 20:53:54

线程间通信

一、引言线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作。最典型的例子就是生产者-消费者问题。本文首先介绍wait/notify机制,并对实现该机制的两种方式:synchronized+wait-notify模式和Lock+Condition模式进行详细剖析,以作为线程间通信与协作的基础。进一步地,以经典的生产者-消费者问题为背景,熟练对wait/notify机制的使用。...

2019-02-25 13:17:01

MyBatis工作原理源码分析(五)——插件机制

一、引言从前几篇对Mybatis源码的分析知道,Mybatis的四大对象:Executor、StatementHandler、ParameterHandler、ResultSetHandler在创建的时候,每个对象都不是直接返回的,而是用interceptorChain.pluginAll();方法进行了包装,返回的是包装后的代理对象。代码如下(此处只贴出Executor的包装代码)://Ex...

2019-02-19 16:45:18

MyBatis工作原理源码分析(四)——Sql的执行过程

一、引言二、源码分析因为MapperProxy实现了InvocationHandler接口,所以在执行目标方法之前,要执行invoke()方法。//MapperProxy的invoke方法@OverridepublicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{tr...

2019-02-18 15:35:25

MyBatis工作原理源码分析(三)——获取接口的代理对象(MapperProxy)

一、引言二、源码分析//3、获取接口的实现类对象//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法,传入接口名DepartmentMappermapper=openSession.getMapper(DepartmentMapper.class);Departmentdept=mapper.getDeptById(1);//调用的是Configuration...

2019-02-18 13:13:31

MyBatis工作原理源码分析(二)——获取SqlSession对象

一、引言上一篇MyBatis工作原理源码分析(一)中,介绍了手动使用Mybatis的四个步骤:获取SqlSessionFactory对象获取sqlSession对象获取接口的代理对象(MapperProxy)执行增删改查方法分析了第一骤SqlSessionFactory的初始化过程,下面在这个基础上,来分析SqlSession对象的获取。二、获取SqlSession对象源码分析当...

2019-02-17 16:40:48

MyBatis工作原理源码分析(一)——SqlSessionFactory的初始化

一、引言二、源码分析publicSqlSessionFactorygetSqlSessionFactory()throwsIOException{Stringresource="mybatis/Mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream...

2019-02-17 14:27:47

Spring常用注解总结

注解本身没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。本文主要罗列Spring、SpringMVC相关注解的简介。Spring部分1、声明bean的注解@Component组件,没有明确的角色@Service在业务逻辑层使用(service层)@Repository在数据访问层使用(dao层)@Controlle...

2019-02-14 19:53:21
奖章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。