做为程序员,解决bug是平时工作的重要部分。很多程序员都是因为调试bug,解决线上问题占用了很多时间,最后不得不加班去赶进度,完成项目任务。加班还能忍受,最难以忍受的是最后发现导致问题的原因都是一些所谓的低级错误,而且这些错误在测试的过程中很难发现。下面举几个常见的例子一起分享一下。
1、 Integer类型的比较:
在开发中比较大小是最常见最基本的表达式,但是这里边也隐藏了一个坑。
不看答案猜下下边代码的运行结果:
Integer integer1 = 3;
Integer integer2 = 3;
if (integer1 == integer2)
System.out.println("integer1 == integer2");
else
System.out.println("integer1 != integer2");
Integer integer3 = 300;
Integer integer4 = 300;
if (integer3 == integer4)
System.out.println("integer3 == integer4");
else
System.out.println("integer3 != integer4");
感觉如何?如果猜中了,那么请再看下边的代码:
Integer a=1;
System.out.println(a==1?"等于":"不等于");
Boolean bool=false;
System.out.println(bool?"真":"假");
这个又感觉如何,想知道答案的话请百度搜索 Java的拆装箱问题。
2、 Java中集合类的选择:
前端时间接到个需求,要求把字典表加载到Jvm内存中,支持范围搜索,搜索要高效。面对这个需求要怎么做呢?
首先列举熟悉的Java集合容器。
通过查看API文档发现,支持范围搜索还好说些,很多容器的构造方法都支持Comparator比较器,只要重写比较器就可以实现范围搜索,比较头疼的是搜索要高效。
如何实现搜索高效呢?只能查看各个集合容器的底层数据结构了,TreeMap,TreeSet的构造函数都支持比较器排序搜索,但是两个谁更高效呢?搜索两个底层结构比较一下看看吧。
3、 tomcat部署应用
在tomcat的配置文件中有个这样的配置。
那么请问在tomcat启动的时候,加载了几个应用呢?
这两行代码又加载了几个应用呢?
以上两个为什么会出现这样结构呢?
请搜索tomcat源码分析查看一下吧。
平常工作中遇到的所谓低级错误其实都不是低级错误,顺着错误连着问三个为什么,然后努力去寻找到答案,相信会有不一样的收获。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.