摘要: 以下是本篇文章的大纲 1 synchronized和lock 1.1 synchronized的局限性 1.2 Lock简介 2 AQS 3 lock()与unlock()实现原理 3.1 基础知识 3.2 内部结构 3.3 NonfairSync 3.3.1 lock() 3.3.2 unlock 阅读全文
posted @ 2017-02-15 22:31 mayday芋头 阅读(5617) 评论(5) 推荐(4) 编辑
摘要: Future是我们在使用java实现异步时最常用到的一个类,我们可以向线程池提交一个Callable,并通过future对象获取执行结果。本篇文章主要讲述了JUC中FutureTask中的一些实现原理。使用的jdk版本是1.7。 Future Future是一个接口,它定义了5个方法: 简单说明一下 阅读全文
posted @ 2016-08-31 21:39 mayday芋头 阅读(8095) 评论(6) 推荐(2) 编辑
摘要: 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、Rocke 阅读全文
posted @ 2016-07-20 17:41 mayday芋头 阅读(3256) 评论(2) 推荐(2) 编辑
摘要: 最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我们一起来扒一扒事务相关的知识 阅读全文
posted @ 2016-06-29 21:52 mayday芋头 阅读(6882) 评论(5) 推荐(3) 编辑
摘要: 在正常的业务流程中,往往存在着一些业务逻辑,例如安全审计、日志管理,它们存在于每一个业务中,然而却和实际的业务逻辑没有太强的关联关系。 图1 这些逻辑我们称为横切逻辑。如果把横切的逻辑代码写在业务代码中,散落在各个地方,则会变得非常难以维护,代码也会显得过于臃肿。 Spring AOP为处理这些问题 阅读全文
posted @ 2016-06-19 21:19 mayday芋头 阅读(1468) 评论(3) 推荐(1) 编辑
摘要: java动态代理是java语言的一项高级特性。在平时的项目开发中,可能很难遇到动态代理的案例。但是动态代理在很多框架中起着不可替代的作用,例如Spring的AOP。今天我们就聊一聊java动态代理的实现原理。 jdk对于动态代理的支持主要依赖于两个类:Proxy和InvocationHandler。 阅读全文
posted @ 2016-06-01 17:33 mayday芋头 阅读(714) 评论(0) 推荐(2) 编辑
摘要: 做过java web的同学都对tomcat非常熟悉。我们在使用tomcat带来的便利的同时,是否想过tomcat是如何工作的呢?tomcat本质是一个http服务器,本篇文章将搭建一个简单的http服务器。 1 Catalina模型 首先我们先了解一下tomcat的大致工作原理。tomcat的核心是 阅读全文
posted @ 2016-06-01 15:46 mayday芋头 阅读(10390) 评论(5) 推荐(8) 编辑
摘要: 在使用Spring MVC开发web项目时,在一个请求的任意阶段,都可以通过RequestContextHolder.getRequestAttributes()获取RequsetAttributes对象,进而获取request对象。这是怎么实现的呢?带着这个疑问,我们一起理解一下ThreadLoc 阅读全文
posted @ 2016-03-24 23:21 mayday芋头 阅读(2410) 评论(0) 推荐(2) 编辑