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


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
我的电脑显卡是NVIDIA CUDA 11.6.114 driver,win10,64位的,在安装Anaconda时,有如下几个版本:Anaconda-1.4.0-Windows-x86_64.exe 241.4 MiB 2013-07-04 17:58 Anaconda-1.5.0-Linux-x86.sh 238.8 MiB 2013-07-04 18:10 Anaconda-1.5.0-Linux-x86_64.sh 306.7 MiB 2013-07-04 18:22 Anaconda-1.5.0-MacOSX-x86_64.sh 166.2 MiB 2013-07-04 18:37 Anaconda-1.5.0-Windows-x86.exe 236.0 MiB 2013-07-04 18:45 Anaconda-1.5.0-Windows-x86_64.exe 280.4 MiB 2013-07-04 18:57 Anaconda-1.5.1-MacOSX-x86_64.sh 166.2 MiB 2013-07-04 19:11 Anaconda-1.6.0-Linux-x86.sh 241.6 MiB 2013-07-04 19:19 Anaconda-1.6.0-Linux-x86_64.sh 309.5 MiB 2013-07-04 19:32 Anaconda-1.6.0-MacOSX-x86_64.sh 169.0 MiB 2013-07-04 19:47 Anaconda-1.6.0-Windows-x86.exe 244.9 MiB 2013-07-04 19:56 Anaconda-1.6.0-Windows-x86_64.exe 290.4 MiB 2013-07-04 20:09 Anaconda-1.6.1-Linux-x86.sh 247.1 MiB 2013-07-05 08:34 Anaconda-1.6.1-Linux-x86_64.sh 317.6 MiB 2013-07-05 09:20 Anaconda-1.6.1-MacOSX-x86_64.pkg 197.3 MiB 2013-07-05 10:05 Anaconda-1.6.1-MacOSX-x86_64.sh 170.0 MiB 2013-07-05 12:20 Anaconda-1.6.1-Windows-x86.exe 244.4 MiB 2013-07-05 12:29 Anaconda-1.6.1-Windows-x86_64.exe 289.9 MiB 2013-07-05 12:49 Anaconda-1.6.2-Windows-x86.exe 244.4 MiB 2013-07-10 06:19 Anaconda-1.6.2-Windows-x86_64.exe 289.9 MiB 2013-07-10 07:04 Anaconda-1.7.0-Linux-x86.sh 381.0 MiB 2013-09-20 01:04 Anaconda-1.7.0-Linux-x86_64.sh 452.6 MiB 2013-09-20 02:49 Anaconda-1.7.0-MacOSX-x86_64.pkg 256.7 MiB 2013-09-20 05:04 Anaconda-1.7.0-MacOSX-x86_64.sh 223.3 MiB 2013-09-20 11:00 Anaconda-1.7.0-Windows-x86.exe 280.6 MiB 2013-09-20 11:11 Anaconda-1.7.0-Windows-x86_64.exe,请问我应该安装哪一个?
07-24

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值