2 公众号Java蚂蚁

尚未进行身份认证

火星IT鸡肉男 赋予代码灵魂,追求极致性能

等级
TA的排名 2w+

老司机学习MyBatis之运行原理SQLSessionFactory获取openSession对象

一、前言在前面一节,我们分析了SQLSessionFactory的初始化的整个过程,接下来这一节我们将通过查看源码看看SQLSessionFactory获得openSession的整个流程。二、案例继续Debug,在34行处打上断点F5下一步,进入DefaultSqlSessionFactory的openSession方法该方法中configuration.getDef...

2019-08-28 22:46:12

JAVA面试题 线程的生命周期包括哪几个阶段?

面试官:您知道线程的生命周期包括哪几个阶段?应聘者:线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。新建:就是刚使用new方法,new出来的线程; 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行; 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能; 阻塞:...

2019-07-23 07:13:29

JAVA面试题 StringBuffer和StringBuilder的区别,从源码角度分析?

面试官Q1:请问StringBuffer和StringBuilder有什么区别?这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面试题,被问到的概率百分之八九十。下面我们从面试需要答到的几个知识点来总结一下两者的区别有哪些?继承关系? 如何实现的扩容? 线程安全性?继承关系从源码上看看类StringBuffer和StringBuilder的继承结构:从结构...

2019-07-21 23:05:20

SpringMVC教程之如何使用POJO作为参数

一、前言前面我们学习了@RequestParam注解,可以获得请求的参数,但是如果前台传来的是一个表单,表单中有很多参数,那么这个时候使用@RequestParam注解一个一个去映射的话,方法中就会有N多个注解在里面,显然这种方式获取参数是不可取的。这个时候我们可以使用一个Java对象来获得请求参数。SpringMVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性...

2019-07-14 07:55:38

Java面试题之数据库三范式是什么?

什么是范式?简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。什么是三大范式?第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。第二范式(2NF):首先是1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在...

2018-12-22 23:49:34

SpringMVC教程之自定义拦截器

一、前言SpringMVC中的Interceptor拦截请求是通过HandlerInterceptor来实现的。在SpringMVC中定义一个Interceptor非常简单,主要有两种方式,第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor接口,或者是这个类继承实现了HandlerInterceptor接口的类,比如Spri...

2018-12-22 12:04:24

2019 Java面试题

马上又是一个金九银十的招聘旺季,小编在这里给大家整理了一套各大互联网公司面试都喜欢问的一些问题或者一些出场率很高的面试题,给在校招或者社招路上的你一臂之力。首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同级别下要找比自己优秀的人,面试是一个双向选择的过程,也是一个将心比心去沟通的过程。 就像我们有的人感觉自己很牛逼,但是拿不到offer,而其他的人菜的一笔,却可...

2018-08-26 23:24:18

SpringMVC基础篇之HelloWorld

一、准备Eclipse:LunaServiceRelease1(4.4.1)Tomcat插件:tomcat7-maven-pluginJDK:1.7.0_79spring-webmvc:4.1.3.RELEASE二、步骤搭建Maven工程如下:POM文件依赖配置:<projectxmlns="http://maven.apache.org/PO...

2018-08-23 22:40:33

MyBatis运行原理SQLSessionFactory的初始化

一、前言在前面的章节中,我们简单的介绍了一下MyBatis是如何配置使用的,为了更深切的体会到MyBatis的精髓,这一节我们将通过代码简单的看一看MyBatis的源码,分析一下MyBatis的执行流程二、案例修改MyBatisTest文件在32行处,打上断点,运行,方法进入,读取全局配置文件,通过文件流的形式进入文件流的源码就不看了,直接到newSqlSession...

2018-07-23 07:01:50

MyBatis插件开发原理

一、前言MyBatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变MyBatis的默认行为(诸如SQL重写之类的),由于插件会深入到MyBatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。MyBatis在四大对象的创建过程中,都会有插件进行介入。插件可以利用动态代理机制一层层的包装目标对象,而实现目标对象在执行目标方法之前进行拦截的...

2018-07-20 07:03:38

老司机学习MyBatis之逆向工程MGB的简单使用

一、前言MyBatisGenerator简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询,这样能够大大减少我们平时开发的工作量。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写,下面我们将简单介绍一下如何逆向生成代码。二、案例①为了生成逆向工程,我们需要导...

