程序开发中那些莫名奇妙的bug

众所周知,程序员的使命,就是不停的编程,调试,测试,直到上线为止。但其中相当一部分时间都花费到调试上,因为我们总会在开发过程中因为不同的环境,不同的编码语言规则,导致我们遇到各种各样的奇葩问题,对于这些问题,当别人发现这些问题时,我们很惊讶的告诉别人,这不可能!或者说要不然你重启下,或者你电脑抽风了吧,实际上,有些问题,是因为我们的个人习惯导致的bug,百分之九十的情况下通过重启根本解决不了任何问题,所以我们在编程过程中一定要养成谨慎,认真的习惯。从而节省我们更多的时间去做更有意义的事情。

下面是我以前在开发中曾经遇到过的问题,分享给大家,让大家引以为戒!

  1. 路径名称不区分大小写

例如:在web端程序的控制层action返回一个页面路径时,假设路径中的某个元素使用了大写,而静态页面使用了小写,如果你在Windows下开发可能不会出现任何问题,因为Windows下不区分大小写,那天你的服务要是部署到Linux服务器上,那时日志里面一直出现504异常,你就彻底歇菜了。

 

2.    html页面中id重复

如果你使用jq选中一个id进行操作,忽然发现失灵了,怎么操作都不起作用,你就应该检查下你的页面中是否存在重复的id。

 

3. 前端数据传到后台时掺杂前端的数据。

有时我们为了使体验更好,都习惯在输入框里面使用placehoder,殊不知,在IE8下,placehoder里面的值会直接传到后台,这时就应该加上判断,再比如js一直报错‘缺少右括号’,检查一下你的代码是不是有空格,浏览器默认结束了,要注意加上\" \"字符防止浏览器认为你的字符结束。还有如果你的前端代码写的不标准,因为浏览器解析的原因,很可能把一些/等等前端符号传到后端,最后造成一些莫名其妙的错误。

 

4. 使用数学中的逻辑运算符

          if(2<a<7){………}乍看起来没有问题,我这样用都用了几十年了,思维定势啊,找了半天,恍然大悟,计算机中比较运算符是不能这样使用的 。

 

5. 文本文档的编码格式问题

通常我们在打开记事本,编辑文字时,Windows下记事本的编辑格式默认使用ANSI,它包括gbk,gb2312,但是我们Java程序习惯使用utf8,如果我们把这个文件读到程序中,可想而知,全是乱码(有时后果很严重的)。

 

6. 忽然发现Java中的repalaceAll不能使用了。

String str = "我们都是中国人.......";

String replaceAll = str.replaceAll(".", "");

这里面的点号,是无论如何也不能替换掉,不仅不能替换掉,而且其他文字也替换掉了,这时你如果细心点,你会发现在Java中点号是特殊字符,它代表任何字符。(详细的你可以参考正则表达式部分转义字符的api)。

 

7.    char x = 'x';System.out.println(true?250:x);

结果为ú,对于三目运算符中的两个结果,如果一个是常量,一个是类型T的变量,则常量会被转型为类型T。

 

8.    mysql数据库字段值的大小写问题。

如果插入2个不同的值当做key,但是数据库就是抛出duplicated key,这时你需要仔细看一下你的两个值一样不一样的区别是不是在大小写上面,在默认情况下mysql字段值得内容是不区分大小写的,至于怎么设置方法很多,你到官方文档上看去。

 

如有问题请扫码回复

 

转载于:https://my.oschina.net/u/1787735/blog/625265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值