`
pouyang
  • 浏览: 314054 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Experience 发现问题 分析问题 解决问题

阅读更多
发现问题 分析问题 解决问题
按照这三个步骤,形成自己的风格,不要发现问题就不知所错了,必须细心的去分析。

积累每一次解决问题的方法,
成就自己动手的能力和解决问题的能力!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-5-21 使用Common.js插件检测Js报错html处报错
1 极有可能js里的格式错误,例如少')','}'等等。
2 jsp页面本身错误

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-5-21 Struts1标签错误
出现Struts1标签错误要考虑
1 jsp页面是否引入了Struts1标签。
2 该标签是否必须在html:form中进行使用。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-5-18 用Companiontool查看js错误的时候,显示html错误
1 引入的js有错误(方法括号没匹配上)
2 html中标签使用错误
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-4-29 空指针错误classCast转换错误
空指针是最痛苦的错误!一般要注意传的参数!
例如IBatis sql的写法的时候,注意传入参数和返回参数!
一般count的时候直接在返回参数上返回Long,不要等到返回Object
最转换成Long,这样很容易出错
我就是报了个措ClassCast错误
返回的是Object
但是实际上是BigDecimal
BigDecimal转Long的时候报错!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-4-27 页面显示数据问题
后台数据以json格式返回到前台(分为json数组和json对象)
前台展示数据的时候,js和后台没有报任何错误,就是显示Dataerr
很可能是前台展示的时候数据的格式定义错误!(借助了第三方插件)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
页面转值问题
例如:男女在数据库里一般存储的都是0,1标志位
在页面上显示的话,可以有很多处理方法
1 在数据库查询的时候用decode函数。
2 在应用程序中用java程序进行转换。
3 在jsp页面上进行转换。
这里只是说的显示用。
采用哪种方法比较好呢,节约系统的资源,提系统的资源。
如果要节约系统的资源的话,最好在页面上进行转换

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
java.lang.NoClassDefFoundError: org/springframework/beans/factory/BeanFactoryAware
没有报具体的Dao错误
很容易事spring读取资源文件的时候报错!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
404错误
上次发生过一次,这次又写一次,看来没有吸取教训。
如果后台和前台没有明显的错误,那么极有可能forward的path写错了!
首先就应该定位在这里。
不要怀疑页面上语法写错了,那是很少有的事。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-4-20
javax.servlet.jsp.JspException: Cannot retrieve mapping for action: "/secured/marketProject/activityBackController"

这种错误,解决方法
0 分析:找不到这个action
1 首先要确认系统启动的时候加载了Struts的配置文件
2 spring和struts配置文件里都对这个path进行了配置
3 然后才可以去猜测这种写法是错误的!
解决问题的方法是有先后顺序的,不要一上来就从3开始。这种情况要避免。
仔细分析问题。

总结:发现错误,要仔细的分析,不要盲目的猜测,这种写法是错误的。
其实明白了struts是怎么读取配置文件就可以了,还有调用相应的方法就可以了。
了解Struts的原理。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
测试
今天叫我测试,我测了半天,总是盯着一个系数看,测了很多条数据了,都没报错
不细心,测试就是细心活,要好好来测,细心的观察!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-4-15
ajaxForm 异步调用的时候
传进去的contextPath是正确的
但是就是进不去Controller层,似乎察觉不到错误的地方,有点不想解决了
突然把异步请求URL全部alert出来,发现多了contextPath后多了空格
其实最不认为出错的地方,其实也有可能出错。
仔细分析问题,解决问题,程序员是个细致活,不是大大捏捏的粗糙的汉子做的事。
要养成仔细分析问题,准确定位错误的习惯。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-4-15
log4j,日志打印出sql语句
当Ibatis调用的时候没有sql语句输出来,
说明调用的时候,代表sql语句的那个字符串极有可能出了问题。
如果有sql语句出来但是没有返回结果,报异常或者其他的错
首先 仔细查看异常定位问题,如果定位不到,那么必须确保以下:
1 要确保sql语句是正确的
2 要确保传进去的参数写法是正确的
3 要确保sql返回的DTO的属性与别名是否一致(一般这种异常可以精确定位)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
渐渐地喜欢上了不喜欢看错误,
发现错误,总是喜欢乱点,以为能解决问题

发现问题之后要仔细的努力的去
分析问题,然后解决问题。

500 错误是服务器端出现了问题,数据库取数据的时候转DTO很容易出现问题



服务器启动的时候,Ibatis的配置文件的数据字段已经跟数据库的
表的字段进行匹配,如果配置文件的sql语句有
问题,服务器启动的时候会出现问题的,
weblogic服务器启动不了,并不仅仅是配置残留的问题,还可能是sql语句写错了的问题,
注意细看问题。


在页面上用c标签进行显示的时候,报错该DTO没有这个属性?
首先进行分析
1 确保sql别名与DTO属性一致
2 确保controeller层跳转页面之前查询的DTO里有值
3 页面上直接输出DTO看是否错误!如果没错,则很可能是属性
  写法有问题,然后用getXXX的XXX去得看能不能得到值。查看
  javaBean对属性的编写规范,发现属性前两个字母要么大写要么小写
  而我恰好是一个大写一个小写,改正之后没有报错。



 缩小错误范围,将错误一网打尽!!!!

~~~~~~2010-04-10~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<html:hidden property="type" styleId="type" value="${team.type}"/>
property 与form对应?
${team.type} 与request中的dto对应


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

异步处理

B/S性能要求
浏览器网速 +  宽带  +  应用程序端   + 服务器端
如果应用程序端到服务器端所耗得时间不可减除
那么可以考虑宽带加速性能
貌似这有点说不通了,可以用异步来做到这一点
举个例子:
查询很多记录有数据又有记录条数,请求一次全部返回
采用异步的话数据一次请求,记录条数一次请求,这样的话
查询一次分两次请求谁先回来就先显示谁。
节约了显示时间

最优方法:
查询内容不采用异步,先把内容查询出来,form要回填页面
等页面加载完后再异步去动态提交form去查记录数
这样的话,两次请求就不会你争我强的!

当然当数据库,浏览器请求,能使用两次异步并发操作的话
那样也可以,查内容的同时又同时查记录同时进行

1 查内容再查记录 返回浏览器显示(同步)

2 查内容查记录同时进行,谁先返回谁先显示(异步)

3 查内容返回浏览器显示,再异步查记录总数返回浏览器显示(同步+异步)

  采用这种方法没有成功(返回的内容和记录条数不一致)是因为:同步回来内容显示后,查询记录数异步请求采用的是URL
  传参请求,在controller层request里得不到查询条件(很多查询条件也无法再url后一一列出),在controler执行方法的form中也得不到查

询条件,是因为异步又启了一个请求。不过现在可以实现了,为什么? 因为强大的Jquery提供了form异步提交的功能!爽吧。(Strut1 form

会自动回填页面的!)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cpu  内存

B/S模式

1 启动spring ioc容器所占的内容必须的!当然可以采用延缓实例化

2 应用程序的定时任务,执行的时候会耗CPU,这当然了。

3 整个项目跑起来的时候,当很多并发请求发出后,主要是new的对象实例以及集合类实例所占用的内容,计算,循环等地方会导致cpu猛增
  当然当这个请求处理完后,java垃圾回收器就会收集垃圾了,cpu和内存慢慢的降下来。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




1 今天我更新的时候,老是没有更新成功,后台查看sql语句
  更新成功了(以为),总是返回0,
  俊生仔细查看后,更新条件写错了,更新的条件根本不能查询出来那条数据
  发现问题要仔细分析下,把更新sql在pl/sql中执行一下,没错的话
  就查看这条语句更新了没,同时看更新的条件能查出这条记录吗?
  发现问题要仔细分析。

2 邸yuijs不能用了,children地方发现了错误,刚开始
  没有耐心看,以为是其他什么地方错了,当仔细查看后,children
  那个地方的写法的确错了!

3 当Ibatis使用Insert插入一条数据的时候,总是返回null
  的确没有做特殊处理,返回都是null
  查看后台sql语句,查询数据库的时候确插入了数据,这个时候就要想到
  插入都成功了,是不是返回值上出了问题,发现问题要仔细分析
  不要盲目的去查找,定位错误的出处,查找下就ok解决了!

4 YUI注意地方

  controller层返回的类型
  返回alert 出 [object,Object]就应该知道返回的是Json格式的数据
  {"key":"vale","".....}类似对象的形式
  后台返回的是Object(Class)转Json

  返回alert 出 [object,Obect],[object,Obect],[object,Obect
  就应该知道返回的是list数组的形式
  var a = [{},{},{}];
  后台返回的是List转Json

  datasoure处设置的返回类型
  中间不需要做数据eval()操作
<script>
  var a = [{},{},{}]
  alert(a);
  var b = {"a":"b"};
  alert(b);
  var c = {};
  alert(c);
  var d = new Object();
  alert(d);
  alert(typeof d);
</script>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5  从两个数据库表中查出来的值在页面显示的是一样的
   做比较的时候确总是false,这个时候就要确定有没有空格的情况存在


6 从控制层到servicer层

  insert操作处理
·页面返回:记录已存在,插入成功,插入失败
一般插入之要判断该条记录之前存不存在,按照页面上的返回,而且遵守
         service层命名规范,boolean insertMethods(),boolean 只能返回两个状态
         所以记录已存在应该在controller层完成,insert以及insert以后要更新
其它记录的操作要放在service层操作,这样一来,insert成功了,insert之后
         的更新异常了,这样insert,update操作都会回滚的。如果放在controller层就不一样了。
         前提条件:事务是做到service层的
        (方法1,所有Service的层的方法都启动事务;方法2:insert,update,delete打头的方法都启动事务)

         由于ibatis的insert操作没有做特殊处理的话,没有东西返回,所以只能通过异常来判断是否成功!
         void insertService() throws Exception;



7  查询条件都用form,插入也用form

8  返回类型都用Dto

9  导入sqlmap文件到Spring中


10 普通form标签里不能出项struts标签

11 启动的时候sqlmap会去匹配相关信息
        

12 标签错误
   <form></form>里包含了一个<jsp:include page='navi.jsp' />
   该页面中有<html:text>标签,导致一致报标签错误,刚开始
   不知所错,茫然的瞎点,心情也烦躁起来,这个时候千万别犯傻。  千万不要烦躁不安,一定要仔细的分析,缩小问题范围以使得解决万问

题。
  把<jsp:include>去掉没有报错,就没有错误,就应该怀疑form标签出了问题


13 做删除操作的时候,一定要注意删除之后,还要更新其他的记录
  举个例子:比如一颗树结点,你删除了叶子结点,就要考虑父结点会不会变成叶子结点,你删除了父结点就要考虑父结点下面的子结点怎么

办。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
























分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics