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

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

下面是我以前在开发中曾经遇到过的问题,分享给大家,大家引以为戒!
路径名称不区分大小写

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

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

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

4:使用数学中的逻辑运算符
乍看起来没有问题,我这样用都用了几十年了,思维定势啊,找了半天,恍然大悟,计算机中比较运算符是不能这样使用的 。

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字段内容是不区分大小写的,至于怎么设置,方法很多,你到官方文档上看去。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值