文档章节

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

FansUnion
 FansUnion
发布于 2015/05/03 01:31
字数 1820
阅读 8
收藏 0

 
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


 

 

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
thrift,HELP

thrift客户端调用时,返回: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.inv......

人间处处是BUG
2017/04/06
105
1
如何使用mysql查看用户权限

代码片段:查看用户权限 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5......

bigfool007139
2014/11/10
0
0
DATAGUARD 添加修改REDOLOG大小

DATAGUARD 添加修改REDOLOG大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52......

rootliu
2018/07/27
0
0
所有中国ip网段

wget -O cnipv4 .txt http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest grep "CN" cnipv4.txt |grep "ipv4" | awk -F "|" "{print $4,$5}" >ip.txt 1.0.1.0/24 1.0.2.0/23 1.......

小丑人间
2012/01/14
0
0
nginx 主动式后端服务器健康检查

原文链接 http://tengine.taobao.org/documentcn/httpupstreamcheck_cn.html 查看:http://www.cnblogs.com/rainy-shurun/p/5416160.html 本文转自 Tenderrain 51CTO博客,原文链接:http://b......

科技小能手
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

威胁快报|新兴挖矿团伙借助shodan作恶,非web应用安全再鸣警钟

近日,阿里云安全发现了一个使用未授权访问漏洞部署恶意Docker镜像进行挖矿的僵尸网络团伙。我们给这一团伙取名为Xulu,因为该团伙使用这个字符串作为挖矿时的用户名。 Xulu并不是第一个攻击...

阿里云官方博客
17分钟前
3
0
MD5 加密需要注意编码格式!!!

相信做过MD5加密的童鞋都遇到过字符编码的坑,一般加密出来的结果和其他人不一样都是字符编码不一致导致的,比如类文件的字符编码、浏览器的字符编码等和对方不一致,所以就需要转码统一字符...

jason_kiss
19分钟前
1
0
python中字符串的操作

https://www.jianshu.com/p/7fc851b6a7ee

writeademo
28分钟前
1
0
如何制定 Java 性能调优标准?

想让你的程序更快更稳,但是系统经常出各种 bug,无从下手?Java 性能调优全攻略来啦! 我有一个朋友,有一次他跟我说,他们公司的系统从来没有经过性能调优,功能测试完成后就上线了,线上也...

Java领航员
29分钟前
2
0
java博客项目

项目地址:https://github.com/otale/tale 项目演示地址:https://tale.biezhi.me/ 项目介绍:Tale使用轻量级mvc框架Blade进行开发,默认主题使用漂亮的pinghsu, 特征 设计简洁,界面美观 ...

编程资源库
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部