Policy Analysis
项目的框架:Mysql和Derby做数据的存储,FreeMarker做web页面表单的验证,Guava缓存器做policy的缓存,groovy让用户扩展验证逻辑
项目的难点:
下载任务并发的处理,日志的分发,并行处理
遇到的问题:因为一个用户一天日志下载的时间比较长,需要高效的划分下载的任务。将用户的日志按照天下载,那样已经下载的日志就可以不用重新下载。涉及到对同个用户同时分析时并行下载日志的问题。如线程1对用户A分析1-2的日志,线程2对用户A分析2-3号的日志。则将下载的任务分为1,2,3三个任务,线程1需要等待1,2任务完成。线程2需要等待2,3任务完成。
日志的分发:engine负责获得日志的key,并且按照key获得具体的work,将日志加到work的mailbox中,然后submit work
项目的优化:优化了下载任务
基础知识补习:
1. 数据库的操作
创建可以ConnectionFactory 获得相应DB的connection对象,(connection对象一般由ConnectionPool创建并缓存)。调用Connection的prepareStatement ()函数创建PrepareStatment,然后设置参数,如果是查询操作的话,会返回一个result set,将result set转换成相应的对象
2.Guava缓存器http://blog.csdn.net/desilting/article/details/11768773
自动载入键值至缓存;
当缓存器溢出时,采用最近最少使用原则进行替换。
过期规则可基于最后读写时间。
设置键值引用级别。
元素移出通知。
缓存访问统计。
3.FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出http://baike.baidu.com/view/1278430.htm?fr=aladdin
能够生成各种文本:HTML、XML、RTF、Java源代码等等。
易于嵌入到产品中:轻量级;不需要Servlet环境,不需要部署tomcat。
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等。
可以按所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器
4.Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。
SATF
项目的框架:Cassandra做数据的存储,用HttpServer 启动了一个server处理http请求,用Cucumber做模板
项目的难点:
需要修改cucumber源代码支持test case的并行处理
项目的优化:引入了Cucumber,开发人员将每步的代码逻辑实现,并设置一句自然语言作为代码的映射,QA只要用自然语言表达每个case就可以高效扩展
基础知识补习:
1.Cucumber http://baike.baidu.com/view/1215750.htm?fr=aladdin
是一个能够理解用普通语言描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具
2.Cassandra http://baike.baidu.com/view/1350234.htm?fr=aladdin
是一套开源分布式NoSQL数据库系统
OTM
项目的难点:快速的迁移数据,MySQL schema和index的设置
Communications link failurehttp://frankfan915.iteye.com/admin/blogs/1672465
项目的优化:1. 用truncate代替delete
2.合理设置numberOfBindRowsAllocated,节省空间
3.关闭Mysql的 log,delete index