2015年工作中遇到的问题141-150

2015年工作中遇到的问题141-150

141.用一条sql语句查询出“每门”课程都大于80分的学生姓名。
Name chengji fengshu
张三 数学 75
张三 语文 81
李四 数学 90
李四 语文 76
王五 数学 81
王五 语文 100
王五 英语 90


给个思路,供参考:


先查出低于80分的学生名单,然后再用姓名作为条件对比,排除刚才查到的学生


SQL Server:


select distinct [Name] from [表] where [Name] not in (
    select [Name] from [表] where [fengshu]<=80
)




142.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select (case when a>b then a else b end), 
(case when b>c then b esle c end) 
from table_name


143.BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法。


  今天在使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:


 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
  上网查了一下这个异常的,找到了原因所在:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
  解决的办法就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。
参考资料:http://www.cnblogs.com/xdp-gacl/p/4000450.html


144. top永远指分割窗口最高层次的浏览器窗口。如果计划从分割窗口的最高层次开始执行命令,就可以用top变量。 
每一个WINDOW对象,不论他是常规HTML页面。框架集页面。子框架还是孙子框架,都具有一个TOP属性。这个属性返回对载入浏览器得最顶层WINDOE对象得引用.


页面中有很多top的方法调用,最初以为是使用了某个框架,结果找不到。突然想起来,会不会是JS中默认的变量,果不其然啊。
$(top.hangge());


145.Zookeeper,zookeeper-3.5.1-alpha。
E:Mongodb-Redis-Nginxzookeeper-3.5.1-alphain>zkServer.cmd
系统找不到指定的路径。
Error: JAVA_HOME is incorrectly set.


执行zkServer.cmd提示JAVA_HOME找不到。


同事用的3.5.7也遇到这个问题。


暂时很难“正面”解决这个问题。
换成zookeeper-3.4.6就可以了。


146.FusionCharts刷新图表。
dayChart = new FusionCharts(swf, "dayChart",width, height);     
dayChart.setDataXML("${todayStrXML}");    
dayChart.render("dayChartContent");   


刷新数据,需要再次调用“ dayChart = new FusionCharts(swf, "dayChart",width, height);”,不然报错:
“Uncaught TypeError: chartObj.setDataXML is not a function”。


if(data.code=="200"&&data.data){
console.log(data.data);
//需要构造新的,为什么呢?
dayChart = new FusionCharts(swf, "dayChart",width, height);     
dayChart.setDataXML(data.data);  
dayChart.render("dayChartContent");   
}


147.Maven工程,pom报错,Update Project的时候,选择“Force update of Snapshots/Releases”效果不错。
一些搞不定的稳定,强制更新就解决了。


148.notifyAttributeAssigned.
Shiro的subject.logout();报如下错误。
 java.lang.NullPointerException
     at org.apache.catalina.connector.Request.notifyAttributeAssigned(Request.java:1565)
     at org.apache.catalina.connector.Request.setAttribute(Request.java:1556)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:178)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)


参考网上资料,使用sendfile="false",或者用Tomcat8  
http://hongjiang.info/tomcat-nio-sendfile-bug/
都不能解决这个问题。


最后的临时笨方法:
try {
subject.logout();
} catch (Exception e) {
// TODO: handle exception
}
  程序的功能,正常实现了。
  正解,不知道。
  
149.Eclipse,根据数据库Table自动生成实体类,节省一大笔时间。
网站开发,新建的Eclipse项目,经常选择Dynamic Web。
项目-右键-属性-找到Project Facets,在列表中选中“JPA”,版本选择2.0,2.1可能不支持。
这个时候,项目-右键-JPA Tools->Generate entities from table.


生成的Model,有JPA的注解,如果不需要,手动删除。


“Project Facets”是非常关键的属性。


也可以自己写“代码生成工具”。


150.Error querying database. Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation '>=' ###


where merchantId='1bc58ff5d2f141e88945e23732f57c4e' and o.payStatus = 1 and 'Jan 29, 2016 12:00:00 AM' >= o.createTime and o.createTime >='Jan 29, 2016 11:59:59 PM'


后端日期格式化,使用的默认格式。
比如,类似这样的。
SimpleDateFormat sdfd = new SimpleDateFormat();
String dateStr = sdfd.format(date);
传入sql中的日期格式,就不对了,然后导致日期比较的时候,mysql出了问题。