自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

基于Redis实现分布式锁-Redisson使用及源码分析

在分布式场景下,有很多种情况都需要实现最终一致性。在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA事务(两阶段提交,数据源可分开),也可以借助消息中间件(消费者处理需要能幂等)。通过Observer模式来发布领域事件可以提供很好的高并发性能,并且事件存储也能追溯更小粒度的事件数据,使各个应用系统拥有...

2016-04-14 14:12:08 244

领域服务、领域事件

    综合前两篇总结,这篇对领域服务和领域事件做一个梳理。先注明一下,领域服务和应用服务。SOA服务,或者应用间的RPC调用,Restful接口,或者通过消息中间件进行系统间的交互的,都可以归类为应用服务。相较之下,领域服务不一定涉及到远程调用或者重量级事务操作。所以上下文集成也就涉及到,怎样的方式去划分限界上下文,怎么样设计才能尽量减少应用服务的耦合,以及应用服务对于本地模型的防腐。领...

2016-03-12 17:30:53 1514

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。  实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体...

2016-01-10 21:56:55 909

领域驱动设计整理——概念&架构

领域、子域、限界上下文DDD(Domain-Drive Design)的概念或者说业界的声音其实可以追溯到几十年前了。最近开始想要系统得整理一下DDD的一些东西。这一篇是一个简单的引子,也是mark一下自己接触到的概念和理解。 对于领域的概念其实很好理解,就如字面意思一样,比如出版书籍领域,广告设计领域。圈定了一定的范畴,并且在这个范畴内,所有团队成员对于某一概念的理解是一致的。比如...

2015-12-13 16:53:00 752

有种凌乱叫学杂了

         最近一段时间开始复习Objective-C,本来以为看过的东西复习起来很快的,但是发现基本上还是重新来一遍的感觉。比如,我想敲一个Objective-C的Decorator模式示例,然后发现无从下手。13年年初的时候,看完了objc基础教程那本书,然后开始继续学iOS5,也能拖拖拽拽写个小东西娱乐下自己。整个学习时间维持了3个月多,然后觉得自己已经了解了iOS开发,已经熟悉了...

2015-09-28 22:05:22 143

Docker 容器部署 Consul 集群

一、Consul 介绍         Consul 提供了分布式系统的服务发现和配置的解决方案。基于go语言实现。并且在git上开放了源码。consul还包括了分布式一致协议的实现,健康检查和管理UI。Docker 的简单介绍,可以参考前面一篇文章。配合Docker来做应用容器,用Consul 来做集群的服务发现和健康检查,并且还可以轻量级得做到水平和垂直可扩展。二、Consul...

2015-09-24 20:37:00 671

Vagrant中搭建Docker虚拟环境(上)-Mac

         Vagrant提供了可配置、可复用的虚拟开发和部署环境,对于开发人员来说,Vagrant可以帮你统一团队成员的开发环境。也可以提供一套一致的线上线下环境。vagrant 在mac上通过命令行工具可以管理统一的镜像(BOX)所以vagrant还需要依赖VirtualBox等提供系统(支持linux,windows,OS X等)环境。这篇文章主要介绍下个人在mac上的配置过程。后...

2015-09-18 20:48:58 293

原创 ASM系列八 利用TreeApi动态注入方法逻辑

 一、转换方法的字节码         利用Tree Api转化方法字节码,其实也就是对MethodNode对象的InsnList的操作。通过获取InsnList的迭代器,可以直接add 或者remove方法的指令。如果需要添加比较多的指令集,那么可以把指令集分开成不同的InsnList(临时的指令集对象)再将这些子集合并。具体的代码块如下:InsnList il = new I...

2015-08-28 19:14:08 584

重写(OverWrite)在JVM中的实现

        Java是解释执行的,包括动态链接的特性,都给解析或运行期间提供了很多灵活扩展的空间。面向对象语言的继承、封装和多态的特性,在JVM中是怎样进行编译、解析,以及通过字节码指令如何确定方法调用的版本是本文如下要探讨的主要内容,全文围绕一个多态的简单举例来看在JVM中是如何实现的。        先简单介绍几个概念。对于字节码执行模型及字节码指令集的相关概念可以参考之前的一篇介...

2015-07-29 19:56:17 447

ASM系列七 TreeApi Method组件和接口介绍

一、MethodNode概述          ASM的TreeApi 对于Method的转换、生成也提供了一系列的组件和接口。其功能主要基于前一章提到的MethodNode类。MethodNode中大多数属性和方法都和ClassNode类似,其中最主要的属性就是InsnList了。InsnList是一个双向链表对象,包含了存储方法的字节指令序。先来看下InsnList中的主要是属性...

2015-07-21 18:57:20 1012

