文档章节

2014年工作中遇到的20个问题:201-220

FansUnion
 FansUnion
发布于 2015/05/03 01:26
字数 1907
阅读 9
收藏 0
201.Mybatis查询不到结果时,返回的是为空不为null的List。
   @Select("select * from p2p_role_privilege where privilege_acl = #{acl}")
List<Map<String, Object>> listByPrivilege(Integer acl);

202.日期的12小时表示与24小时表示。
yyyy-MM-dd HH:mm:ss 大写的HH,表示是24小时制,下午2点,就是14:00:00.
yyyy-MM-dd hh:mm:ss 小写的hh,表示是12小时制,下午2点,就是2:00:00.


格式化,一般发生在number_to_strdate,和date_to_strdate.
如果数据库直接用datetime存储,默认用的是24进制,不用转换。


另外,还会存在情况。
前端js,有的人会使用第三方的date扩展,这个时候“HH”是否表示是24进制,不一定的。


203.Eclipse新建动态web项目时,要选择web版本,有2.5和3.0等,2.5貌似不支持Tomcat7。
项目的Java版本等都是可以修改的,项目-属性-Project Facets,可以修改。


204.ftl中用html注释没用,ftl表达式仍然会执行
<!-- 上次登录时间:${date_to_ymdhms(currentUser.lastLoginTime)} -->
有了注释之后,前端看不到这段代码输出了,但是Freemarker表达式仍然会执行,如果表达式有错误,Freemarker仍然会打印错误信息。


205.Eclipse有个功能,非常坑爹。
打开若干窗口,多个窗口的源代码属于多个项目,如果一个源代码窗口被关闭了,Eclipse会切换到另外一个窗口,如果这个窗口所属的项目,
与上一个不一样,左边的导航栏会切换到新的项目。


但是,我很多时候,希望以左边导航条为“主视口”,不要随意滚动。


206.别名找不到。
<typeAliases>
<package name="com.p2p.user.dal.model" />
</typeAliases>


Base项目,定义了公共的代码。
user项目用到了base项目的model,正好用的是别名。


<package name="com.p2p.base.model"/>  
user项目mybatis-config.xml也要扫描base项目的model才行。


最初以为是Maven打包不对,么有更新。
Maven重新clean,然后install了很多次,还是不行,所以不再怀疑是maven的问题。
认真看控制台的错误提示,发现是mybatis的问题。


为什么不会去怀疑mybatis的问题呢?我想是由于:项目的结构已经稳定了,找不到包一般是maven的问题。


207.资金相关的系统,金额字段可以存储为double类型,比如12.523元。
也可以存储bigint类型,比如12523,就是12元52分3粒。


208.不能把SpringMVC的Errors放到Model中。
@RequestMapping(value = "/test")
public String test(@Valid WithdrawForm form,ModelMap model,Errors error){
error.rejectValue("card", "no_exist","无哦呜提示");
error.rejectValue("fee", "no_exist_fee","fee无哦呜提示");
model.addAttribute("name", "name");


model.addAttribute("error2", error.getAllErrors());
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("C:/a.txt"));
os.writeObject(error);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}

访问test.json,结果返回的json中不会有error里的信息。
最终分析发现,转化成json,需要序列化。
而error继承了Exception,没有实现序列化,而且Exception是个大对象,堆栈信息会比较多。

验证是否实现序列化,写了个“对象输出流”,报异常,提示“没有实现序列化”。

另外,需要注意的是,使用Errors的前提是,使用了@Valid注解。

209.Maven项目经常出现各种各样的问题,刚刚又尝试了一种比较“无敌”的方法。
手动在Eclipse中修改Build Path,可能无法成功。
然后,就找到.classpath文件,手动修改。
如果还是不行,删除.project和.classpath,重新作为Maven工程导入,然后就可以了。


210.Eclipse重构实现类的时候,会提示该实现类实现了某个接口,也会重构接口的方法。


211.PageVo接收分页参数,第几页前端用户系统使用pageSize,后端管理系统使用的是rows。
为了同时兼容前后端,修改setter方法,实际分页的时候,只使用pageSize。
public void setRows(Integer rows) {
this.pageSize = rows;
this.rows = rows;
}

