00:00
OK啊,那么把这些东西讲完以后呢,呃,我们其实还有一些东西呢,需要给大家去研究一下啊啊,那我们首先来说一下这个跟切面相关的啊呃,研究问什么问题呢?我们来说一下这个切面的一个优先级的问题啊,你看了哈,呃,现在呢,我再去写上一个界面,我们再去用一个class,我叫做什么呀?比如说我们一开始讲的时候,不是还有一个验证嘛,对吧?好,那我就叫做什么呀?啊validation啊,Aspect就是我的一个什么验证界面。好,来写一下啊,这是我的一个啊验证切面啊,那么对于这个验证切面来讲啊,我们也是同样的道理,先通过一个component注解把它标识为一个什么组件,再通过SPA的注解把它标识为一个切面。能听懂吧,OK,那么现在我们要演示的是切面的优先级,就是我有了两个切面了,那么哪个会先执行呢?对吧?OK,说说了啊,注意为了能看到这个效果呢,我在这个里面我再写上一个通知,就叫什么也叫做before method,能看到吧,哎,加上我们的if,我也写上一个前置通知,然后这个里面的话呢,我也让他去作用到谁呀,我们来把这个拷贝一下啊,你依旧呢,去做到你的这个包下面的所有的类上面。
01:34
能看懂吗?没问题吧,然后这里面的话,我们把这个join point给大家去写一写啊,Join point join point,然后呢,获取一下我们的方法的名字啊,怎么获取啊,Join point.get signature.get name是不是获取到了,然后呢,再获取一下什么方法的参数啊,就是一个object类型的as等于什么呀,Join point.get us对吧?然后呢,我们来输出一下啊,输出什么东西呢?好,Validation aspect,好,那么它呢,也叫做什么呀,就是你的方法谁呀,加上好,加上我们的method name,好,再加上什么呀,好,来写一下啊,就是呃,Begin with啊加。
02:34
上我们的r as list,好,把我们的ask放进去,这个能看懂了吗?可以看到吧,是不是也完成了一个前置通知的这个效果啊,看明白了吗?哎,也是一个前置通知啊,好吧,那现在呢,它它也能作用到我们那个addd方法上面,那么我们回到这个慢的这个位置,好错了,这个我就先注出掉,我们只来演示正确的这个啊,来运行一下,大家来看一下前置通知执行的一个过程,你看一下是不是先执行的我们的日志通知吧,呃,是不是先执行这个日志的界面啊,再执行的什么验证界面吧,对不对,OK,那么其实这就是有一个优先级的问题了,理解吧,你看我有了多个以后,那凭什么要执行loging后执行我这个validation啊,那我能不能先让他执行我这个validation这个界面啊。
03:25
是吧,那么这个在我们的实际的开发中,你就要去研究这个优先级的问题了啊,那么接下来我来给大家去讲啊,外的情况下呢,它在最底层肯定是有一个自己的这个规则的,去决定限制性谁的,但是那个规则我们就不用再去管了,我们只要学会如何自己去设置这个切面的优先级啊,来听我讲,我们可以在每一个切面上面,比如说现在这个vali aspect上面,我们可以通过一个order注解来设置切面的优先级,好设置切面的这个优先级怎么设置呢?大家注意,在这个al里面,我们可以给上一个int类型的值啊,Int类型的值,而int类型的值的话呢,就是从哪个范围到哪个范围,大家知道吗?
04:15
啊来先让你看这个吧,啊,那这个奥特注解大家注意哈,我点进去啊,这个奥特注解的话,大家能看到啊,它有一个VALUE6默认值是什么呀?叫做2147483647,这个是多大呀。这个是int类型的最大值,能明白吧,所以说大家注意的哈,这里面的话,如果你不写的话,它默认就是什么呀,2147483647就是这个值,这是特类型的最大值,能明白吗?啊,那么它这个优先级是怎么设置的呀?值越小优先率越高,比如说我把它设置为一,能明白吗?然后呢,对于我这个log的话,我们最好也给他手动指定一下,你看了啊order啊,我给他设置为什么呀啊,只要比一大就行啊,设置为二,这样的话呢,我的优先级是不是它比较高了吧?那么现在你再去测试的话,你就会发现刚刚我们看到的效果是什么呀?限执行的logie嘛,然后呢,现在再来测试。
05:16
哎,你就能看到它先执行谁了,先执行Y电看明白没有,OK,所以说呢,这就是通过一个二注解呢,来去设置它这个切面的一个优先级,好大家需要记住啊,就它里面默认值呢,就是一个int类型的最大值啊,就是2147483647,明白了吗?这个值你们认识吗?不认识啊啊,那让你表示一个最大值,你会表示吗?怎么表示啊,二的多少次方是吧?啊,那你二的多少次方,你在加va里面,你怎么给我表示出来?解长啊,比如说我要你做这样的事来,比如说在里面随便写一写啊,好,AI,我希望它是一个最大值,你说二的多少次方你能么表示啊,啊,你这么表示啊,二的多少次方怎么表示啊,能写吗?不好写吧,对吧,所以说呢,你啊,你可以自己去记那个大概的范围是二的多少次方是不是,但是呢,你一定要学会怎么在我们程序中呢,去表示一些这个常用的一些这个边界值啊,什么最大值啊,什么最小值,你得学会了最直观的一个方式,你就通过那个indi是不是可以表示出来了,对不对,这里面不是有这个什么max value吗?这不就是它的最大值吗?用用没用过,用过没用过这个东西啊,啊,这不就是类的最大值吗?OK,好,来,那就就算你们没有用过是吧,那。
06:56
还有没有别的方式啊,这个东西你不用去记啊,我不要求你把这个记住,但是呢,你最起码你能表示出来它的最大值。
07:03
这个呢,见过没?没见过呀,啊,说实话没见过呀,没有不可能你忘了不代表你没见过啊,这是一个什么进制啊,那那那就是没见过啊,你都知道他是16进制,那没见过你你知道16进制,你这个东西你就能写出来的。是吧啊,都忘了,你忘了你就得是吧,你得诚实啊,你不能说没没学过啊,对不对啊,那来再来看那这个东西来我再给你说一下啊,0123456712345678,这个见过没见过什么制二进制二进制是吧?OK啊,我告诉你这就是in的类型的最大值。
08:17
对吧?这个东西特别好记哈,我告诉你,首先你要确保是几个字节啊,四个字节吧,一个字写几位,八位,总共多少位,三位,OK,怎么表示最大值呢?你通过二进制表示的话,你就时刻想着高位是符号位,如果你是正数,那么高位必须是零,对吧?剩下的后面的全都是一,为什么呢?因为我敢确保我在这个基础之上,我再加上个一,高位就会变了,对吧?所以说呢,它就是最大值了,因为你高位一变,它就变成什么了,变成最小值了。能明白吧,所以说你把这个规律记住,就是最大值是什么呢?零后面都是一,最小值呢,一后面都是零。
09:06
明白了吗?而且有个特性是什么呀,最大值加个一就变成最小值了,最小值减个一就变成最大值了。能理解吗?你来看吧,你在这个上面加上个一来从这一位往上加,挨个往上进吧,后面是不是都变成零了,而进到零这个位置是变成一了,一后面都是零,那不就是最小值嘛,对吧?但是让你们每次去写这个东西也比较麻烦,对吧?而且你二进制在这个程序里面,你不好去表示,那我们就可以通过16进制来表示二进制,你能记住16进制呢?就特别简单了,二进制里面的四位表示成16进制的一位,这个规律你们知道吧?OK,那我问你1111是几啊?不就是15吗?15不就是F吗?那你看一下四个幺一个F,四个幺一个F后面总共什么呀?这不就是七个幺七个F嘛,是不是七个F呀?然后呢,前面的0111,这不就是七吗?
10:07
是吧,那表示出来不就是0X 0X是16进制的一个语法嘛,0X后面不是七,然后七个F吗?这不就是它的最大值吗?对不对,那最小值怎么表示啊啊0X8后面1234567,这不就最小值吗。是不是啊,感觉受到了伤害是吧?刀刀暴击是吧?嗯,对吧?啊来最后呢,给大家说一下啊,这个就是一个题外话了啊,其实对于我们这个Java程序员来讲,你说这个最底层的东西,像这个二进制这些东西需要去研究吗?其实你在实际开发的话呢,也没有太大的一个需要,对吧?因为我们Java它不直接跟你的操作系统去打交道啊,所以这个东西的话,可能大家就忽略掉了,但是啊啊,我建议你们呢,对这些最基本的二进制啊,16进制啊,八进制啊这些东西还是要有一定的了解的,毕竟你作为一个程序员来讲,这个东西你不能不知道理解吧?啊在程序员的世界里面就是零跟一啊,能明白吗?啊就是看任何东西,你就他就是个零跟一是吧,啊,你得答。
11:31
到这样一种境界能明白了吗?啊,你达到这样一种境界啊,啊,像我这个生活中的那个你们常用的那个二维码,你知道是啥吗?都这过二维码吧,你看一下二维码上面其实就是一个各个小框框,有白框有黑框是不是对吧?它其实就是一个二进制来表示出来的,对吧,就是零跟一嘛,分别表示白框黑框嘛,对吧?所以你看到那上面的这个白框黑框,为什么程序我一扫我就能识别出来的,其实它就把它识别成一个二进制的一个数了。
12:04
明白吧?啊,就是一个二维码是吧,所以这个东西如果说你去做到相关的这个操作的时候,还是得知道的,明白了吗?啊,可能大家没有接触过,觉得这个东西不是很重要哈,但是呢,我希望你下去以后,你可以把这个东西研究研究,特别简单的,没有什么难处,你十进制你都算的明白,二进制有它算不明白的,十进制总共有十个数你都能算明白,二进制就两数你算不明白啊,就零杠一,最大加起来就是个二了,连三都没有是吧?啊行了啊,这个这个就说多了啊OK,呃,那么这个界面的这个优先级大家知道了吧,怎么设置明白了吗?明白了吧,就是通过一个凹重点来去设置它这个切面的一个优先期啊好。
我来说两句