ASM系列六 利用TreeApi 添加和移除类成员

    同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。 package asm.core;/** * Created by yunshen.ljy on 2015/6/8. */publ...

2015-07-15 19:54:07 258

ASM系列五 利用TreeApi 解析生成Class

   前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。         在介绍前,先要知道一点, Tree工程的接口基本可以完成大部分我们之前介绍的Core中的功能。但是在实际使用中更加便利,当...

2015-07-12 16:21:54 586

ASM系列四 利用Method 组件动态注入方法逻辑

        这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以通过继承MethodVisitor,来编写一个Method...

2015-07-03 09:20:16 847

ASM系列三 利用Methord组件动态生成方法字节码

 一、概述      ASM的CoreApi 中还提供了对class 中方法的生成和解析的组件。前面两篇着重介绍了ClassVisitor 组件的应用场景。ClassVisitor Api 中的visitMethod(int access, String name, String desc, String signature, String[] exceptions)方法返回了一个Meth...

2015-06-28 13:41:41 943

JVM StackMapTable 属性的作用及理解

       在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版本之后把栈图作为字节码文件中的强制部分。 本来...

2015-06-26 18:25:33 1384

Java 并发包之线程池和原子计数

对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。    这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁CountDownLatch...

2015-06-23 18:36:34 488

JVM 字节码指令对于栈帧数据操作举例

