j***a语言基础调试,j***a调试技巧

kodinid 17 0

大家好,今天小编关注到一个比较有的话题,就是关于java语言基础调试问题,于是小编就整理了2个相关介绍Java语言基础调试的解答,让我们一起看看吧。

  1. java什么时候该写.close()释放资源,不写可以吗?
  2. 改别人代码的bug,觉得有些吃力,是我太菜吗?

j***a什么时候该写.close()释放***,不写可以吗?

虽然J***a有自动内存回收机制,但是如果数据库连接网络连接、文件操作等,不close是不会被回收的,属于不正确的代码

也就是说,有close方法,必须得自己调用一下才行。

java语言基础调试,java调试技巧-第1张图片-安济编程网
图片来源网络,侵删)

垃圾回收机制仅在J***a虚拟机所控制范围内释放***。

对于类似于数据库连接、socket以及文件操作等,

如果有close方法,在你完成任务执行

java语言基础调试,java调试技巧-第2张图片-安济编程网
(图片来源网络,侵删)

并且最好在finally块内做close,因为即使发生了例外,这些代码也能被调用。

对于使用完了的对象来讲,J***a不推荐使用类似于C++的析构函数来释放内存(C++中new完后得delete,J***a中new完,使用后,将其置

成null比较好),因为GC会调节最适当的时间来释放内存,在程序中滥用delete会降低J***a程序的性能(但应该不会引发额外的错误)。

java语言基础调试,java调试技巧-第3张图片-安济编程网
(图片来源网络,侵删)

改别人代码的bug,觉得有些吃力,是我太菜吗?

改别人代码吃力,这是很正常的一件事情,毕竟代码是别人写的,我们要想改他的bug首先要做的就是要找到他的bug,为了找到他的bug我们又不得不去搞懂他的逻辑知道它到底是如何写的写了什么,所以会比较吃力

别说改别人的bug了,在工作中别人的代码我都懒得拿过来用,因为别人的代码并不是为你的项目写的所以或多或少要去修改,要修改就要去读懂,因为我比较懒,能自己写的尽量自己去写这样反而比修改别人的代码要快得多

如果你觉得修改别人的bug比较吃力并且有明显的异常报错,我们就可以完全面向谷歌编程啊,因为问题不止你一个人会遇到,多数情况下网上会有现成的解决方案

同时可以***取断点调试的方法,逐步地去排查,这也是很不错的方法

如果实在不行就去请教别人,很多久经沙场的大牛可能一眼就看出来问题出在哪里


技术经验都是积累出来的,没有菜不菜,多练就是了。总结下我的排查bug经验,互相学习

1、出现bug,分业务级别还是系统级别。

解决业务bug:首先理清各个业务逻辑线,然后打断点调式代码,很快会定位原因,改起来也就简单了。

系统级别bug(例如系统卡,内存溢出等):这时候要利用监控工具,查看JVM或者各个中间件的使用情况,根据各日志去定位问题

2、平时多研究监控工具使用,在排查问题是挺有帮助的

3、提高自己的代码阅读量。阅读量上去了,那你看别人的代码才会迅速看懂理解

调试程序的能力确实是评价程序员整体技术水平的一个重要方面,但是由于不同程序员往往会面对不同的开发场景,所以程序的bug也会有很多种不同的呈现形式,所以如果调试一些复杂度比较高的程序,即使是经验丰富的程序员,也不会感觉特别轻松。

程序员调试程序的能力,往往由三方面因素决定的,其一是自身的从业经验;其二是自身对于业务的理解;其三是算法设计能力。

代码量对于程序员调试能力的影响是最为直接的,通常代码量越大的程序员,往往也会有越强的调试能力,这一点在调试一些常见bug时会表现得特别明显,很多初级程序员在程序出现bug时,往往需要很长时间来进行调试,但是老程序员几乎是“一眼”就能发现问题,关键还是编程经验起到的作用。

程序员对于业务流程的理解情况对于调试能力的影响也是比较直接的,因为程序设计往往需要与业务流程相契合,尤其是管理软件,很多复杂的逻辑都来源于具体的业务规则,所以如果不了解业务规则很难进行程序调试。实际上,很多程序员在半路接手程序代码时,都需要对业务有一定的了解,而这个过程往往是比较耗费时间的。

算法设计能力也会在很大程度上影响程序员的调试能力,虽然目前很多应用级开发任务中并不会有太多关于算法的内容,但是算法设计能力对于程序员的逻辑思维能力也有非常大的影响,所以算法设计能力强的程序员,在理解代码时往往也会更快。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!

到此,以上就是小编对于j***a语言基础调试的问题就介绍到这了,希望介绍关于j***a语言基础调试的2点解答对大家有用。

标签: 调试 程序员 代码