00:00
同学们好,从今天开始呢,给大家讲一门新的技术。叫做核心技术及源码剖析。换言之,我们这套课程呢,重点是讲的Nike的核心技术,同时呢,我们会对Nike进行源码剖析。那现在呢,我们再看一下本套课程,本套视频课程的目录。我们来做一个简单介绍,我们这套课程呢,分这么几呃,目录结构有这些,首先呢,笔记。我们会把每一天讲解的内容形成一个笔记放在这里,最后呢,这个笔记会进行一个汇总。第二部分是我们的代码,我们每一天呢都会抄写一些源代码,源代码呢我们会放在这个文件夹下边去。另外呢,这是我们的课件,课件里面呢,主要是包含我们的PPT,另外一个呢,就是老师为了讲课方便,有些时候呢,需要画一些流程图,或者是一些原理图,就画在这一个Excel文件里面去。
01:06
下一个是软件,软件就是我们在讲解nit核心技术这套课程的时候会用到的一些软件,比如说我们会用到JDK,用到ideal,那么idea呢,这这个是有一些注册码的,如果说同学们已经安装了ideal,就用自己的ideal,如果没有安装过呢,你可以用这个老师提供的来进行安装。好的,这是我们相关软件会放这,那么每一天我们讲解的内容呢,会形成一套视频,会形成视频放在该文件夹下面去,最后是我们的资料,资料里面呢,比如说我们会用到nit的API这样一些文档,我们放在这,再比如说我们会讲n n nio的时候呢,我们会用到一些NIO的相关文档,你比如说NIO技术里面一个skill IO in Java这个这套这本书籍呢,他把一个可伸缩IO就是Java中。
02:07
用的可生受IO的一个设计原理讲的比较清晰,到时候呢,我们也会来对大家对这个课程进行一个说明。也说我们来讲一下它的一个设计原理的时候,会用到这本书,然后呢会讲到比如像IO0拷贝,还有像reactor模型等等,我们会用到资料呢,我们就放在这个文件夹下去,而且随着讲课的这个过程呢,我们资料也会逐渐的完善。好,这是我们这套课程的一个文件目录,那下面呢,再讲这个Nike核心技术之前,我们首先来说一下Nike的介绍和应用场景。大家对Nike呢,有一个。呃,大概的一个印象。
03:00
在讲Nike呃之前,我首先要给同学们说一下。听这套课程的,对学员们就是对大家技术构成的一个要求。首先呢,学我们本套课程是有这样一些说明的,第一个本套课程呢,不太适合零基础的学员,也就是说你对Java核心编程还没有理解。那你来学这个课程呢,就不太合适,你可能会听不懂老师在讲什么。因此我在这说的很清楚,听本套课程的同学呢,要求已经掌握了Java编程,也就是他已经掌握了Java的核心编程,包括哪些呢?比如说op。Java的多线程,Java IO Java网络,为什么要这些技术呢?因为我们Nike,它本身就是一个。处理网络高并发的一个框架。
04:00
所以说它在这里面呢,就不可避免的会用到多线程IO和Java网络,而这一部分它属于基础部分,老师就不会再去讲了,如果你对Java核心技术还不太了解,那你首先呢,可以看一下上硅谷的Java基础课程。除了对Java基础有一些了解之外呢,还要求同学们能够使用一些常用的Java设计模式,注意我这里标了一个红字是常用的,也也就是说设计模式并不需要大家也非常的精通,一些常用的设计模式你必须要知道,因为我们后面注意源代码的时候呢,是要求同学们呃,会带大家看一些源代码,源代码里边呢,他会用到设计模式,你比如说观察者模式,命令模式,职责链模式等等。那有些同学说了,说老师那我如果Java设计模式一点都不都不知道怎么办呢?当然你你说你要听也是没有问题的,只是呢,老师讲的时候,可能你会突然会觉得,诶老师为什么提到一个观察者模式,我怎么没有没有听说过,就会感觉有点突然明白我的意思吧。
05:11
那当然说说老师,我们不会没有长没有学过Java设计模式的,有没有什么资料,我这里呢也推荐一下。上硅谷呢,呃,录了一套Java设计模式,这是这也是我主讲的,如果同学们,嗯,没有没有设计模式这个概念呢,你也可以有选择性的注意,你有选择性的来找一些设计模式来看你,比如说我们在进行Nike讲解的时候,我们会用到。这一个。观察者模式。大家可以看到我们会用到观察者模式,你就可以到这里面去找。你你看这个命令行模式,是不是就找到了命令模式,再再比如说职责链模式。对不对,那其他的模式看观察者模式也在这里,你可以,嗯,把这套课程呢,有选择性的来进行一个阅读。
06:09
对,所以说这样子呢,就弥补了大家对设计模式这块不了解的一个缺点。那接着呢,我们再来看,除了同学们需要有一些设计模式的基础之外呢,你还需要掌握一些常用的数据结构,比如说链表。为什么要用到链表呢?因为我们Nike里面有一个非常核心的组件叫做pan,就是我们的管道,它的管道的底层其实用的就是一个双向链表,所以说如果你理解双向链表呢,你听起来会。更加的轻松,而且呢,会觉得呃,掌握起来也比较容易一点,那有些同学说了,说老师我没有学过数据结构又怎么办呢?好,没有关系,那韩老师呢,还得给大家推荐另外一套课程,这套课程呢,也是由上硅谷来录制的,由我来主讲的Java数据结构和算法,你也可以有选择性的来进行嗯学习,比如说这一套课程呢,我们讲了有195讲。
07:10
如果说你1.java基础都呃设呃数据结构基础都没有的话呢,你也可以有选择性的看,比如说老师讲到呃,讲到我们net的底层的时候,关于这个拍判难,就是我们管道它怎么构成的时候,我会讲到链表,那你如果链表不知道的话呢,你可以有选择性的来看链表是一个怎样的东西,比如说你看我在这讲链表了吧。你看我给你找一下啊,给同学们找一下,你看这里。是不是从这里到这儿就是讲的链表是吧,我们讲的单链表双双向链表。所以说我这再重复一下,就说如果你是一个零基础的学员,那你最好就不要学这个课程了,因为不太适合你学。不太适合你学。
08:00
第二第三点呢,我还要再说一下Nike,我们这套课程呢,既然叫核心技术及源码剖析,所以说我们有一个章节,有一个章节会专门来讲解。专门对Nike的核心源码进行剖析,那这听这个章节呢,需要同学们最好有项目开发和阅读源码的经历。不然的话,你会觉得老师诶怎么跳来跳去的呢,我在第bug源码的时候,在追踪源码的时候,你可能会觉得有点难度。当然了,有同学说,老师那我那我就没有项目开发经验,我也没有阅读过框架源码,怎么办呢?我说了最好有。最好是什么意思啊,就是说你有你听起来会轻松。听起来会比较呃清晰一点,如果说你没有的话呢,你你要听也是没有问题的,因为我在讲,我在进行源码剖析的时候呢,也是一步一步分析的。
09:00
对,一步复习你也可以听懂,只是呢,嗯,可能会,呃,需要大家,呃,在听课的时候更要专注一点,你才能听得懂老师在讲什么,明白我的意思吧。好的,你不说说了,说老师,那你为什么要讲这个核心源码呢?其实我在这里再多说一下Nike核心源码的剖析,其实是我们掌握Nike它的整体的一个高性能的设计的一个关键点,就说我们说Nike它是可以处理网络高并发的一个框架。但为什么他可以做到这一点呢?就要从源码这个角度来进行剖析,如果你没有阅读过Nike的源码,可以这么讲,你。基本上就没有办法说自己掌握了nit。明白我在说什么吧,好的,那有些同学老师,那你这个源码剖析有哪些内容呢?我给大家简单的说一下,你看这是我们整个呃内容一共有一百六一百七一百七十多页,内容还是非常丰富的,可以说我们这套ni呢,是目前最为详细最系统的一套。
10:08
一套Nike讲解Nike的课程,至少至少在老师讲课的时候是这样子的,因为有些虽然是讲了,但是呢,讲的并不是特别的系统好,我个人是这样想的,所以说老师也花了很多时间来整理和呃和梳理我们这个Nike。那么嗯,那有些说老师这个Nike的核心源码,回到刚才老师说的核心源码剖析,主要是讲哪些呢?我给大家简单看一下。呃,你比如说老师在讲到我们这一个Nike的模型时,会有这么一张图,你看这些图都是老师自己画的,就是我自己呢,会对这些技术有一个理解,然后呢,我会画一些图来帮助大家,呃,去理解它的原理啊,很多这样的例子,你比如说。啊,我我就往下面拉一个哈。我们在讲Nike模型的时候,有这么一张图,大家看到没有,诶,你看这么一张图。
11:02
那这张图的话呢,它实际上就把我们整个这个。我把这个支支到上上面来,这张图呢,他就把我们这一个ni里面的一个它的核心的一个组件及它的一个运行机制描述出来了,哪一个机制呢,就是need reactor,一个工作架构的一个图,你看这里有什么呀,这里有一个boss boss group。这边呢有个worker group,那么这个boss group里面它干什么呢?你看没有,它这里面还有。N IO event group,这个IO event group里面呢,它又包含了select,就是我们选择器,还有task,就是我们的任务队列,那么这些东西它是怎么工作的,它是是一个事件循环组,他又是怎么工作的?它为什么这里接收的是except这种事件,而他的一个worker group为什么接收的又是我们的网络的读取的事件呢?他是怎么做到,他是怎么注册的呢?你看这里面还讲了注册。
12:09
这个就需要老师从源码的角度来给大家进行一个追踪和一个讲解,这样呢你才能把它掌握的更清晰,而且呢,我们在面试的时候,面试官他也会问你这个boss group worker group他是怎么协同工作的,他是怎么把Bo在boss group得到一个连接,把这个连接呢,又。得到的一个,把它转成一个channel,把这个channel又注册到worker group里面的一个select上面去的呢?OK,这就是要通过源码去追追踪,才能把它的一个底层的机制讲的清清楚楚,明明白白。所以这就是我们做源码剖析的原因,那具体来说,我们源码剖析呢,有哪些啊?我就给大家简单看一看,你看我们会讲到ni核心模块对吧?我们还会讲什么呢?内容很多,我们还会讲pro buffer对吧?我们还会讲nit的编码器和格ler的调用机制,这是也非常重要的,Nit里面呢,Handle格就是处理器,它是怎么做这个处理和拦截的。
13:15
然后呢,我们会讲这一个TCP连包拆包及解决方案,就是怎么用我们的编码器,再加上我们自定义协议来解决TCP连包和拆包,这些我们都会讲到。再比如说我们还会讲ni的核心源码剖析,那么核心源码剖析老师会讲哪些呢?对,你看我们会从源码的角度来给大家讲解nit启动过程,就Nike它是怎么一步一步就到了,在我们一个事件循环组去循环的监听我们的一个请求会一步一步追踪起来。你比如说我在讲的时候呢,你看这个文档做的,自己花了很多功夫来做,你看我就打开一个哈,你看我们这个Nike启动的整个源码剖析,光老师整理的就是自己整理的一个文档,就这一个剖析就有21页。
14:10
那么老师呢,花了大量的时间和精力把它整理起来,你比如说我们从哪里开始呢?比如我找到了Nike,他提供的一个源码,就他自己有很多。呃,DEMO源码我们找到其中一个呢,老师就一步一步分析的,你看这里这是源码,那么源码针对这两句话,他是怎么怎么跑的呢?到时我们会用debug debug的模式一步一步追进去,并且呢会追踪完了过后还要对他做一个整理,你看这都是老师自己一步一步整理起来,哪块有哪块是需要强调的地方,老师还要跟大家。再做一个细化的说明,那这边都是一步一步整理出来的,包括源码,包括整理梳理好,现在网上呢,有些讲源码的讲的有点粗糙,就是他就是简单一个debug完了就完了,其实你什么都不知道。
15:01
而我这一次呢,就是说一边我们来做动态的分析,另外一边呢,还有一个文档对应啊,这些都是花了很多时间来做的,可以看到有些代码还有一些文字都是一行一行敲出来的啊,确实是呃。花了很多精力的啊,花了很多精力,那除了讲解,呃,除了讲解nit启动过程的源码剖析还有哪些呢?我简单给他溜一圈哈,Nit请求。过程的源码剖析,对吧,我们还有什么呢?还有ninety fast local源码分析,就是我们ninety呢,它这个线程其实是对JDK的这个原生的线程进行一个封装和优化,那它为什么就能快呢?为什么管它叫fast thread呢?为什么它是一个快速的线程呢?叫从源码来进行分析,你再比如说对吧,我们讲的piline handler,还有这个handler contact创建的一个源码分析,因为这这是它的核心组件。
16:00
再比如说。再比如说呃,Channel pipeline调度handle的源码剖析,就是我们这个channel pan,它是怎么把这些handler进行一个调度起来的,就是怎么用这个呃出站入站的形式把它调起来的呢?就也要做一个分析,这样大家就会非常呃了解它的底层实现了。我们还会讲let在double中应用源码分析,就是说我们这个double呢,它实际上是一个就是我们一个RPC框架,RPC框架,那么他这个double它是怎么用到了Nike,我们也要做应用源码分析,这样呢,你就更能知道nit的一个应用场景的,你再比如说我们还会讲ni心跳服务的源码剖析。对吧,等等吧,等等,我就不一个念了,比如说event loop的源码分析。啊,等等等等,好,我就不一个念了,还有你看我们这还会讲到来提在做耗时不可预到操作的时候,比如说数据库网络请求,呃,在这种比较耗时的操作中,我们应该怎么去在nit中进行一个合理的处理,否则的话,你发现你如果不了解这些细节哈,你可能用了light过后,你会发现高并发并没有并没有一个充分的体现,这就是说明你没有正确的应用我们的light。
17:23
啊,当然最后呢,我们还会用ni来自己实现一个double r PC的一个核心功能。这样呢,我们其实就是通过什么呢,一个核心技术。把它的核心技术讲完,再加上什么呢?再加上一个源码的分析。对吧,这是我们第二个流程,再加上我们一个最佳实践。啊,实际我们就把最这个最佳实践。把它整理起来,那么通过第一阶段,第二阶段,第三阶段。最后我们就能够把ni掌握的比较到位。这就是我们整个一个课程的一个说明,同时呢,我也说了一下,对我们听这套课程的同学的一个要求,你不能说你什么都不知道,你一上来就听课,听完了过后你还说,诶老师讲的东西我都没有,我都没有听懂,老师讲的好像不明不白的,对吧,我是我是尽量会把这个课程讲的通俗易懂,而且有深度,有广度,但是呢,如果说你自己的知识体系,就你自己的知识体系实在是太弱了。
18:27
那你我我个人认为不能完全完全是说老师的问题对吧,所以所以说我我这也说了,如果说你缺哪一块呢,我这边也也说了,你你还回到刚才的第一个幻灯片哈,还回到刚才第一个幻灯片,就说如果你这个核心技术这块差一点意思,你就看我们的,呃,上硅谷的Java机核心编程,如果你设计模式一点都不了解呢,你可以看一下,嗯,我们的这个设计模式你有选择性的看,不用全部看完。比如说你数据都一点都不了解,你可以看一下链表就可以了,好的同学们,那么关于第一讲,我们就对那我们讲的这个课程做了一个整体介绍,同时呢,也说了一下同学们需要用到的知识点,这讲我们先跟大家聊到这里。
我来说两句