![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA之美
文章平均质量分 73
骚年编程去
这个作者很懒,什么都没留下…
展开
-
ThreadPoolExecutor线程池解析与BlockingQueue的三种实现
目的主要介绍ThreadPoolExecutor的用法,和较浅显的认识,场景的使用方案等等,比较忙碌,如果有错误还请大家指出ThreadPoolExecutor介绍ThreadPoolExecutor的完整构造方法的签名如下ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u原创 2016-02-01 16:31:13 · 29336 阅读 · 9 评论 -
ThreadLocal源码分析解密
什么是ThreadLocal我们来看看作者Doug Lea是怎么说的,下面是jdk7.x里面ThreadLocal注释 This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (vi原创 2016-03-05 02:07:05 · 5348 阅读 · 2 评论 -
在SpingMVC的Interceptor中如何得到被调用方法名
背景为什么要在interceptor层获得方法名称呢?在分布式链路系统中我们需要在MVC框架层埋点,统计方法调用的耗时、trace信息等,目前公司内部没有统一的MVC框架,但是大多数都是使用的SpringMVC.所以我们在Interceptor这一层埋点就ok。在这里可以统计到方法调用完的耗时信息,同时也可以得到用户自定义的埋点信息。在这个过程中踩了一些坑,也尝试了各种方法Inte原创 2016-09-01 00:57:11 · 7115 阅读 · 2 评论 -
ThreadLocal父子线程传递实现方案
前言介绍InheritableThreadLocal之前,假设对 ThreadLocal 已经有了一定的理解,比如基本概念,原理,如果没有,可以参考:ThreadLocal源码分析解密.在讲解之前我们先列举有关ThreadLocal的几个关键点每一个Thread线程都有属于自己的ThreadLocalMap,里面有一个弱引用的Entry(ThreadLocal,Object),原创 2016-09-30 17:06:11 · 29710 阅读 · 7 评论 -
MySQL事务隔离级别和Spring事务关系介绍
事务隔离级别介绍隔离级别脏读不可重复读幻读未提交读(Read uncommitted)可能可能可能已提交读(Read committed)不可能可能可能可重复读(Repeatable read)不可能不可能可能可原创 2017-01-15 17:55:49 · 11285 阅读 · 0 评论 -
线程的中断(interrupt)机制
前言在本博文的一篇如何正确的关闭一个线程一文中讲解了如何利用interrupt机制来中断一个线程,这篇文章当时确实花了一些精力的总结,不过都是15年末的事情了,现在是2017年2月份,经过一年的时间,决定重新写一篇完善的关于线程中断的文章。什么时候需要关闭一个线程?下面简单的举例情况:比如我们会启动多个线程做同一件事,比如抢12306的火车票,我们可能开启多个线程从原创 2017-02-19 23:50:23 · 3969 阅读 · 2 评论 -
Java JDK代理、CGLIB、AspectJ代理分析比较
前言什么是代理,在Design patterns In java这个本书中是这样描述的,简单的说就是为某个对象提供一个代理,以控制对这个对象的访问。在不修改源代码的基础上做方法增强,代理是一种设计模式,又简单的分为两种。静态代理:代理类和委托类在代码运行前关系就确定了,也就是说在代理类的代码一开始就已经存在了。动态代理:动态代理类的字节码在程序运行时的时候生成。静态代理原创 2017-03-31 20:19:36 · 18425 阅读 · 15 评论 -
深入分析JDBC超时机制
前言上周在线上出现出现报警,ID号码一直无法获取,但是只有这一台机器报警,所以第一时间先在服务治理平台上禁用掉这台机器保证服务正常。停掉机器后要排查问题,思考分析步骤如下:通过监控发现只有一个key的ID调用发生下降(第一张),这台机器上的其他key没有任何问题,从数据库更新号段正常。是不是数据库死锁了?这个key在其他机器更新key是正常的,排除数据库的问题,那么就是这台机器的问题查看log原创 2017-07-22 18:28:45 · 2867 阅读 · 1 评论 -
ThreadPoolExecutor使用和思考-线程池大小设置与BlockingQueue的三种实现区别
查看JDK帮助文档,可以发现该类比较简单,继承自AbstractExecutorService,而AbstractExecutorService实现了ExecutorService接口。 ThreadPoolExecutor的完整构造方法的签名是: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, l原创 2014-05-11 20:54:15 · 1475 阅读 · 0 评论 -
关于序列化协议的思考
思考最近在设计一个RPC框架,需要处理序列化的问题。有很多种序列化协议可以选择,比如Java原生的序列化协议,Protobuf, Thrift, Hessian, Kryo等等,这里说的序列化协议专指Java的基于二进制的协议,不是基于XML, JSON这种格式的协议。在实际开发中考虑了很多点,也遇到一些问题,拿出来说说。 抛开这些协议不说,结合实际的需求,一个理想的序列化协议至少考虑4个方面:原创 2016-01-30 15:20:56 · 4731 阅读 · 3 评论 -
浅析Google Guava中concurrent下的Monitor和Future特性
关于Monitor A synchronization abstraction supporting waiting on arbitrary boolean conditionsMonitor类是作为ReentrantLock的一个替代,代码中使用 Monitor比使用ReentrantLock更不易出错,可读性也更强,并且也没有显著的性能损失,使用Monitor甚至有潜在的性能得到优化。下原创 2016-01-30 01:57:24 · 2735 阅读 · 0 评论 -
利用反射实现简单的Spring注解注入实例
一时兴起,这两天看了看Spring的源代码,原创 2014-09-26 22:35:35 · 4519 阅读 · 2 评论 -
Hashmap在JDK8中的提升
HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里。桶的数量通常要比map中的记录的数量要稍大,这样 每个桶包括的值会比较少(最好是一个)。当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用hashCode()对桶的数量进行取模) 以及要找的对象。这些东西你应该都已经知道了。你可能还知道哈希碰撞会对hashMap的性能带来灾难性的影响原创 2014-11-11 11:39:36 · 3904 阅读 · 1 评论 -
HashMap的工作原理
HashMap 的工作原理是近年来常见的 Java 面试题。几乎每个 Java 程序员都知道 HashMap,都知道哪里要用 HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现 HashMap 来考察你的编程能力。ConcurrentHashMa转载 2014-10-12 13:28:05 · 927 阅读 · 0 评论 -
Java transient关键字使用小记
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,转载 2014-10-17 21:48:00 · 968 阅读 · 0 评论 -
Dreamvc框架的流程图
花了两个小时,终于画完了!棒棒哒大概就是这样,大家来我的github踩一踩哈https://github.com/xiexiaodong/Dreamvc原创 2014-12-03 20:34:33 · 1237 阅读 · 0 评论 -
分析LinkedHashMap源码的LRU实现
一、前言前段时间研究了memcached,而且操作系统的课程也刚刚完成,在两个里面多次出现LRU(last recently used最近最少使用)算法,虽然思想很简单。但是还是值得我们研究,无意间在看LinkedHashMap的源码的时候看见貌似这个类里面有默认的LRU实现。我们现在就来分析一下他的源代码 /** * Returns true if this map shoul原创 2015-02-04 17:05:27 · 1122 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代转载 2015-02-25 14:14:25 · 2290 阅读 · 0 评论 -
一次堆外OOM问题排查
线上服务有一台机器访问不通(一个管理平台),在公司的服务治理平台上查看服务的状况是正常的,说明进程还在。进程并没有完全crash掉。去线上查看机器日志,发现了大量原创 2017-07-22 17:35:32 · 6532 阅读 · 0 评论