博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2013年工作中遇到的20个问题:21-40
阅读量:7030 次
发布时间:2019-06-28

本文共 3447 字,大约阅读时间需要 11 分钟。

hot3.png

21. 强制类型转换时,出现异常

    ElementItem pireodItem = (ElementItem)columnCollections.get(columnCollections.size()-1));

   从新审视这段代码,会发现很多问题。
   
   a. 一行代码的逻辑过多,方法调用多,不便于调试。可以多建立几个局部变量。
   
   b. Null判断的问题。
   
   c. 强制进行类型转换,结果 转换失败?
  
22.项目中有段代码大量重复

 (大概有200多次)

  List list;

 
  if(list != null && list.size()>0){
 
  }
 
  抽取成方法
 
  isNotEmpty(List list);
     
 使用 Eclipse查找类似的代码
 
 Ctrl+H 出现搜索框,选择 FileSearch,
 输入*!=null*&&*>0搜索类似的语句,方便使用已有的工具方法
 
 23. 数据库表isDeleted字段不能为空
 
    重构后isDeleted删掉了,导致增加总是失败。

24.使用Eclipse远程调试

   右键,Debug Congregation,输入ip地址和端口号。
  
25. 数据库连接打不开

    SQL Server没有启动,尽管能够远程连接电脑。

26. Struts2 devMode模式

    很久以来,本机项目启动和响应比以前变慢了。测试机上速度还可以。

 突然,又部署一次后,测试机上的也很慢了,不能忍受。
 
 单步跟踪后,发现Action代码很快就走完了,走完之后一直在重复调用Struts的代码。
 根据Struts打印日志信息,发现 configuration.xml.reload 一直重新加载。
 
 网上搜搜,devMode模式是开发模式,开启它则默认开启了i18n.reload、configuration.xml.reload。
 把devMode设置为false,就快多了。
 
 以前在学校开发时,偶尔也设置为true,并没有感觉到对性能有多大影响。
 
    诊断问题还是需要耐心啊!急性子不太好!
 
 log4j日志配置为 debug,查看打印信息,发现有好多重复的信息。最终发现了问题。
 
27. Hibernate查询
  List<Object[]> objList = (List<Object[]>)query.list();
 
  遍历objList,从每个Object[]中 根据 索引来获得相应的字段,不容易扩展。

28.不得不再提的是,NullPointerException 是最为常见的错误。

  访问日志表VisitLog,旧版记录了 用户的名字,新版需要记录用户的id。

  新增字段后,旧的数据,userId为NULL。为了保持兼容旧系统,需要判断userId是否为NULL。
 
  类型转换等操作需要考虑Null。

29. 合理配置Log4j,便于查找错误。

    控制台看信息,有时候不太方便。
 (客户为开发人员提供错误信息时,很有用)

30. Tomcat日志文件

Linux下,Log4j生成的日志放在了 log目录下,而logs文件夹 却有个 localhost-access-log.2013-01-24.txt这个访问日志文件。

通过 ll命令,发现 不同目录下的日志文件权限不同,因此猜测 logs目录下的文件不是

我们自己配置的。后来在Tomocat conf目录下发现了一个 logging.properties.发现访问日志实在这里配置的。

31.Hibernate类型转换失败

  Hibernate 实体类 String breakId;

  int breakdId;
  executeQueryList(hql,"breakId",breakId);

  会报错。Integer不能转换为String类型。

32.配置数据库连接

   XML文件中:jdbc:mysql://localhost:3306/shopping?useUnicode=true&nbsp;characterEncoding=utf8(XML文件中需要对&进行转义)

 
   属性文件中 :jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=utf8(属性文件中不需要对&进行转义)

   为什么会出现这个问题呢?

   数据库连接原来配置在xml文件中,今天为了方便,放在了单独的属性文件中 jdbc.properties中,结果就出现了乱码。

 
   弄了好久,才发现。

33.UTF-8编码的不同名称  

   数据库中指定编码 :utf8
   JSP页面中指定编码:UTF-8

34.Window7 配置 IP和域名映射

   C:\Windows\System32\drivers\etc\hosts

 
  # localhost name resolution is handled within DNS itself.
  # 127.0.0.1       localhost
   # ::1             localhost

   123.103.19.71 fansunion.cn

35. w3c Document规范与 Dom4j实现不太一样。

    Dom4j包中的Document并不是w3c Document的实现类。
 
    误认为 w3c是规范,Dom4j是实现。发现方法也不一样。

36. Spring多线程之单例问题。

有些公共的数据类使用了单例,导致多线程访问的数据出现了干扰。

一个Service中可以使用getCurrentSession多线程访问数据库。

37.Log4j配置文件存在多余的属性

认真阅读SSH项目控制台信息可以查看到系统的初始化过程,发现一些可能存在的问题。

log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender.
log4j:WARN No such property [maxFileSize] in org.apache.log4j.DailyRollingFileAppender.

log4j.appender.I=org.apache.log4j.DailyRollingFileAppender

log4j.appender.I.File=../log/mingboard_info
log4j.appender.I.Threshold=info
log4j.appender.I.MaxFileSize=100KB
log4j.appender.I.Append = true
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.I.DatePattern='-'yyyy-MM-dd'.log'
log4j.appender.I.MaxBackupIndex=1

38.国际化单词拼写错误

moddify.success,“修改”这个单词拼写错误,应该为modify,
应该把所有相关的丢修改掉,资源文件,JSP,Java源文件。

39.Hibernate 实体类 查询时 区分大小写。

  User{
    private String email;
  }
 
  String hql="select * from User where email = :email";
 
  当时的错误:原来email是“Email”,实体类文件修改为小写后,hql语句都需要改为小写。
  这类问题关键是容易遗漏,可以使用Eclipse的搜索功能,Ctrl+H,选择FileSearch,进行搜索,
  从而做到不遗漏。

40.流程拆分

  Flex端发送一个请求,获取图表数据。
 
  图表有多种类型,每种类型有很多相同-相似-不同的代码。
 
  原来为 一个函数 使用大量的if-else来构造不同的图表数据,现在改为
  一个函数生成一个类型的图表,不同图表之间的相同代码以工具函数的形式复用。
 
  结果:流程清晰易懂,快速定位Bug。
 

相关阅读

 

 

转载于:https://my.oschina.net/jiutianniao/blog/400425

你可能感兴趣的文章
Java 接口技术 Interface
查看>>
函数草稿
查看>>
织梦系统学习:文章页当前位置的写法(自认对SEO有用)
查看>>
PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)
查看>>
vue input输入框长度限制
查看>>
深入理解Java虚拟机(类加载机制)
查看>>
在500jsp错误页面获取错误信息
查看>>
iOS-CALayer遮罩效果
查看>>
为什么需要版本管理
查看>>
五、Dart 关键字
查看>>
React Native学习笔记(一)附视频教学
查看>>
记Promise得一些API
查看>>
javascript事件之调整大小(resize)事件
查看>>
20145234黄斐《Java程序设计》第六周学习总结
查看>>
【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)...
查看>>
hibernate 和 mybatis区别
查看>>
互联网广告综述之点击率特征工程
查看>>
HDU3421 Max Sum II【序列处理】
查看>>
POJ NOI MATH-7653 地球人口承载力估计
查看>>
iOS UI高级之网络编程(HTTP协议)
查看>>