- 博客(34)
- 资源 (5)
- 收藏
- 关注
原创 java装饰者模式decorater
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 装饰模式的类图如下: 在装饰模式中的角色有: ● 抽象构件(Comp
2016-10-27 11:45:46
709
原创 spring @conditional注解的使用
@Conditional根据满足某一个条件创建一个特定的Bean。比如说当一个jar包在一个类路径下时,自动配置一个或多个Bean,或者只有某个Bean被创建时才会创建另一个Bean。Spring Boot中将大量使用到进行一些自动配置。以下示例根据不同操作系统作为条件,实现condition接口重写matches方法判断条件,若在windows下运行则输出列表命令dir,若在linux下则输
2016-10-24 10:24:41
934
原创 mysql表锁、行锁和页锁的解析
页级:引擎 BDB。 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许 行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。 页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折
2016-10-20 23:18:21
1569
1
转载 JVM内存模型
今天闲来无事来,看一下Java中的内存模型和垃圾回收机制的原理,关于这个方面的知识,网上已经有很多现成的资料可以供我们参考,但是知识还是比较杂的,在这部分知识点中有一本书不得不推荐:《深入理解Java虚拟机》,现在已经是第二版了。这本书就从头开始详细介绍了Java整个虚拟机的模型以及Java的类文件结构,加载机制等。这里大部分的知识点都是可以在这本书中找到的,当然我是主要还是借鉴这本书中的很多内容的
2016-10-20 11:37:45
344
原创 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
414
转载 java concurrent包简介
说一说java的concurrent包1-concurrent包简介前面一个系列的文章都在围绕hash展开,今天准备先说下concurrent包,这个系列可能会以使用场景说明为主,concurrent包本身的代码分析可能比较少; 我在这方面的实践经验较为有限,有错误欢迎批评指正 不过前一个系列并未结束,还有一些文章没有放出来,欢迎关注核桃博客 concurrent包是jdk1.5引入的重要的包,主
2016-10-20 11:15:11
571
转载 AQS的转载:经典http://www.cnblogs.com/jinspire/p/3172974.html
http://www.cnblogs.com/jinspire/p/3172974.html
2016-10-20 11:12:29
598
转载 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
371
原创 current保重的atomic解析
对于current中的automic应用,可以比较如下一段代码,他是线程安全的。通常的++操作会涉及到先get 再add的操作,是两个步骤的操作,所以在多线程操作的时候,会导致计数结果不准确。通常总数会小于我们期望的数值。而使用atomic类,在底层采用了cas的原子指令:(引用)CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许j
2016-10-20 10:39:25
348
原创 current包中countdownlatch解析
countdownlatch的功能是起了多个子线程,主线程等待子线程执行完毕后再去执行,具体的代码如下:package countdownlatch;import java.util.concurrent.CountDownLatch;public class CountdownLatchClass {private CountDownLatch latch = n
2016-10-20 10:06:43
662
原创 threadlocal源码解析
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 从线
2016-10-19 10:55:43
507
原创 悲观锁和乐观锁
1.悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系 统不会修改数据)。数据库锁机制:1 未提交读(read
2016-10-19 10:26:42
315
原创 java的synchronized简述
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁
2016-10-19 10:17:17
368
原创 分布式和集群的区别
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。例如:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoo
2016-10-17 10:33:05
262
原创 创业之我见
从我付出来快一年 。这一年里,收获颇多。同时自己也成长了不少。回顾工作历程。我付也算的上是一个比较不错的互联网支付公司了,成熟的团队,完备的管理制度,优秀的人才储备。虽然日益走下坡路,也是整个体制和大背景导致的。从创业的初期,筹划一年多,开始开发系统,到系统上线。这中间经历了很多,见证了很多。也在此过程中认识和结实了很多很好的朋友,和一帮做事情的小伙伴。到目前为止,即将离开这件创业公司
2016-10-14 11:32:23
817
原创 hashmap存储结构解析
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在java编程语言中,最基本的结构
2016-10-10 11:24:03
1029
原创 activemq-consumer示例
配置文件:queue1class="org.springframework.jms.listener.DefaultMessageListenerContainer">实现监听类:import javax.jms.JMSException;import javax.jms.M
2016-10-08 17:00:22
306
原创 activemq发送客户端(封装)
1、在pom中引入 cn.activemq.client activemqclient 1.02、添加配置文件xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
2016-09-30 14:54:47
1818
原创 activemq 对象的传输
JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。· StreamMessage -- Java原始值的数据流· MapMessage--一套名称-值对· TextMessage--一个字符串对象· ObjectMessage--一个序列化的 Java对象· BytesMessa
2016-09-29 18:00:12
3134
原创 activemq jdbc-master/slave集群搭建和客户端消费说明
1、下载activemq客户端至linux系统,可以定义两个目录,在一台机器或者两台机器上都行。举例:建立目录mq/activemq1和mq/activemq22、解压安装mq,tar -xvf .......tar.gz3、修改配置文件: /usr/mq/activemq2/apache-activemq-5.14.0/conf/active.xml文件和/usr/mq/
2016-09-29 17:38:13
2654
原创 activemq访问方式(failover master/slave)
5.1Failover使用格式 failover:(tcp://localhost:61616,tcp://localhost:61626)?randomize=false5.2 updateURIsURLupdateURIsURL,通过URL(或者本地路径)获取重连的url,这样做具有良好的扩展性,因为客户端
2016-09-29 17:23:36
4611
原创 activemq-all.jar包引入导致slf4j冲突的解决办法
采用原生的jar包在eclipse中。打开apache-activemq-5.8.0\lib目录 拷贝 activemq-broker-5.8.0.jar activemq-client-5.8.0.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar geronimo-jms_1.1_spec-1.1.1.jar slf4j-
2016-09-29 15:04:04
7930
1
原创 activemq客户端配置和使用
1.使用maven管理依赖包dependencies> dependency> groupId>junitgroupId> artifactId>junitartifactId> version>4.12version> scope>testscope> dependency> dependency> groupId>org.apache.activemqgrou
2016-09-29 15:01:55
6525
1
转载 activemq集群配置说明
ActiveMQ集群 ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要由两种:Master-Slave和Broker Cluster。1、Master-Slave Master-Slave方式中,只能是Master提供服务,Slave是实时地备份Master的数据,以保证消息的可靠性。当M
2016-09-28 17:23:50
836
原创 ActiveMQ启动时报锁定数据库的问题解决
原因是:activeMQ的broker在启动时会锁定数据库。我们每个人在调试时,自己的运行环境中就会运行一个broker,所以会出现争用锁的现象(如果只有一个人运行则不会出现这样的问题),报错如下:2012-06-27 15:12:32 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter INFO Database lock driv
2016-09-28 17:19:33
2050
原创 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼。下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了。RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由、负载均
2016-09-20 11:15:11
578
原创 安装mmseg出错 config.status: error: cannot find input file: src/Makefile.in
aclocallibtoolize --forceautomake --add-missingautoconfautoheadermake clean
2016-09-13 18:25:30
1551
原创 淘宝存储系统tair的安装
1. 简介 tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目, tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时
2016-09-13 17:03:33
1014
转载 linux安装automake
工具/原料autoconf 2.69CentOS 6.4valgrind 3.10.1automake 1.14安装autoconf1打开页面:http://ftp.gnu.org/gnu/autoconf下载autoconf-2.69.tar.gz或者输入命令:
2016-09-13 17:02:18
8148
原创 linux - centos下boost库的安装
之前用ubuntu都是apt-get install,centos没有这个工具,用yum装也差不多:yum install boost yum install boost-devel yum install boost-doc
2016-09-13 15:13:59
664
转载 分布式系统事务一致性解决方案
分布式系统事务一致性解决方案本文首发于InfoQ,版权所有,请勿转载!!!http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency开篇在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统
2016-09-09 12:29:38
15812
1
转载 微服务架构的基础框架选择:Spring Cloud还是Dubbo
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在
2016-09-04 15:20:38
1594
转载 linux查看端口被占用情况
今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用。使用命令:ps -aux | grep tomcat发现并没有8080端口的Tomcat进程。使用命令:netstat –apn查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name 发现8080端口被PID为9658的Java进
2016-08-30 10:01:53
692
ant远程上传并部署tomcat
2012-09-06
hessian源码修改,包含了协议的修改
2012-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人