00:00
好,那么同学们,我们下面呢,开始。那么这道题目呢,也被考过。分别是can LA pyclcl barrier和sopone。问问你有没有用过,直截了当。就是考你勾UC的相关的包。那么这些。非常的关键。这些常用常用API。那么好,我们一个个的过。先说看淡。Lunch,好,我们在哪来的?我们来,同学们勾用C。好,我们呢,找到我们的勘探。那么我们分开啊。探探。是不是代表计数的意思啊?往下。这货。开始。简单一句话干嘛?火箭发射倒计时啊。十九六四三一到乙发射点火,那么言下之意。他要干的事是?
01:00
我们有一个最重要的工作,比方说火箭发射。但是前面需要你配合。电压检测正常,燃料加注正常,逃逸舱分析正常,周围风向、温度湿度监控正常,正常,也就是说全部都正常以后,你是不是才可以发射火箭,没问题吧?那么下面呢,我们呢。这样一种case,如果换到以前,你自己要去判断,极其繁琐,能做,说白了,你要是JDK1.4,只有一个S和wait和notify也能做,但是写起来就非常复杂。而且你的这个。准确度大打折扣。那么好。我们这个看淡lunch,那么呢,就是来给我们做这样一种事情,那么呢,那么呢,请看。它呢,判断lunch,它是初始化伴随着伴随着你给的一个激素。那么好。
02:00
这个wait方法将会干嘛?阻塞。直到当前的。什么T计数?Reach zero那么呢,导致我们这个看断方法,它每次调用一次,减一次,直到我们的给的计数器,比方说刚才我们说了倒计时发射火箭,我们就是十,那言下之意你一定要减到多少零发射,我们的主线程才被反开。好,那么不妨我们呢?来看一下这个case。现在我们举个最简单的case吧。那么当然这道题目呢?除了讲完甘丹lunch还要给大家介绍一下是吧。枚举在企业中的。生产用法。那么。我们一步步来,先解决勘探乱吃还是老规矩。Before。After。那么首先哈,我的原则呢,就说什么呢,慢慢来才比较快。
03:03
一个一个的小DEMO,所有事情都这样哈,我们大家都明白哈。你去正儿正儿八经生产上调错,你要成为高手的前提一定是基本功。所有水银泻地。干嘛无孔不入?知识体系很全面。在座各位,从入学到现在已经接近学了六个月,好。你假设你是一个。渔夫吧。你要去捕鱼,那大家都知道,我站在床上一撒碗,最后一碗捞上来没问题,我能够捞到鱼,但是你会发现,你捞到鱼只是靠其中一个网眼,但是你为了捞到这条鱼,你却不得不去编织整张网。也就是说,你知识体系一定不可能是一个碗,也必须是整张碗。那么所有的小技术细节,刚才我们一个一个小DEMO,就是一个个的玩眼。比方说GOUC,大概接近200多个细节知识点。那么呢?
04:00
言下之意,我们讲过。在刚才之前,你来听杨哥的勾C面试题之前的前提是把这些我讲过的你都已经全部整明白了,这个就是我们的一个一个的网眼,一个一个的完眼,你拼好了,你才有资格跟我说谈整张网。一定是从小到大,不要一开始就想什么一飞冲天,不可能,那么这些东东呢,看着很不起眼,一个一个一个好像,哎呀,孤立的来看,就像我刚才讲的毒蝎锁,也许哎,不见得你马上你放个大招,但是我的前提,你要想放大招,一定是这些小招,这些小玩意你全部OK了。那么好,接下来老规矩。Before after。我不用看lunch。怎么样?用了又能怎么样?没有你之前什么情况?有了你之后呢?又什么情况?你解决了哪些问题?OK,下面我们不妨这么来。我们来模拟。从讲台到这盘。大概七个同学。好,假设刘欢班长。
05:02
现在这六位同学。加上班长七个人。七位同学,你们坐在教室上自习。晚上学校十点下自习,关门走人,关灯,关门走人。那么你懂的,钥匙在班长手上。假如说。班长要关门的前提是不是前六个同学必须走光了,他最后一个人离开教室。才能关门走人。没错吧。那么这事儿呢,来。同学们。我们。六个同学来上自习,安展大家都关了以后,我来关门关灯走人,那言下之意是不是我们现在的数字?16。6543210减到零了以后,第七个同学班长他才能关门。换句话说,班长关门的主线程必须放在最后一步。那么言下之意,不需要你去无聊的去控制,你只需要用看lunch就行,那么好,那我要是不用呢?
06:06
好,同学们请露眼。现在六个同学。那么尿?那这个时候同学们,我们呢,直接。Lawyer。好,现在。六个同学干嘛呢?上完自习。离开教室欧了。那么接下来。那么干什么呢?我们希望的是班长干嘛呢?最后。关门。斗争。那么同学们。我们先来看。
07:00
以前我们讲过卖票一个线程模拟一个售票员,OK吧,那么现在我们呢,六个。一个线程模拟一个上自习的同学,总共六个同学,那么大家告诉我这个是哪个线程呢?正确,那是不是就是我们的卖主线产,我们期望的事情是。一定要保证。这六个同学陆续。离开教室了,这班长,这哥们是不是才能干嘛?最后。关门走人。现在我们没有用看lunch,也没有用其他的锁的各种的。调度和判断,那么大家请看一下这个效果。爽死你了。班长直接把六位同学锁进教室,自己先跑了。那么好。我们再来一次。走了两位同学。班长锁了后面这四个,我相信明儿早上的话,这四位同学一定会去问候班长他妈妈。
08:02
欧啦。不废话。那么接下来我们现在就要找到一种机制,大家要什么等着。全部的。说到位了,走光了,做减法。最后一个主线台你才能做。那么这个时候。走人。搞定我们的干单lunch尺,看一下构造方法,大家看没有,默认的必须要传个数字,这个就是那个计数器。那么好,同学们这块。我们直接过来。Count lunch can lunch等于6COUNT lunch,那么这时候干嘛呢?六个同学,当然这块呢,我图省事,正常的编码规范上面是不是要定义一个常量固定写死为六啊,但是呢,我偷个了,那个我就不写了,同学们就知道现在看到lunch倒计数。每一个同学大家都知道,你们晚上六位同学上晚自习。
09:02
六点开始上到晚上十点,有些同学可能九点走了,有些同学可能07:17走了,有些同学可能八点半走了,每位同学离开教室的时间是不一样啊,你不知道他什么时候离开,那么这个时候请看,每走一个我不管你看了四个小时还是一个小时我不管,但我关心的什么。每走一个。你给我做一个技术减少。我们的总的基数是几?六走一个人看大量尺这个数字减个一,走一个减个一,走一个减个一,哎,你可别忘了,你在这循环着。四五抄完了以后,Main线程可是唰都往下走呢。如果你只写这个方法,只是做了一个减法,那。我们说过了,班长是是总有一种力量来限制班长,他必须是最后离开教室的人,同意房,那么所以说班长就是个内线成那么看lunch点。
10:01
Wait。注意,我偷了个懒,把这块抛异常了。什么概念?刷主线程在这儿转到第24行了,当脑门长个包,不好意思啊,不能往下走,我必须等着。咱们不废话,官网上。API原话。Zero必须要达到零,那么言下之意什么概念?你在这儿转。六个同学,每一个同学上完一个是不是离开教室啊,减减减减减654321。零,当这个等零了以后,马上和外解除。往下走,班长才能去锁门,那么这个时候同学们请看一眼。六位同学。最多到六。上完自习离开教室,班长最后关门走人,大家再看一眼。大家再看一眼。
11:02
你懂的,这样是不是彻彻底底控制住了?前六个。643210做一个少一个倒计数,最终减为零了以后,班长才能走,这样是不是控制我们的一些前提任务全部完成以后,咱们才能完成最后的任务,OK。那么这个就是我们用班长锁门的case啊,给大家进行的讲解和介绍。那么。那么接下来。我们呢?可能呢,会遇到一个这么一个小问题。接下来呢,我们呢,继续加上康lunch相关的使用。你记着他是做减法,你给我一个总数减为零以后,最终的主线程开打没问题吧,那你说老师我记不住,能不能一句话给我讲明白。
12:00
秦灭六国,一统华夏。讲完了。大家都明白,春秋五霸,战国七雄,七雄七雄秦大出天下,一统华夏,秦始皇没问题吧?但你要想一统华夏的前提,是不是一定要先灭掉六国?那么这个就什么。倒计时。那么接下来我们的问题来了。我们呢?要给大家引申并介绍出一个什么东东呢?好。那么这个时候。齐楚秦、燕赵魏韩,去掉秦国。好,那么最后。跟刚才一样。同学们。
13:01
春秋五霸,战国七雄。六雄被秦所灭,你秦你要想一统华夏的前提是不是六国要逐个被灭?这个是不是一个做减法。那么接下来我的问题是。我现在如果将其执行没问题。秦帝国一统华夏。挺正常的,那么接下来我们要出现的问题是什么呢?我要求你一。楚国。二。韩国啊,抱歉,我韩国。六魏国或者各种数字变换,那么你说简单就是六国123456,爽死你了干嘛?妈,在这儿。这个县城ID的名字你做判断,If等于一,你就是赵国,IF2,你就是楚国。正么正确?完全正确。但是抱歉。成旋分两种。先完成。后完美,你不但要注意功能,你能上线能搞定这事了,你还要注意性能。
14:04
你这块你有六个,最多你要判断六次没问题吧。那好吧,那这块程序我给你改了,你给我写个水浒传。卖108件是吧,爽死你了,你这个代码里面大规模的嵌套了是吗。一幅一幅一幅的各种判断你能完成,但是我相信你们下面就可看到,如果你现在不是水火吗?写的是三国武将呢?比108更多,那么这事呢?好,我们就回到水浒,108个你可想而知,花和尚、鲁智深他们是第一个判断正确了,第一次就找到了我,闭嘴。假设花和豹子头林冲放最后一个,你前面要比较107次的各种判断。那么你这个程序的性能在并发下面是非常悲剧的。还是那句话,你现在。周一收到需求,周五能上线,先完成后完美程序有两种功能,第二种功能加性能,你不但要做完,还要做到位做好,那么我们要求是不许你判断。
15:06
很平滑的输入。一就是楚国直接拿过来,第二个需求什么?谁告诉你一是楚国就一定固定写死呢?不好意思啊,我们这边另外一套系统,你要考虑系统的延续性,你打个架包以后你只改一处处处生肖,那么言下之意,今天一是楚国,二是魏国,三是韩国,那明天我一换三。变成齐国,二我们变成燕国,六变成赵国,你这个一换我去,你一换了以后,你下面这个衣服各种判断时也得跟着换,而且你只能代码写死。那么这个事很坑爹,那么像这样的情况当然有多种解决方法,你存数据库,从缓存直接获得。但是。最好是吗?你各种存数据库和缓存的话,你需要有数据库的连接和关闭多两个操作,那么接下来。我们看一下。枚举实际生产中的使用案例。
16:03
为了节约时间。老师呢,已经将其。把六国当然不能写秦了,秦是班长,是不是最后一个关门走人的?来,兄弟们复习一下枚举。从我在工作中那么多年,只要是用枚举,枚举是JDK1.5出现的新特性,那么大概呢?他呢?可以把它当做什么数据库来用?好,同学们。100%的同学哈都用过枚举干嘛?比方说这是万。然后呢,这是拓。以此类推,然后每举点取一个,他就认为是用完了,这是胡说八道。基本上你那个枚举跟没用没什么区别。只不过是个KV建制队,注意,枚举不是KV建制队,枚举就是什么数据版的MYSQ数据库。什么概念呢?请看真实生产使用,你生产上要用这个,这个是套装,你基本上在生产上就用这个就行。
17:04
来。兄弟们。123456。好。这个是K。像不像数据库里面的,现在我们有一个大,我们有一个数据库干嘛,它叫MYSQL。然后呢,这个MYSQL有database数据库的database name,我们进入一个数据库。就叫它现在我们一张表。假设这张表叫腕表。那么这个表就是我们的一个什么呢。Table。那么这个时候。干嘛呢?One这张表我们大家都明白,这块是不是应该有一种东西叫idea,没问题吧,假设one这张表是张是吧,用户表吧,User name,用户的年龄,用户的生日等等等等,或者说是什么用户的email地址,兄弟们你都明白这个是不是最基础的一张表?
18:10
好,那么接下来。一。用户名字啊,是齐国。没问题,那齐国建国的年龄是多少?那么呢,100多年。什么概念?我这是key value这个V。就是这儿的U在内只是一列,听懂了吧,那么有有没有可能后面我这个可以改到一种什么程度呢?这是什么?V2 V3V4V5,这个枚举相当于这么干了以后是不是主建一个K,各种V,每一个微是不是就是数据库的一个一个的表头字段啊,这么说听不听得懂,那么这样就是某些数据你就不用存在数据库。或者缓存里面直接可以变相的简单的比方说那样的下拉雪。
19:00
干嘛?你一定听过什么数据库连接池满了?你一定听过什么数据库连接中断,谁听说过枚举中断的?那么这个时候干嘛呢?你的性能,重要的缓敏感数据放在这个里面,变相的来使用数据库,用枚举板的小数据。效果会比较好,收到什么意想不到的效果,有时候什么偏方治大病。好,那么同学们不废话。那么,怎么来搞定这些事儿呢?那么这个时候,同学们。我们呢?直接。看一下这块是报错。那么思考一下为什么报错?首先如果我们在这儿要有的话,这儿是不是缺两个属性啊。那么欧拉,那么。那么干嘛呢?首先int角,那么这边。我们注意碳。扣的。那么这块private string。
20:06
好,那么这个时候干嘛?二话不说。我们枚举,由于枚举我们是不是已经设置设定好了。不用,有set方法,当然你家也没事,那么接下来long book,小辣椒直接过来,那么同学们你懂的,咱们是不是get方法?必须给它写起,能跟上写了这两个注解,相当于我有一个get方法,那么这这这个时候同学们你看get return get message,好吧,相当于说这个就是set get方法。OK,好,同学们怎么着?是不是还在报错啊,二话不说干嘛呢,构造。那么好。来,同学们。红色波浪线没了吧。那么接下来你要干嘛呢?
21:01
没曲怎么玩?现在这个状态。你懂的,咱们是不是得干嘛电力啊。你在枚举里面判断,你得你得捞你一枚举,你你这有六个池呢,你得捞哪个值出来。那么这时候二话不说public。考我干嘛呢?你返回的,注意这个不是累了,这什么意思?怎么啦?For each。这么一个。我干嘛这传一个印套。Index。找不到,把对应的枚举返回,找不到直接return了,那么这个int index哪来的呢?同学们,Lower。在这一块是不是我们要传一个啊。那么这块我就不固定写死了,这个国家名号没办法确认,我们需要各种随机变动。那么这个时候干嘛呢?我们这个线程的名字啊,如果这是一。
22:00
又进了一个一相当于。我们这儿是不是就是我们的这个特一啊,我们去找一应该反馈什么国齐国。好,那么这个时候我们干嘛呢?这货是个枚举,枚举天生就带着对自己的一种便利方法,就跟I list.for each一样。那么枚举的方法是什么呢?枚举第2VALUES请看兄弟们,这是不是有一个叫枚举的数组啊?那么言下之意,只要是数组我都不用讲啊,你都懂,那么是不是就上面这六个值啊,那么好,那么过来吧。如果它是宿左。我的速度就这样,那么接下来你懂了干嘛,是不是增强型负循环迭代一下。好,那么这个时候。OK,那么干嘛呢?我们来判断如果index等等我们的什么。
23:03
Element这个枚举第2GET cold。这一波同学们能不能跟上?这个return code什么意思呀?我们这儿这个return扣的就是这个瑞return扣的没问题吧,但说白了,这个瑞return扣的就是前面这个主键数字ID。那么言下之意,兄弟们,如果你传过来的是一,我每举里面遍历get code,这个是。有没有遍历出来一个叫有一的有,那么这个时候是不是可以把这个枚举返回?那么好。过来。干嘛element找到了我们就返回,我们对应的枚举找不到了我们呢,直接返回呢?听懂那么好,接下来。过来。枚举类,注意,以前我们可是要写什么一服一服各种判断,一府是一就是齐国,一服是二,就是赵国,现在没了,没有这些判断,你的代码很干净,枚举第二。
24:02
For each枚举就跟以前的for list一样,只不过以前叫list,现在是不是叫枚举啊?我点干嘛呢?把这个I传进去,得到了一个枚举点,Get message,那么对应的是不是从数字编号就得到这个死猪类型的国家名字啊?你看你根本就没有各种判断,这个时候同学们,我们一跑,大家看。齐国被灭,赵国被灭,对。应的而言。如果你要彻底更换底层的数据结构,你不用去改原程序,你改这个美学,现在我们换一下一号和楚国一二对调,你改一处是不是一次一次修改四次生效啊。你这样程序的耦合度极度的降低,这个才偏向于什么,我们写出更好更优秀的代码。准备好。所以说呢,这边假设我们也说过了,假设你再来一个MESSAGE2。那么这边再多一个二,那么就是123123,那么大家请看这个是不是就像我们刚才前面所说的V2V3V4V5,每卷就是一张数据库的表,听懂好,那么接下来。
25:12
我们呢,再来过来看我干嘛呢?现在。顺带再给同学们加深一下印象。如果枚举不会用的哈,那么假设我们这儿。直接。首先枚举第二。请看是不是有一个万。一齐国。好,这是一种写法。One。第二塔扣的,再来one。第二,Get message回答我这三种方法是不是取枚举里面的每一个表明每一个字段和属性?那么好,各位同学,我们现在一跑。我们可以看到效果。ONE10。那么言下之意。
26:01
万相当于枚举库里面的第一张表叫腕表,这张表里面主见低调,记落直接,各种值齐国,或者噼里啪啦后面有一堆,那么你这样的枚举不用什么。Connection连接也不用什么close,没有听说过什么枚举连接枚举close吧,那么这样的话呢,干嘛我们的纸取的过程当中就非常的方便,这一步同学们能跟上。OK,好,那么这个就是我们的count lunch相关的倒计数。控制了以后,减为零,被阻止的主线程才能使用好,那么lunch就给大家介绍到这儿。
我来说两句