文档章节

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

jtn
 jtn
发布于 2015/04/13 15:09
字数 1611
阅读 9
收藏 0

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. 

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
lodop打印控件打印申通快递单

第一步先引入插件所用到的JS,插件官网http://www.lodop.net/ 放到head里面 <script language="javascript" src="js/LodopFuncs.js"></script> <object id="LODOPOB" classid="clsid:2105C25......

刘显示
2015/08/25
2.8K
0
ssh 怎么调用mysql的存储过程,请相信一些。

这个是存储过程,不知到怎么调用 : DELIMITER $$ DROP PROCEDURE IF EXISTS `sales`.`getClientMesInfo`$$ CREATE DEFINER=`root`@`%` PROCEDURE `getClientMesInfo`() BEGIN DECLARE num ......

土豆-地瓜
2013/05/30
499
0
Analysis on Malicious SSH Login Attempts

Analysis on Malicious SSH Login Attempts Zhipeng Jiang2017-08-106 阅读 loginsshanalysis Last week when I tried to login to a remote test server, SSH timeout exception occured qu......

Zhipeng Jiang
2017/08/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
38
0
818游戏公司的2017半年报(1)腾讯

今天开始来818游戏公司的半年报情况。已上市的游戏公司相比2015年多了很多,若水只能挑一些看看,权当是自己的阅读笔记,会随意一点。 第一个当然还是鹅厂了。 先看下大概:第二季度端游收入...

上善若水
2017/10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CRM、DMP、CDP都是什么?有什么区别?

Markter对CRM系统(Customer Relationship Management System,客户关系管理系统),营销自动化等概念都已经比较熟悉,也许DMP(Data Management Platform,数据管理平台)也多多少少有些了解。...

怡海软件-CRM
14分钟前
4
0
中台是什么,到底要解决什么问题?

故事的开始 这个最早由阿里在2015年提出的“大中台,小前台”战略中延伸出来的概念,最近在国内大热。阿里、腾讯、百度、京东、美团、滴滴等一众互联网巨头,从去年到今年,接连开始组织架构...

喵二狸
25分钟前
3
0
Linux Centos 7 - MySQL 5.7离线安装

内部网络通过离线包的方式进行安装。 一、下载 下载地址:https://dev.mysql.com/downloads/mysql/ 进入页面后,点击右侧链接。 下载对应版本。 通过xftp6等工具上传到服务器上。 二、安装和...

华山猛男
25分钟前
3
0
EventBus 3 全解

EventBus 3 全解 [TOC] 使用 一个基于观察者模式的事件发布/订阅框架. 用于模块间通信和解耦, 使用方便,性能高. 基本使用 1. gradle导入依赖库 implementation 'org.greenrobot:eventbus:3....

马湖村第九后羿
28分钟前
4
0
HTTP 协议

什么是HTTP协议? HTTP是hypertext transport protocol的缩写,即超文本传输协议。 是用于万维网服务器与本地浏览器之间传输超文本的传送协议。可以使浏览器更加高效,使网络传输减少。能够保...

彩色泡泡糖
38分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部