随笔分类 -  java及框架

java classloader原理深究
摘要:前面已经写过一篇关于java classloader的拙文java classloader原理初探。时隔几年,再看一遍,觉得有些地方显得太过苍白,于是再来一篇:完成一个Java类之后,经过javac编译,会生成一个class文件,这个class文件中包含跟这个类相关的所有基本信息:属性字段,方法等... 阅读全文

posted @ 2014-04-13 17:38 eric_chen 阅读(932) 评论(0) 推荐(0) 编辑

Dive into Spring framework -- 了解基本原理(二)--设计模式-part1
摘要:比较巧,自己在接触设计模式的时候,也刚开始学习spring,但可惜的是,真的仅仅在学习“用”spring,每天都沉浸在会痛快的完成spring各种配置的快乐之中,但对成长无用。其实当初就清楚,spring框架中有大量设计模式,于是也下了代码来看,设计模式其实没那么简单,当初的学习也很皮毛,所以就没有发现spring中的金矿。现在动手,里面依然还是金矿,但不要偷懒,让它完全腐烂。[这是对自己的告诫] 开头上来就说到了spring跟设计模式,实际上,spring中的核心原则就是基于设计模式来构建的。这个时候继续祭出《敏捷软件开发》这本神书,结合里面比较全面的和具体的设计模式来大体讨论一下各种设计模 阅读全文

posted @ 2013-11-28 23:02 eric_chen 阅读(1182) 评论(0) 推荐(0) 编辑

Dive into Spring framework -- 了解基本原理(一)
摘要:在继续我们的分析之前,推荐各位静心来读一下>第四章,正如springBeanFactoryAPI 中描述的。这一章主要说明了设计原则,设计模式,异常处理,反射等各个方面。本来也是想着直接来分析代码,但我们应该知其然也要知其所以然,为了能加深理解Johnson创建框架的设计思路,就引入了这一部分。 从spring的核心概念IoC入手,IoC的主要含义到底是针对哪个部分来说明的?是在xml配置的对象之间的关系么?针对这个IoC,我们应该如何应用?还是应该看看spring到底是怎么应用的。 关于设计原则,比较推荐看看《敏捷软件开发》,这里面有最基本的设计原则的汇总,而expert书中都有不谋而 阅读全文

posted @ 2013-11-26 22:29 eric_chen 阅读(916) 评论(3) 推荐(0) 编辑

How to implement multiple constructor with different parameters in Scala
摘要:Using scala is just another road, and it just like we fall in love again, but there is some pain you will have to get, and sure we deserve that to achieve the goal we want.In Scala, there is kind of constructors named auxiliary contructor, which have the special properties:On the first line of the c 阅读全文

posted @ 2013-11-16 23:28 eric_chen 阅读(470) 评论(0) 推荐(0) 编辑

一致性hash演示
摘要:看到点关于一致性hash的说明,觉得挺有意思,就想体验一下。上代码看看,体会一下在一致性hash环境下的cache和获取。因为是小代码演示,没有很细致,包括hash函数就是用取余操作,但活生生的显示出来一致性hash环境下,增减服务器对hash分布的影响(关于这个演示,要靠手工尝试)。 1 package com.test.algorithms; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 import java.util.Set; 6 7 8 public class ConsistentHash... 阅读全文

posted @ 2013-06-27 22:56 eric_chen 阅读(898) 评论(0) 推荐(0) 编辑

搜索引擎lucene实现--二半吊子的论调之Document和Field
摘要:本来打算先写写analysis包,因为那个组件包是基础。但写着写着就觉得没有入口的说明,就跳到那一部分实在对不起自己和各位的理解。于是咱就先看看Document和Field,这两个用于索引和查询的数据结构。我们大多数人用过数据库,知道一个表里面的一行。如粗糙的下图所示:这个是关系型数据库的典型存储方式。我们在进行数据查询的时候,也是提供字段值或者是模式等条件。那么lucene作为一个全文检索的解决方案,从表面来看,也是类似于关系型数据库方式。它为我们提供了统一的数据索引接口(IndexWriter)和查询接口(IndexSearcher)。在我们这次要说明的Document和Field,我们也 阅读全文

