00:00
好,下边呢,我们就来看说我想开发一个项目的时候,哎,我怎么样能够把这个依赖的列表给它建立起来呢?如果说没有人给我提供一个现成的,哎,我自己怎么去把我需要的依赖都给它找到啊,那首先呢,这个时候得先解决一个问题,就是你去哪找,这个我们多次给大家呢去提到过了,哎我们建议大家呢,使用这么一个网站。诶就是点com啊这这个这个是我们推荐使用的啊,这个我个人感觉反正是用的是最舒服最舒最舒服最顺手的啊呃,这是这个问题好解决,那然后下一步呢,说你怎么选择呢?啊,那你这里边哎,你需要在这搜索框啊,输入这个关键词,你这这个里边的关键词你怎么去这个。怎么去搜索啊,怎么去搜索。哎。
01:02
这就得先确定哈,你得先确定你的技术选型啊,啥叫技术选型呢?你打算用哪些技术啊,你比如说你底层要是用买SQL的话,你肯定得导入MYSQL的驱动啊,你肯定得需要一个数据源,哎,然后呢,你得需要一个就是持久化层,你是用框架还是不用框架,像我们这个dbu,它是一个持久化层的一个辅助性的一个,呃,工具类吧,相当于是啊,类似一个小型的一个。呃。第三方库吧,谈不上框架哈,因为它太小了,封装的也不多,哎,所以说这就是叫做确定技术选型,你得先确定哈,你大体上哎,要用哪些个具体的技术。呃,当然了,这个在确定技术选型选型的这个阶段呢,其实这个时候啊,它应该说呢,也相当于是包含在我们架构设计的这个环节里当中啊,呃,我们在这儿呢,这么给大家去说一下啊。
02:17
哎,呃,这个叫组件依赖列表啊,这个什么对,先确定哈。确定技术选型,哎,组建我们的依赖列表,然后呢,项目去划分这个模块,哎等等这些操作其实都属于什么呀,架构设计的范畴,哎架构设计啊,我们老说架构师架构师的,哎架构师呢,他要做的事情呢,就是来设计架构对吧。
03:04
哎,那么。这个事情呢,其实就一个项目是它从零啊到一的一个过程,你这个时候一定需要考虑很多的因素啊,你要考虑呢,这个项目本身的这个需求,哎,就是说项目本身所属的这个行业啦啊。呃,行业啊决定。的这个大致就是所属行业的呃,基本特点,比如说你是呃互联网金融类的,还是保险类的,还是银行类的,还是电商类的是吧,这些都不一样,还是企业内部的管理系统啊,他们都有各自的这个特点。呃,然后呢,你还需要去考虑说我们。呃,项目具体的啊,这个功能需求。
04:00
同样是互联网金融啊,它有这个借贷的平台啊,然后呢,它也有这个,呃在线呢,买这个基金啊,或者说哎投资管理啊,个人理财等等这些都是不同的具体的需求啊,就同样的都是做呃基金买卖的,那你不同的这个呃投资人是吧?哎不同的创业者他们需要的功能也不一样,哎所以说这个得看他具体的功能需求,根据具体的这个功能需求。哎,我们去这个划分这个模块,然后呢去考虑技术选型,还有呢,就是这个项目。他呢,预计啊这个访问压力。哎,你是访问压力这个程度,哎,你估计呢,它访问量会有多大,它这个用户群体,基础的用户群体有多大,我们这个项目推广的力度有多大,我们能够在初期触达多少用户啊,这在过了一段时间以后,你这个天使轮融资是吧,A轮B轮C轮啊,这个这个时候他一轮一轮的融资以后项目不断的发展,他后边的话,他这个访问压力会不会增加。
05:05
啊,这个时候的话,你就得从呃开始的时候就得去想到以后的时候啊,这样的话,这个这个你不能说啊,你先按这个1000并发的来开发的啊,没有考虑那么多,等这个项目说我们想拓展到这个,呃,20万并发了啊,1001000万并发了,这个时候的话,你的项目到时候再重构啊,说重构是比较好听一点,其实就是推倒重来啊,那你这个架构你就白设计了是吧?哎,一定得让他有一定的前瞻性,有预见性啊,然后让这个项目本身从一开始设计的时候就有这个,哎可拓展的空间,还有项目这个预计啊,将来需要拓展的功能,一开始呢,一定要去啊,考虑好,考虑清楚我们这个项目的这个将来的扩展性。其实呢,我们说哈,并不说说架构设计哈,我们经常呢,说在面试的时候啊,或者什么时候啊,总是问高并发高并发高并发高并发呢这个问题啊,怎么去应对很高的并发量访问压力,这只是我们要考虑的因素,这当中的其中的一个。
06:10
有的项目呢,它访问量压力并不是最大的啊,它其实可能是来自于业务的功能的需求,或者说是这个安全性这方面的这个需求啊,所以说呢,他这个。哎,啊,所以说这个高并发呢,并不是你架构师的唯一的单一的一个技术能力就够了啊,这个是高并发是必须得有的啊,你如何应对高并发的这个访问量啊,这个这个处理高并发的能力这个得有,但是呢,不是唯一的啊,不是说你有了这个就能设计架构了。呃,像还有呢,就是说我们这个。这个时候啊,你要涉及项目的,项目总体的体系结构啊,就不我们说了,这不是说你只是单一的考虑我们Java的这个架构就完了啊,你Java将来我们说呢,你谈得上架构设计哈,或者说呃,需要找一个资深的架构师来设计的时候,很有可能是大型的分布式架构啊,就是用到这个微服务,光是微服务本身就牵扯到微服务的这个链路的追踪啊,啊微服务的这个监控啊,熔断呀,降级呀啊这个这些个问题啊,他们之间的这个协调,哎,这个注册发现配置,消息总线等等是吧,这个网关,哎,光是我们说微服务本身要考虑的因素就非常多,还有呢,除了我们微服务之外,我们Java程序还要去访问我们很多的中间键啊,Red啊,Search啊,啊消息队列呀。
07:34
啊,然后呢,这个分布式文件,呃,文件服务器啊,文件存储系统啊,啊做负载均衡的nnux啊,啊做这个页面缓存的nnux啊。要考虑的,整个这些呢,都是要去考虑的啊,所以说大家呢。我们最经常听听说这么一句话啊,说这个我们这个。你看我画的像不像一艘航母?哎,就是说这个,呃,有这么一句话,叫做面试造航母,然后呢,上边拧螺丝啊,就是面试呢,是按照你造一整艘航空母舰的这个这个这个级别啊,这个这个难度呢来考你的,但是上班以后呢,就是这个航空母舰上某一个地方你去拧螺丝。
08:17
啊,我们很多人调侃啊,用这种方式调侃说这个,哎呀,你面试其实面子很难,其实工作的时候没有那么难,但是呢,你也要知道,你如果对这个航空母舰整体没有一个基本的了解的话,你怎么能够在其中的某一个地方正确的去拧这个螺丝呢?你怎么知道你工作的这个岗位在什么位置呢?啊,你怎么知道你参与开发的这个项目,你你写的这个代码,它在项目当中是哪一个局部呢?对吧,哎呃,所以说呢,即便你现在还没有做到架构师这个级别,即便呢,你现在技术能力还不够啊,但是呢,你仍然呢要对自己呢有架构方面的要求啊,最起码别人设计的架构你得能够去理解,能够去看懂啊,你得架构呢底层或者说它的基础,我们的从Java的各种框架从还有我们后边要使用的中间键啊,我们要使用的linuxx系统这些个基础的技能,我们一定呢都得要去掌握啊。
09:14
然后呢,才能够很好的参与到这个项目的开发当中。这稍微的扯得有点远了哈,因为这涉及到基础选型呢,基础选型这个阶段啊,其实呢,它就是属于这个架构设计的这个阶段啊,呃,那么回到我们这个本身的话题,说我们要确定技术选型啊,就是要确定我们项目中的要用到哪些技术,技术确定了以后,等于说呢,技术的名字确定了啊,你说MYSQL,你是说MYSQL驱动啊,你是说这个哎,持久化层的某一个工具类什么的是吧,然后呢。下一个呢,就是说啊,这个是道。呃,我们前面指定的这个网站。哎,到这个网站我们去搜索具体技术,它对应的。
10:08
啊,具体依赖信息,那么这个时候呢,比如说啊,我们下边呢,要来搜索一下这个MYSQL,哎,这就是我这个哈。买Q的这个connector Java,这不就是MYSQ驱动的名字吗?哎,就是它你把这个点开以后呢,这里边儿这个版本特别多。你该用哪一个版本呢?啊,这就是这就是下一个问题啊。我看这用不用截个图哈。诶,搜索这个具体的依赖信息啊。嗯。这些呢,就是这个具体的啊,某一个技术的具体的信息。
11:10
然后呢,你得到这个具体信息以后呢,再下一步啊是说。呃,确定你要使用哪一个版本。使用哪个版本的啊,这个依赖。就如同我们这里边一样啊。你用这么多的版本啊,你要用哪一个,哎,那么这里边儿得从从哪些方面来考虑呢?啊,这个事情我们从哪些方面来考虑呢?一个是呢。呃,它有的时候呢,它需要和别的技术啊,它它是由别的技术呢所决定的啊,你这儿呢,必须用某一个版本。考虑因素一啊,呃,看是否有别的技术。
12:07
要求这里必须用。哎,某一个版本。啊,这个这个时候你看哈,呃,我们。你看这个这个MYSQL驱动啊,它现在这个是八,这个肯定就是对应我们MYSQL8啊,它这个时候MYSQ的版本到大版本到八的时候,你的MYSQ驱动就得用这这种了,哎,这这个你看这个是六的这个,这个是这边是这个五的这个。呃,然后呢,还有的情况呢,是呢,比如说我某一个技术啊,A这个技术我用的是1.0,它要求呢,这个B这个技术啊,可能呢,也得是这个1.0。有这种情况,或者至少呢,B不能低于1.0,有的时候会有这样的要求啊,这是由别的技术所决定的,它必须得用哪一个。呃,然后呢,考虑因素二,这些因素要综合考虑啊,不是单一的看某一个。
13:03
呃,看啊,如果没有硬性的要求。啊,那么。呃,选择较高的版本或者啊,这个是下载量大的版本。诶,你看啊这个。我们就以买SQ驱动这个来说,最高版本应该就是这个了,8.0.28这是最高版本,然后访问量最大的这个呢,就看这个条哪个长啊,我们这儿好像看到它没有某一个特别长的,哎,我们那天呢,咱们看到一个GSP篇。这个就这个长和短这个区别就特别明显,对吧。啊,这个倒还好哈。这个这个不过也好也是哈,就这个这三个下载量特别大啊,其他的这些呢,下载量就没有那么大了。
14:03
啊,就举这个例子吧,哎,因为这个版本高的呢,可能是因为它一般来说升级版本啊,都会修复以前的问题,或者增加一些新的功能,可是呢,修复以前的问题一般来说会让它更加的稳定,可是增加新的功能呢,反而会让它,呃,有可能不稳定啊,这个新的功能如果没有经过很多次的迭代的话,它可能不是那么特别的可靠。哎,所以说呢,最新版呢,未必就是最好的。啊,我们有句话叫做坐在第二排看戏啊,我们可能用的是一个比最新版还要呃低一点的这个版本啊,或者说是选择这种下载量大的,因为选择下载量大的呢,一旦出问题,我们可能上网查资料也比较容易去找到,哎,因为下载量大用的人多啊,可能你遇到的问题大概率呢,也有别的别人也会用到啊。哎,这样的话呢,当我们能够确定这个依赖的这个版本的话,那么下一步呢,我们这就能够去找到啊,找到它的这个呃,具体的依赖信息了啊,这时候这个依赖信息是不就能确定了吗。
15:05
哎,我们为了截图呢,咱们还是回到这儿哈,我们买搜狗驱动呢,我在这儿呢,说我要用这个5.1.37。我为啥,哎,我为啥要这么精确的,非得指定这么个版本呢?因为这个版本我测试过,我确认它是没问题的,哎,我确认它没问题哈。我来这儿截个图。为啥众多版本当中就选它呢?弱水三千,为啥非取这一瓢饮呢?哎,到哪了哈,在这哈。
16:06
哎,确定一个具体的版本啊,然后呢,下一步呢,就得到一个具体的依赖的信息。哎,就是这个点过来以后这儿呢,我们也来截一个图。跑后边去了,你看哈。啊,这样的话就确定了这个版本,然后呢,还有很关键的一步啊,你别觉得到这就没事了哈,然后再下来这个很重要的一点就是说,哎呃,在实际使用中。
17:10
检验。啊,这个。呃,检验。所有依赖信息是否都正常可用?什么意思呢?就是说你可能当时用完了以后啊,局部的测试了以后都没有问题,但是呢,随着你不断的增加新的引入新的依赖啊,你刚开始测试这个功能可能没问题,但是你引入新的一个部分,这个以后可能原来没问题的,现在也有问题了。哎,所以说整理这个一整套哈,这个一整套能够满足你项目所有功能需要的这一套,这个依赖信息,其实呢,你要真的从零开始做,真的他挺不容易的。啊,他真的这个挺不容易的,那么呃。所以这个时候呢,我们说啊,这个一旦整理好这样一套以后,作为一个公司也好,作为一个项目组也好,其实呢,最好呢,是把它给提取到这个某一个负工程当中,作为我们一个积累和沉淀。
18:11
啊,这个这个这里边儿呢,就谈到的就是给大家去分享,有这样的一个很重要的一个点哈,就是说我们个人发展上面也好,是我们学习个人成长积累是极其重要的。你如果说呢,呃,总是做一点什么东西就放弃了,做一点什么东西就放弃了啊,就说你也没有什么积累,每次呢,做同样的事还得要从零开始,那就像狗熊掰棒子一样啊,你到地头你也只有掰了一个棒子,可是如果你不断的有积累的话,你的人生呢,就会活成一根指数曲线。他就是这样啊,前边呢,可能哎这个跟别人一样,可能没有什么太明显的啊,可能但是到后边你前边积累的东西会帮助你去走以后的路啊,你这个时候你成长的速度,发展的速度也会越来越快啊,这个时候你可能投入的表面上看啊,或者说别人看你投入的不多啊,但是呢,你收获的特别大啊。
19:08
这不就是有一个莲花原理嘛,啊,你这个莲花池啊,有一半儿是在最后一页啊开满的。所以说呢,我们这些依赖信息也都是啊,就像前面我们给大家讲继承的时候一样,要把它这个一整套能用的就把它沉淀下来,甚至于说呢,有了新的技术啊,如果说差的不是很远的话,咱们也轻易的这个选好的依赖列表是不会去动的啊。选好的依赖列表是不会驱动的,呃,能用能用其实这个东西就会正常去用啊,除非你这个开一个新的项目,或者说有什么其他的原因吧,啊,我们可能用最新的这个技术啊,一般来说这个东西越底层的东西越不会经常会去变,越底层的东西越不经常变啊。
我来说两句