文档章节

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

jtn
 jtn
发布于 2015/04/13 12:36
字数 1080
阅读 2
收藏 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


 

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
石家庄开源技术沙龙现场报道

时间:16号 14点 地点:河北师大软件学院 人物: 很多 ![大概去了20人左右,教室很大显得很空旷][1] 大概去了20人左右,教室很大显得很空旷 ![开篇清风分享linux][2] 开篇清风分享linux ![3...

雁南飞飞
2014/03/16
398
6
quartz表达式问题

定时任务:如果跨月怎么设置表达式呢?比如说,2013年的1月27号到2013年2月20号,这段时间里,每天上午9点提醒,表达式怎么样来写呢?cron="0 0 9 27-20 1-2 ?" 这样设置好像有问题,时间区间...

3V__V3
2013/02/05
289
3
第20期JEECG架构培训班开始报名啦,每期十个名额,报名从速!

第20期开始报名啦,只招10名,报名从速啦!! 《开源社区JAVA架构师徒培训班》 Java程序员如何打破工作2,3年的瓶颈问题, 让技术更上一层楼?? 很多人做java开发2,3年后,都会感觉自己遇到瓶颈...

Jeecg
2015/10/13
93
0
PHP curl 的CURLOPT_POSTFIELDS之数组和字符串之谜

现象 在最近的工作中遇到一个问题,就是使用post发送请求,post数据死活传递过不去,一直是请求返回error。 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2...

蜗牛奔跑
2018/03/05
20
0
12月27号韩立刚门徒套餐团购公开课

12月27日 公开课《IT技术分类和学习方法》时间:12月27号20:00-21:00 加入团购QQ群:575837909,点击链接加入群【51CTO学院Linux交流群】:https://jq.qq.com/?_wv=1027&k=5zajrSA进群暗号...

51CTO学院
2017/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

006-Sigle-基于blockstack去中心化博客

本篇文章主要讲解有关基于Blockstack的Sigle是一个去中心化的博客项目; 官网地址:https://www.sigle.io/ Github地址:https://github.com/pradel/sigle 页面展示: 介绍: A beautiful de...

Riverzhou
32分钟前
11
0
驰骋工作流引擎开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工作流主流框架 自定义...

孟娟
33分钟前
10
0
MyBatis binding 模块分析

MyBatis binding 模块分析 binding功能代码所在包 org.apache.ibatis.binding binding模块作用 封装ibatis编程模型 ibatis编程模型中,SqlSession作为sql执行的入口,实用方法为sqlSession.se...

红妍落日
35分钟前
11
0
网易互娱的数据库选型和 TiDB 应用实践

作者介绍:李文杰,网易互娱计费组,高级数据库管理工程师,TiDB User Group Ambassador。 一、业务架构简介 计费组是为网易互娱产品提供统一登录和支付高效解决方案的公共支持部门,对内是互...

TiDB
42分钟前
11
0
Debezium接入Mysql遇到到的Tinyint坑

问题背景: 在Debezium做数据初始化的时候,对于一些tinyint字段的值,出现0,1的值的异常。 经过源码排查,数据在JDBC上面,读取到的数据是Boolean值。 通过排查,原来是MYSQL特有的数据问题...

吐槽的达达仔
50分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部