自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JDK源码阅读

Object1) wait(), notify(), notifyAll(), wait(timeout)2) hashCode(), equals()3) clone()hashCode(), equals()关系: 因为重写的equal()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高,那么h...

2019-02-22 09:57:41 198

原创 @Autowire原理分析

源码如下: public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.scan("service"); context.refresh(...

2019-02-21 18:32:10 2952 3

原创 手写RPC框架-基于BIO

RPC概述RPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。RPC 调用过程    Client 客户端调用方法实现,负责发起RPC调用。    ClientStub/SereverStub 可以看作一个代理对象,屏蔽RPC调用过程中复杂的网络处理逻辑...

2019-02-21 09:47:53 190

原创 Tomcat启动流程图

  Tomcat启动流程图 

2019-02-20 14:32:34 1004

原创 springboot中tomcat的启动入口在哪?

在springboot中,是融合了tomcat的启动与加载的,那么关于tomcat的启动与加载的入口就是研究的第一步,在EmbeddedWebApplicationContext类中,重写了AbstractApplicationContext的finishRefresh()方法,如下:? 1 2 3 4 5 6 7 8 ...

2019-02-20 13:49:46 4844

原创 Spring Boot内嵌Tomcat启动

之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat。 private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embe...

2019-02-20 10:31:05 1184

原创 Tomcat整体架构分析

本章结构如下:    前言    Tomcat顶层结构    Server    Service    Connector    Container    Tomncat启动流程一、前言一般而言,对于一个复杂的系统,直接扎进去看源码会是很难受的,会浪费大量的时间和脑细胞,却得不到理想的效果。这个时候,策略很重要,应该明白,越是复杂的东西,越会有良好的逻辑和层次,否则开发...

2019-02-19 15:55:45 298

原创 Tomcat调用链路

 Tomcat Server处理一个http请求的过程假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应3) Eng...

2019-02-19 15:28:58 387

原创 Tomcat架构图

tomcat目录结构tomcat的下载安装有很多教程,不再赘述。现在的tomcat已经到9了,当tomcat下载安装完成后,其目录大致如下: 3.1、bin文件夹bin文件夹下面放的是可执行性文件,其中:bat/exe文件是Windows下可执行的脚本文件。sh文件时Linux/Unix下可执行的脚本文件。    bootstrap.jar:这个jar包是引导程序jar...

2019-02-19 15:03:49 1756

原创 原 MyBatis源码阅读——装饰器模式在MyBatis中的应用