这一篇其实是对前面一篇《JVM字节码执行模型及字节码指令集》的一个延续和举例。结合例子看一下条件判定和无条件跳转指令对虚拟机栈的数据操作。     我们先来看一段代码例子。这里addEspresso()添加浓度方法会判断参数,如果参数<=1那么久抛出异常。package bytecode; /** * * Created by yunshen.ljy...

2015-06-21 21:04:52 324

JVM字节码执行模型及字节码指令集

    一个Java类的生命周期概括来说需要经过加载、验证、准备、解析以及初始化、使用及卸载的过程。这里不展开加载Class 的过程以及Class文件格式(后期会陆续探讨)。在执行过程中,JVM是如何把Class文件里的字节码转换成我们的虚拟机栈的操作指令,以及整个虚拟机栈的内部数据结构是怎样的,这篇文章后续会详细介绍,并且稍微扩展下JVM规范中的一些字节码指令集。    其实这篇文章的主...

2015-06-19 16:25:00 998

Cglib实现动态代理-解决大对象值传递问题

 整篇基于cglib的3.0 版本实现来介绍下Cglib的一种应用场景。Cglib的底层是调用ASM来实现动态链接的,所以性能方便会比Java原生的Proxy的性能提升很多。Spring框架的AOP也是基于Cglib来实现的,这里不继续扩展ASM框架实现。大家感兴趣的可以阅读cglib源码,并做进一步扩展。一、场景:通过Cglib的方法拦截器解放以下场景。相同对象的值拷贝,如果是个很大的...

2015-06-13 17:59:00 615

ASM系列二 利用Core API 迁移、添加及移除类成员

之前一篇简单介绍了一下ASM框架。这一篇继续对CoreApi进行扩展。这里还是继续对ClassWriter ,ClassReader和ClassVisitor的应用的扩展。前面一篇主要介绍的是ClassWriter和ClassReader单独应用的场景。这一篇把这两者作为producer(ClassReader)和consumer(ClassWriter)来结合起来介绍一下另外一些用途。一...

2015-06-13 17:32:00 215

ASM系列一 利用Core API 解析和生成字节码

   ASM是一个提供字节码解析和操作的框架。Cglib框架就是基于ASM框架实现的,被广泛应用的Hibernate,Spring就是基于Cglib 实现了AOP技术。 在说到AOP的Java实现,可能会优先想到java的Proxy api,通过invoke方法拦截处理相应的代码逻辑,但是proxy 是面向接口的,被代理的class的所有方法调用都会通过反射调用invoke 方法,...

2015-06-09 18:58:00 451

Flex & iBatis &Hibernate &Spring—师徒奶茶系统V1总结

昨晚只睡了两个小时来改进这个属于我们“下午茶”师徒群的同学们。主要是用Flex做前端,Java做后台。其实整个系统搭建起来很容易,因为Flex&Java应该说是我最熟悉的吧。为了快速和友好的交互,当然还是用这个。不过这次比较傻的是,前几天实现的用户列表的增删查改是用iBatis,主要原因是想基于以前一个简单的测试项目,前面几篇博文中有详细的介绍。可是,昨晚抽风又想用Hibernat...

2011-11-01 22:36:41 94

Flex&Java个人博客——序言

         昨天的论道麓山——蓝杰IT论坛,让我有很多感慨。今天发了一条微博“哪怕知道希望很渺茫~~人有的时候就是执拗般地坚持~~不计较原因,不在乎结果”。我很喜欢这样的自己,但有时候自己并不是这样的。总是说一些口不对心的话,做一些行不由衷的事。这一阵子看《犬夜叉》,感觉到,一个人想要保护另外一个人的时候会想让自己变得强大。这一点无论男女都是一样的吧。每次要出...

2011-05-28 12:33:31 95

寒假的唠叨

      年快过完了,寒假也快结束了。与以往不同的是,这次放假不是回学校而是直接去公司实习。现在寒假过了大半了,想唠叨唠叨……     刚放假的时候买了6本书,包括Maven,云计算,架构设计,经济管理,世界咖啡以及不可或缺的小说。每周会定时买CBNWeekly(第一财经周刊)翻翻看。书没有都看完,杂志倒是一页不差地阅读。毕竟是商学院的同学,还是要关注些专业相关的东西。而且想起来,大一的时候...

2011-02-07 12:09:20 109

原创 iBATIS&Spring合奏(五)--整合lucene搜索表字段内容

之所以加上lucene来建立搜索引擎,是因为其轻便简单以及快速。Lucene作为开源社区很好的建立搜索引擎的框架也给我们(Java程序员)提供了很友好的方式。这次介绍的也是简单的整合,对于Lucene的一些复杂特性还请大家仔细阅读文档以及书籍或求助Google以及源码。 其实这篇博客早就要写了,只是最近遇到了非常纠结的事情,那就是要考一门我完全不会的课——计量经济学。都是模...

2010-12-22 20:35:56 99

iBATIS&Spring合奏(四)--设计模式in iBATIS

现在总结一下iBATIS框架中用到的优美的设计模式。并不是强调设计模式有多强大或者iBATIS有多牛叉,只是在看源码的过程中的一些丝丝缕缕,觉得有很多值得学习的地方。按照不同层次的实现一点点分析和整理。以下的类图和序列图有画的不到位的地方请见谅,因为实在不很在行,用EA画图很痛苦…… 一、SQL Map配置解析 关于配置文件的解析,iBATIS运用了DOM解析...

2010-12-14 19:41:08 91

iBATIS&Spring合奏(三)--事务&动态SQL

刚看了个恐怖片,总算有点灵感,继续总结Spring和iBATIS的东东。本来想今天梳理下iBATIS源码阅读时总结的经典设计模式。但是现在思绪比较凌乱,留到下一次吧。 先说事务处理。iBATIS对于事务的支持比较基本的是基于JDBC的,当然也有JPA,EXTERNAL。这里就说说JDBC。其实看源码就知道,源码也只是对JDBC事务管理进行了轻量封装。核心处理在Transac...

2010-12-12 19:19:51 83

iBATIS&Spring合奏(二)--Flex前端融合

iBatis和Spring的进度依然如昨。回馈社区的时间到了,今天是Flex的时间。以前用Java+Flex做一般用LCDS的dataservice组件,其实就是偷懒。因为最近研究了下Spring+iBATIS,也是出于项目需要,决定勤奋一回,用LCDS的RPC服务吧。RPC在FlexLCDS中支持三种服务——WebService,HttpService以及本文用的RemotingObje...

2010-12-11 22:32:34 120

iBATIS&Spring合奏(一)--DAO

iBATIS,大家都用的比喻就是什么半自动步枪之类的,没错。一个框架是做神马的相信靠谱点的程序猿们都会先去Google,然后看看官方文档之类的,再在网上找点代码copy下然后运行看看。随后需要深入研究了,需要性能优化了,再去深入研究和体会,牛者自己写个差不多的框架用起来还爽些。这合奏系列文章就是提供给刚刚接受iBATIS框架,想和Spring放在一起用的猿类们的。也是觉得过几阵子不用它自己...

2010-12-05 16:02:56 77

Spring AOP 织入初探--通过架构看实现

        最近静下心来回归技术书籍,一方面准备SCJP,一方面想把一些框架好好研究一下,倒不是应用,只是觉得以前颇少关注这些东西的实现,而现在越来越觉得,好的框架的设计思想很值得学习,而且对于应用方面也会有质的提升。于是就先从Spring入手吧。       IOC在此就不谈了,懂得动态代理的童鞋都知道就是那么回事,再加点反射机制。AOP并不是Spring的专利,但是Spring提供的A...

2010-11-30 12:43:39 125

大学这几年

        最近和一些学弟学妹做交流,总能感受到他们对于知识的渴望以及对于编程的好奇心。对于一个即将毕业的本科生来说,感到很欣慰的是,我们商学院的学生也有一腔热情,去开辟自己的兴趣,去挑战技术。      对于很多学弟学妹们会提及的问题,我就在此做个简单的总结。当然也只是简单的参考来提供。自己并没有做出什么很不得了的事情,但是我觉得我们要纵向比较,今天的我比昨天的我进步了就是一种成长和成功...

2010-11-11 23:44:36 120

读《SaaS架构设计》一书有感

        记得在淘宝的三面时面试官提到了SaaS,我当时是说不了解。回到长沙后整理了一些要去了解和学习的东西。还好在图书馆摸索到了《SaaS架构设计》一书。都是阿里巴巴架构师或专家所著,里面把SaaS的架构设计,发展变化以很形象生动的文字表现出来,而且还分析了业界几个知名的应用,给了我很多启发和思考。觉得书看过了基本也就留下些印象,不用就会难以真正消化,但是对于SaaS,应用暂时还是不可能,...

2010-11-07 18:02:15 1326

蛋糕求职记--小时候淘气,长大了淘宝

    这篇蛋糕求职记记录了我应聘到淘宝软件公司的过程以及点滴收获。拿出来和大家分享。    到武汉应聘确实是件很突然的事情。虽然早就决定去武汉尝试下淘宝和支付宝(对阿里的偏好始于大三)。   10月10号到武汉,晚上再加上大雨,再加上迷糊的计程车司机把我和另外一名一起来应聘的同学带到了武大校园里面……武大真的很大,兜兜转转才找到一个可以住的旅馆。第二天就换到武大正门对着的街道里的旅馆。可...

2010-10-19 00:01:50 146

简单FlexLCDS环境搭建以及示例

      Flex的LCDS服务可以支持的主要三种服务有RPC,messaging,DataManagement。具体都是干嘛的,具体不作介绍了,简单说说FLEX和LCDS的环境搭建。      1>安装好插件在eclipse里面(具体可以google)     2>在新的工作平台中新建一个Flex web项目,在这里项目名称是Dove,这里注意服务器要选择lcds,接下来就如图...

2010-08-30 21:49:10 118

Agile系统分析设计报告

         这几日终于在项目开发完工之后把总结写了一下。用FlexLCDS的DataService-HibernateAssembler开发还是头一次吧。今天算是一个阶段过去了。接下来就是暑期的实习,株洲的实习和三一的实习,有时间也要把C的算法数据结构好好复习一下,感觉很久没有静下来看书的感觉了。整日开着电脑,接下来这实习前的最后一周打算看看书,什么书都好,让自己静一静。      我把...

2010-06-14 23:49:16 191

Flex(RIA)也可以做到企业级开发

       如果把Flex单纯地看做是做界面的那就真的只看到了佛山一角了。Flex做出的界面不仅是好看而是简洁。我认为用Flex做企业级开发的话要追求一种简洁,在企业里一般都是用内网,所以flex的速度不是问题。而且与C/S相比访问浏览器还是快些吧。     前几天一直为项目里报的错而烦恼,部署到服务器上刚开始还是可以访问,登录,美欧任何问题的,过了一会就会报错,看了下错误信息,google...

2010-06-09 09:36:16 120

Flex LCDS 公司主页收工总结

     Agile的公司主页总算还是在近两天紧张的时间里做完了。   因为添加了Transition等特效所以实际的操作效果是比较有趣的。新闻查询是按照新闻的发布时间来进行查询的。      可以说这个项目让我收获了很多,很多模块,很多表之间的逻辑连接,很多操作的思考……进步也是不知不觉中进行的吧。由于Flex DataService的实时性所以不仅仅可以看到友好的客户端界面(还是觉得自...

2010-06-05 18:12:19 55

Flex LCDS的一个简单应用--AgileShopping&Management项目小结

Flex 接触了四个月有余,前面的时间一直在做准备工作。五月初的时候决定开始动工,用felx尝试一下Web企业级应用开发。之前开始接触Flex技术也是处于一种巧合,后来不断看到网络上关于集中RIA技术优缺点的一些争议。其实没有必要比较,需要的时候学好、用好就可以了,很多东西都是在慢慢的积累,一点点进步吧。     项目驱动其实才是王道,之前看的书少说也有5,6本,只是其中基本只做工具书来参考查询...

2010-06-01 19:52:30 101

原创 TL之StringBuilder构建字符串

我们都知道怎样用String去构建字符串,但常常也会被一些细节困扰。由于Java语言给我们带来的很多方便,很多时候程序员也便渐渐不去考虑一些效率问题了。这远远不像曾经学C或C++的时候纠结算法,效率的抓狂年代。 最近开始下定决心仔细学习下Java基础知识部分,就把一些觉得比较容易被大家忽视,也同样是很重要的(只要你认为重要就好)知识点拿出来和大家资源共享一下。大多数是在《Core ...

2009-11-13 18:03:45 107

空空如也

空空如也

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

TA关注的人

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