Search

  • Meta

  • Categories

    Recent Posts

    Archives

    Recent Comments

    13

    java的静态与动态代理

    即将学习框架所以算是比较认真的理解了一番代理并整理了下下。

    代理模式是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用。 所以代理可以作函数执行前的拦截器,代理执行原对象方法的前后可以外加一些东西,典型应用:日志记录,在一 个方法执行成功或失败的前后都可以记录。

     Part I.静态代理

    首先我们看静态代理的实现:定义接口:UserManager 抽象角色

    package info.vzless.proxy;
    public interface UserManager {
        //添加用户
        public void addUser(String username, String password);
        //修改用户
        public void modify(String userId, String username, String password);
    }

    真实角色UserManager接口的实现

    package info.vzless.proxy;
    public class UserManagerImpl implements UserManager {
    	public void addUser(String username, String password) {
    		//System.out.println("start--->>addUser() - username=" + username);
    		try {
    			//调用dao.......
    			System.out.println("UserManagerImpl.addUser()");
    			//System.out.println("end--->>addUser() ");
    		}catch(Exception e) {
    			e.printStackTrace();
    			throw new java.lang.RuntimeException();
    			//System.err.println("error--->>addUser()");
    		}
    	}
     
    	public void modify(String userId, String username, String password){
    		try {
    				//调用dao.......
    				System.out.println("UserManagerImpl.modify()");
     
    			}catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

    具体的客户端调用:

    package info.vzless.proxy;
    public class Client {
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		//UserManager userManager = new UserManagerImpl();
    		UserManager userManager = new UserManagerImplProxy(new UserManagerImpl());
    		userManager.addUser("张三", "123");
    	}
    }

    后来可能因为业务需要,我们需要添加日志功能,好的,我们最笨的做法就是如UserManager接口的实现UserManagerImpl的addUser()方法中的注释部分一样,在每个方法的调用前后添加代码。软件开发有一个开闭原则(OCP)就是说对扩展开放,对修改关闭。所以我们不应该对原来的代码进行修改,因为修改后我们还要对原来的代 码改变进行测试,可谓劳民伤财。现在我们来用静态代理解决(仅对addUser方法举例说明) more…

    08

    在google reader里面阅读全文

    一些博主为了点击量,rss设置为不是全文输出,就要从gr里面转到原始页面才好。情有可原,而且我也喜欢去别人的blog上留点言,所以也没什么。只是有时可能懒,所以不想跳来跳去。

    想在google阅读全文是因为,因为一位博主的blog貌似被墙了,直接无法访问。我本想借助gr可以穿墙的功能,但没想博主没全文输出,所以才弄的。

    环境:firefox 3.0

    准备脚本:http://userscripts.org/scripts/review/9455,保存为 .js 文件

    步骤

    1.添加greasemonkey扩展(在ff里面直接搜就可以)

    2.在工具-greasemonkey-新建用户脚本。输入名字,空间,描述等信息,并输入你想要应用待安装脚本的网址

    此处为googlereader所用脚本所以应用到 http://www.google.com/reader/view/

    3.确认,选择保存的js文件

    就可以了,效果如下,看到preview按钮了吧?


    想要编辑脚本,在工具-greasemonkey-管理用户脚本。

    想要编辑时,点击编辑即可编辑选定的js文件,若找不到编辑器,手工指定一个如: notepad等文本编辑器即可

    ps:结果,全文输出Preview有了 ,但毕竟不是通过google,而只是把原始网页嵌入到google reader里面,还是直接访问 穿墙功能还是没有,白忙活了,不过以后读不需要穿墙的文章方便了

    ==============

    最近很忙也很迷茫,这blog都没时间打理了,任务没完成所以就没时间整理了,等等吧,有点可写的写点算复习吧

    31

    秋天来了

    转眼来半个月了,最近一休息就闷,因为不上课就不知道干嘛了。 今天,又休息,恰好秋天一下子来了,好久没感受北方的秋天了,无奈学校四季不分。三年啊!让我过了夏天就冬天,过了冬天就夏天的三年,最后一年重新感受秋,爽!秋天来了,凉!北京的天终于清了,真蓝,前些天起床看到的都是昏沉沉的天,怪不得电视上连鸟窝都看不清,还以为污染真那么严重(其实也不轻,站在路边全是尾气味)
    这辈子最恨的就是中午这会儿,困!想睡又不敢睡太久,所以每次睡前就想着啥时候得醒,感觉精神分裂了,其实只要让我睡着你拿个棍子马上把握楞醒就不会困,只要让我睡着一分钟醒来 倍儿精神! 所以干脆啥也不想,还真睡着了。醒来,这个下午就好好休息吧,听听久违的广播,听到CNR Fresh Radio(天天新鲜 的想像,远近高低东南西北可以不一样;天天新鲜 的能量,你的生活 从此不一样),听到生活便签儿 好玩!那天咱也凑凑热闹
    more…

    29

    hashcode()与equals()调用顺序问题

    Object
    hashCode()
    public int hashCode()返回该对象的哈希码值。
    hashCode 的常规协定是:

    1>对同一对象(信息不变前提下)多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。
    2>同一类两次执行可返回不同的hashcode
    3>如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
    4>如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不要求一定生成不同的整数结果。

    注意第四点:不等的两对象可以返回同一hashcode
    hashCode唯一的作用就是为支持数据结构中的哈希表结构而存在的,只有用到集合框架的 Hashtable、HashMap、HashSet的时候,才需要重载hashCode()方法
    就拿困惑我的HashMap开杀吧
    首先定义
    Map m1 = new HashMap();

    m1.put(new Name(“f1″),”aaa”);

    m1.put(new Name(“f2″),”bbb”);

    m1.put(new Name(“f1″),”bbb”);

    hashmap通过键值索引,即put(k,v)中的k来判断重复与否,决定新添加的元素是否添加或覆盖
    首先解压jdk下的src包观察下源码
    more…

    23

    三不眨眼

    =======这张pp不错=====

    f-app

    今日上课,张老师开始献给大家那以前大家都见过的关于“挣多少钱才够花的”问题,接着开了会儿玩笑,提及花钱之“三不眨眼”,觉得大家也应谨记之。虽不及老马幽默,还是有乐子的。

    何谓三不眨眼?为父母花钱不眨眼;为铁哥们花钱不眨眼;为脖子上的部分投资不眨眼——大脑投资(提及暴发户大多为下半身花钱不眨眼,爆笑);

    =============分割线=============

    more…