现在总算把日志管理的系统做的差不多了,这个项目中学到了很多的东西,而且这些东西中很多都是我之前都很想学的。现在对它们进行总结下:
1、接到的问题是log日志很多,这些日志如何存储,然后要以一个什么方式将其展现出来。
拿到这个问题的时候还真不知道该怎么入手。我同事指点说既然是日志文件,而且日志文件并不是xml格式的,而且它打印出来的格式也是很好找规律的,所以必须使用到正则表达式。
正则表达式,天,一直是我所畏惧的,不过现在还好,发现它其实没有想象中的那么可怕。下面贴一个我写的正则表达式去匹配日志文件中的一行数据:
String rex1="(([0-9]{4}-[0-9]{2}-[0-9]{2})\\s[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})\\s+(INFO\\s.*)" +
"uid\\s:\\s(.*),online_time\\s:\\s(.*)?$";
2、数据要以一个什么方式呈现,参照了网上的例子,发现数据使用highchart呈现还是很有优势的,下面贴一个highchart的代码:
jQuery(function() { //X轴上的值 var datesInTwoDate = "<%=datesStringInTwoDate%>".split(","); // alert(datesInTwoDate); var datesInTwoDate_ = []; for(var i=0;i<datesInTwoDate.length;i++){ datesInTwoDate_.push(datesInTwoDate[i]); } //X轴上的间距 var xAxisStep_="<%=xAxisStep%>"; //获取y轴上的数据 var yData = "<%=yAxisDataString%>".split(","); var yData_= []; for(var i=0;i<yData.length;i++){ yData_.push(parseInt(yData[i])); } var options = { chart: {"defaultSeriesType":"line","animation":false,"renderTo":"daily-newUser-chart"}, title: {"text":"新增用户按天分布"}, legend: {"enabled":false}, xAxis: {"categories":datesInTwoDate_, "labels":{"step":xAxisStep_,"align":"right","rotation":-90}}, yAxis: {"title":"","tickPixelInterval":50,"min":0}, tooltip: {"enabled":true}, credits: {"enabled":false}, plotOptions: {"area":{"stacking":null}}, series: [{"name":"每日新增用户","data":yData_}], subtitle: {} }; // 2. Add callbacks (non-JSON compliant) options.tooltip.formatter = function() { return this.series.name + this.x +': '+ this.y +'个';}; // 3. Build the chart new Highcharts.Chart(options); });
上面的代码纠结了蛮久的,因为我之前不知道怎么把java中的代码用到js中,还有就是js中数组一定要使用push方法进行插入。
上面2点是给我印象比较深刻的。
3、在使用JQuery的tab插件时,一直不能成功,后来自己找了一个用html js 和css做的tab。
4、学会了利用java自带的定时器Timer和TimerTask来制作定时器。
5、做这个项目大概1个月不到的时间基本上能做出来,其实最主要的是得亏于之前在实训时候的项目总结。其中的数据库连接部分很多都是可以直接拿出来重用的,感觉非常滴好。
6、在这次项目过程中用到的技术主要有:1、反射,2、java bean3、js 4、css 5、JQuery6、定时器7、内部类8、集合9、jsp中嵌入java代码,js代码,css代码10、数据库连接11、正则表达式12、分页处理
7、努力的方向是ajax、算法、设计模式、高质量的代码。