2014年工作中遇到的20个问题:141-160

141.日期转换。

//输入的时间为毫秒的准确时间

//firstTime:1417139867916,lastTime:1419731867916

public static int getDayBetweenTwoDate(long firstTime, long lastTime){

//当天的0点:1417104000000

long firstCalendaStartTime = getTheDayStartTime(firstTime);

//当天的0点:1419696000000

long lastCalendaStartTime = getTheDayStartTime(lastTime);

//0点相减结果为-2592000000,转int(1702967296),再除,导致结果不对

int days = (int)(firstCalendaStartTime - lastCalendaStartTime) / 86400000;

return days;//结果为-19

}

问题原因:firstCalendaStartTime - lastCalendaStartTime 是比较大的负数,强制转换成int,变成了正数。

应该是溢出或者long强制转换成int导致的。

不改变代码结构,只调整优先级,先执行 除法,再执行 强制转换:

public static int getDayBetweenTwoDate(long firstTime, long lastTime){

long firstCalendaStartTime = getTheDayStartTime(firstTime);

long lastCalendaStartTime = getTheDayStartTime(lastTime);

int days = (int)((firstCalendaStartTime - lastCalendaStartTime) / 86400000);

return days;//-30 2014年11月28日执行,两月相差确实是30天

}

这段代码还有个“有歧义”的地方,通常betweenTwoDate应该返回正数,表明后面的比前面的大几天。

但,咱们的代码想实现的是,前面的时间是否比后面的时间大,如果小于,就表明过期了。

public static void main(String[] args) {

Date now = new Date();

Date d2 = DateUtil.addMonth(now, 1);

System.out.println(now.toString());

System.out.println(d2.toString());

int days = DateUtil.getDayBetweenTwoDate(now.getTime(), d2.getTime());

System.out.println(days);

}

142.分类循环,都加上“编辑”事件。

可行方法1:只有1个地方使用el表达式,使用ready方法,页面加载完成,再渲染

<#list categoryRows as category>

<!-- 循环过程中,js的变量相加‘"#cms_editor"+categoryId’不会生效,所有地方都直接使用${category.id}-->

<script type="text/javascript">

$(document).ready(

function(){

var id=${category.id};

$("#cms_editor"+id).bind("click",function(){

$("#editor_name"+id).toggle();

$("#category_name"+id).toggle();

});

});

</script>

</#list>

可行方法2:每个地方都直接使用el表达式

<#list categoryRows as category>

<script type="text/javascript">

$("#cms_editor${category.id}").bind("click",function(){

$("#editor_name${category.id}").toggle();

$("#category_name${category.id}").toggle();

});

</script>

</#list>

不可行方法3:只有最后1个分类,绑定了事件

<#list categoryRows as category>

<script type="text/javascript">

var id=${category.id};

$("#cms_editor"+id).bind("click",function(){

$("#editor_name"+id).toggle();

$("#category_name"+id).toggle();

});

</script>

</#list>

注意事项:

先执行For循环,Freemarker模版渲染完成之后,返回前端Html,才可能执行js调用。

循环过程中,js的变量相加‘"#cms_editor"+categoryId’不会立即生效。

143. SpringMVC配置了异常处理器,通过实现HandlerExceptionResolver接口。

//解决异常

public ModelAndView resolveException(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex) {

logger.error("error:", ex);

ModelAndView view = new ModelAndView(exceptionPage);

view.addObject("err", ex);

//ex.printStackTrace();

return view;

}

没有在控制台打印异常,错在哪都不知道,略显坑爹啊~

144.Tomcat中配置了404页面。

<error-page>

<error-code>500</error-code>

<location>/error/500.html</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/error/404.html</location>

</error-page>

访问一个不存在的页面,结果总是提示/error/404.html找不到。

加上SpringMVC配置<mvc:default-servlet-handler/>,就好了。

145.修改SiteMesh的Decorator.xml配置文件,需要重启应用服务器。

146.URL区分大小写。

http://localhost:8080/jsgame/flappypig/flappyPig.html

URL中的字母区分大小写,最好统一成小写。

147.Javascript严格模式。

