00:00
那这个呢,我已经把思路说清楚了,下面我们来改,那改的时候怎么改呢?这也涉及到一些方式和方法,注意听老师的思路是怎么样做的啊。这个也很重要,你不相信你拿到这个东西,你突然不知道怎么改,就把这个东西给你了,你不知道怎么抽出来。这个抽取把一个大文件的东西抽取到各个小文件,这也也也有很有讲究啊,绝对不是说大家想的那么简单,你那我现在让你来改,你怎么改,你都不知道怎么抽。那么听我的思路啊,听老师的一个思路,我们这个改这个步骤应该是如此这般的啊,步骤如下。追听我的这个思路,但这些思路呢,是韩老师的一个总结,就说可能不同的老师,不同的开发人员呢,会有自己的一个套路,但我我认为呢,我这个思路可能更就是更接近咱们这种刚刚正在处于比如说你刚刚入门的,或者说工作了一个一年两年工作经验的人呢,比较适合这种思路啊,比较思路,那么我的第一个思路,首先第一步注意听讲啊,先把你的这些个文件,你不是抽取出来这些文件吗?先把这些文件先写出来。
01:07
就这文件是空的,先把这个文件放到不同的文件夹好。第一步先将。先将什么呢?先将先把分析出来的出来的文件,文件创建好,创建好。啊,当然这些文件可能是空文件,但无所谓啊,然后然后放到放到这个相应的这个文件夹中。实际上就是包,大家都知道,因为因为说白了,在我们购里面呢,文件夹它其实就是体现出一种包,因为一般来说一个文件夹呢,就对一个包嘛,这样子呢,先有个大的思路,这是第一步,好,然后各位朋友,那现在我们开始做这件事情啊,打开它不要着急,首先呢,我们新建第一个包包。第一个包包好,那这个一般呢,会有个主包,对不对,这个主包其实相当于就是我们的渐变层,好,那么第二个包包呢,根据我们刚才的分析,根据我们刚才的分析,应该还有一层包叫process。
02:09
这个呢,是作为我们处理处理器的这个这一层包,那么还有什么包呢?各位同学应该还有一个model的包,但是这个包的包可能目前还没卖些东西,第三个还有一个包包,就是我们的U7包。这个邮件包呢,就放我们相应的这些个文件啊,相应的文件好这个做完了过后先保存一下。然后呢,不用犹豫,把你现在这个闷扔到这个主文件夹下面去,因为你你现在放到外面不合理了吗。因为所有的文件呢,我们都应该放在一个文件夹下面,利益管理,因此呢,简单思路先复制一下,这以后大家养成养成一个好习惯啊,我看有些同学喜欢直接往这炖一下,炖的时候呢,当然看起来很简单,我曾经就有个学生,他说老师就是因为不小心一炖,炖完了过不知道炖哪去了。
03:04
蹲脑就蹲垃圾堆里面去了,结果啊,所以说我的我的我的做法是比较稳健的,我先复制一下,然后再连贴,哎,我连贴完了,我发现没问题,我再删,尤其是对一些重要的文件啊。但是你熟练了没,没事,就对这重要文件,大家尽量用我这个手,诶动过去一看,哦,真的没问题,OK,好这个文件就可以干掉了,好这样子这样子它比较稳当一点啊,这样稳当一点啊,但你你也可以去用你的这种比较快捷的方法也可以用,好这写完了过后用一个是写完,然后呢,这个model现在还没有东西,先暂时不写,一会就会用到了啊,一会就会用到了,OK,那process里面呢,根据刚才老师的分析,应该有两个文件对不对,一个是process。点go处理用户相关的,这是一个,那么把这个包包打起来,把这个包包打起来,然后这个文件呢,我们叫process。
04:00
Pros。好,先写到这吧,先写到这啊,加个加个ES吧,就是现在我所有的处理都在这个地方,因为因为将来我有个函数啊,先给大家把这个,把这个坑留到这儿啊,因为这边会有这个包和文函数同名的时候,在同一个文件会出问题,我先留到这吧,呃,这个坑到时再给大家挖,再再把大家挖起来啊好,然后呢,再来一个文件叫SM SM process。CS点购好,这个呢是处理我们短消息相关的package,好,也是process。好的,这两个写完,我们看第三一个各位朋友,第三一个呢,就是有一个这个这个总总控,这个总控放哪里呢?嗯,这个就可这个总控啊,一般来讲呢,它可以放在就是这个process,有些程序员呢,也可以直接放在主,因为他认为这个总控和这个命非常关系很密切,因为他是没拿到过,马上交给他,让他去指挥,所以说呢,有些有些程序员直接把这个总控呢,就直接放在命这个包包下面也是可以的,那我就选用这种思想啊,啊好的,那现在呢,老师就把这个总控放到这儿。
05:17
Process OK,哎,这写错了,少了一个点够,对不对,少了一个点够啊跟上思路,今天代码呢,就说也也也挺多的啊,也挺多的,好再来一个uts UT呢这个包下面呢,我们就写一个自己的工具,呃,文件就是专门放我们工具类工具函数的方法的,好写完了第一步搞定。那也就是说第一步咱们做完了以后呢,这个长的这个样子,就这个程序的大体的一个一一个这个结构就就有了,好先把它放在这儿,这是我们的这个东西,好下面呢就开始剥离。所以说这个思路很重要啊,同学们,不然的话,这个东西我看有些同学是这样写的,他是这样写,他先把这个写出来,然后想把这个东西怎么往里面拨,结果一下就整的很惨,我我原我原先也是这样子。
06:10
我拿到一个程序,然后我的一个老板说对吧,因为原先有个哥们,他写的是MODEL1模式的,一个整个文件就几个文件,然后呢,去了给给给我们一个任务,说来你把这个里面这个文件抽取出来,按照MVC或者分层的模式去做,当时的脑海里面没有架构的概念,也没有分层概念,就自己想应该怎么写,结果整到很久,当我用这个思路呢,你会发现,诶非常快,你看啊,待会儿我就这样做,你这个main点构有哪些应该在这儿扔过来,你这个梦点应该在哪些,在这里面扔过去,完事,然后把代码稍稍的一整理,代码一下这个结构就出来了,这就好比日本人和这个中国人不同的习惯,但日本人这个呢,他有些地方还是比较优秀的,你看说有一个要搬家。中国人怎么搬呢?中国人搬家先把这些家具,把电器,什么床、桌椅、板凳先扔到这个房子里面去,然后再开始规划。
07:08
啊,中国人的习惯,日本这样子的,日本人德国人啊,搬之前先把这个规划好啊,床搬哪人家人家很快,床搬哪,画一个大体的画一个草图,床搬哪,电器放哪,这个我的桌椅板凳,包括我的这个厨房怎么设计,先简单设计好,然后往里面搬,知道吧,就习惯不一样,显得人家更高效,显得人家更搞笑,就去了部不是。很乱啊,我们这去了过后就是就就忙的这个不可开交,对吧,所以说有些呢,我们我们做程序就有这种感觉,我先把这个把这些东西放好了,你把东西往里面扔,这种思想大家要去学明白吧,倒不是说诶今天韩老师讲了一个这个东西那是个小事啊,这个小事小事好,这个做完了以后呢,往里面扔东西,注意听现在。现在根据根据各个各个文件文件完成的完成的任务啊,或者它的这个作用啊,完成的任务不同,将什么呢?将我们may点够的代码代码。
08:15
剥离到剥离,剥离到对应的对应的文件中即可。即可。好的,那现在呢,我们开始播啊,就像拨充一样,就像拨充一样,怎么播呢?首先我们现在已有的文件就它来,我们考虑一下哪些应该拨到哪里去动脑筋,首先read package和这个right package是不是属于工具类性质的。为什么属于攻击,因为你每个地方都用啊,你消息要去读,你将来这个用户要去读,你将来什么东西都要用它呢,你放在不合理呀,所以说二话不说,将其。先不要剪啊,老规矩,不要动不动就剪,你剪剪光了,自己一剪没,你知道吗?很危险,所以说你先复制一把,先注销,这是好习惯,你别上去过后一捡,捡完了之后,诶,东西上哪去了?
09:10
对,你先注意,然后呢,我们把它扔到这里来,各位朋友package跟上老师思路,You tea走好,里面要赢什么赢走好,一般来说风脉标线有先把搭起来,架子搭起来,然后把刚才咱写的这个玩意儿往这一扔。当然这个时候你扔过来过后,它是跑不起来的,那现在开始怎么样的处理啊,就是这个地方,你你你先把这个东西把它跑起来,这是第一个要扔的,第二个把这块也扔过来,刚才我们的组文件里面还有一个right package,它也是属于一个工具性质的,注意听讲啊,这块挺有用的啊,挺有用的,就是一种思想。你不然的话没有套路,你你没有套路,你会相当于感觉重写一段,重写一次代码,累不死你。啊,有些不懂的,这个他就重,相当于重写一次好,写完过后我一保存肯定有大量的错误。
10:07
肯定有大量的错误,首先包都没有来,那么现在呢,这边一捡啊这这这这边啊包没打上啊拍可以主包现在打上。因为没报名的话,就你里面可以不写东西,但没报名这个地方呢,因为你剪完了过后,同学们看到肯定他这边会说什么什么没有对不对,这个很正常,你先不要去管它,你先不要去管它,好这个做完过后呢,我们现在呃怎么做呢,现在有点麻烦呢,因为他有很多错误,他有很多错误,你你怎么办呢?因为你现在还不能马上改,因为你将来这你将来这个right呀,这些地方有可能是调用,调用这里面的文件的,对不对,所以说呢,我们现在先把这个该播的先播,先继续播。好好先保存,保存过后这这边剥出来了啊,剥出来我们接着剥璃,接着剥离啊,怎怎么接着剥呢,来看首先这一块同学们看。
11:06
这块呢,它是处理这个登录的。它是处理登录的这一块,同学们看到这一块,它是处理这个消息的,这个其实相当于总控的部分,所以说呢,这块代码呢,我也可以把它拿掉了,拿掉啊。注意听我先把它。把它拿到哪里去呢?因为它是处理用户登录的,因此从这个逻辑上来讲呢,它应该是扔到哪里去。大家想想是不是应该扔到user process,因为它是处理用户相关的嘛,所以说我复制一把。我复制一把,然后把它扔到这里来。好。先扔到这里来啊。先赢个包包好。Format。好,先生过来。
12:00
好扔过来,过后呢再保存。肯定有大量错误啊,肯定有大量错误,这个很正常,这很正常,那么接着再播,先把这个播完再调调代码啊,先把这个播完再调代码好,这个呢已经拨过去,过后我把这个注销了。好,现在播了三个文件走,再看这这个呢是。Server process message。显然,这个文件。应该是放在我们的这个总控更为合理,为什么说放在这更为合理呢?因为是它是这个process,在他这个文件里面决定到底是。用哪一个。哪一个只只只就是哪一个process文件来处理,比如说像这个处理登录的可能是user process,这个是注册的,可能也是用的它,但是等到后面发了一个消息过来是什么呢?诶,我可能要去。
13:01
你私聊,那私聊的话可能是消息方面的,所以说这个地方它实际上是相当于在进行一个分配管控这样一个目的,所以说我把它呢,扔到这个process里面去,好,这个地方肯定有业务逻辑在里面啊,那现在呢,我不用犹豫将其复制。再注销。拿到哪里去,拿到这里来,注意听,那这个时候呢,诶我们基本上就要拨掉快差不多了啊啪,但拨完了过后呢,这个代码就有点恐怖了,很容易大家。看不懂好把它保存一下,好我们现在看一下现在这个结构是什么样子的。主文件其实只留了一点东西。这里。然后呢,他拿到这个地方过后,他做了一个处理。他做一个处理干什么呢?他让他去得到一个连接,然后处理这个server,现在这个结构就变化了,因为你现在呢,已经你的任务就说你这个命点购的任务已经发生变化了,你的任务是什么,你的任务就一件。
14:09
监听,等待客户的连接,初始化的工作。当然他内容肯定还有个事情,就是他会调用process一个方法让他去完成调度任务。好,嗯,那就意味着我们这个代码呢,差不多了,要开始来进行一个调整了,调整怎么调。这个时候怎么调整呢?怎么调呢?因为你把这些东西都整过去,你要调试,这也是个工作量啊。这样子同学们,我们在调试的过程中要这样来处理。先从最。底层的轴,也就是说哪个被调用的多,哪个被调用多,就从这一层开始,反着推过去,把代码写完。因为你为什么这么说呢?因为你你首先因为你这边都会掉我吗?那我显显然应该把它全部搞定。
15:05
然后再搞定它,因为这它这个process又会调用它,所以说这样在写代码的时候呢,我们应该是从底,从这个底往上写,我们分析呢,应该是从上,从这个层面往往下分析,所写代码反而是跟他分析的时候刚好是逆向的。好,那现在呢,不说废话,我们接着来开始分析了啊,首先找到它来一个个分析,因为你现在是用的结构体的思路了,既然你用的是分层加面向对象,那这地方肯定要做一个结构体,那这里我们抽取出来,我们将。将两将这些方法,这些方法封装到或者是关联到,关联到结构体中,注意听啊,结构体中哪个结构体呢,写一个。哦,这个是思路哦,同学们有有有点有有点意思了啊,有现在把它改一个是分层,同时还要改成oop。
16:03
哦,那现在我先写一个transfer。名字根据你的需求来写,传世文呢,叫传输者,我就认为他是专门管传输的,只要要要用到传输,你帮我搞定。只要用的传输你帮我搞定好,那就是算子。好,那你作为一个传输者,你应该需要哪些字段呢?分析一下,分析它应该它应该有哪些字段。哪些字段?看起来这个简单啊,这个你看起来简单,那你不备课不敢这么去讲,对不对,因为你要分析这种东西怎么出来,那么我认为你作为一个传输者最重要的第一个。连接必须要有,你没连接你怎么传呢?第二个你得给我一个缓冲八分是吧,一个八分,所以这两个是必须有的,那我首先呢,来一个sevenn,这里我先暂时不考虑封装各位同学。
17:00
暂时不考虑封装,因为现在这个代码已经有点结构了,所以说封装我们后面再说,先把它整过去啊,先先调一下啊,封装也可以考虑后面再说net。点。这是他第一个要要的,所以说这地方呢,肯定会用到一个let包,紧接着他应该还有什么字段呢,各位同学,他应该你在读的时候,这个buff分没有必要每次都去使用了,我直接把它放在。字段里面去跟着这个transfer的实力走,是不是这个道理?当然你你你可能得得分析一会了,好,这里面应该还有一个中段是这个八分注意听。B,那么它的buffer,呃,Buffer这个类型呢,咱们就直接给他了啊,直接给他了。呃,我们看看这个地方。啊,Buffer,然后它的buffer这个类型。这样好像不能直接赋值是吧?啊,它应该是一个bad切片,那就直接这样写,大家看这样写行不行。
18:06
嗯,咱们这样写给他,给他808064直接写到这,因为到时候用的时候把它当成一个切片用就可以了。对不对。呃,就。这样可不可以对这个是这个是切片数组的话,是不是也是写上这个值,是不是就相当于是数组了,那是不是数组的,但是我用的时候当切片用不就是一样的吗。因为数组本身你你从这边取的时候,它就当当做切片,大家以前最早讲过,切片和数组只在一个地方,就说我用的时候,如果我指定一个起始和位置,它就是个切片,所以说这样子就可以了,这是我们的一个缓冲。这是一个缓冲。这是传输,传输使使用的缓冲。使用的缓冲。好不着急啊,同学们,这个东西本身就有点慢啊,好,那写完过后呢,现在改进这两个方法,就是read package和这个transfer呢,要把你关联在一起,以后呢,我只要用到传输了,我直接创建一个实例调查方法就行了。
19:10
那任何地方都可以吊起来,那简单了,来,走一个。朋友们首先认识老规矩,走transfer。这个没问题。好的好的,那这个做完了以后,下面这个地方的签名也是如此这般。下面也是如此之外,但是这个代码呢,要改进啊,要改进好,我说过这个程序的结构的改动本身就是个大事,你你你搞家庭装修是不是,你你你把一个城,把这个这个墙改打打了,那肯定得伤筋动骨啊,那改吧,Message这个地方不用了,就是因为我们没有引入相应的包包,那这个写写进去,Go code先把它调通,跟着老师思路啊,Code走,我们现在的项目是charter room。然后我们有一个呃,Common包包,Common包包里面有个message。
20:04
好,这样一写,好这块应该过了。大家看还有什么地方,有没有错误,还还有三个错误点找一找。OK,这地方少了一个包包,这个包呢,哎,我们应该是记得是coco下面有一个BRY包,对不对O了。好,看看还有没有什么错误,还有一个错误,同学们看,同学们看哦,还有个精神包包,那精神包包呢,咱也把它搞定,精神搞定。好了。好,同学们看,首先到这个地方,我们把U已经写完了。也就是说此时此刻这个已经把它剥离出来,而且调试通过,那反过来我们应该写这两个了,是不是这个道理,因为这个SMSMS呢,它是有空的,你先不去考虑,先把user process搞出来,老规矩,思路一样啊。来二话不说开写东西,因为这个地方呢,我们也要搞一个,搞一个这个结构体出来,这个结构体就叫user process吧,干脆user process,好,那现在type user啊,User pro。
21:18
Process啊,Process好,然后有些人可能喜欢叫or,就看你的你你的你你的需求,我就叫process就行了啊pros好,就它吧。Short。那这里面有什么东西呢?都想想作为一个u process里面来说,它应该有哪些字段呢?诶,我们要分析一下它应该有哪些字段呢?我个人认为啊,你想一想。你有哪些字段,主要是要考虑你将来绑定的或者关联的这些方法里面需要哪些东西,我们一看哦,作为他来讲。连接是必须的,因为你将来这个user process,你再进行这个处理的时候,你没有连接,你就没有这个connect肯定是不行的,因此他也应该有一个。
22:10
这个链接说说,先把它写进去。注意啊,Ne包包里面有。其他其他的可以不要,八份可以不要,因为八份呢,我绑定到最地方了。到时我通过user,它的关系是这样子的啊,我通过user process把这个连接传给我们UU就可以了。好,现在再来写绑定。This。走,然后各位同学心点这个。不着急啊,写完了,那写完过后呢,这边肯定也有大量的错误啊,首先引包。那引进去这个地方。也有好message引进来。走message,因为我前面已经用过一次,所以说我就直接从这边粘贴复制一份。
23:02
好,我把这个过程展现给大家啊。好的,再写,再写哪里呢?再往下面看,这有一个杰森,OK,杰森也把它粘过来。节省,是不是这两个包都需要呢?不知道,现在过来再说吧。好,OK,保存一下。哦哦,这里面好像没有用到它不需要啊,不需要这个。这个不需要,也不需要保存。好的,看一下代码。现在代码呢,还有很多错误啊,还有很多错误看这里。首先第一个大家看这你现在这个right pkg就没有了。因为我们现在的关系是由它去调用你的U,所以说这个时候的这个逻辑就会发生变化,发生变化,那怎么样呢,就说你这个right package呢,就要调用我们的传输这个对象。好,这是第一个要改的第二个,同学们想一想。
24:01
因为你这个user process实例里面已经含有这个链接了,因此你在这地方传输的时候,还需要让别人传一个这个东西吗?显然不需要。也就是说我把这个连接绑定到这个user process,那么以后只要去用到连接,我根本没有必要每一个参数都传这个connect。我直接从这个字段里面取就可以了。当然有同学会害怕,说老师,那这个u process的这个连这个从哪来呢?它从哪来呢?它必然是这个总控给我们带过来的。OK,那将来大家想我们要群发,我们要去维护多个用户在线,我们只要拿到这个信息就可以了,因为这里面他管理的很多信息,你可以你可以加很多字段,比如说在这个UR,不知道是属于张三的还是李四的,他爱你是谁,好管理起来。你如果没有这种思想,管理起来也是比较吃力的,这种编程思想啊,大家可能可能理解的有点吃力。
25:07
但是你后面你最终还是要学这种东西的,你不能什么东西往里一堆,我看有些人写代码就是二话不说,想到诶,我需要一个什么功能,先把这个文件写起我来写,最后自己都不知道是写什么。都都疯了,别人看你的代码直接崩溃啊,说这谁写代码,我宁愿辞职,我一分钱不要,我倒给你一块行不行,对不对?说这个结构很重要,同学,那现在开始分析了,既然你有了这个,拿掉不要了。那既然不要的话,你这个代码肯定有大量的改动啊,来改一下,首先我们看哪地方需要知道这个不需要改啊,OK,这边要开始改动了啊,这个地方不需要改,不需要改,好往下走往下走。呃,他为什么没给报错呢?我是希望他报错,这样调起来快一点,好,那先这样子吧。像这样子发送这个翻书的话,我们现在要改动了,我们我们这里我们我们先因为啊,因为使用了使用了这个分层的这种模式啊,分层模式其实呢,我们现在已经使用了一下MVC了啊。
26:15
MVC,然后干什么呢?我们先创建,先创建一个transfer粉实力。就说你只需要读取的时候,你都出现这个穿梭二实例。然后然后来读来来读啊读去,好,大家不用不用害怕,都能成功啊,咱们都能成功,先搞一个出来再说吧。Transfer就简称TF,走,我不是要一个实例吗?我给你一个实例,有tears这个包包下面的一个transfer。好,这个transfer里面呢,它至少需要这么两个字段,这个不需要给了。这个不需要给了,因为你已经有了嘛,说这个不需要给,然后呢,这个connect要给他付一下值。
27:02
刚才怎么赋值呢?呃,很简单,它这有个CN等于什么值呢?因为你这个地方有,所以说是通过这个Z带过来的。点。好,然后在读的时候我们调用T。TF点啊,这少了个逗号。这样就可以了,当然这个right呢,我们要肯定把它先把成大写的啊,Right package我改成大写的,好,现在这里面还有什么错误,U包没有导进去。这肯定要要倒倒一会儿啊,同学们,这个很正常。下room我们UT包,UT包里面的这个好,好像就是这吧。China server好还是少了一个server?嗯,对,少了一个事,Room下面有个server。Server下面有一个UT,非常好啊,Util is very good。
28:02
好,现在呢,这个地方他应该不会再报错了啊,但是这又又有问题啊,他的con没有带那就好了,这样从这开始要做大的大的改动了啊,同学们看。这个地方哪些地方需要改动呢?改动地方挺多的了,你想一想,其实其实也不是很多,就是把这个连接的方式传过改了,因为你C没有了,你的所有con呢,是从这这地方也不需要了。就说这个right package,大家看一下这个right package,回到这里,你right package里面其实也有这个连接,这个连接没有必要再给了,因为连接已经TRANSFER10分有了,所以说连这个都可以不要,也就是说我们这个transfer。这个read package也要发生变化。直接删掉,那删掉过后肯定你这里面肯定有大量的错误,因为你你这连接都没有怎么玩,我从这取出来给你。OK。好,这个改了,包括这个八分,其实这也没有必要再给了,因为你这本身有,你还给他八分干啥,所以说这个呢,也将离我们而去。
29:08
那你这个一注销,显然这个8UFF分你这写肯定没有东西,那要从哪取呢?要从this,就从我的transfer里面取出这个八分。那下面代码全部都要改。这个很正常啊,同学们,因为你现在已经开始用分层的模式来做了,好,那下面都改。也也也改动很快啊,只要你把这个道理明白了,因为你现在整个这个处理都是交给transfer实力的,那自然它的连接和buffer都在这里面。完事改一下就完了啊,不着急,认识点对。对,从它取出来,再从我这方取出我的八分往事,然后下边一样的道理,往下走啊,往下走很正常啊,走八分改动,然后下面下面哦,改完了,下面也是一样的道理,下面也是一样的道理,这个呢也要把它拿掉。
30:01
也要把它拿掉,因为我这边transfer粉也有东西,好,这个拿掉过后呢,OK,这个地方哪些需要改动啊,来全部改一下,This点发,然后collect我有了this点。Collect buffer也有了,看,所有东西都关联在一起了,啊,关联在一起了,下面接着走这个data,好,这个地方也是一样的,这是第二。Connect right。好,写完了保存一下。好,有还有一个错误。U还有一个错误,他说这有一个buffer他没用这个其实已经没有意义了,说删了删了或者先先暂时先先注销啊先注销,因为你现在都用的是这个东西,自己的有的东西了嘛,没必要用那么多了,看这样都OK。应该没没没毛病了啊,这个改动你看也很简洁了,就相当于说我的任务就交给他,你一个人搞定,其他的事我不管好反过来讲到这儿了啊,马上就马上差不多了。
31:04
回到这,我们来做这个处理了,那这边呢,呃,U地方要改动的是哪些地方,我们看看它怎么没报错呢。他应该有些报错错误信息才对啊。没报错,不应该哈。首先这个地方就应该报错。因为你现在用的是TF right package里面其实连这个都不需要传了。这地方就不应该传了。好。啊,这哪个地方写错了,看看right packing,对的,刚才有老师有同学提醒我了啊,非常好,这个是放开。放开好,保存完毕。好。同学们,那这块呢,就是它的这个server process logging处理完了。大家可能现在没有感觉到它的好处,因为后面呢,我们只要去完成它的注注册,我就再写一个注册的函数,这样子它的分成模式就一下就会就会发挥它的威力,好,这个写完了啊,紧接着各位同学咱们接着再来剥取。
32:14
这这个不剥了,这个现在还没有呢,你剥它干啥?现在要剥它了,就一层一层的剥洋葱一样,Process,这个怎怎么剥呢?好,老规矩,这个地方呢,也很简单,因为你现在已经有点东西了来看。你这怎么拨,我仍然一个道理,先创建啊先创建。创建一个process。的一个的这个什么呢,结构体。结构体。好,这个结构体呢,我就把它搞定,怎么写啊,就是type the process。然后呢,Sru。它这里面要个什么东西呢?它这里面也是需要一个连接,就是连接是通通过他们之间调用传递过去的,所以说这来一个连接。
33:07
好,Let。第二,Connect。好的,这个就写完,然后呢,引入我们的包包。Ne,当然他在处理这个地方的时候,这个函数我将会给他绑定在一起,就是跟他绑定,那这个时候呢,就this新process。啊,哪地方写了个冒号,我看一下。是在这个的。这个第几句话。明类型就行了,类型。嗯。哦哦哦哦哦,对对对,说的很对啊,保存一下好普先,那里面这个链接也将会离我们而去,因为链接我们可以传过来的是这个链接最终是谁给我的呢?是这个老大给我的,是这个家伙给我的。
34:06
是。是这个我看看是哪里给我的呢。是这个地方。到时间我不是要去进行这个登录吗?对吧,登录的时候他传给我就可以了,这登录好process这地方有了连接,这有连接好,到时间呢,我们这进行一个处理,处理好下面代码啊,下面这个代码要做一个小小处理了。啊,Process process把这个。写错了,这地方写错了。好,然后呢,接着往下看,接着往下看啊。OK。呃,它这个地方连接,它这个地方连接是从这儿传进去的,我知道了啊,这往前它其实它其实连这个连这个连接都不需要,因为到时这个连接是从这拿到的,是从这个process logging,就是从那个总控传过来的,对吧,总控那边传过来的。
35:01
好,我们现在改的是server段啊,我们现在改的段大家别别搞错了,好,这边先进引包包,引包包,引包包呢,把刚才的这个message先引过来。先引过来啊引过来好快完了,就就差这上面这两个了。好,引过来过后呢,这个地方,这个地方大家想一想server process logging现在呢,因为你是一个process,其实他在这个地方就有一个任务去调用它,对不对,因为我我现在知道了,哦,你你现在是一个logging message,我就应该用哪一个去完成这个任务呢,要这个process来完成。那有些说,那如果将来我们是一个,比如说发短信的,那我可能是另外一个。下面的另外一个来完成,所以说呢,在这里我发现因为它是登录的,所以说我在这创建一个。
36:00
我在这里创建,创建一个什么呢?这个实例OK。因为我知道这个事情应该由他来完成嘛,他的实力。因为你将来可能是不同的process来处理好创建它很简单很简单,Up。走等于一个I,注意看啊,同学们看这里,我们把这个process写出来。就是user。User process p pro CES OK,包起来,它这里面呢,需要给他传一个特别重要的东西,就是这个连接给它不用犹豫啊,给它怎么给它呢?很简单,CNN走,因为这个地方你总的这个孔总控一定会有一个连接,因为这个连接是你的那个上一个文件给我传了,所以你看到它其实连接在往下传递。那就是这样子的呀,因为你这个整个操作都需要他呀。
37:00
对,这个结构也不是那么容易拿到的,得动脑筋,好Z点拿到了。这方应该有一个逗号,好,当我拿到这个地方的时候,同学们,我现在u b.SC法就可以了啊,现在我没有考虑过多啊,这个链接不需要传了,为什么不需要传这个链接了,因为你的连接已经隐藏在up里面了,对不对?好,那么这个我们看这一版有没有把它改成大写的啊,先把它改成大写的吧啊。其实一个包现在不在,一个包还真是得改啊,好,现在就写完了,看看哪个地方还需要改动,看一下就说创建了一个user process,因为我发现得用它来完成登录的事情,创建好,创建好了过后调用它的方法传进去,最后结果该怎么返回,仍然怎么返回。没事。完事好,已经到哪一步了啊,已经到这个地方了,已经到这个地方了,那么接着呢,现在的任务就是他们之间怎么来一层层的吊起来的,调的关系我们都搞通了,现在用卖这个main和这个process的关系理清楚就完事了啊,来走一个。
38:13
那这个地方怎么处理呢?怎么处理呢?同学们看。主的这个地方,它有一段代码是process,里面有一堆循环,这个循环这边逻辑呢,大家看它读包包。然后呢,他读完包过后,他去掉这个地方,我感觉这段代码啊。我感觉就是还现在老师高量这这段代码最好交给我们总控去做,也就是说主函数就做一件事情,拿到链接,拿到这个连接,说哎,你来处理吧,它的思路这样子的啊,主主函数就说我拿到连接了,我起一个斜程,其实它的任务就是拿到连接起一个斜携程,其他事儿我都不想干。我把这个事情交给我,我说我拿到链接就直接交给这个总控说,哎,总控干活就完了,所以说这边的代码呢,我感觉是这样子的啊,从我的思想来说呢,我想这么去做,把里面代码全部镂空。
39:12
你看一个大的改动。我全部镂空捡走。但前总你的代码就失去了联系了,我把刚才剪的这段代码直接扔到我们这个地方来。我写的叫放。我也给他绑定this行,注意看啊,这是一个事项。然后呢,我这写一个叫做总控的处理,比如说process。啊,但这个名字呢,有点容易出问题,因为你这叫它下面还有个包,也叫process,这个容易出问题,两个地方在一起呢,比较麻烦,那么我们取个叫做什么呢。呃,叫什么处理吗?呃,我先写个二吧,我先写个二啊,呃,相,相当于是第二层的一个处理,我待会儿再再想一个更好的名字,一时半会想不到啊,待会再说啊,就待会把刚才的这段代码各位朋友称了一下粘过来。
40:08
三过来。那在过来过后呢,不要忘了,因为你这个this process呢,是已经在上一级调起来说直接调它就行了,这面代码呢,无需大的改动,但是这有transfer了啊,因为你你去读这个东西嘛,肯定你要开始去创建transfer去做读这个事情,所以说这里面呢,还有一个事情,创建一个穿石缝。穿石粉实力完成这个毒毒包的任务,毒包的任务好不着急啊,马上就快结束了。关键点不能。不能这个拉稀,你到这地方突然一下错了,调试起来也很麻烦,那现在呢,我们二话不说,把刚才那个代码再走一下,都创建引用。充电引用呢,这个代价很低,都是一个,都是一个指针,对都是一个指针,那就是UR包包,注意听啊,U包下面有个穿石粉。
41:01
OK,然后把链接给他吧,把链接把这个可爱的链接给他,我们这个链接呢,是通过这个process给他带过来的。啊,这个应该写错了,应该少了个or不好意思啊。少了一个or对,因为我这个类型是process嘛,就or好通过他给我带过来this点。这四点那个connect传给他。对方有没有逗号呢?有一个逗号,对,然后呢,直此刻有了TF,过后二话不说,TFTF。TF。点read完事,那这个代码呢,我们就没有传connect,因为连接已经传到这边去了,下面代码不动,该怎么走仍然怎么走,好到这注注意看这个地方是server,它掉的是自己的,也就说他们两个在同一个包包里面,对不对,所以说呢,这个地方可以,因为他们两个是这两个人都在同一个包下面,所以这个小写倒问题不大,倒问题不大,那这种不无需改动。
42:03
这样无需改动啊,这个连接是不是不需要了,我看看。哦,对,这个连接也不需要了。那这个地方应该这样改动一下,不要这个连接。调的时候呢,应该是Z点调是这意思吧,Z点,因为你这个server process这个message呢,是属于这个中控的,所以说他进来过后,先用transfer读取包该干嘛干嘛干完,完了过后再用自己的这个方法的server去处理,他就进到这里面去,这里面呢又去调我们的这个APP里面的这个处理登录好写完了最后最后一步啊,同学们,最后一步还差一点点。还差哪里呢,因为你刚才把这个主函数这减空了,啥都没有了,所以这里面呢,要去调用这里调用我们的主控,调用这个主控。啊,总司令啊,下面管了很多小兵啊总控,那这个总控呢,我们先创建起来。创建一个,创建一个总控,让他去给我分配任务啊呃,创建这个总控很简单,创建一个实例太easy了,那走一个吧。
43:09
好,那就是process啊,Pros or走等于艾特符号。然后process里面有一个重要的东西,就是这个连接,这个连接刚好就从这个最先前的这个主函数一层一层的传递下去。走好它就。我们这个地方是大写的,这边是一个小写的,完事啊,下面有没有逗号呢?啊,有一个逗号非常好,有了这个逗号过最后一步啊,就差最后一步了,各位同学。第二它调用我们的这一个是二啊,对面应该有个返回值,不好意思啊,应该有返回值,肯定有返回值,对,肯定有返回值写错了LEROK。好,肯定有返回,因为就是嘛,大量return,你不可能没有返回值。如果在读的时候出了问题,就。
44:05
就问题啊。好,这个是没有引包的原因,对不对,没有引包来吧,Go cold chart room。然后咱们的u tears tears这个包包。OK,还有一个server server走。好的,看看哪里还有问题啊,还有个这个这个是processor呢,它是用的另外一个包包里面的,说说咱还得引入他的这个处理包pro pro再来一下。啊,但是这个用的时候,你因为你是这个包,所以说你还得前面写个process。第二。好,这样应该就没毛病了吧。好A有七个错误啊。OK,这边的问题是,呃,TF read package,这个为什么说没有写呢?
45:07
我的read派给你,没大写吗?哦,没错啊,没错,对吧,没有大写好,因为我要放开,所以说我要大写好,没有大写过后呢,这还有个IO,对,还有个IO包也要引进去,各位朋友好,越到上面呢,反而感觉关系越复杂了。保存一下。OK,好,这地方有问题,诶,没,没问题,好,闪了一下,然后我以迅雷不及掩而之势,我就不知道错误在哪里了,好像在这来了啊part在调用哪里呢?它只调用一件事情,他说你帮我处理吧。Process。二你帮我处理吧,不要他这地方没有传任何东西进去是吗?因为你的连接已经从这带进去了,你看这个process啥都没有传。就说这个总控什么都没有穿进去。啊,有个返回值,这个对我来说很重要啊,我要把这个返回值拿到,因为我要退出,如果你这个是携程啊,这个携程如果错了,我就直接给你退了,我不玩了,等于好加一个判断。
46:11
如果各位朋友,如果A。如果L不等于零二,说明呢,我们这个斜程已经出毛病了,也就是说哪个地方出问题了呢?就是说你在这边跑的时候,这个斜程出问题了,下面是一层层往下面追的。好,有了这个东西过后呢,我们提示一句话。我们提示就退出了。好,我们直接写购的这个携程出问题了啊,客户端就客户端和服务器端的,服务器端通讯的。通讯的这个携程。写成错误,错误的原因。打印上啊,玩好这个做完了以后不用犹豫,不用彷徨啊,直接不玩了,直接就不玩了。Return,其实你一般出不来啊,一般出不来,因为这里面它是一个这里面它在里面一直一直在这循环的做工作呢,为什么在哪里循环的,因为你在这这个地方process里面这么个错误啊,少了一个啊,少了一个这个那好。
47:13
啊,OK。Fmt fmt fmt OK OK,好,还有哪里错误啊,还有点错误再看,嗯,这个地方先来看它的错误有哪里。好,他说这些是不是都没有用到了,应该没有用,因为你现在把这些东西全部都往下面挪了吗?这层东西往下面挪了,所以这些呢,暂时就没有用了,可以先将其干掉,因为你都把它封中到。你你原先这个主函数是干所有事,现在他把这些事情分配下去了,所以他用的包呢就很少了。好,拿掉。拿掉过后再保存一把。好,保存过process还有四个错误啊,再调一调。这地方错误是什么。看一下这。
48:01
哦,明白,他这样说,他这个L是shadow的,就是他不明确这个shadow到底是返回的是哪一个,这个很简单,写个L。写明确这个L就可以了啊,122明确写一下这个ER。好保存。还有什么错误呢?还有最后一个错误啊,还有最后一个错误,这什么玩意。他说。啊,他说这个声明过啊,OKOK保一下。保存一下,看这地方的问题在哪里。看一下这个问题在哪里啊。呃,他说这个process重成重复的生命呢。在哪里呢?在main点勾的126行。126行看一下。126行。126行不就C行吗?
49:00
126万上边。哦,这有个process。这有个process,那就他这地方有点问题,它这个包包啊,和这个函数名一样的。哎呀,这个地方有点麻烦,就说我说这个坑终于出现了,还是没跑过去啊,同学们还是没跑过去。呃,那这个包的名字呢?他就是这个包,主要是你这两个包的名字啊有问题。Server这个包,那我把这个包的名字改一改吧,把这个名字改一改,那这个呢,我们把它改成PROCESS2好,PROCESS2好,把这个改成PROCESS2,然后我调的时候这样改啊。好,这个地方,这个地方没问题,然后我把这个地方改成这个包的时候呢,下面掉的时候保一下,先保存一下。好保存一下过后,保存一下过后这地方就没有错了。没有错,然后呢,在调的时候有个地方需要改动,这应该改成二。
50:02
在这个process里面,我们用到的,用到的这个包其实只有一个地方,就是它。是不是?这样子应该就可以了。好,这个就可以了。这现在就没有报错了啊,就是它那个包名跟他那个重复了。在。Professor又该重复了是吧?不会,这个好像就不会,不会报错了。这样就不会报错了,不会报错。好,就是这个包名,就这个包名,他认为你的这个前面打的这个包名合成了吗?和你刚才这个地方的这个函数名重复了,这个原因我我也再想一想哈,就再想想他为什么这样子的,我再想一想,好,现在呢,代码呢没有毛病了,就说现在说相当于这个是process,这这个是这个地方是我们的这个主控,然后呢,这边有一个呃,有一个price全部写在下面的,现在我们来编一下,同学们,我们现在编一下,看看能不能通过。
51:09
就说整个代码,为了让大家看到这个效果呢,我们这样子啊,在主函数入来入入口的时候,我们就先先写一句话说新的结构。就服务器改进新的结构。新的结构。新的这个结构。好,新的结构呢,再怎么接听,如果因为这个地方现在客户端不需要发生任何变化,也应该能跑起来,因为我现在改动的这个地方跟你这个跟你这边的客户端没有任何关系,所以说如果我这个代码没有任何问题的话,他应该一如既往的可以好用,因为我在我的改动相当是我内部装修。我对你的这个外面的这个接口并没有发生任何变化,虽然我改了很多,但是呢,我只是我的结构的改变,对你外面呢没有影响,好现在呢,我们玩一把,看看行不行啊,看行不行,这个很关键,先保存一下啊,同学们。
52:05
好的,那现在呢,我们来打开我们这个project。好,各位各位同学验证一下我们代码到底行不行,这个呢,我也我们来还是要有信心,对不对,还是要有信心,我们认为呢,应该没问题。因为代码整个改动我们还是有根据的嘛,每一步我们都是一步一步的推,推导过来的啊各位同学现在呢,我把这边当做我们的服务器啊,就当做这边当服务器吧。Go build build-O,我们先输出一个这边服务器叫server.exe,对,Go code,对,然后呢,Chart room。下room,然后呢,我找到这个server下面有个main,好,现在必须知道这个main了啊,因为你server原先那个main文件已经被干掉了,手编一下。
53:01
OK,没有毛病好没有毛病好没有毛病,但是高兴的事情,然后呢,这边呢也要编译一下,我把这个粘过来一份写一下,粘不好粘go build-O,然后呢,输出我们客户端,呃,客户端是不是不用管了。客户端还现在没有没有改动是不是,那就用以前的玩意就行了,以前的还在呢,好,那就不用动它先,咱不用动它好server点1X1跑起来。好,同学们可以看到目前呢,他说的是新的结构,说明我们现在的的确确用的是新的代码,不是以前的老代码啊,来看看能不能跑起来,这个是关键,因为毕竟改了这么多东西,这个呃,还是要测一下才行的。好,先来走一个,我们先输一个,呃,就说不存在的用户名啊,比如说比如说我们现在是指定的嘛,那就假设是呃200。哦,密码呢,ABC回错。
54:01
各位同学完全的正确,没毛病,这边退出也是正常的是吧,通讯协议,协议出现错误你就走了吗?就你自己自己写这个东西嘛,那么我们看看登录成功行不行,走再来一个走100。密码123456是正确的,123456回车。OK,完全的正确。哎,不对呀,这个我们昨天还没写这些是吧。这个是我昨天晚上做测试的时候,我又重新编一下啊,不好意思啊,这个大家知道为为什么这样子,是因为昨天晚上我写代码,我不是往后面写了点吗?所以说我又重新编了一下,这个我还重新编,因为我编完了过后也叫知道吧啊,所以说这个呢,我还得还是要重新编一下的,重新来啊。他说你你不让看这些东西,你们都还不应该看到才对,好,重新编一下就行了,Go build不着急啊,就是因为我昨天晚上我编了一个新的东西,它也叫兰E,是这个道理啊。
55:00
好,然后呢,我写上这个叫覆盖它就行了。好,各位同学接着来,走,Go。然后呢,我们这边是chart room。然后呢,是我们的server,然后呢,呃,不是server是。CT,然后呢,是我们的这个server下面,呃,有没有主文件呢,我看看啊。啊,下面没有了,因为这面也还没有分成,还没有分成,所以说这边就写个main点够,哎,不用main点够了。直接就编译。好,来,现在编写好了啊,跑起来。Server是我们最新的。点英西。跑起来了,然后呢。Client轴。好,现在输入一个错误的,这个是对的,请输入用户ID,比如现在输个200。好,密码呢,汤姆回车。
56:02
好,说的很正确,这个跟我们想的是不是一样的,诶是我们自己写的那段代码是一样的,好然后呢,这个地方是该用户不存在,请注册我们再整一个存在的啊,这个是昨天提示的信息走。100密码123456走好读取登录成功,这个是正确的,也就是说通过刚才我们的这个程序的改动,我们改了这么多东西,服务器这一块呢,仍然是OK的,然是OK的,好,我把代码给各位朋友整理一下啊,那大家想这个任务看起来好像你看哈老师改起来好像,好像一测试就够了是吧,其实你们将来参加工作这种这种事情很多的。你比如说你参加工作以后,那么老板来了说诶张三你过来想,以前这个代码呢,没有结构,写的乱七八糟的,你用你学到的知识,把它给我改成MVC,或者改成一个分层的,让我代码将来有扩展性,可读性好,你输出去,你拿到这个东西完全没有思路也是不行的,包括你们就是用这种思,用这种老师讲的这种思路呢,也可以解决,像外部开发的这种分层也是可以的啊好的,我先把思路先整理整理啊各位同学,那么我们做了哪些工作呢?啊,这个工作任务呢,还是比较多的啊,还是比较多的,可能大家要一步一步的来啊,那看我做了哪些工作步骤。
57:23
周二啊,我们做哪些工作,把它思路整理一下,从从起从后从底往上走啊,从底往上走好,那现在呢,我们来整理一下这个思路。在这个进行剥离的时候啊,剥离的时候。啊,把me剥离到文件中顺序啊,这个卡顿一段先。先做了,先修改了,修改了u tr包U这个包括下面的urs点购,对,然后呢,这个代码具体来说是什么样子的呢?各位朋友。哎,这个代码我们改动的是这个地方。
58:02
啊,改动这个地方,好,我给大家截一下这个图。从这里。到这儿。26。对,26。好,接着往下继续截取啊,各位同学26接着往下看。26呢,这边就27了。27。好,27到我们的51行,对,到我们的51行。接着往下继续看51 51呢,我们继续往下走诶。到我们的52行。好,我12号呢,这个就修改完毕。修改完毕,52号好,紧接着我们又修改了哪一块呢?你看这个有示意图还是很重要的,我们修改了user process process这个地方啊,我们修改了。修改了这个,我们有个包叫process。
59:00
PRO2我我写的这个包啊,这个包下面呢,有个叫process,里面我们写了一个叫user user,这个process。点够好这个文件,这个文件我们是怎么修改的呢?好给大家整理一下,放这。好放这里,那具体来说呢,我们改了这些东西,其实这里面就一个函数剥离出来,目前就一个函数啊,但是到了下午呢,这个函数我们就会新增加新的函数。好,这是第26行,接着往下看。26呢,诶这边是27。对,这边是27,把思路捋一捋,27行到51行。好,紧接着我们从51行继续截取啊,51。这边就是52到最后没有了,好这个文件又搞定了。好,这个文件就搞定了,我们紧接着又修改了哪个文件呢?诶,我们又修改了这个总控,就是process这个东西,好,我们又修改了它。
60:05
修改了这个啊,还是还就是main这个包包下面的啊,Main这个包包下面的process.go好process.gook好,那这个地方是怎么修改的呢?诶这地方是怎么修改的呢?我们打开它好改动是这样子的。啊,从这开始。这边呢,它主要是根据你的这个消息类型不同啊,然后去调用相应的这个处理好,相应的处理好这第26行,接着往下继续截取各位同学好,二十六二十六,然后就是27了。27。好,这是我们的27行。好,待会我再把那个文件名啊,这个文件名有有小问题,把它调一调,叫51行。51行,然后最后就52行。
61:01
好,52这个就写写完了。最后呢,我们又改进了最上面这个,最近来的这个命点go,好,这面我们也做了修改,紧接着我们修改了什么呢?诶,我们修改了命点go。面包下面的面点够。对这样的改进呢,呃,相对来说比较少一点,在哪里呢?就在这做了一个改动,把这个process做了一个改动,其他地方没有个改。好,其他地方就没有改了。好,这是咱们的这个代码。那现在呢,关于这一个服务器端的这个分层这一个模式,我们就给大家介绍到这里好。
我来说两句