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點相減結果為⑵592000000,轉int(1702967296),再除,致使結果不對
int days = (int)(firstCalendaStartTime - lastCalendaStartTime) / 86400000;
return days;//結果為⑴9
}
問題緣由: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;//⑶0 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>
訪問1個不存在的頁面,結果總是提示/error/404.html找不到。
加上SpringMVC配置<mvc:default-servlet-handler/>,就行了。
145.修改SiteMesh的Decorator.xml配置文件,需要重啟利用服務器。
146.URL辨別大小寫。
http://localhost:8080/jsgame/flappypig/flappyPig.html
URL中的字母辨別大小寫,最好統1成小寫。
147.Javascript嚴格模式。
var flappy = (function (self) {
'use strict';
});
設立"嚴格模式"的目的,主要有以下幾個:
- 消除Javascript語法的1些不公道、不嚴謹的地方,減少1些奇異行動;
- 消除代碼運行的1些不安全的地方,保證代碼運行的安全;
- 提高編譯器效力,增加運行速度;
- 為未來新版本的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類定義1個字段,比如Person,接收參數,是類作用域的變量。如果是單例,會同享。
所以,必須配置@Prototype
SpringMVC接收參數,是在Controller的某個方法定義1個參數,比如Person,接收參數,是局部變量。
151.Mybatis的in查詢。
方法1:參數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>
方法2:參數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在同1個目錄不需要???
<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:JavaWebfansunion.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 >= endDate
</if>
157. Mybatis解決“大于等于號”的問題。
> 大于
或使用 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>
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