212.Mybatis增加时,获得自增autoincrement的值。
<insert id="add" keyProperty="id" useGeneratedKeys="true">
<selectKey resultType="int" keyProperty="id" order="AFTER">
SELECT
LAST_INSERT_ID()
</selectKey>
insert into
raikou_answer(ask_id,ask_user_id,user_id,summary,content,status,create_time)
values(#{ask_id},#{ask_user_id},#{user_id},#{summary},#{content},#{status},now())
</insert>
这是原来的写法,都是从网上copy的,不过发现这种“selectKey”没有必要写。
下面的写法更简洁。
<insert id="add" keyProperty="id" useGeneratedKeys="true">
insert into
raikou_search_log(keyword,hits,time,ip,browser,os,create_time)
values(#{keyword},#{hits},#{time},#{ip},#{browser},#{os},now())
</insert>

官网的权威说法:
keyProperty (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值
或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。
如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

也就是说,useGeneratedKeys和selectKey子句,只使用一个就行了。


213.Map的key。
map.put(1,"a");
map.get("1");


放进去的值,和取出来的值很可能不一样。
map的key不是同一个,integer的1和string的“1”是不同的。


214.Log4j的properties和xml方式配置各有好处。
properties比较简洁,编辑方便。
xml结构化更清晰。
有点需要注意的是,properties格式,只需要把log4j.properties放到classpath下,自动能读取到。
而log4j.xml则需要手动初始化,在web.xml中配置listener或者java应用程序中,手动初始化一次才能使用。
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


215.2014年11月30日,某企业客户给我打了500元的技术服务费到支付宝。
当天,我看到余额增加了500元,把他转到余额宝,然后就没有关注了。
今天,我想看下上个月的收入记录,但是从支付宝的交易记录始终查询不到这笔收入。


我弄了半个多小时,找到了“支付宝转入余额宝500元”这笔记录,从时间和金额来讲,只有这一项和那笔500元的服务费相似。


突然,我注意到,这笔记录的后面,有个“向下的箭头-点此查看明细”,然后点击“查看收支明细”-找到了这笔记录。


我感觉这个功能,好难用啊,为什么不能直接查到这笔收入呢???


明天去问问在淘宝工作过,开发过支付宝一些功能的boss。


216.Boss的Eclipse项目,访问总是提示页面找不到。
前端页面找不到,应该就是配置文件,没有弄好,但是去看配置,确实没有问题。
尝试了很多方法,还是不行。
最后,我觉得应该配置文件被Jetty缓存了,清理Maven的target目录,重启Eclipse就好了。


217.今天,又在替一个GG擦屁股,代码写得有问题。
认证标志是char类型的,想根据某个int类型的status来判断,是否经过了认证。
int statuc=1;
char auth;
不能强制类型转换(char)1。
太坑了额~


218.再次强调第213个问题,map的key是object类型,取值的时候,一定注意key的类型。
int和string的“1”是不同的。
另外,枚举类型,是根据枚举的name还是index,要注意。
getIndex是获得枚举类型UserAuthName索引的方法。
UserAuthName.AUTH_REALNAME.getIndex()


219.数据库表的字段有几十个,而最常用的字段却放在了后面。
每次去看,都很麻烦,修改,把最常用的字段放在最前面。


220.date数据截断。
数据库日期是bigint(10),程序报错。
Data truncated for column 'exptime' at row 1。
最初我以为是,bigint(10)太短,后来发现是:插入日期是Date,存储日期是int导致的。


相关的还有一个问题,bigint后面的(10)是神马意思呢?



© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
echart折线图,当数据量较多的时候,如果拖动浏览器高度小于300px的显示问题

echart折线图,当数据量较多的时候,如果拖动浏览器高度小于300px,初次加载后,鼠标移到折线图上,会出现屏幕抖动现象 附上option可以重现: option = { title: { text: '折线图堆叠' }, to...

咖啡猫yyy
2018/07/14
577
0
OpenVPN应用案例

OpenVPN服务器的搭建:http://qicheng0211.blog.51cto.com/3958621/1575273 CentOS下OpenVPN客户端配置:http://qicheng0211.blog.51cto.com/3958621/1840055 应用一、点对点安全通道 工作中......

张斌_青岛
2016/08/19
0
0
关于Echarts的formatter方法的问题

@Kener-林峰 你好,想跟你请教个问题: 我打印出来是这样的: 这是完整的demo图: 而我的数据格式是这样的: data: [{name:'服1',value:-220}, {name:'服2',value:-232}, {name:'服3',value:......

宋永涛
2015/01/12
3.1K
1
Python3 欧拉计划 问题21-25

问题16-20参见:http://www.jianshu.com/p/63b4f80bd84e 21、亲和数 记d(n)为n的所有真因数(小于n且整除n的正整数)之和。如果d(a) = b且d(b) = a,且a ≠ b,那么a和b构成一个亲和数对,a...

AiFan
2017/12/05
0
0
2014 用户最喜欢/最讨厌的科技公司榜单

国外媒体VentureBeat最新发布的报告显示,亚马逊依然是全美国最受欢迎的科技公司,而时代华纳有线则是最不受消费者待见的。该项调查借用了密歇根大学的ACSI数据模型,通过收集分析2014年内的...

oschina
2015/01/02
9.8K
28

没有更多内容

加载失败,请刷新页面

加载更多

为构建社交关系链手淘都做了啥?

作者|王卫(泓冰) 出品|阿里巴巴新零售淘系技术部 01、淘宝社交关系推荐的背景 1、互联网下半场到来:互联网的下半场,人口红利消失,各大平台需要对用户做精细化运营,用户的增长和留存是每一...

阿里云官方博客
6分钟前
3
0
Iaas/Paas/Saas有何区别,一个故事告诉你

云计算有三种服务模式,IaaS,PaaS和SaaS。单从英文全称去理解,他们分别是“基础设施即服务”“平台即服务”和“软件即服务”。 这样翻译过来可不好理解,但是我们可以举个例子。现在我们就以...

JEPaaS云平台
14分钟前
3
0
温度传感器怎么测好坏

  温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内。   有以下四种方法;   1、若是有...

仙溪
14分钟前
3
0
zk中ZooKeeperServer解析

内部类 ChangeRecord 处理PrepRP和FinalRP之间的信息 static class ChangeRecord { ChangeRecord(long zxid, String path, StatPersisted stat, int childCount, List<ACL> acl) {......

writeademo
24分钟前
3
0
LNMP---安装worrdpress、discuz,域名重定向,用户认证,nginx访问日志

4.34 安装wordpress 4.35 安装discuz 4.36 域名重定向 4.37 用户认证 4.38 nginx访问日志 一、安装wordpress 创建博客: 添加一个博客的虚拟主机 blog.tobe.com.conf 做如下更改 安装博客wor...

tobej
26分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部