- 博客(18)
- 资源 (5)
- 收藏
- 关注
原创 java装饰者模式decorater
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 装饰模式的类图如下: 在装饰模式中的角色有: ● 抽象构件(Comp
2016-10-27 11:45:46 683
原创 spring @conditional注解的使用
@Conditional根据满足某一个条件创建一个特定的Bean。比如说当一个jar包在一个类路径下时,自动配置一个或多个Bean,或者只有某个Bean被创建时才会创建另一个Bean。Spring Boot中将大量使用到进行一些自动配置。以下示例根据不同操作系统作为条件,实现condition接口重写matches方法判断条件,若在windows下运行则输出列表命令dir,若在linux下则输
2016-10-24 10:24:41 913
原创 mysql表锁、行锁和页锁的解析
页级:引擎 BDB。 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许 行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。 页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折
2016-10-20 23:18:21 1515 1
转载 JVM内存模型
今天闲来无事来,看一下Java中的内存模型和垃圾回收机制的原理,关于这个方面的知识,网上已经有很多现成的资料可以供我们参考,但是知识还是比较杂的,在这部分知识点中有一本书不得不推荐:《深入理解Java虚拟机》,现在已经是第二版了。这本书就从头开始详细介绍了Java整个虚拟机的模型以及Java的类文件结构,加载机制等。这里大部分的知识点都是可以在这本书中找到的,当然我是主要还是借鉴这本书中的很多内容的
2016-10-20 11:37:45 326
原创 Java GC工作原理以及Minor GC、Major GC、Full GC简单总结
名词解释:GC:垃圾收集器Minor GC:新生代GC,指发生在新生代的垃圾收集动作,所有的Minor GC都会触发全世界的暂停(stop-the-world),停止应用程序的线程,不过这个过程非常短暂。Major GC/Full GC:老年代GC,指发生在老年代的GC。JVM:Java Virtual Machine(Java虚拟机)的缩写。正文: 堆 众所周知,所有通过new创建的对象
2016-10-20 11:35:19 396
转载 java concurrent包简介
说一说java的concurrent包1-concurrent包简介前面一个系列的文章都在围绕hash展开,今天准备先说下concurrent包,这个系列可能会以使用场景说明为主,concurrent包本身的代码分析可能比较少; 我在这方面的实践经验较为有限,有错误欢迎批评指正 不过前一个系列并未结束,还有一些文章没有放出来,欢迎关注核桃博客 concurrent包是jdk1.5引入的重要的包,主
2016-10-20 11:15:11 550 1
转载 AQS的转载:经典http://www.cnblogs.com/jinspire/p/3172974.html
http://www.cnblogs.com/jinspire/p/3172974.html
2016-10-20 11:12:29 582
转载 CAS原理浅析(转载)
java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。CASCAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值
2016-10-20 11:00:11 345
原创 current保重的atomic解析
对于current中的automic应用,可以比较如下一段代码,他是线程安全的。通常的++操作会涉及到先get 再add的操作,是两个步骤的操作,所以在多线程操作的时候,会导致计数结果不准确。通常总数会小于我们期望的数值。而使用atomic类,在底层采用了cas的原子指令:(引用)CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许j
2016-10-20 10:39:25 323
原创 current包中countdownlatch解析
countdownlatch的功能是起了多个子线程,主线程等待子线程执行完毕后再去执行,具体的代码如下:package countdownlatch;import java.util.concurrent.CountDownLatch;public class CountdownLatchClass {private CountDownLatch latch = n
2016-10-20 10:06:43 637
原创 threadlocal源码解析
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 从线
2016-10-19 10:55:43 477
原创 悲观锁和乐观锁
1.悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。数据库锁机制:1 未提交读(read
2016-10-19 10:26:42 298
原创 java的synchronized简述
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁
2016-10-19 10:17:17 351
原创 分布式和集群的区别
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。例如:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoo
2016-10-17 10:33:05 236
原创 创业之我见
从我付出来快一年 。这一年里,收获颇多。同时自己也成长了不少。回顾工作历程。我付也算的上是一个比较不错的互联网支付公司了,成熟的团队,完备的管理制度,优秀的人才储备。虽然日益走下坡路,也是整个体制和大背景导致的。从创业的初期,筹划一年多,开始开发系统,到系统上线。这中间经历了很多,见证了很多。也在此过程中认识和结实了很多很好的朋友,和一帮做事情的小伙伴。到目前为止,即将离开这件创业公司
2016-10-14 11:32:23 794
原创 hashmap存储结构解析
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在java编程语言中,最基本的结构
2016-10-10 11:24:03 989
原创 activemq-consumer示例
配置文件:queue1class="org.springframework.jms.listener.DefaultMessageListenerContainer">实现监听类:import javax.jms.JMSException;import javax.jms.M
2016-10-08 17:00:22 290
ant远程上传并部署tomcat
2012-09-06
hessian源码修改,包含了协议的修改
2012-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人