zoukankan      html  css  js  c++  java
  • 2013年工作中遇到的20个问题:121-140

     
    121.Springz中,根据实现类找不到bean。
       UserImpl implements User{
      
       }
      
        XmlWebApplicationContext context;
        context.getBean(User.class);√
     context.getBean(UserImpl.class);获取不到
     
     没有使用Cgilib库!
     
     --------貌似也不行------------
     因为spring的bean都是做了包裹的。所以你用 ServiceImpl 建立了一个bean,实际上他是新建了一个类似于 ServiceImplWrapper的继承 Service的接口的类来封装的,这样才能做到AOP的效果。
        所以新建的Bean,实际上是Spring新建的那个类型的,而不是ServiceImpl类型。因此只能用 Service接口寻找。
     
     但如果使用cglib的话,包裹类是直接继承ServiceImpl的,因此就可以找到了。
     --------------------
     按照类型找bean好像有专门的配置。 先看看文档吧。--------------------
     
     综上所述,目前没有找到原因。


    122.SpringMVC 使用实体类User{Date date}不能接收“2013-7-24”这样的日期,
    类型转换会失败。只能使用String接收,手动进行类型转换。

    像 2013-09-31 这种字符串 把它parse为日期的时候,parse成 2013-10-01比较好,还是抛异常比较好?
    simpledateformat 会将它parse成2013-10-01

    public static Date parseDate(String date) {
      if(StringUtils.isEmpty(date)){
       return null;
      }
      
      SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-HH");
      Date d = null;
      try {
       d = format.parse(date);
      } catch (ParseException e) {
       e.printStackTrace();
      }
      return d;
     }


    123.
    按名称搜索,需要使用 like '%aa%',而aa是Mybatis动态获得的。

    ##不对
    <select id="searchBrand" parameterType="string" resultType="Integer">
      select id from organization where englishName like '%#{agencyName}%'
      and orgTypeId = 50004
     </select>
     
    ##官方例子,bind不识别,可能是 Mybatis新增的
    <select id="selectBlogsLike" parameterType="Blog" resultType="Blog">
      <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
      SELECT * FROM BLOG
      WHERE title LIKE #{pattern}
    </select>

    只能在Java中设置了,agencyName="%"+agencyName+"%";

    124.界面自适应宽度
    大屏幕,普通笔记本

    3个大屏幕合成1个超级大的“虚屛”

    125.ssh 配置
    我想通过Windows的Putty,配置ssh key来访问远程主机,没有配好。
    最后,实在Linux下配了个,然后访问的。

    126. 防火墙
    Java通过 http连接 linux C++程序,失败。
    防火墙 屏蔽了 端口。

    127. 上传图片
    我在使用阿里云上传,图片的时候,总是上传失败,提示"失败信息"。
    连续2天都这样,我想阿里云的网站不可能一直出问题,所以我怀疑自己的图片出问题了。

    经过分析和判断,最终发现 图片太大,有2M。

    这让我想到Struts2和Spring中配置上传文件的最大值。

    128. 日志性能
    程序运行时,打印日志会降低程序的性能么?
    把日志级别设置为error,info,debug,trace,对程序的性能有影响么?

    打印日志太多了必然会降低性能啊
    因为打印日志是IO操作,所以写程序时一定要注意好是 info还是debug。
    线上运行的一般都是info。


    129.  读取Excel文件
    我的笔记本和公司的Linux服务器,读取1个具有8个sheet的Excel文件,需要6到11s。
    而公司的1个项目,需要下载这种报表,后台数据计算就需要5到10s,客户要求总共时间在10s。
    所以,只能提高前端的效率。

    最终的解决方法:在系统初始化时,预先创建N个Workbook对象,缓冲起来。
    启动1个定时器,检查Workbook对象个数,当达到最低值时,就再创建若干个,达到最大值。

    有2点说明:
    1.该项目的并发量很小,只要求20个,所以预先创建N个对象,是够用的。
    空间换时间,在这种情况下是可行的。

    2.Workbook对象,每用1个,就需要删掉。里面的数据已经变了,不能再次使用了。


    130.SpringMVC使用 Map和实体类接收参数 各有千秋。
    实体类编写比较繁琐,好处是 接收到参数后,类型已经转换成功了。

    131.SpringMVC 处理全局异常。
    @Component(提示:需要扫描这个异常所在的包)
    public class OurException implements HandlerExceptionResolver {


     public ModelAndView resolveException(HttpServletRequest request,
       HttpServletResponse response, Object handler, Exception ex) {
       
     }

     也可以通过在xml文件中注册bean。
    <bean class="××.exception.OurException">  </bean>

    http://fuliang.iteye.com/blog/947191

    132.严格按照顺序 构造SQL语句。
    select
    from
    where
    group by
    having
    order by
    limit

    133.mysql字符串比较时,不区分大小写
    binary char,可以区分大小写
    或者设置数据库的collate。

    create database FansUnion default character set utf8 collate utf8_general_ci

    SELECT * FROM User WHERE loginName = #{loginName} COLLATE utf8_bin

    134.检验一个名字等是否重复时,需要排除自身这个实体。
    比如有个叫 name的用户,修改name的时候,需要检验数据库是否存在重名,
    这个时候应该排除name这个用户。

    135.DateFormat setLenient
    之前都没注意过有这么个方法,否则判断日期格式就太不靠谱了。
    又是晦涩的单词:setLenient(false),严格匹配日期格式

    136.json转换
    JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.TestBean,类中有集合类型的属性 因为JSONObject.toBean()把JSON字符串转换为一个自己定义的类,当其中属性有类似List , Map ,ArrayList的时候,麻烦就来了。

    错误:MorphDynaBean cannot be cast to com.softright.bean.TestBean

    解决方法:
     
    在JSONObject.toBean的时候
     
    如果转换的类中有集合,可以先定义Map<String, Class> classMap = new HashMap<String, Class>();
     
    在classMap中put你要转换的类中的集合名,像:classMap.put("data", StoDataInfo.class);
     
    当然也可以put一个集合类("data",Map.class)
     
    然后在toBean()的时候把参数加上, 像:ShenTongInfo stInfo=(ShenTongInfo) JSONObject.toBean(o, ShenTongInfo.class, classMap);


    http://www.111cn.net/jsp/Jsp-Servlet/41930.htm

    137.Mybatis 原样输出${status} string类型的参数,会报 no getter方法,换成Map就没问题。

    138.Spring解析${jdbc.driverClass}失败。
    Could not load driverClass ${jdbc.driverClass} java.lang.ClassNotFoundException: ${jdbc.driverClass}

    在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。


    解决方法:Spring升级到3.1.1,Mybatis升级到3.1.1,mybatis-spring插件升级到1.1.1
    使用"sqlSessionFactoryBeanName"而非"sqlSessionFactory"
     <bean name="mapperScannerConfigurer_aa" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
           <!--  <property name="sqlSessionFactory" ref="sqlSessionFactory_aa"/> -->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_aa"/>
            <property name="basePackage" value="..." />
            <property name="markerInterface" value="..." />
        </bean>

    http://www.oschina.net/question/188964_32305

    139.缩小filter的过滤范围。
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    /**
     * 缩窄OpenSessionInViewFilter的过滤范围,请求css、js、图片等静态内容时不创建Session连接. 
     * 在web.xml中可配置excludeSuffixs参数,多个后缀名以','分割.
     * 
     */

    140.SpringMVC Controller方法接收Web请求参数。
    使用@RequestParam这个注解。

    让人意外的是:Integer和User等实体类,可以不使用这个注解。
    而用Map接收参数时,必须使用@RequestParam这个注解。

    默认使用@RequestParam Integer id,没有接收到id,会报错。
    @RequestParam(required=false)表示id参数是可选的。

    相关阅读

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


     

  • 相关阅读:
    POJ 3635 Full Tank?
    ZOJ 2112 Dynamic Rankings
    POJ 3468 A Simple Problem with Integers (2)
    FJOI2007 轮状病毒
    HDU 3308 LCIS
    POJ 2449 Remmarguts' Date
    Adroid平台图表案例源码
    Android项目——实现时间线程源码
    关于Ubuntu上Eclipse不显示手机设备
    自定义ListView下拉弹起效果
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463663.html
Copyright © 2011-2022 走看看