2018-07-19 07:16:59

老司机学习MyBatis之整合ehcache缓存框架

一、前言MyBatis为我们提供了Cache接口,也提供了一些实现类,进入Cache接口源码,可以看到缓存对于MyBatis来说就是一个Map,比较简陋。但是大家都知道MyBatis是一个专注于持久层框架,与数据库打交道MyBatis是很专业的,但是对于缓存它就略显不足,即便如此MyBatis却提供了Cache接口的标准规范,谁做缓存专业,谁就来实现它,提供了很好的扩展性。本节我们将介绍了一下...

2018-07-16 20:28:27

老司机学习MyBatis之一级、二级缓存的相关设置详解

一、前言前面两个章节,我们简单的介绍了一级缓存和二级缓存,并对它们的使用有了初步的了解,下面我们将从以下几个配置深入的了解一下几个常用的配置对一二级缓存的影响。二、案例①全局setting的cacheEnable这个配置我们在使用二级缓存的时候有用到,如果配置成false,二级缓存会失效,那么对一级缓存有影响吗?修改测试方法测试结果:控制台打印了一条SQL语句,第二...

2018-07-16 20:24:45

史上最简单的SpringBoot教程之浅析热部署

一、前言在我们编写代码的时候,您会发现我们只是把返回的信息改变了或者增加了一个方法,就需要重新启动服务,如果以这种方式编码,我们平时开发就会非常头疼,那么如何解决热部署问题呢?这里Springboot给出了一个解决方案,就是使用springloaded。二、准备开发环境:1.7.0_79开发工具:Eclipse项目管理工具:Maven3操作系统:Windows8Springboot版本:1.4...

2018-07-10 07:23:29

史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据

一、准备开发环境:1.7.0_79开发工具:Eclipse项目管理工具:Maven3操作系统:Windows8Springboot版本:1.4.1.RELEASE二、案例跟前面工程一样,搭建一个Maven工程SpringBootFastJsonPOM文件中导入相关依赖<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="...

2018-07-09 07:27:30

史上最简单的SpringBoot教程之如何返回JSON

一、准备开发环境:1.7.0_79开发工具:Eclipse项目管理工具:Maven3操作系统:Windows8Springboot版本:1.4.1.RELEASE二、案例搭建一个Maven工程SpringBootJsonPOM文件中导入相关依赖<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w...

2018-07-09 07:23:20

史上最简单的SpringBoot教程之如何打印HelloWorld

一、前言Springboot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Springboot包含的特性:♦创建独立的Spring应用程序♦嵌入Tomcat,无需部署war文件♦简化Maven配置♦自动配置Spring♦提供生产就绪功能,如指标,健康检查和外部配置♦开...

2018-07-09 07:16:26

菜鸟学习IntelliJ IDEA之代码格式化与Eclipse保持风格一致

一、前言相信很多用惯了Eclipse开发工具的童鞋,再来使用IntelliJIDEA开发时,有点不太适应IntelliJIDEA的代码风格或是快捷键的使用方式。本文简单的介绍一下如何保持Eclipse代码风格跟IntelliJIDEA一样,如何解决这个问题呢?IntelliJIDEA有对应的格式化插件,可以复用定义好的Eclipse的codestyle文件。二、步骤安装插件有...

2018-07-07 10:49:59

菜鸟学习IntelliJ IDEA之如何从SVN服务器check源码

一、准备参照前一章节《IntelliJIDEA教程之如何提交代码到SVN服务器》,我们已经通过IntelliJIDEA将工程提交到SVN服务器了,现在我们就要解决如何从SVN服务器检出代码到本地运行。二、步骤MyIdeaWorkspace新建一个工作区MyIdeaWorkspace,如下图点击VCS->CheckoutfromVersionControl->Subvers...

2018-07-07 10:38:07

菜鸟学习IntelliJ IDEA之Maven工程多模块继承和聚合创建(详解)

一、前言IntelliJIDEA开发环境搭建:具体参考《IntelliJIDEA教程之如何配置Maven》Maven环境搭建:具体参考《Windows下Maven安装以及配置》主要模拟企业开发是如何搭建Maven工程的,以Spring+SpringMVC+MyBatis为框架搭建,搭建环境Windows8系统,使用IntelliJIDEA搭建Maven工程或者项目。二、步骤...

2018-07-07 07:22:58

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。