posted @ 2012-11-25 15:59 eric_chen 阅读(5004) 评论(2) 推荐(1) 编辑

搜索引擎lucene实现--二半吊子的论调之体系结构
摘要:写这个东西就是两个目的,一是让自己头脑清醒,一是让别人把咱的头脑弄清醒。技术这个东西跟本能一个样,只要你愿意用成就本能的方式去学习技术,谁都可以成就自己。因为咱不是文科出身,工作了六年,也没有那些牛逼人士的韧力和魄力,曾经就想着能多写写技术博客,但总是没有坚持下去(深叹一口气,你可别像我这样。。)。前些日子又看了一下《康熙王朝》(陈道明演的),被里面的一句话(一言之虚,百患丛生; 一事之虚,遗害终生。)给击蒙了,于是重新想着坚持下去。刚好要跟同事分享lucene,那么也就多学,多看,多想,多写了。OK,言归正传,到底搜索引擎有多神秘?对我来说,lucene的出现,没有多少影响,因为当初我还在一 阅读全文

posted @ 2012-11-18 20:18 eric_chen 阅读(3328) 评论(2) 推荐(1) 编辑

《Effective Java》阅读笔记之对象创建及销毁
摘要:写在前面本文及后面的几篇笔记都是读《Effective Java》的随笔。内容里面有书里面重点的部分,所以大家别见怪就好。如果各位发现啥问题,希望能不吝赐教,虽然是自己的笔记,也希望能得到大家的指教。关于对象的创建,《Design patterns》里面有五种设计模式支撑,不能说设计模式就是最终导向,只能说是特定情况下的全局考量。那么在《Effective Java》(以下用EJ表示)里面的处理方式,可以跟这些设计模式相得益彰,因为GOF讲的是大局,而Bloch讲的是实践。必要时,两个方面都会谈谈。一、静态工厂方法优点:1.可以有更能说明具体作用的方法名(与构造函数相比) 从维护代码的角度讲, 阅读全文

posted @ 2011-08-11 14:45 eric_chen 阅读(2207) 评论(6) 推荐(0) 编辑

架构师,如何从梦想变成现实?
摘要:这个题目,不是标题党,也不是为了给出答案,而是自问,写出来一些看法,和自己对未来几个月的规划,当然更加希望同僚能多提意见或建议。很久之前,从大学毕业开始,自己就一直做着“成为一个架构师”的梦,并且也在磕磕碰碰中前进和提升。但到现在已经工作了5年,却也还是不如人意。从最开始做技术支持,到码工,到高级码工啥的,角色好像变了,但总是觉得有非常非常多的东西要学,要不断地历练。到现在再换了一个环境之后,心里真是更加清楚自己到底有几斤几两。不能全面否定自己的进取,应该说来,自己对架构师的角色越来越清晰吧。首先说说自己到底想成为哪个方面的架构师。因为一直从事跟web相关的工作,什么前端,后端的开发都做过,所 阅读全文

posted @ 2011-06-29 21:44 eric_chen 阅读(5179) 评论(43) 推荐(7) 编辑

java多线程之一小步
摘要:针对多线程的编程,首先要注意的就是线程安全问题,但是我们应该采取哪些措施来避免这些问题呢,看过java并发实践之后,真是有些恍然的感觉。1.首先要查看你所使用的对象所在的上下文,会不会多线程访问; 我们写的大部分程序都是过程性的,这也是为什么很多人在学java开发时,可以根本不考虑其面向对象的特质。同样的,我们每天写的代码也多数是在单线程下运行的,即便你或者他在写web代码。因为真正在多线程处理的是java容器,是你所使用的框架,真正到我们的写代码的那一层,跟多线程相关的已经很少很少。但实际coding时,还是有需要我们注意的地方。比如,你的确需要写一个servlet,这个时候就面临了多线程的 阅读全文

