手写一个公平锁

公平锁:先调用加锁的线程优先得到锁,通过队列来实现 package MyLock; import java.util.ArrayList; import java.util.List; public class FairLock { private boolean isLoc...

2019-03-02 16:41:18

阅读数 33

评论数 0

自己实现一把重入锁

实现一把不能重入的锁: package MyLock; public class MyLock { private boolean isLock; public synchronized void lock(){ while (isLock){ ...

2019-03-02 15:42:55

阅读数 6

评论数 0

JDK源码阅读

Object 1) wait(), notify(), notifyAll(), wait(timeout) 2) hashCode(), equals() 3) clone() hashCode(), equals()关系: 因为重写的equal()里一般比较的比较全面比较复杂...

2019-02-22 09:57:41

阅读数 15

评论数 0

@Autowire原理分析

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

2019-02-21 18:32:10

阅读数 339

评论数 0

手写RPC框架-基于BIO

RPC概述 RPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。 RPC 调用过程     Client 客户端调用方法实现,负责发起RPC调用。     Cl...

2019-02-21 09:47:53

阅读数 13

评论数 0

Tomcat启动流程图

  Tomcat启动流程图  

2019-02-20 14:32:34

阅读数 31

评论数 0

springboot中tomcat的启动入口在哪?

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

2019-02-20 13:49:46

阅读数 166

评论数 0

Spring Boot内嵌Tomcat启动

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

2019-02-20 10:31:05

阅读数 35

评论数 0

Tomcat整体架构分析

本章结构如下:     前言     Tomcat顶层结构     Server     Service     Connector     Container     Tomncat启动流程 一、前言 一般而言,对于一个复杂的系统,直接扎进去看源码会是很难受的,会浪费大量的时间和脑细胞,却...

2019-02-19 15:55:45

阅读数 11

评论数 0

Tomcat调用链路

  Tomcat Server处理一个http请求的过程 假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得 2) Connect...

2019-02-19 15:28:58

阅读数 35

评论数 0

Tomcat架构图

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

2019-02-19 15:03:49

阅读数 24

评论数 0

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

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

2019-02-15 14:17:27

阅读数 17

评论数 0

Mybatis一级缓存与二级缓存

一、MyBatis缓存介绍   正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有...

2019-02-15 10:40:20

阅读数 20

评论数 0

自己手写一个Mybatis框架

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

2019-02-14 16:02:44

阅读数 54

评论数 0

自己手写一个SpringMVC框架

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

2019-02-14 16:00:56

阅读数 30

评论数 0

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

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

2019-02-13 15:08:32

阅读数 35

评论数 0

MyBatis架构图

2019-02-13 15:02:01

阅读数 68

评论数 0

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

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

2019-02-13 14:55:05

阅读数 28

评论数 0

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

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

2019-02-13 14:47:32

阅读数 32

评论数 0

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

首先我先解释一下标题 四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。(为了方便下面的文章说道四大对象就专指它们) 它们都是sqlSession的底层类实现,也是插件能够拦截的四大对象。所以这里已经触及了MyB...

2019-02-13 14:40:42

阅读数 38

评论数 0

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