自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 问答 (4)
  • 收藏
  • 关注

原创 将博客搬至优快云_http://blog.youkuaiyun.com/surlymo

RT

2016-02-03 15:19:04 180

原创 博客迁移。请移步http://surlymo.github.io/

RT

2014-12-10 00:36:25 179

【大型网站技术架构笔记】(一)演化过程

开篇明义:【大型网站技术架构笔记】系列是阅读《大型网站技术架构核心原理与实践》一书的一些笔记,记录了原书的一些重要内容以及我的个人理解。其中很多内容网上都能找得到。其实整本书,我最赞同的是作者阐述的网站架构的价值观——“业务成就技术,而不是相反”。在没有业务场景的时候就一味追逐架构,为技术而技术,或者一上来就想要设计出一个可以适用所有场景的解决方案,是不理智的。我们有的时候可能会陷入技术的...

2014-09-21 20:57:13 268

JVM学习笔记(一)

1、JDK和JRE的区别JDK是开发库,而JRE只是运行环境。JRE没有编译器,也没有JAVA API里面非JAVASE API的部分等。eclipse之所以用jre也能运行,是因为IDE内部集成了编译器。2、运行时数据区域(1)程序计数器(program counter register)    存储字节码指令的地址。如果是java方法,则记录对应的地址,如果是native方法,则为undef...

2014-09-19 21:51:48 120

分布式锁的三种实现方式

一、zookeeper1、实现原理:基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的...

2014-06-19 18:04:53 697

memcached限制以及与reids的比较

一、memcached限制在分布式企业级应用中,memcached被广泛使用。但是关于它自身的一些限制需要我们了解:1、过期时间memcached的缓存策略为:失效时间 + LRU(最近最少使用)。其过期时间设置上限阈值为30天,若超过30天后,将获取不到存储的数据。2、数据稳定性memcached需要保证集群的内存空间足够大,否则内存满了之后,会采用LRU置换算法,将部分数据清除,加上其...

2014-06-19 14:26:36 123

单测中隔离每个case对DB数据操作

在公司项目中对单测框架做升级的时候,引入了h2数据库,同时希望每个case在访问h2做读写操作之后,不会影响下一个case对h2的数据访问。 1、最先想到的肯定是dbunit和unitils,但经过调研,发现和现有单测框架存在测试入口不一致、构造数据过程繁琐、xml导入的方式或者xsl的方式相比于SQL脚本来说更加麻烦等问题,所以就否了。 2、其次想到的是采用事务管理,spri...

2014-03-08 20:07:31 188

rabbitmq学习笔记

