毕设开发日志2017-11-17

【前言】

  日志标题上的日期戳本来想写16日的,结果一看电脑右下角已经过了零点了,好吧,又是新的一天~

  由于上周一直在准备软考,无暇编程,所以项目基本处于停滞状态。不过在复习软考期间也发现自己的理论方面确实很欠缺,以后还得抽时间再补。软考结束之后,经过了这一周加班加点的工作总算还小有收获,这里做一个总结。

【工作内容】

1.编写了一些工具类,包括一个日志文件输出类,一套验证码图片的渲染类,还有一个字符串的类。

2.为了兼容实时数据的获取,编写了两个自带json转化方法的TO类。

3.编写了一个实时数据服务,主要在接受传来的城市名称参数之后去某网站上抓取数据,在经历了抓取数据,数据提取,数据整合的过程之后返回一个实体数据类。

4.完成了实时监控模块,包括从前台页面到action层,到service,再到文件缓存的完整链路。

5.完成了百度地图API在项目中的整合。

6.开始了线性回归算法的编写。

【遇到的问题以及解决过程】

1.数据清洗

  *问题描述:首先是正则表达式以及String字符串的截取。在数据清洗的过程中要配合正则表达式进行多次的子串匹配与截取,工作难度主要是正则表达式的编写。之前也写过一些正则,但都是一些规则的数据,比如电话号,密码规则之类的,这次要提取数据要考虑各种情况,所以就仔细学习了一下正则表达式(教程链接),另外也对String常用的截取方法做了一个总结(详情链接)。其次是文件读取,数据抓取之后要对网页进行读取,有一些可作为正则表达式的标识刚巧被换行符换掉了,这样即使正则表达式识别了换行符但是java按行读取的规则也使得正则无法使用(java读取文件的三种方式)。按字符或者字节读取的话存在识别范围太小的问题。

  *解决过程:用正则先识别一个范围较大的数据区,输出到缓存文件中,然后在数据提取之前对缓存文件中的空白字符进行清洗,在数据提取之后对缓存文件进行及时的删除。

2.Struts报错:

  *问题描述:这个错误一般是存在action链接是Struts文件中没有配置相应的action以及result导致的。但是我的Struts和spring的配置文件中,以及前端页面上的action链接上从来没有定义过一个“css”的action以及“/FoxWeatherOS/pages/media/image/css”的result,但为啥就被Struts拦截了呢?而且这个路径也很奇怪,是前端css的路径

1 -14 19:20:16,490 ERROR [http-apr-8080-exec-4] dispatcher.Dispatcher (CommonsLogger.java:error(38)) - Could not find action or result
2 /FoxWeatherOS/pages/media/image/css
3 There is no Action mapped for namespace [/] and action name [css] associated with context path [/FoxWeatherOS]. - [unknown location]at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)

  *解决过程:空白的jsp不报错,但是使用前端html就直接报错,而且控制台报错前台效果正常。怀疑是html文件出了问题。找遍了项目所有共计200+的css和js文件,终于看到style.css文件中有这样一句

换成绝对路径还真就是报错的那个路径,于是就觉得是由于Struts拦截所有url,结果把css文件的关联操作也拦截了。删掉一句之后重新部署项目之后解决了。但是重启之后又出现了这个错误,于是妥协,让Struts只拦截.action的链接。解决。

3.java文件路径

  *问题描述:单元测试的时候服务类能正常运行,但是用action调用的时候就找不到缓存文件了。

  *解决过程:发现原因是java普通类和javaweb对文件加载路径有着不一样的设置,所以直接使用File类来加载文件的时候有不同的效果(详细解释),于是修改代码,通过类的绝对路径来找文件,解决。

4.json格式

  *问题描述:每次编写TO实体类的时候都会另外配置一套json相关的方法,包括使用json的构造,输出json字符串和json对象的方法等等。通过ajax返回给前端的json无法解析。

  *解决过程:编写ajax的时候要注意返回值类型应该是

 dataType: "json",

  这里要着重注意dataType采用驼峰命名法,即第二个T大写。另外要注意json字符串和json对象是不一样的 ,callback方法只能解析json对象,而json字符串就只是一个字符串。

5.jQuery生成新元素的事件绑定

  *问题描述:在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件。js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现。而事件监听不是,你必须给每一个元素单独绑定事件,而且元素必须是页面上有的。js生成元素时界面还没有该元素,自然也不能绑定。

  *解决过程:采用jQuery自带的.live方式。(其他解决方案

:$('.clickme').live('click', function() {
//处理代码
}); 

【下周安排】

1.完成线性回归算法,完成该算法支持的前台模块。

2.闲余时间看一些面试题,补充一下理论知识。

原文地址:https://www.cnblogs.com/420Rock/p/7848082.html