首页 > 其他分享 >2013年工作中遇到的20个问题:21-40

2013年工作中遇到的20个问题:21-40

时间:2023-02-14 15:07:06浏览次数:44  
标签:文件 20 21 list 40 appender 日志 log4j localhost



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。

相关阅读

​​工作问题​​​ ​​javascript:void(0)​​


标签:文件,20,21,list,40,appender,日志,log4j,localhost
From: https://blog.51cto.com/fansunion/6056846

相关文章

  • 2013年工作中遇到的20个问题:1-20
    1.列不允许有NULL值,INSERT失败。原因:数据库的表没有设置主键!(遇到至少2次)客户的数据库是由客户自己去维护的!2.项目重构后Flex端卡死了。原因:Hibernate底层获得Sessi......
  • 2012年工作中遇到的20个问题
    2012年工作中遇到了很多问题,刚刚开始时,遇到的问题没有及时记载下来,挺可惜的。1.构造SQL语句--简化构造select*fromuserwhere1=1;if(name!=null){andname="fa......
  • 2012总结--第10篇--工作篇
    3月到5月实习期间,完成了A项目的一个模块。更多信息,请参见实习期间遇到的5大问题及解决方案。好几次比较激动,最不淡定的一段工作。6月毕业到正式入职期间,看书,写代码,看......
  • [2012最后的力作] PC:亲爱的主人,我想退休了
    亲爱的主人:我想退休了!2012年以来,我感到身体很不适。坚持了将近1年,实在是扛不住了。还记得3年前的2009年7月,主人您把我从武汉广埠屯买回来的时候,我当时特高兴。主人您......
  • 2012总结--第1篇--技术篇
    以广度与深度并重为核心指南!1.语言1.1深入学习Java。1.2复习C++,Linux系统下写了几个小程序。大致阅读了一遍《C++Primer》。1.3了解了Python,在Windows平台写了......
  • 2012总结--第9篇--价值观篇
    自己也不小了,转眼间1/3左右的人生已经过去。是该给自己立点规矩,适度地约束自己的言行举止了。无论自己是迷茫时,或是得意时,都能有所选择!1.责任努力奋斗,自立自强!1.1父......
  • 2012总结--第5篇--人脉篇
    综述今年新结识了很多人,友好交往的人还比较多。感觉最缺少的,就是和自己向一个方向走的IT相关的人士。公司很多人也都挺熟悉的,总感觉缺少了一点什么。高中的很多同学,有种......
  • 212. Word Search II[Hard]
    212.WordSearchIIGivenanmxnboardofcharactersandalistofstringswords,returnallwordsontheboard.Eachwordmustbeconstructedfromletterso......
  • 3620、反转链表
    给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[]提......
  • 3621、亲密字符串
    给你两个字符串s和goal,只要我们可以通过交换s中的两个字母得到与goal相等的结果,就返回true;否则返回false。交换字母的定义是:取两个下标i和j(下标从0开始)且......