- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
ChatGPT帮我看下这段代码有什么问题
本文G/niumoo/JavaNotes和未读代码博客已经收录,有很多系列文章。
今天一个很简单的功能,触发了一个BUG,处理后我想起了最近爆火的ChatGPT,于是我尝试测试ChatGPT能否发现这个BUG。这篇文章会先介绍功能代码,然后手动分析BUG原因;接着测试ChatGPT能否发现这个BUG。
先说下结论,测试结束,ChatGPT今后可能是我编程路上的好帮手。
今天在测试一个准备上线的新功能时,里面有一段简单的函数,出现了一个BUG。我先说一下这个函数的功能,看下你会怎么写。
功能描述
输入:一个文件夹路径。
输出:这个文件夹中的文件夹数量。
这是一个实现起来比较简单的函数,我顺手写了下面的代码:
StringpathString=/Users/darcy/
FilefileDir=newFile(pathString);
if(!fileDir.exists()||!fileDir.isDirectory()){
thrownewRuntimeException(xxx....
String[]fileList=fileDir.list();
intcount=0;
for(StringfilePath:fileList){
if(newFile(pathString+filePath).isDirectory()){
count++;
System.out.println(count);
功能是实现了,但是很明显,代码比较繁琐,于是我又顺手优化了一下。
Pathpath=Paths.get(/Users/darcy/
if(!Files.exists(path)||!Files.isDirectory(path)){
thrownewRuntimeException(xxx....
longdirCount=Files.list(path).filter(Files::isDirectory).count();
System.out.println(dirCount);
效果是一样的,因为使用了JDK7引入的Files类,让代码简单了不少。
不过正是这段代码,触发了BUG,我先卖个关子,你先看下BUG在什么地方。
你看出问题了吗?改造后的代码运行少量次数的情况下,都是可以正常输出的。但是它有一个问题,就是Files.list返回的Stream流没有进行关闭,这就导致如果这段代码被频繁的调用,一段时间后将会因为打开的文件过多而报错,可以测试出这种异常情况。
在循环中不断运行这段代码:
while(true){
Pathpath=Paths.get(/Users/darcy/
if(!Files.exists(path)||!Files.isDirectory(path)){
thrownewRuntimeException(xxx....
longdirCount=Files.list(path).filter(Files::isDirectory).count();
System.out.println(dirCount);
}
一段时间后控制台收到报错:Toomanyopenfiles
报错的原因是因为每个进程可以打开的文件数量是有限制的,如果一直打开不进行关闭,在达到限制时会报出这个错误。
不妨让代码运行速度降低,然后监控下随着程序的运行,运行进程持有的文件数是否不断增加。
while(true){
Pathpath=Paths.get(/Users/darcy/
if(!Files.exists(path)||!Files.isDirectory(path)){
thrownewRuntimeException(xxx....
longdirCount=Files.list(path).filter(Files::isDirectory).count();
System.out.println(dirCount);
Thread.sleep(1000);
}
下面是用到的命令。
##查找进程ID
?~jps-mlVv|grep
您可能关注的文档
最近下载
- 《慢性胃炎说》课件 —— 深入了解胃病的慢性胃炎.ppt VIP
- 教师招聘选择题试题.pdf VIP
- 人教版八年级上册数学课后习题.pdf VIP
- YD-T 1522.3-2006 会 话 初 始 协 议 (SIP)技术要求 第3部分:ISDN用户部分(ISUP)和会话初始协议(SIP)的互通.pdf VIP
- 上海市名校试卷控江中学高二下英语期末试卷.pdf VIP
- 《建设工程监理规范》GB-T50319-2024版-附.pptx VIP
- 刘庆昌版遗传学答案.docx VIP
- 《“龙江品质”特色产品技术规范 鲜食玉米》.pdf VIP
- 试题题库-—全国通信专业技术人员职业水平考试及参考答案-综合能力(中级.pdf VIP
- 变换题库完整版.doc VIP
文档评论(0)