var flappy = (function (self) {

‘use strict‘;

});

设立"严格模式"的目的,主要有以下几个:

  - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

  - 消除代码运行的一些不安全之处,保证代码运行的安全;

  - 提高编译器效率,增加运行速度;

  - 为未来新版本的Javascript做好铺垫。

参考资料:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

148.数据库表的字段不能是关键字,比如“key”。

CREATE TABLE `briefcms_setting` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`key` varchar(255) DEFAULT NULL COMMENT ‘key是关键字‘,

`value` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

数据库的字段名称key,在写update语句的时候,会报错。

update briefcms_setting set value=‘‘ where key =‘‘;

把key改为name就可以了,太坑了。

149.Web服务器响应静态请求。

线上配置Nginx代理。

本地开发配置Tomcat

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>/static/*</url-pattern>

</servlet-mapping>

SpringMVC的也加上,<mvc:default-servlet-handler/>

150.SpringMVC的Controller与Struts2的Action,单例Singleton与多例Prototype。

Struts接收参数,是在Action类定义一个字段,比如Person,接收参数,是类作用域的变量。如果是单例,会共享。

所以,必须配置@Prototype

SpringMVC接收参数,是在Controller的某个方法定义一个参数,比如Person,接收参数,是局部变量。

151.Mybatis的in查询。

方法一:参数list是个集合

<select id="batchList" resultType="java.util.Map">

select * from p2p_loan_info where lid in

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

#{item.lid}

</foreach>

</select>

方法二:参数idList是"a,b,c"这种格式

@Select("select count(*) from p2p_post where category_id in (#{idList}) and status= 0")

Integer getCountIn(String idList);

不可行的方法: category_id in #{idList},category_id in ${idList},idList是"(a,b,c)"。

#{}提示‘‘ 字符串不对

${}提示,找不到变量的getter方法

152.dao和mapper在同一个目录不需要???

<mapper class="com.p2p.user.dal.dao.IdCardDao"/>

<mapper resource="mybatis/IdCardInfoMapper.xml"/>

不需要在mybatis-config.xml引入,只配置Dao根据接口Mapper扫描就可以了。

153. Java和Freemarker对“%”和“-”的支持不好。

Freemarker显示变量,不支持“-”和“%”,params.like-lid或者params.%lid不可以,貌似对"%"和“-”不能正常识别。

<input type="text" class="i-inp" id="search_lid" name="params[like_lid]"

<#if page.params.like_lid> value="${page.params.like_lid}" </#if> />

Java的变量定义,不能以“-”结尾,比如“like-”不行。

//可行

String flagLike = "like_";

154.对第123个问题的修正。

第123.Git Push错误“Error writing request body to server”,解决方法可能会有问题。

我是在“User Setting”中增加的配置,而不是在“System Setting”里。

System Setting是不可写的,提示配置文件“Unknown”。

Boss也遇到了这个问题,他想通过设置“System Setting”,但是总是被拒绝,报NTFile相关的权限异常。

在“User Setting”里设置,就Ok了。

155.Eclipse日志文件存放在何处 。

工程目录,比如J:\JavaWeb\fansunion\.metadata\.log

156.  日期比较between and不够灵活。

where time between ${startDate} and ${endDate}

输入的可能只有startDate或endDate.

<if test="startDate != null">

and time >= startDate

</if>

<if test="endDate != null">

and time &gt;= endDate

</if>

157. Mybatis解决“大于等于号”的问题。

&gt; 大于

或者使用 CDATA

<![CDATA[ when min(starttime)<=‘12:00‘ and max(endtime)<=‘12:00‘ ]]>

158.遇到2个很像的单词,意思也类似。

totle:信息总数;资讯总数;整个;周遍

total:总计的(金额等); 全部的; 完全的; 绝对的

n.总计,总数; 全体数量

159.网上有HTML在线编辑器格式化功能,会把FTL的表达式,弄坏。

<#list list as item>

</#list>

格式化为

&lt;&gt;

160.Commons-Collections的MapUtils工具方法还是不错的。

本来想自己去写个的,结果输入MapUtils.get有自动提示,发现有现成的,又可以偷懒了。

Integer org.apache.commons.collections.MapUtils.getInteger(Map map, Object key)

Gets a Integer from a Map in a null-safe manner.

时间: 2025-01-01 10:22:15

2014年工作中遇到的20个问题:141-160的相关文章

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

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点,就是1

2014年工作中遇到的20个问题:120-140

121.Tomcat增加JVM启动参数.set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%set JAVA_OPTS=%JAVA_OPTS% -Dp2p.config_path=file:C:/Users/Administrator/git/p2p2/yiqihao JAVA_OPTS后的的"=",左右两边不能出现空格.以前好像总结过这个问题,这次又犯了相同的错误,和上面的Tomcat默认配置比较一下,很快就想起了这个问题. 122.图片无法响应,总

2014年工作中遇到的20个问题:161-180

161.Mybatis的Dao找不到xml中的映射配置,可能的一个原因是:xml配置中的namespace不对. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.p2p.user.dal.dao.MemberPointDao.selectForUpdateByUserId <mapper namespace="com.p2p.user.dal.dao.MemberPoi

2014年工作中遇到的20个问题:41-60

41.Maven工程中,src/main/webapp目录结构太深,不方便点击.在普通的Web工程中,WebContent直接就在项目的根目录下,打开页面比较方便.因此,为了方便,把Maven工程的src/main/webapp直接作为"Source  Code"加入到Build Path下,这样可以方便编辑webapp目录中的页面.但是,导致的结果是:Maven打包时,不会把webapp目录下的页面打包到target目录对应的文件中.因此,把src/main/webapp作为Sour

2013年工作中遇到的20个问题:181-200

每个人在工作中遇到的问题,很多都是类似的.了解别人遇到的问题,自己遇到的时候就可以很快地解决它. 很多人不屑于这种“细节问题”,但我想说,掌握这些细节问题一次可能只能帮你节省1s的时间,但是这个细节使用频率非常高, 1年可以节省不少时间的.如果按1秒*20次*300天=100分钟. 181.MySQL数据库是否区分大小写. 方法1:设置字符集校对collate 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: binary case sensitive co

2014年工作中遇到的10个问题:221-230

221.新建Maven项目的2种方式. a.新建Dynamic Web Project,然后转换成Maven项目. b.新建Maven Project,Next,Next,选择cocoon-22-archetype-webapp. 第2种方式,是boss告诉我的,以前我一直喜欢用第1种方式. 第2种方式,暂时没有去实践.上次尝试了下,报错,郁闷~ 222.web.xml中配置taglib. 在Eclipse中会在taglib那一行有一个错误标志,但是运行的 时候没有问题-- 原因: 所使用版本的

分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据

原文:分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前有一段经历 在月初的时候这个数据库曾经置疑过,启动不起来 Could not redo log record (163041:116859:5), for transaction ID (0:-1175226963), on

知乎上关于前端工作中经常遇到的问题总结

有哪些经常被误用的 HTML.JavaScript.CSS 的元素.方法和属性? 以前想要把一个元素(input 之类的)设成只读的时候都是用 disabled,后来发现这是不对的. 因为在 HTML 里面,如果一个元素被设置成 disabled, 那么它的值就不会被发送到 server 端. 正确的做法应该是使用 readonly. 那么除了这个 disabled,在 Web 开发中还有哪些东西是经常被误用的? 添加评论分享 按票数排序 按时间排序 21 个回答 一丝,专业 CSS 吐槽,下面

2014年终工作总结

今天是我来到公司的第20天,2015年的钟声即将敲响,伴随着新的一年的到来,现将个人在2014年的工作总结如下: 首先,来到公司后,我就去熟悉公司原来的比特币的项目代码以及业务逻辑.说实话这个项目的代码写的不是很好,代码中有许多的冗余,代码的重用性太差,接口的通用性不强,而且少了很多关键代码该有的注释,所以,对于我来说,熟悉代码的过程有点长,但是,我每天努力坚持看,现在基本熟悉其中的整体框架以及业务流程.相信慢慢的会更加熟悉,将这个项目未完成的部分努力完成,完成的部分做得更好. 其次,就是现在正