zoukankan      html  css  js  c++  java
  • 工作笔记系列-学习的零零碎碎的技术

        1.使用sqlQuery的时候:

      sqlQuery.addEntity(实体类.class).list();  //在使用sqlQuery.list()之前使用addEntity可以将查询出来的数据自动转化给我们添加的实体类对象

      List<实体类> dbLiist=sqlQuery.addEntity(实体类).list();  //这样dbList 就成为了实体类对象的集合

      

      这是高效遍历map集合的:

      Map<String,GpsVehicle> plates=new HashMap<String,GpsVehicle>();

      Set<Entry<String, GpsVehicle>> set=plates.entrySet();
      Iterator<Entry<String, GpsVehicle>> i= set.iterator();

      while(i.hasNext()){

      Entry<String, GpsVehicle> entity=i.next(); //获取map当前条数

      entity.getKey(); //获取当前条的key

      entity.getValue(); //获取当前条的value

      }

      对于sql的in 和 exists

      我们先讨论IN和EXISTS。
         select * from t1 where x in ( select y from t2 )
         事实上可以理解为:
         select *
           from t1, ( select distinct y from t2 ) t2
          where t1.x = t2.y;
         ——如果你有一定的SQL优化经验,从这句很自然的可以想到t2绝对不能是个大表,因为需要对t2进行全表的“唯一排序”,如果t2很大这个排序的性能是不可忍受的。但是t1可以很大,         为什么呢?最通俗的理解就是因为t1.x=t2.y可以走索引。但这并不是一个很好的解释。试想,如果t1.x和t2.y都有索引,我们知道索引是种有序的结构,

         因此t1和t2之间最佳的方案是走 merge join。另外,如果t2.y上有索引,对t2的排序性能也有很大提高。
        

         select * from t1 where exists ( select null from t2 where y = x )
         可以理解为:
         for x in ( select * from t1 )
         loop
            if ( exists ( select null from t2 where y = x.x )
            then
               OUTPUT THE RECORD!
            end if
         end loop
         ——这个更容易理解,t1永远是个表扫描!因此t1绝对不能是个大表,而t2可以很大,因为y=x.x可以走t2.y的索引。
         综合以上对IN/EXISTS的讨论,我们可以得出一个基本通用的结论:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

         而not in 在任何情况下 都比不上 not exists

      在开发webService时:

      前台页面使用flex进行参数传递,传递过来的参数的属性一定设置为private   否则报错

      前台Flex设置图片的时候,再次请求地址会无法更换图片,因为Flex会根据URL读取图片缓存:

        为了方便使用,当时设置写入图片的时候名字统一为 Logo.jpg 所以URL是没有变化的  。

        现在更改为 图片就使用原名称   这样更改图片后url会改变.  达到了不读取缓存的效果

        在oracle中使用connect by prior start with进行递归查询

          语法:select * from sys_company connect by prior company_id=parent_company start with company_id='1'

        分析:查询sys_company  从company_id='1' 开始查询     于是获得到company_id='1'  的这条数据的company_id   其实这里是把查询条件和递归条件用在了一起 

        也可以这样

        select * from sys_company connect by prior company_id=parent_company start with company_name='运输企业'

        分析:查询sys_company 从company_Name='运输企业' 开始查询   于是获得到了company_name='运输企业' 这条数据

        ① 紧接着拿取这条数据的company_id   

        ② 紧接着:查询出所有parent_company等于刚才查询出的company_id的数据.

        ③ 这些数据可能会有很多条   ,那么一条一条的解析: 

        ④ 从第一条开始:这里返回①

        

        一直跑到没有company_id=parent_company就到了尽头

        使用criteria查询的时候  使用到in  

        c.add(restrictions.in("aaa",new List()))

        在这里如果list为空或者size为零的话  那么会报一个确实表达式的错误  

         转换就成了 sql select * from gps_vehicle where vehicle.vehicle_id in ()   所以报缺失表达式的错误

        

        在使用对象的时候  尽量在使用的时候再进行new操作  不要一声明下来就new 

        在使用arrayList的时候  最好是能够指定长度为最好   比如分页读取数据库的时候  长度肯定就是size那么长 直接指定长度就好了

      

        使用双重循环的时候:使用下列方法可以一次终止两个循环

         label1:  //没错 你没有看错  就是冒号结尾
          for (int i = 0; i < 100; i++) {
            System.out.println("i是:"+i);
                 for (int j = 0; j < 5; j++) {
                    System.out.println("j是:"+j);
                      if(i==22){
                          break label1;
                      }
                  }
              }

         在使用thrift的时候 ,直接使用impl进行了数据库的操作,那么这个时候,我们需要给这个impl加上@Transactional(readOnly=true)     者 @Transactional(readOnly=false)。不然hibernate会报  不在安全的会话中操作数据库

    在工作中遇到一个问题 给设置时间的时候:

    user.setLoginTime(new Date());
    或者
    user.setLoginTime(Calendar.getInstance().getTime());


     报错:

    最后原因:使用的mySql5.6  而开发的时候使用并不是5.6  
    而mySql5.6的升级是对date类型进行了调整,所以保存的时候报错

    解决方案:
    降低mySql版本到开发版本,或者更换支持mySql5.6的jar包


      在我们页面和dao层交互的时候

      页面对象(Action对象)  和  dao层的持久化对象(entity)

      比如修改一个对象或者创建一个对象,那么我们需要大量的从页面赋值给entity对象

      我们可以使用spring的

      BeanUtils.copyProperties(Action对象,entity);

      使用myEclipse的时候,有时我们会手动修改文件。比如使用editPlus进行修改,这时候再使用myEclipse的时候,我们要先将项目进行refresh(F5)再使用。不然可能会引起一些不好麻烦。

  • 相关阅读:
    baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
    ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法
    layDate 闪现 循环一个以上会闪现
    typescript定义函数类型
    typescript中的类与接口的关系
    typescript中的类
    typescript中的接口
    mac 上配置 ssh 免密登录服务器 【非常简单】
    Go语言中的map(十一)
    Go语言中的切片(十)
  • 原文地址:https://www.cnblogs.com/dingzb/p/3682455.html
Copyright © 2011-2022 走看看