文档章节

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

FansUnion
 FansUnion
发布于 2015/10/22 10:30
字数 1103
阅读 1
收藏 0
点赞 0
评论 0

1. 列不允许有NULL值,INSERT失败。

   原因:数据库的表 没有设置主键!(遇到至少2次)

   客户的数据库是由客户自己去维护的!
  
2. 项目重构后Flex端卡死了。
   原因:Hibernate底层 获得Session使用 openSession方法,导致Spring不再管理Session,而我们又没有手动关闭session。
  
   合适的使用方式:在Spring中,使用Hibernate的getCurrentSession,session由Spring自动关闭。

3. Hibernate HQL语句找不到对象,提示“对象名mdpDefine无效”。
    原因:数据库表被 误删除了!

4. Hibernate createSQLQuery()
   以前在使用原生SQL查询时,都会加上addEntity(在最初学习的时候,书上的例子加上了.addEntity)。
   而项目中有的地方没有加入,此时 List<MyObject> list = query.list()会报错。
  
    如果不加入addEntity,Hibernate不能解析select语句中的属性。
  
   List<Object[]> list = query.list();
  
5.Spring中获取 BeanFactory,有些地方需要 获取 注入的对象。
  比如工具类中,而工具类又不能实例化,进而不能注入对象。

  @Service//这个注解不可少
  public class SpringBeanUtils implements BeanFactoryAware{
 
    private static BeanFactory beanFactory;
 
 public void setBeanFactory(BeanFactory beanFactory){
   SpringBeanUtils.beanFactory=beanFactory;
 }
 
 public static Object getBean(String beanName){
   beanFactory.getBean(beanName);
 }
 
  }
 
  public class Test{
    public void myMethod(){
       KeywordServie keywordService = (KeywordService)SpringBeanUtils.getBean("keywordService");
    }
  } 

6. Integer与int不同。(2个Comment类,1个是 int,1个是Integer)
   知道Integer应该调用equals,但是 有的是 int,有的Integer,多了 你还能知道么??
    ==与equals是不同的
   这个地方还有个“秘密”。Integer(-127到128)用 == 比较也是true,因为使用了JDK对这些Integer对象进行了缓存。
 
7. 引用理解错误!又一次!

  List a = new ArrayList<>
  //现在要对a进行排序并且不能直接对a进行排序
 
  sort(a){//参数传递过程中,有个赋值过程
  List b;//已经排序完成
  a = b;
  //这个时候a已经有序
  }
 
  //这个时候a仍然无序
 
  应该通过 函数返回值的方式 来修改。
 
8.健壮性

   程序中 有太多的地方都需要使用 Null判断。
  判读过多,程序很复杂?
  判断过少,容易出问题??
  if(a != null){
 
  }
  

9. 硬编码

  ResultData.status = 1
 
  最好用枚举类型或常量表示!!!

10.使用FindBugs 可以发现简单的Bug!
  
11. if-else和swtich不合法情况打印错误日志。

   Anychart = null;

   if( 1){
    ...
   }else if(2){
     ...
   }else{
     LOG.ERROR("Error:函数调用存在错误!参数不正确!");
   }
  
   anyachart.invokeMethod();
  
   switch语句类似。

12. Hibernate--Dao 存在大量重复代码--可以优化。
   Web开发中,DAO层的很多功能是常见且类似的,建立BaseDao,重用代码。

13. Hibernate sql语句,硬编码

   String hql = "select new com.supertool.ProjectUserVO()";
 
  包名一旦发生变化,就会产生若干错误!
 
   大量硬编码的代码 非常难维护!一处改动,处处修改!

14. 调试代码 未及时删除!!!

15. 一个线程下,多个子线程,数据互相干扰!
  1个Service下,开了多个线程 去数据库取数据!!!
 
16. for循环下标问题(一错再错!)

  List p;
 
  removeIllegalProject(p){
  int size = p.size();
  for(int index=0;index<size;index++){
    //执行操作
 if(Illegal(p)){
    //如果不合法,删除这个元素
    p.remove(index);
   
   // 这个时候 size就比当前的p.size()要大了  
 }
  }
 
  }
 
######################################################
for(int index=0;index<p.size();index++){---不再正确,因为index也发生了变化


######################################################
//多分配了一点内存
//新建一个List list;  非常正确
把合法的加进去 list.add();

p = list;

######################################################
for(Iterator iterator =p.iterator();iterator.next();){
 if(){
   iterator.remove();
 }
}

根据索引删除,根据对象删除!!!

突然发现 for alt+/ 出现了快速生成代码功能(Eclipse)

(Alt+H 搜索资源,Ctrl+shift+R打开资源文件,for循环代码快速生成)----通过 富有经验的程序员 学来!!!

这些地方 有必要 去主动学习和使用下,提高效率啊!开发利器哈!

17. js定义了一个数组,var chars = {'a','b', ,'c'};
    中间多了一个 逗号,导致 去数据时 出现 undefined。

18. 数据库字符串区分大小写。
  
    有可能区分,有可能不区分,不同的数据库可能不一样。

19. setParameter,setParameterList
    sql语句使用 in语句时,需要调用setParameterList而不是setParameter。

20. 静态Session有问题

 static Session session = FlexContect.getSession();
 
 public Session getFlexSession(){
    return session;
 }
 
 Session不应该定义为静态的。

相关阅读

工作问题 http://blog.csdn.net/FansUnion/article/category/1334371


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
FansUnion
粉丝 56
博文 857
码字总数 825464
作品 0
丰台
高级程序员

暂无相关文章

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

前言 我是上学期学的汇编,因为有vs又不想用课上教的麻烦的dosbox以及masm32,但是一直没找到高亮插件和能调试的(难在运行不了而找不到答案上,出现的错误在最后放出,还请先达们不吝指点)...

simpower ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 昨天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 昨天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 昨天 ⋅ 0

Java对象的序列化与反序列化

Java对象的序列化与反序列化

Cobbage ⋅ 昨天 ⋅ 0

Sqoop

1.Sqoop: 《=》 SQL to Hadoop 背景 1)场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据分析呢? 1) RDBMS ==> Hadoop(广义) 2) Hadoop ==> RDBMS 2)原来可以通过MapReduce I...

GordonNemo ⋅ 昨天 ⋅ 0

全量构建和增量构建的区别

1.全量构建每次更新时都需要更新整个数据集,增量构建只对需要更新的时间范围进行更新,所以计算量会较小。 2.全量构建查询时不需要合并不同Segment,增量构建查询时需要合并不同Segment的结...

无精疯 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部