第一周总结

第一周的工作主要是通读源码,了解相关技术

Netty

根据张老师给定的Netty文档,自己动手跟着例子跑了下程序,了解了Netty的机制,有助于以后的工作。

增加删除指定版本功能

由于项目需求,在录制版本功能中需要有删除指定版本的功能,所以在原来代码的基础中,修改DataIndexMapper.java中         public voiddeleteDateIndexByID(int Id);

相应地在它的xml文件中也加入

在Storage.java中增加 public void deleteRecordDataByID(intid);                 

相应地在FileStorage.java中实现这个方法

在实现这个方法时,删除指定版本,那么它以后的版本的offset就需要改变,所以我在RequestResponseBundle中加入一个计算对象大小的方法,这样的话就有利于改变之后版本的offset。

在计算对象大小时,因为它是继承了Serializable接口,所以可以根据一些机制来计算。详见public Long calcSize(java.io.Serializableo)

 

对于这个功能,在数据库中实现改变比较容易

难点在于修改data文件,因为data文件中记录的RequestResponseBundle集。所以我的方法是先把他们全readObject,放到一个List中,然后把data文件删除,再writeObject,这里的话只write非当前dataid的RequestResponseBundle

 

自己做了个单元测试(由于现在没有http协议,所以签名是自己弄的)

package com.baidu.terminator.test;


import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.baidu.terminator.manager.bo.Link;
import com.baidu.terminator.manager.common.Config;
import com.baidu.terminator.manager.common.SpringInit;
import com.baidu.terminator.manager.service.LinkControlService;
import com.baidu.terminator.manager.service.LinkService;
import com.baidu.terminator.plugin.signer.algorithm.MD5;
import com.baidu.terminator.storage.RequestResponseBundle;
import com.baidu.terminator.storage.Storage;
import com.baidu.terminator.storage.StorageFactory;

public class AppTest {
	private static final Object String = null;
	private Logger logger;
	@Test
	public void test() {
		
	//	List<Link> link=new ArrayList<Link>();
		ApplicationContext ac=new ClassPathXmlApplicationContext("conf/applicationContext.xml");

		SpringInit.setApplicationContext(ac);
		LinkControlService linkControlService = (LinkControlService) ac
				.getBean("linkControlService");		

//		linkControlService.stopServer(1);
		 LinkService linkService= (LinkService) ac.getBean("linkService");
		//System.out.println(linkControlService.getLink(1));
		Link link = linkService.getLinkById(2);
//		System.out.println(link.getRequestSigner());
		Storage st=StorageFactory.getStorage(link);
		
		
//		for(int i=0;i<4;i++){
//		linkControlService.startServer(2);	
//		String req = new String("req");
//		String res = new String("res");
//		RequestResponseBundle rr=new RequestResponseBundle(req, res);
//		MD5 md5 = new MD5();
//		st.putRecordData(md5.getMD5ofStr("123".toString()),rr);
//		}
		
//		st.deleteRecordDataByID(63);
//		st.deleteRecordData();
		
		
		RequestResponseBundle rs=new RequestResponseBundle();
		rs=(RequestResponseBundle)(st.getbyID(61));System.out.println(rs);
		rs=(RequestResponseBundle)(st.getbyID(62));System.out.println(rs);
		rs=(RequestResponseBundle)(st.getbyID(64));System.out.println(rs);

		

		
//		
		
	}

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值