• 等级
  • 172425 访问
  • 26 原创
  • 22 转发
  • 57633 排名
  • 20 评论
  • 6 获赞

How to get method parameter names?

如何获取方法参数命名?1.通过javassist获取e());Class<?>[]paramTypes=method.getParameterTypes();String[]paramTypeNames=newString[method.getParameterTypes().length];for(inti=0;i<

2017-01-05 15:18:55

基于JDK动态代理和CGLIB动态代理到底有什么区别?

转自:基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别摘要结论:基于JDK动态代理,可以将@Transactional放置在接口和具体类上。基于CGLIB类代理,只能将@Transactional放置在具体类上。因此在实际开发时全部将@Transactional放到具体类上,而不是接口上。如何启用cglib动态代理如果设置p

2017-01-03 19:54:40

Spring中通配符

转:Spring中通配符内容摘要一、加载路径中的通配符:?(匹配单个字符)*(配除/外任意字符)**/(匹配任意多个目录)二、SpringAOP配置通配符execution(public**(..))within(com.xyz.service.*)@annotation(org.springframework.transaction.annotation.Transactional)

2017-01-03 15:28:25

mybatis一级缓存(session cache)引发的问题

mybatis一级缓存(sessioncache)引发的问题

2016-05-14 12:06:21

java热加载技术hotswap

关于hotswap是一个允许在运行状态下无限制的修改加载类文件的Java虚拟机补丁。当前java虚拟机的动态加载机制只允许修改类的方法体,而打了hotswap补丁以后,可以增加,删除类属性,方法,甚至可以改变一个类的父类。Hotswap补丁是基于GPLv2.

2016-04-03 13:19:56

java-memory-model

本文是InfoQ上的《深入理解Java内存模型》 java-memory-model系列文章汇总列表。同时列举了每篇文章的主要内容:深入理解Java内存模型(一)——基础http://www.infoq.com/cn/articles/java-memory-model-1--内容摘要:重排序从java源代码到最终实际执行的

2016-03-11 15:58:10

Mysql新增UTF8MB4编码支持emoji表情

本文转自:MySQL乱码问题以及utf8mb4字符集乱码推荐大家看深入MySQL字符集设置,区分检查client端、server端的编码;最简单暴力的方式,是在所有的环节都显式明确的指定相同的编码。比如使用python的MySQLdb连接MySQL时默认的charset是latin1,需要自己指定charset=’utf8′,即使是在服务器端的init-connect=’SETNAMESutf8

2015-06-05 14:09:38

利用spring session解决共享Session问题

SpringSession是Spring的项目之一,GitHub地址:https://github.com/spring-projects/spring-session。SpringSession提供了一套创建和管理ServletHttpSession的方案。SpringSession提供了集群Session(ClusteredSessions)功能,默认采用外置的Redis来存储Session数据,以此来解决Session共享的问题。

2015-05-15 12:27:41

ConcurrentLinkedQueue原码解析

ConcurrentLinkedQueue是一个基于单链表的无界线程安全队列,该队列是FIFO的。ConcurrentLinkedQueue/ConcurrentLinkedDeue和LinkedBlockingQueue/LinkedBlockingDeue相比,不同点在于它们不提供阻塞功能,并且是Lock-Free的,而后者则是利用ReentrantLock实现的。

2015-04-14 18:02:39

ConcurrentSkipListMap原码解析

SkipList介绍1.SkipList(跳表),在理论上能够在O(log(n))时间内完成查找、插入、删除操作。SkipList是一种红黑树的替代方案,由于SkipList与红黑树相比无论从理论和实现都简单许多,所以得到了很好的推广。SkipList是基于一种统计学原理实现的,有可能出现最坏情况,即查找和更新操作都是O(n)时间复杂度,但从统计学角度分析这种概率极小。使用SkipL

2015-04-13 17:12:52

ReentrantReadWriteLock原理分析

ReentrantReadWriteLock顾名思义是可重入的读写锁,允许多个读线程获得ReadLock,但只允许一个写线程获得WriteLock。原理介绍1.ReentrantReadWriteLock类图:2.ReentrantRead

2015-04-09 16:13:09

JUC AbstractQueuedSynchronizer原理解析

在J2SE1.5的java.util.concurrent包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer类(下称AQS类),这个简单的框架而构建的。这个框架为同步状态的原子性管理、线程的阻塞和解除阻塞以及排队提供了一种通用的机制。

2015-04-03 17:59:04

自旋锁、排队自旋锁、MCS锁、CLH锁

原文地址:自旋锁、排队自旋锁、MCS锁、CLH锁注:文中的代码忽略了lock和unlock不成对出现的异常情况。另外文中代码可以通过引入ThreadLocal类来去掉lock/unlock方法的参数。自旋锁(Spinlock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自

2015-04-01 16:46:29

Spring依赖注入DI

1. Spring是什么?—Spring是一个开源框架,是于2003年兴起的一个轻量级Java开发框架。它是为了解决企业应用开发的复杂性而创建的。—说它是轻量级的是因为从jar包大小与开销两方面而言Spring都是轻量的。Spring框架目的:解决企业应用开发的复杂性Spring框架应用范围:任何Java应用为什么选择使用Spring?现实往往是这样的:前辈

2015-04-01 14:17:48

HashMap源码分析

转自:HashMap源码分析  需要提到的是,HashMap内部的容量设计为2的幂,是为了方便扩容和取余运算,都只需要采用二进制位运算即可1.扩容:newCapacity2.取余:当Length=2^n时,hash%Length=hash&(Length-1)学过数论的应该知道,取余运算相对耗时,而把除数设计为2的幂可以简化为按位与运算从而提高程序计算速度。

2015-04-01 11:30:03

Java 理论与实践: 处理 InterruptedException

Java理论与实践:处理InterruptedException注:这里仅转了文章开头部分内容,详细内容请查看原网页。这样的情景您也许并不陌生:您在编写一个测试程序,程序需要暂停一段时间,于是调用Thread.sleep()。但是编译器或IDE报错说没有处理检查到的InterruptedException。InterruptedException是什么呢,为什么

2015-03-30 15:53:18

ThreadLocal源码解析

ThreadLocal经常被使用到,但是一直没有研究过它的实现原理。在看源码之前,我猜测它是这样设计的:ThreadLocal中包含一个Map<Thread,Map<ThreadLocal,V>>属性,在使用时,通过Thread.currentThread()获取到当前线程,从而根据Key,找到Map<ThreadLocal,V>,后来发现是错的。所以本文通过阅读JDK1.7源码,来解析ThreadLocal的设计思想和原理。

2015-03-28 19:53:13

sun.misc.Unsafe源代码

转自:源码剖析之sun.misc.Unsafe Unsafe类提供了硬件级别的原子操作,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。Java并发包(java.util.concurrent)中大量使用了CAS操作,涉及到并发的地方都调用了sun.misc.Unsafe类方法进行CAS操作。Unsafe类还提供了volat

2015-03-26 16:35:33

大端小端模式

1.大端小端格式详解为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题

2015-03-21 18:42:05

ConcurrentHashMap源码分析

ConcurrentHashMap是HashMap更高效的线程安全版本的实现。不同于Hashtable简单的将所有方法标记为synchronized,它将内部数组分成多个Segment,每个Segment又是一个特殊的hash表,这样设计是为了减少锁粒度。另外它内部通过精巧的实现,让很多读操作(get(),size()等)甚至不需要上锁。

2015-03-09 11:33:13

flysharkym

关注
  • 广东省 广州市
奖章
  • 持之以恒