前一阵子写SEDA异步框架的时候,使用了rabbitmq作为分布式消息队列(见前文),把一些学习官网教程的笔记简单备忘。示例都来自官网 Part 2 Work Queues 1、round-robin dispatchering  缺陷:存在不能准确负载均衡的弊端2、fair dispatch  --> 针对管道采用channel.basicQos(pref...

2014-01-26 15:15:03 110

原创 格式化代码、风格检查、代码漏洞检查以及UT覆盖率检查

    在敏捷开发中,随着文档地位不断被削弱,此时代码的可读性和质量往往成为直接决定项目是否健壮可维护的关键。这就要求我们的代码具有良好的风格(包括注释、命名等)、代码格式标准、程序没有非法调用和低级bug,以及用以对功能进行解释的单元测试能够尽可能多地覆盖核心功能。如果每次我们都手动去依次检查这些点是否达标,那持续集成将变得无比缓慢。更遑论持续交付了。    所以在持续集成(CI)的过程...

2014-01-26 13:21:15 550

原创 【SEDA异步框架】【四】异步框架总体设计与实现

基于SEDA的异步框架设计与实现四、异步框架总体设计与实现 1、框架中的stage理想结构       前文提到,基于SEDA的异步框架,一个stage的理想结构描述如下:             在这个框架的设想中,一个stage一般需要有如下几个组件:       1、D-MQ:分布式消息中间件。用做事件队列,以进行消息的传递。       2、Local-Qu...

2014-01-13 11:43:17 256

【SEDA异步框架】【三】异步框架技术选型

基于SEDA的异步框架设计与实现三、异步框架技术选型       在这次实现的SEDA异步框架中,采用的基础架构原型如下:        采用了spring+quartz+fastjson+rabbitmq来实现。和传统SEDA架构区别比较大的地方在于:        1、采用分布式mq(使用了rabbitmq)而不是blockingqueue。如此既可以支持以后可能进行的分布...

2014-01-09 15:18:27 209

【SEDA异步框架】【二】为什么使用SEDA

基于SEDA的异步框架设计与实现   二、为什么使用SEDA        目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型。但是这两个模型都不足以解决这个问题。我们来首先看一下这两种编程模型。 1、多线程并发模型           多线程并发模型是目前最普遍的服务器编程模型,该模型的架构如下图所示:        该模型针对...

2014-01-08 21:17:26 242

【SEDA异步框架】【一】SEDA国内外研究现状

 基于SEDA的异步框架设计与实现 一、SEDA国内外研究现状1、SEDA架构的起源和特点    当前最流行的互联网服务器模型基本都是基于多线程/进程并发服务模型。然而当线程数目增加到一定值后,系统性能会下降,这就限制了系统支持高并发请求的能力。这种缺陷是多线程/进程本身的架构造成的。加州大学伯克利分校的Matt Welsh提出了一种新的服务器软件架构SEDA。SEDA是Sta...

2014-01-08 20:58:45 411

在linux环境中安装rabbitmq出现的错误

安装了erl之后,在将rabbitmq搭建到linux服务器的时候,根据在windows搭建的经验,本以为可以几下搞定,结果启动不断地报错误(plugins启用了web管理界面),到google上找了一圈也没看到合理的解答,而其错误log为erlang的crash.dump文件,阅读起来太过困难。后来才开始将怀疑点集中在内核、erlang以及rabbitmq的版本问题上。在更换内核到新版本...

2014-01-03 15:46:45 370

Spring依赖配置化管理

图省事在开发新系统的时候把老工程拿来改造,由于老工程有不少版本不一致的spring组件依赖,导致在加入新spring依赖的时候,各种jar包冲突,什么接口不能被初始化,什么找不到方法等等的。比如[code="java"]java.lang.NoSuchMethodError: org.springframework.context.support.AbstractRefreshable...

2013-12-30 15:11:02 153

Quartz框架使用时候异常原因记录

在公司做的项目所搭建框架中需要使用定时器功能,但是对于Quartz需要配置的一大坨配置不感冒,采用配置则无法很好与框架耦合。于是参阅同事代码采取了非配置的写法。有几个需要注意的:1、Job不能为内部类,否则无法初始化2、保证spring升级到新版本。如果使用老版本比如3.0.5,则会出现如下异常:[code="java"]java.lang.IncompatibleClassC...

2013-12-26 23:27:02 832

原创 一致性哈希原理与实现

实现集群软负载均衡时候可以使用。实现感觉有点类似zookeeper关于共享锁和主从选择的算法。都是通过有序且唯一的节点来实现的。相关资料:一致性哈希原理1、http://blog.youkuaiyun.com/sparkliang/article/details/5279393一致性哈希的JAVA实现(hash采用了murmurhash算法)2、http://www.blogj...

2013-12-20 15:25:57 121

linux安装mysql客户端问题总结

在linux上安装mysql,直接从测试机上scp过来的mysql目录,出了一些问题,备忘一下出现的问题和解决方案:1、发现找不到libmysqlclient.so.15 libmysqlclient.so.15.0.0解决方案:在你的.bash_profile文件中加入[code="java"]export LD_LIBRARY_PATH="xxxx/mysql/l...

2013-08-13 19:10:25 151

原创 Hibernate使用问题记录

复习hibernate的时候老混淆了@joincolumn的用法。mark一下。原文地址http://blog.youkuaiyun.com/angryant/article/details/5495810@ManyToOne中是在本类对应的数据库表中生成例如[code="java"]@Entity @Table(name="score") public class S...

2012-09-10 15:16:51 96

ThreadPoolExecutor和CyclicBarrier配合使用可能带来的隐患

今天是很蛋疼的一天,排查一个bug排查了4个多小时。情形简化之后大概是这样的:我使用了spring的ThreadPoolTaskExecutor来进行并发时候的异步处理。并且给任务Runnable加上了CyclicBarrier,以达到让所有线程处理完之后再进行主线程的下一步操作的目的。其中executor的配置如下:[code="java"] ...

2012-07-21 04:04:47 733

用listener和beanfactoryaware实现bean的动态装载

首先,写一个类,继承Beanfactoryaware[code="java"]public class SpringBeanAware implements BeanFactoryAware { public static BeanFactory beanFactory; public void setBeanFactory(BeanFactory bean...

2012-07-18 03:46:21 181

备忘使用spring-data-redis中的redistemplate的一个大坑

在项目开发过程中,想要进行redis的并发控制,这时候,想当然地使用了spring-data-redis库中template里面提供的multi()和exec()方法,但是蛋疼地发现,使用了之后,就出现了如下异常:[code="java"]org.springframework.dao.InvalidDataAccessApiUsageException: ERR EXEC without...

2012-07-16 22:39:04 1046

原创 备忘启动jetty后log中不断交替出现Connector vm://localhost Started/Stopped

启动jetty后log中不断交替出现Connector vm://localhost Started和Connector vm://localhost Stopped,这是activemq引发的问题。问题的原因是在默认情况下,activemq只有当topic/queue有数据时候才会保持它在内存中的存在。所以当队列或者主题中没有数据时,activemq将不断进行启动和停止的操作。要...

2012-07-14 03:22:09 1080

原创 备忘Document root element "beans",must match DOCTYPE root "null"

原因在网上一搜一大堆,比如这篇http://seenow.blog.hexun.com/19253270_d.html。转帖如下:遇到一个新问题,ssh项目部署时遇到Document root element "beans", must match DOCTYPE root "null".的错误提示,网上很多人说要把applicationContex.xml文件中加上如下第...

2012-07-14 02:44:02 239

原创 备忘找不到com.sun.xml.internal.messaging.saaj.util包

参考文献http://maven.40175.n5.nabble.com/Why-can-t-Maven-find-com-sun-xml-internal-messaging-saaj-util-ByteOutputStream-class-td107361.html

2012-07-13 00:47:30 1943

原创 备忘ClassNotFoundException: javax.interceptor.InvocationContext

在整合好spring-mvc3、maven、以及mybatis之后,启动jetty7.0.pre5时,发现了如下错误:ClassNotFoundException: javax.interceptor.InvocationContext从网上查了很久,花了很多时间,最后才找出来解决办法:更换jetty插件版本:[code="java"] org.mortbay.jetty...

2012-07-10 15:58:24 156

原创 JAVA代理与反射学习笔记(一)

这几天,为了工作,重新学习了一下InvocationHandler以及Proxy。JAVA的代理和反射在公司的框架搭建、service处理以及RPC调用等地方都能看到他们的身影。因而越发感觉必须要熟练掌握他们的原理和使用方法才行。废话不多说了,切入正题 做了一个简单的demo。Car是一个接口,Jeep是Car的实现类。[code="java"]package bo;...

2012-05-26 16:21:23 94

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除