00:00
好,那这呢,就咱们把这几个算法题呢,就讲完了,剩下这两个呢,我就不说了啊,这个大家下来的话呢,有必要呢,就是思考思考,然后呢,把这些题目呢,就去写一写啊,这些题目的话呢,还是这个意思,就是并不是说大家可能某一个方法呢,你不清楚是什么意思,写不出来了,就是说当你综合去应用的时候呢,你发现这个整合能力呢,稍微差一些啊,其实最痛苦的时候呢,就是大家写完这个代码以后呢,这个代码本身你要说呢,有很多方法你不会用,或者呢很多结构没见过这个,看不懂这个,还心里边还能好受一点啊,因为你这个结构没见过嘛,当然呢,如果这里边每个方法,每一个属性,每一个这个循环结构都认识,然后放在一起呢,发现看不懂,这还是很伤人的,那就是这个逻辑能力的问题,这个呢,不是一天两天能训练出来的,对,见到一道题呢,你做一道题去思考,想清楚了下一道,诶日积月累出来的,它不像一个API啊,这个thad类不认识,告诉你说它是到线程用的,有几个方法啊,Start方法呢,就是启动线程调转方法了,哎,跟你一说你就清楚了,这你。
01:00
知道了这种呢,都是这个这个API会不会的,这个区别一下子就会了,而这种呢,整合这种已经会的东西,这个能力呢,是需要时间积累的啊好这就过了,那么咱们这个课后还有一道这个小题目。这个小题目的话呢,通过它来说明一下,在我们在我们这个idea当中,大家怎么去debug调试啊,CTRLC,那这个呢,我再去新建一个这个包,那新建一个包先com点艾特硅谷点Java。嗯,这呢就叫做这个咱们这个idea的一个debug。嗯,Debug的一个debug性啊,一个体会。这呢,我就不写main方法了,我写个单元测试方法test,这是关于这个string buffer的一个题目。当然呢,这道题目本身的话呢,其实还是有难度的。嗯,这呢其实也是一道笔试题,但是这个笔试题呢,确实挺难的啊,难到哪了,就是平时我们可能写的时候呢,代码不注意,所以呢就会出错,你看一下我这定义了一个润,这呢是一个buffer,然后接着呢,我做了一个openend,相当于我加了这个润呢,是一个now。
02:15
那么这时候你要想就是说,诶,到底会不会出现控制人的问题,哎,这是你要考虑这个事情啊,就是如果要出的话,它就在这儿会出现了。嗯,那么事实上的话呢,我们通过运行会发现这个位置呢,其实没有出,那没有出的话呢,这块又打印说这个buffer它的lengths,那呢可以考虑的几个点,第一个这块出控制针了,第二个呢,就是这块呢没除这块呢长度是零,因为呢,你这个no是吧?啊那再一种情况呢,就是这块呢,A这个这个没有抛异常还出长度了,还不是零是四。那这个题目是多少呢?这个题目的话呢,说零呢,肯定下来没有看这个题了啊,这个题确实有点难度,就是你没有看,然后呢,你还能说对这个概率其实挺低的,那实话讲是啊挺低的,这个呢是四是四四谁呢,就是NL它这四个字母是吧,那那这里边我们打印一下,这个呢,打印出来了,你看到他是个闹,但这个闹呢,你注意它可不是这个闹,它是这个闹。
03:21
也就是说呢,大家你如果这个位置啊,你一不小心蒙对了,说的是四,然后这个伟人写成照了,那完了还不如这个四没答出来那个错误来的厉害啊,你这个是四,相当于你连控制人都没出,你这块呢,写了个这个这个这种闹啊,你要写这种闹呢,上面这个肯定按说该控制人了是吧?嗯,这个呢,出来的结果呢,是这种带引号的这个闹啊。哎,所以它这个长度呢,就是四四个字字符呗,那这呢是咱们把这个闹呢作为open的方法,这种给它往里添加的,发现呢,这个过程中没有抛异常,而且呢,就把这个n nul呢,这个nu就当成是一个字符串这个闹了,而我们通过这种构造器的方式,把这个str呢放进去,发现呢跟这种方式呢不太一样。
04:11
这个时候呢,我们就其实没在这儿出哈,嗯,这块呢就是这块如果觉得很难了,这块呢就更难了,有的同学确实这块呢是能说对的,但是到这儿呢就折了,在这个位置呢抛异常了。抛异常了,那那这抛异常了,我们又没处理,显然这个代码呢,就执行不到了。啊,这就这个题目啊,首先呢,我们先执行一下,看看这个结果。嗯嗯,第一个呢,这是四,呃,这个位置呢,是带引号的这个闹,然后在后边呢,出了一个控制针,一常这个呢,就出现在咱们这个21行啊在这个位置抛一场控制帧行,那下边呢,我们就关心一下说诶怎么回事造成的,那那一方面呢,就是你自己呢,去点到这个源码里边,你去看,点到源码里边去看,就比如说这呢,你关心一下这个喷它到底怎么做的,你点进去这个呢,咱们itr呢,你知道它是个闹。
05:10
哎,这个不用管,你看这个调super的这个openend no,相当于把no写进去了,Openend这是个no这块呢,就看说如果呢,你这itr是个no return一个它,那你就得看一下它呗,它呢你看进来以后,其实就相当于把我们这个,呃,你这个字符串哈,就是分成三个字符四个字符了。哎,Count的话呢,这不你这加加一下两下,三下四下,然后负一下,这不就是四嘛,所以我们再回来去判断这个LAS的时候,哎,它就是四,那真实的内容呢,这不也看到了,在里边我们把VALUE6呢,这不确实呢,给它添加过了,那所以说呢,这个数据呢,也就是双引号里边的nul。呃,相当于咱们自己点开看的这个源码啊,那行再接着往后这个呢,你有一个string buffer,我把it tr呢扔进去,这个呢,你就得看构造器了,构造器一进去这H2它呢上来就super破了,这个通过闹去点,这不就控制帧了吗?
06:06
诶,所以呢,这是我们自己呢,点开这个源码来看的啊,你自己点开源码看,其实就相当于咱们在手动的去de bug了,那我们下边来看一下idea当中我们如何去debug,那这里边我们比较关心的点呢,一个是它的end,再一个呢调它的点LAS啊,再一个呢,这个构造器你可以去点多个这个点,跟咱们这个ecl当中稍微有点区别哈,Ecl那块是在这个行号。好像是左边吧,双击一下出来个小的一个小点,这块单击一下就行,还是个大红点,看你眼神不好是吧?啊然后呢,这个要是咱们这个单元测试方法的话呢,咱们都是双击选中这个方法名去run as啊去run啊,这时候你别点这了,点这呢,这个白加这个点了下边有个叫debug,诶点一下哎,这就过来了啊这个idea这个debug工具呢,其实也挺好用的,嗯,这块呢,其实有些键跟咱们原来在idea当中呢,其实在E当中是一样的啊,这个我可以稍微的开一个看一看。
07:09
行,那么有几个对应关系啊,像这里边儿呢,这个是一行一行的往下移啊,一行一行往下移,这两个呢,都是叫into,就是比如说我们这个方法呢,你想看它里边怎么执行的,就是哎操作这两个操作了,这个呢,你要是进去以后呢,还想出来叫step out啊这个英文的话呢,那这个呢是step into,这个是force强制呢去进入,这个呢就是step over,对应呢,就是我们这里边的这几个操作了。啊,这个呢,相当于是into,这个呢相当于是over,这个呢相当于是出来,就是通过这个图标呢,就很清楚的能够看得到啊通过这个操作呢,咱们是从一个debug的这个点到下一个点啊resume,然后在我们这块呢,这不就是它吗。啊,这是res啊,比如说你看我现在啊跑跑起来这程序以后呢,它首先呢,会执行到咱们第一个debug的这个点上,然后我要点它的话呢,就进入第二个点,再点呢就回到第三个点,后边没有了,你再点它就结束了啊然后呢,在这个过程当中,如果你已经看到相应的一些想看的信息了,你可以点这个就进行停止啊,这跟咱们这里边这个停止是一样的,哎,主体呢,咱们就用这几个功能了啊,其实有个对应关系,呃,你要想重新再让它跑起来,呃,一方面呢,你可以双击选中啊这块呢,再去给它做de bug啊,或者的话呢,直接我们这有一个小抽虫啊,这个bug不就抽虫嘛,哎,然后我点一下呢,就重新让它就跑起来了,跑起来以后呢,比如我现在让它这个,诶往后走到第二个了,走到第二个呢,发现诶第一个我忘了看里边代码了,你可以再重新点上它,重新去跑起来,相当于重新执行好,那么在这个时候呢,我们可以点,比如这个叫强制进入啊呃,现有的我们这个str呢,这不是个nor吗?就是在这个执行过程当中,这个相。
08:53
那些变量的情况,哎,这个40BUFFER呢,我们去new这个对象,所以它会有个地址值,我们点这个强制进入,这就进到咱们这个openend的这个方法当中了,哎,这个呢不关心,我就点下一行代码,然后调这个super的end,这个时候呢,会显示一下你这个值是多少。
09:10
那这个就不用你脑子里边去记了,它都这块写着,因为调的时候呢,你传进来的它的是no,所以它这块告诉你啊,你传进来的这这个质量是no,我们再来看里边。再看里边,这不就正好你是no,这不就满足吗?满足我们点它的这个下一行,这就到这儿了,到这儿呢,这是个方法,我又得看你怎么做的再进入。啊,这个时候这个count count呢,这个就下一行了,这个count呢,一开始是没有,它是个零嘛,然后这块呢,去确认一下这个容量是不是够,这个我就不往里看了,容量一开始都够,哎,然后呢,指定一个value,哎一个一个的给它去加,哎把这个数据就加进去了。哎,加进以后这个呢,我们其实基本上就看到了啊,就相当于呢,把我们这个n nul呢,拆成三四个这个字符了啊,分别加到我们VALUE6当中,看清楚以后呢,你这个就再回来就可以了,它一直推推到咱们一开始的代码这个位置,那此时的话呢,你看我们这个s buffer,它里边呢,这不是有一个这个Y6嘛,这个Y6的话呢,你能看到它前边这四个就是null,后边呢是它对应的阿柯玛的值,再往后的话呢,因为我们这是个叉形数组,叉形数组咱们做默认值是不就杠U0000,咱们讲这个基础的时候说过,这不就都是这样的数据吗?长度一共是16个吗?
10:29
哎,这呢就非常的清晰啊,能够看到它底层的这个数据的情况了,行这个知道以后呢,你在呃,下一步走,那自然而然的这个长度呢,就是你这个1234。就这四个数据了,行,那再往后,嗯,再往后啊这块呢,就是这个这个打印它的这个数据了啊,这个就过了,再往后到这的时候呢,我们把这个I tr呢放进去啊,这呢抛异常了,我们关心它里边怎么做的,往里边一执行啊,在这个位置呢,我们又关心它怎么执行的啊再一走啊,就整个呢抛出来一个异常了,在这个位置控制了异常。
11:05
行,这就相当于咱们做一个debug的一个演示,实际上呢,也挺好用的啊,比咱们这个例子当中其实其实差不太多啊,主要的都是这些操作,只不过呢,你就换了一个集成开发环境而已啊,这个代码呢,你跑到这,如果还想从头执行,你就点一下它就重新跑起来了,哎,就这意思啊,现在呢,我就呃不执行了,就终止啊,就结束了,好这呢,就咱们说的这个呃题目啊,通过这个题目呢,咱们说一下这个idea当中这个debug工具怎么去用啊,大家呢,如果这个代码比较小,你可以自己呢去分析代码量,一旦大的时候,像一个项目的话呢,我们就得需要用debug啊去进行调试解析啊。嗯。
我来说两句