posted @ 2011-05-01 16:33 eric_chen 阅读(409) 评论(0) 推荐(0) 编辑

可扩展的java开发和部署架构
摘要:1.开发的组件化(分子项目进行开发); 2.业务的独立化(建立在1的基础之上,通过统一的服务总线定制相关业务,避免业务之间的相互依赖); 3.测试独立(提供单元测试和集成测试); 4.部署的组件化(建立在第一,二的基础之上,如果部署到服务器时,必须同时部署,未免依赖太重); 5.开发补丁的管理及维护。 就目前来看,开发的组件实现可以借助代码编译和管理工具,如maven,ant,ivy等,所以必须... 阅读全文

posted @ 2011-01-25 22:40 eric_chen 阅读(537) 评论(0) 推荐(0) 编辑

java classloader原理初探
摘要:ClassLoader是用来处理类加载的类,它管理着具体类的运行时上下文。1.ClassLoader存在的模块意义:1)从java的package定义出发: classloader是通过分层的关联方式来管理运行中使用的类,不同的classloader中管理的类是不相同的,或者即便两个类毫无二致(除了路径)也是不同的两个类,在进行强制转换时也会抛出ClassCastException。所以,通过classloader的限制,我们可以建立不同的package路径以区别不同的类(注意这里的“不同”是指,命名和实现完全一致,但是有不同的包路径。)。那么也是因为有特定的classloader,我们可以实 阅读全文

posted @ 2011-01-15 16:57 eric_chen 阅读(17515) 评论(1) 推荐(2) 编辑

命令模式、template method模式、工厂方法模式的比较
摘要:强烈推荐GOF的《设计模式》,不用看什么j2ee设计模式。GOF的书的确经典。看过之后,精神爽,身体棒,吃嘛嘛香!命令模式的类图,网上到处都有!一般包括:client,invoker,Command接口,具体的command实现,receiver。首先说明一下,命令模式的场景:实体解耦和时间解耦。嘛意思呢?就是命令发出者和接收者两个不互相依赖了,时间顺序上也是可以有间断的,即命令发出者不必在那里等着接收者,两者在时间上是分开的。举个小例子:国家(ivoker,发起人)发出扫黄打非的命令(封装了行动信息和指标)啦,各地警察叔叔们(接收者)就出来巡逻(干活)啦,专拣那个红灯区和一些洗浴中心下手。整 阅读全文

posted @ 2010-11-17 22:48 eric_chen 阅读(1032) 评论(0) 推荐(0) 编辑

svn的资源库及用户管理
摘要:目前我们使用svn管理用户时,主要从库,组,项目等方面来管理。首先,我们要有一个svn的管理员用户,我们是admin,对应在linux上也有一个svnadmin的操作系统用户。下面区分说明这两个用户,svnadmin是跟资源库存储相关的。因为要跟apache的访问对应,所以要修改apache中的httpd.conf文件中的user svnadmin #这是指让apache以svnadmin这个用户... 阅读全文

posted @ 2010-11-05 10:54 eric_chen 阅读(6444) 评论(0) 推荐(0) 编辑

linux环境下apache2与tomcat6的负载配置
摘要:同样是环境搭建,以前也配置过,但是通过jk或者jk2之类的东西,仿过来的。这段时间,因为svn的配置过程体验及用户和我们公司的要求,也来准备了一下负载的配置。希望能有些用处。配置过程从以下几个方面进行:1.服务器的准备: 用一台电脑(以下称为服务器一)做apache负载,另外一台(服务器二)做tomcat服务器。 初步设想,在服务器一上搭建apache及其相关配置,在服务器二上搭建多个(我测试了两... 阅读全文

posted @ 2010-10-22 10:29 eric_chen 阅读(509) 评论(0) 推荐(0) 编辑