Executor首先我们看下Executor,打开MyBatis的源码org.apache.ibatis.session.Configuration  public Executor newExecutor(Transaction transaction, ExecutorType executorType) {    executorType = executorType == nul...

2019-02-15 14:17:27 246

原创 Mybatis一级缓存与二级缓存

一、MyBatis缓存介绍  正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。  2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCa...

2019-02-15 10:40:20 104

原创 自己手写一个Mybatis框架

 继上一篇手写SpringMVC之后,我最近趁热打铁,研究了一下Mybatis。MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手完善。一、Mybatis框架流程简介在手写自己的Mybatis框架之前,我们先...

2019-02-14 16:02:44 277

原创 自己手写一个SpringMVC框架

Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码,你将会失去一次和大师学习的机会:它的代码规范,设计思想很值得学习。我们程序员大部分人都是野路子,不懂什么叫代码规范。写了一个月的代码,最后还得其他老司机花3天时间重构,相信大部分老司机都很头疼看新手的代码。  废话不多说,我们进入今天的正题,在W...

2019-02-14 16:00:56 196

原创 MyBatis原理第四篇——statementHandler对象(sqlSession内部核心实现,插件的基础)

首先约定文中将的四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。(为了方便下面的文章说道四大对象就专指它们)讲到statementHandler,毫无疑问它是我们四大对象最重要的一个,它的任务就是和数据库对话。在它这里会使用parameterHandler和ResultHandler对象为我们绑定SQL参数和...

2019-02-13 15:08:32 193

原创 MyBatis架构图

2019-02-13 15:02:01 641

原创 MyBATIS插件原理第二篇 Mapper运行原理

我们目前在MyBATIS中,我们知道MyBATIS的Mapper是一个接口,而不是一个实体类。在Java中接口是没有办法运行的。那么它是怎么运行的呢?有了第一篇的基础,我们可以大胆的想象——它是通过动态代理运行,没有错真实的情况就是这样的。让我们看看mybatis是怎么实现这个动态代理的:    /**     *    Copyright 2009-2015 the origina...

2019-02-13 14:55:05 223

原创 MyBATIS插件原理第一篇——技术基础(反射和JDK动态代理)

在介绍MyBATIS插件原理前我们需要先学习一下一些基础的知识,否则我们是很难理解MyBATIS的运行原理和插件原理的。MyBATIS最主要的是反射和动态代理技术,让我们首先先熟悉它们。1:Java反射技术在Java中反射技术已经大行其道,通过不断的优化性能得到了巨大的提高,而反射技术使得Java的可配置性大大提高。让我们来写一个服务打印hello + 姓名。    import ...

2019-02-13 14:47:32 243

原创 MyBATIS原理第三篇: SqlSession下的四大对象之一——执行器(executor)

首先我先解释一下标题 四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。(为了方便下面的文章说道四大对象就专指它们)它们都是sqlSession的底层类实现,也是插件能够拦截的四大对象。所以这里已经触及了MyBATIS的底层,动态代理,反射随时可以看到,如果没有第一篇作为基础,你将十分难以理解它。了解他们的协作...

2019-02-13 14:40:42 248

原创 MyBatis源码阅读—解析MyBatis运行流程

前言最近在阅读MyBatis框架的源码。发现它其实是一个非常值得阅读的框架。它灵活得运用了常见的设计模式去设计。值得我们去学习。我还是比较喜欢以debug阅读MyBatis的源码。下面,就一起来看看吧。首先,我们先写一个demo,以供调试使用public class Demo1SessionFactory {public static void main(String[] args) th...

2019-02-13 11:03:35 136 1

原创 Java多线程中的notify和notifyAll的区别

既然说到多线程,首先要引入几个概念。1、锁池:直白的说就是等待竞争锁的池子,比如当前竞争的对象的锁已经被其中一个线程取得,其他线性等待锁释放后开始竞争,这些等待的线程总和我们就可以叫锁池。2、等待池:某个线程调用了某个对象的wati()方法,释放了锁,进入不竞争锁的状态。我们可以说这个线程进入了等待池。区别如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池...

2019-02-12 17:40:44 442

原创 mysql锁机制

1、查看数据库哪些表被锁过show OPEN TABLES where In_use > 0;2、加锁lock table t_emp read;3、解锁UNLOCK TABLES;

2019-02-01 15:17:32 99

原创 MySQL中的锁(表锁、行锁)

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 概述    相对其他数据库而言,MySQL的锁机制比较简单...

2019-02-01 11:46:20 105

原创 Spring中用到的设计模式

spring中常用的设计模式达到九种,我们举例说明:第一种:简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创...

2019-02-01 11:10:36 90

原创 使用show profiles分析SQL性能

使用show profiles分析SQL性能  分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。对于全局级别则作用于整个MySQL实例,而session级别紧影响当前session。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory...

2019-02-01 09:33:43 310

原创 mysql使用存储过程&函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧…正好也好加深下对procedure和function的熟练操作吧…表结构:create table dept(id int unsigned primary key auto_increment,deptno mediumint unsigned not null default 0,dname varchar...

2019-02-01 09:28:39 334

原创 mysql查询截取分析

MySQL 慢查询 一般分析过程:至少跑一天,观察,看生产的慢SQL情况。开启慢查询日志,设置阈值,如超过5秒就是慢查询,将其抓取下来。explain SQL 分析show profileDBA 或运维 进行SQL服务器参数调优查询优化永远小表驱动大表永远小表驱动大表,因为先查小表可以得到一些接下来查询的过滤条件,再查大表时可以根据这些过滤条件用上索引等内容增加整体查询速度。I...

2019-02-01 09:21:19 165

空空如也

空空如也

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

TA关注的人

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