开发中遇到的问题及解决办法
1、创建maven项目报出:Dynamic Web Module 3.0 requires Java 1.6 or newer.错误
解决思路:出现此问题一般是jdk版本的问题,maven 2.1默认用jdk 1.3来编译,maven 3 用jdk 1.5,如果要用其他版本需要compiler插件指定
解决办法:在pom.xml中加入下面这段
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>
然后项目右键->Maven->Update project configuration,ok解决
2、从oracle数据库中查询数字的时候,出现“.1”和“40.”问题
问题描述:1)查询数字为0.1的时候,查询结果为.1
2)查询数字为40的时候,查询结果为40.(这个是在解决.1的时候出现的问题)
解决思路:解决1)的方法为:to_char(0.1,'FM9999999990.99')。其中FM是将结果0.10->0.1
但是在解决了1)的时候又会出现to_char(40,'FM9999999990.99')=40. 的问题,用rtrim('40.','.')=40将‘.’去掉
所以最终的解决方案为:rtrim(to_char(num,'FM9999999990.99'),'.')
3、在eclipse中进行开发时,经常会遇到切换jre版本问题
解决办法:1)添加jre版本到eclipse
2)项目右键->Properties->Java Build Path->libraries->Add Library->Alternate JRE进行更换jre版本
4、linux 下执行.sh文件总是提示permission denied
如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限)
chmod 777 *.sh
or
chomd +x file.sh
然后运行就OK了
5、关于web项目中乱码的问题
1)form表单post的提交不会出现乱码
2)get方式提交url会出现乱码
解决办法:url在js中处理一下
var requestUrl = "/login.action?userName="张三"; requestUrl=encodeURI(requestUrl); requestUrl=encodeURI(requestUrl);//注意这里必须要处理两遍,不然tomcat会解码一次,相当于没编码
在action中解码
String userName = request.getParameter("userName");
userName = URLDecoder.decode(userName, "UTF-8");
6、修改mysql密码,新密码没有生效
问题分析:出现此问题的原因是没有刷新权限
解决办法:
1) 修改密码后重启数据库
2) 修改密码后刷一下权限:Flush privileges
附-修改密码:
1)sql语句修改
UPDATE user SET password=PASSWORD('新密码') WHERE user='用户名'; FLUSH PRIVILEGES; 或者 SET PASSWORD FOR root=PASSWORD('123456');
2)命令行修改
mysqladmin -u USER -pOLDPASSWORD password PASSWORD
7、移植数据库后出现[Err] 1449 - The user specified as a definer ('admin'@'localhost') does not exist错误
问题描述:用软件将本地数据及结构导出数据库脚本,在另外一台上面执行相应的数据库脚本,当运行程序插入或者触发事件时报错:[Err] 1449 - The user specified as a definer ('admin'@'localhost') does not exist
解决思路:出现这个问题是因为另外一台电脑没有admin用户(每次用软件新建连接时相当于新建用户)
解决办法:
1)
grant all privileges on *.* to admin@"%" identified by "."; flush privileges;
2)将之前导出的脚本中关于admin的换成另外一台机器上的用户,让后再执行数据库脚本
3)更新数据库的definer
UPDATE mysql.proc SET definer='root@localhost' WHERE definer = '*admin*@localhost'; UPDATE mysql.event SET definer='root@localhost' WHERE definer = '*admin*@localhost';
8、java中用double损失精度的问题,出现0.0000**1偏差
问题描述:double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。经常会因为精度丢失而导致程序处理流程出错。
所以一般对double类型进行运算时,做好对结果进行处理,然后拿这个值去做其他事情。
解决思路:使用之前进行处理
解决办法:
1)java中
/** * 对double数据进行取精度. * @param value double数据. * @param scale 精度位数(保留的小数位数). * @param roundingMode 精度取值方式. * @return 精度计算后的数据. */ public static double round(double value, int scale, int roundingMode) { BigDecimal bd = new BigDecimal(value); bd = bd.setScale(scale, roundingMode); double d = bd.doubleValue(); bd = null; return d; } /** * double 相加 * @param d1 * @param d2 * @return */ public static double sum(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.add(bd2).doubleValue(); } /** * double 相减 * @param d1 * @param d2 * @return */ public static double sub(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.subtract(bd2).doubleValue(); } /** * double 乘法 * @param d1 * @param d2 * @return */ public static double mul(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.multiply(bd2).doubleValue(); } /** * double 除法 * @param d1 * @param d2 * @param scale 四舍五入 小数点位数 * @return */ public static double div(double d1,double d2,int scale){ // 当然在此之前,你要判断分母是否为0, // 为0你可以根据实际需求做相应的处理 BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.divide (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); }
2)js中四舍五入
小数点问题
Math.round(doubleNumber*100)/100 (保留 2 位)
function formatFloat(src, pos) { return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos); }
9、解决sublime text3 ctrl+shift+p 报“package control there are no packages available for installation”错误
这个问题的原因因该是网站证书的原因吧!
我们要想正常使用Package Control来安装插件的话,我们可以将浏览器检查证书的地方给勾掉。