00:00
那么我们就不得不来说一说目前的技术呀,他所在开发过程中呢,所存在的问题,首先第一个问题,一个项目就是一个工程,我们先不解释,我们先罗列出来项目中需要的架包,哎,必须手动复制粘贴到什么呀,外部的Li目录下,第三个,然后这个价包呢,需要别人替我们准备好,嗯或嗯,到这个官网下载第四个一个加。
01:00
打包依赖的其他价包需要自己手动加入到项目中,主要我们现在能够感觉到的呢,应该就是这几个,我看看我看有没有遗漏哈。究竟为什么?获取三方角包,诶主要是这四个方面,当然其他的也有,但是那些呢,我们就不容易有切身的体会了,我们先从这四个方面来说,一个项目呢,就是一个工程,大家想如果我们现在不学这个ma,不学新的东西的话,我们使用这些技术来做一个项目的话,我们首先要做的事呢,就是先去创建一个动态的外部工程,然后所有的功能呢,都在这一个工程里面,都在这一个工程里面,那么这个当你项目如果是小的时候呢,还可以啊,那么当你的项目特别大以后,就会存在这个问题了啊。举一个我们可以比较容易理解的问题,现在呢,想必很多同学呢,都住的是这个附近的公寓是吧,一般来说应该是两个人一间啊,那么这个时候的话,就只有你们两个人住,应该还是没有什么太大问题的,但是呢,如果其中有一个哥们儿呢,他结婚了是吧,然后呢,不到三个月。
02:30
生了小孩这个效率效率很高啊,效率很高,那然后呢,生了个是三胞胎,然后国家又允许生二胎,我理解允许生二胎就是允许生两次,第二次生了四胞胎啊完了这个时候你想这这么多小孩拉扯不过来呀,这个他就得把这个,呃,家里边的爷爷奶奶姥姥姥爷大爷大大爷大妈,这个姨姨舅舅都得请来帮帮忙,这个去拉扯这个孩子啊,那你想这个时候这个这个公寓里边得住多少人,然后你别忘了还有你室友啊,这么大这么一大家子人是吧,挤在这个一个20多平米的一个小房间里边,这个是非常拥挤的,哎,所以所以这个时候呢,哎,我们就就这个住不开了是吧?哎,这是我们生活中的一个例子,那么实际这个开发过程中呢,如果一个项目非常庞大。
03:30
就不适合继续使用这个package来这个划分模块。什么叫不适合使用package来划分模块呢?我们随便建一个啊,一会我们给他这个删了。就是说哈,比如说我们去想建一个项目,我们以前呢,划分这个模块哈,主要就是靠这个package,比如说我们这有这个service啊,这个,然后我们这儿有这个点do啊,比如说我们有这个handler等等吧,这要建的东西很多哈,那就是用这个单纯就是完全靠这个package来划分,那么你想哈,这一个项目要是几十个模块呢,每一个模块里边都有do handler service这么一套,那么do service这样的东西就得有这个几十套啊,那你在一个项目里边,这个就会显得非常的这个臃肿,特别庞大,不好管理。然后呢,我们Java的项目呢,大家要有这样的概念哈,就是说它大的项目是非常多的,或者说他嗯,平平常常就是一个很大的项目啊,几十上百人,乃至于有几百人的团队干好几年啊这样的事。
04:50
在Java里边是司空见惯的,所以你想这么大的这个项目,你都是在挤在一个工程里边去开发,这个真的是非常的费劲,不方便,我们希望是怎么样呢?每一个拈呀,是它自己是自己的一个工程,这一个项目呢,划分好多个拈呀,它就是好多个工程,这样的话呢,我们就利于分工,诶不同的项目组去在不同的这个工程里边呢,去进行这个各自的这个开发,这样的话呢,我们就能够,哎这个就舒服多了啊,这样就舒服多了,不适合使用模块package来划分模块,哎,最好最好是每一个模块对应一个工程,哎,利于这个分工协作,这是一个,这是一个好事,但是呢,我们用现有的这个基础哈,我们还没办法呢,把一个项目拆分成多个工程。
05:50
因为这多个工程,多个模块之间呢,是要互相这个访问的啊,不能是这个彻底独立的,互相之间谁也访问不了,谁都不行,所以这个时候呢,我们妹妹就能够解决这样一个问题,一个项目呢,可以借助于ma哈,拆分成多个工程,借助于我们这个ma,就可以将一个项目拆分成多个工程。
06:17
这是第一个问题啊,这个可以说呢,这是一个刚性的需求啊,基本上我们列出来的呢,都是刚性的需求,知道啥叫刚性的需求吧,就没有不行是就像你吃饭睡觉是吧,或者说其实不是说这些,现在手机对于人来说已经是这个刚性的需求了,你不信你这个,你你这个三天你不用手机,他嗯,他不是说你这个什么,你玩游戏啊,你是聊天什么有瘾,他不是这个,他会真的会耽误你的事儿,他真的会耽误事儿啊,你比如说咱们班里在微信群里边通知一些什么事儿,那我们所有人都能够通知到,就你这两天没有手机,你就得不到这个信儿是吧?诶比如说这个咱那个班主任老师说明天下午来了以后,几点来了以后每人发一个媳妇,你没有收到这个消息,你就错过了这个千载难逢的好机会了,是吧,所以说这个时候我们现在现代人呢,对手。
07:18
也是深度依赖的,深度依赖的对吧,所以说这个这这像这样的东西就属于刚性需求,嗯,好吧,我们下边看下一个下一个需求啊,我们现在呢,说项目里边需要用价班的话呢,都是自己给他这个复制粘贴过来,放在这个下边,这就会带来一个问题啊,这样会带来一个问题,同样的架包,这当然这我们指的是这个架包的这个文件,呃,重复出现在不同的项目工程中,重复的,它重复的出现,那么就一方面呢,浪费存储这个空间,嗯,另外也让我们这个。
08:18
个工程呢,比较臃肿,就不轻巧啊,我们都喜欢轻巧的是吧,那么好,那么我们说哈,这个借助于妹,我们可以呢将嗯这个价包仅仅保存,保存在这个仓库中,嗯,有需要使用的这个工程。引用这个文件即可,并不需要真的把这个价包呢复制过来,就是你不用复制这个价包本身了,我们只是去引用一下就行了,引用一下就行了。
09:11
我们只是引用一下就行了,就这个我们举一个好理解的例子,就是大家看我们这个Java的对象啊,假设这是占空间,这是堆空间,我们在这里边儿呢,有一个对象。这个对象呢,其实你可以有很多个变量的去引用它,你可以有很多个变量去引用它,哎,比如说这是一个变量A,这是一个B,有点丑啊。诶,我们这儿呢,都只是去引用它就行。那么这个对象呢,在堆空间当中呢,其实只有一份,但是呢,可以有很多个变量呢去引用它,这时候你即使有很多个变量引用它这个,它这个占地方呢,这一块呢,它也只有一份,它就能够节约这个内存的空间啊,其实就是这么一个道理,类似于类似于这是这样一个道理,所以说这个呢,也对我们来说也非常好啊,我们有了这个以后呢,整个这个项目,这个项目呢,整个它本身的体积就能够更小一些啊,它不用不用包含那么多这个假包了,至于说他怎么引用啊,我们后边这个很快就能够看到。
10:31
我们给大家先看一眼吧,他引用,呃。引用这个价包呢,就是用这样一这样一组形式的这个声明就可以了,你看就是就是一小段文本,这一小段文本哈,怎么说也得比那比你那个价包呢,要小得多啊,从体积上来说要小得多,然后啊,再看下面第三个,呃,我们都是之前呢,我们好像没有考虑过这个问题,就是价包是从哪来的?呃,我们学这个harmlet的时候,老师给你把资料发下来了,不光有课件,还有这个假包,学spring的时候,老师给你发课件还要给你发假包,诶这个时候我们就一直就认为那假包哪来的呢?就老师给我们发的呀,就像那个教书先生问那个地主家的儿子说粮食是从哪来的呀,地主家的儿子说是,诶,是从粮库里搬出来的呀,他爹就这个老地主,就啪扇他一个嘴巴,说是败家儿子,你怎么这么没出息呢?什么叫从粮库里搬出来的粮食,明明是从地里收租子收上来的。
11:38
对吧?啊,你没有经历过这样的这样的过程啊,所以说你可能你就很自然的认为这假班就是老师发给你的,那么大家要想将来有一天呢,你离开老师了是吧?你离开这个你身边没有老师了,那你到了你自己需要你自己去独挡一面的时候啊,你可能会需要用到一些新的技术,那你从哪去找这个假包呢?只能问老师是吧,老师微信发给我,那你那你何必不是,那你就别那啥了,那你找工作的时候,你就带着老师去是吧,你面试的时候,你就跟面试官说,这个你不用问我技术问题,我我有经纪人,有经纪人是吧,你直接聘我去当你的经纪人好吧,你看你又不愿意了是吧,所以说呢,所以说我得交给你啊,所以说我得交给你,所以说我得交给你说这个怎么没有加包,你自己怎么去哪下载加包呢。
12:39
要没有ma这样的工具呢,我们得去最经典最正统的方法呢,就是到官网上就去下载,但是这个官网就是不同技术的官网,提供这个架包下载的形式是五花八门的,呃,就是网站它页面的结构是不一样的,你也这个你得去找半天,可能你才能够找到那个当录的,你找到当录的那个页面呢,可能还不是下载那个假包,那个页面也可能他提供的是源码啊,或者说是提提供其他形式,你点那个登录的什么时么,进去以后呢,你发现不是你要找的那个,就是一个页面的结构的是这个不一样的,然后还有一个呢,我们不好意思写在这个明面上的,这个问题呢,就是我们英语不太好,这是一个,这是一个客观存在的一个障碍,虽然说这个不太好意思承认吧,但是确实是这样的,那英语不好很多,你看这个网站那很多超链接摆在那啊,也可能有一个超链接,他就是去下载去加班的,我们不认识这个。
13:39
单词他就与你擦肩而过了,这也是一个问题,还有呢,更有甚者哈说有些嗯技术的官网就是通过嗯ma或这个SV等专门的工具来提供下载的。
14:02
你比如说这个当然s suvn的话,我们也是后边讲完项目就讲啊,讲项目讲它是一个版本控制工具,跟ViVi呢还不太一样,诶他们就是通过这样的工具呢,来给你提供这个下载的,你比如说我们后边要学的这个买威提,嗯,这这个东西呢,它就是人家这官网,就是人家那个官方文档,这个手册里边,人家就是给你提供了一个ma的一个依赖的信息啊,就是我们这儿看到的就是这样一个信息,然后呢,你就得按照这个信息去下,你要是不会没问的话,你就下载不下来,哎,所以说呢,就是有这样的问题,那么最痛苦的是什么呢?如果说你没有这样的没的支持。然后你从这个官网上也下载不下来,那么就时候这时候我们可能哈,我们最直观的感觉,我们要去求助于百度,我们要去求助于度娘是吧,度娘其实是百度的HR的那个那个美女是吧?啊,然后然后就这么叫了以后呢,这个新浪就不知道他的HR该怎么该叫什么娘啊题外话,那么我们到百度上去搜这个价包,百度上去搜这个价包呢,那因为我们知道百度呢,是全球最大的中文搜索引擎,那么它通常呢,它就给你显示的结果是中文的网站,这时候你就会看到这个价包在哪有呢?什么CSDN啊,51CTO啊,Ipi啊等等这样的网站,你去下完了,你就发现呢,往往有些地方啊,你去上上去找这个,找到这个价包以后呢,人家是要积分的,然后你还得去想办法去赚积分是吧,这积分有时候。
15:48
说你要是不花钱的话,好像还不是一下子能能弄上的啊,好吧,你翻越了千山万水啊,就是翻越了崇山峻岭,好不容易把积分凑够了,把这价包下下来了,完了你用他跟你要的那个还不一样,然后所以说这个就是啊,如果是以这个非正规的方式下载的架包,那么其中的内容很可能是很可能也是不正规的,或者说不规范的,以不规范的方式啊,这个来路不正,那么这里边的这个东西呢,很可能他就不正,哎,可能现在我们只是说一说啊,大家当做一个笑话,一听一过就完了,这是我们说哈,这个悲剧呢,发生在别人身上就是一个故事。
16:48
他没发生在自己身上,发生在自己身上的话,那就有,那就有切呃,切身的感受啊,那真是刻骨铭心,因为你想哈,你这个翻遍了互联网,你找了好几个小时,找到,好不容易找到这个加班了呢,结果不对,然后你强忍着内心中的这个悲痛,你再找是吧,再找完了还是不对,哎,完了这个时候呢,他这个就会让人就非常的这个崩溃啊,你这个时候的话,你如果能够感觉到呢,有这个命的话,你会觉得他真的是啊,骑着喷火的恐龙来拯救我们的王子,小的时候曾经听听到过一个美丽的传说,就是将来呢,一定会有一位美丽的公主骑着喷火的恐龙来拯救我是吧,但是后来呢,他只看到了他的坐骑龙,然后我们说这个,呃,借助于。
17:48
借助域名,我们可以以一种规范的方式去下载架包,呃,因为什么呢?因为所有知名框架或第三方工具的价报已经全部已经这个按照统一的规范。
18:17
存放在了ma稳的中央仓库中,哎,人家是按照统一的规范去管理的,那么我们当然就可以按照统一的关规范的去下载,这个时候呢,他来路是正的,那么以规范的方式下载的加包,那么内容呢,当然就也是这个规范的,也是可靠的啊,这个简直是一个非常非常大的一个福音,所以说为什么我们说这个命挺重要的呢,我们一定要给大家讲呢,这个将来到企业里边呢,基本上是很多很多公司呢都在用啊,甚至说你要用第三方技术,很多情况下都得是以微问的形式去下载。
19:05
在这儿我们再给大家说一个题外话啊,题外话就是tips什么意思呢?就是顺便说一下,顺顺带提一下啊,就是这个统一的规范,不仅是对我们这个it开发领域非常重要,对于整个人类社会都是非常重要的,我们先举一个小的例子,再举一个大的例子,一个小的例子就是USB接口啊,这个大家这个不知道有没有同学,有多少同学体验过那个圆头的键盘和鼠标,哎,这个时候的话就是你那个电脑上你必须有这样的接口才行啊,呃,然后呢,你这个两个还你还不能插错了啊,你得分辨,有一个是蓝的,有一个是绿的,这是一个,当然了,这个一般来说这个电脑上主机上面都会有这个键盘鼠标的接口,这个倒。
20:06
这没问题,然后呢,还有呢,不知道有没有同学用过那种很大型的针式打印机,哒哒哒哒哒哒那种针式打印机,那个针式打印机呢,就是呃,就是过去那个公司里边打那个拿很宽的纸去打那个工资条时候用用那样的东西啊,特别的笨重,针式打印机有很多不同的这个型号,那么这个不同的型号,不同厂家的产品呢,他往电脑上接的时候,那个接头也不一样啊,有的是就是真那个真的那个都是它都是真实的那个接头嘛,它那个那个真的那个排列和那个数量都不一样,那么就要求呢,他对这个要求呢,他对呃,电脑主板的生产的厂商啊,你得去这个怎么样,你去尽量的去适配,提供更多的接口,再一个呢,就是你对这个生产打印机的这个这个厂商,你得去尽量也得去想你这个用用一个什么样的一个接口,你对这个用户来说呢,他也得知道啊,你这个头到底是怎么样才能够接上去,然后你买回来这个打印机呢,如果你电脑上没有这个接口,你就用不了。
21:06
啊诶,那么这个时候我们就说哈,那那个时候就是因为没有一个统一的一个接口啊,没有这么样一个统一的接口,但是后来呢,有了USB以后,它就是一个可以说是一个电脑机连接这个外部设备的一个统一的一个规范,你现在别说什么键盘,打印机,鼠标了,这些有现在USB接口上能够接的设备简直是五花八门是吧,我们有USB的台灯,有USB的小电风扇,好像据说还有USB的鱼缸,就是往那往往里边去通那个空气就是就是气,就是也也也是通电嘛,所以说这个USB接口呢,你可以可以给你供电啊,也可以去给你去传输这个数据,它的规范和都是这个统一的,诶这时候主板的厂商也轻松了,生产外设的厂商也轻松了,我们用户也轻松也轻松了啊,这是非常非常好的一个,呃,这样一个东西啊,所以说这它的这个意义是非常非常重要的啊,还有就是说,如果你拆过这个机箱,你看主板的话,你知道它里边。
22:06
PCI插槽它是不是也是主板里边扩展这个外部的这个卡,声卡呀,显卡呀,这些都可以插在PCI插槽上面啊,它就是一个统一的一个规范啊,那很多这个,嗯,外设的这种卡,你都可以用这样的方式来这个生产,那么为什么说对人类社会都非常这个重要的,当然我们想必都听说过一个传说哈,说很早很早以前人类呢,想修一个梯子,想通到这个天堂上,这个上帝呢,为了避免这个事情的发生是吧,人类不允许你,怎么能让你随随便便就让你这个上天堂呢?是吧,他就想要破坏这件事情,就是把全世界的各个地方的人呢,让他们这个语言不一样啊,这个时候他们交流不了这个事儿,他就干不了了,这只是一个传说是吧,但是呢,我们可以举一个非常非常现实的例子,大家知道秦始皇这个人,他是啊,他想想到他,我们首先想到的是一个暴君啊,焚书坑儒,这样呢,他这个罪行是完全当然是。
23:06
不能抹杀啊,这绝对,哎,这个是没有什么可辩解的是吧,你要现在说的话,这个叫反人类罪啊,现在全人类就是就是最最最大最严重的一个罪行,你像那个西,就是纳粹的一些战犯也都是这个反人类罪啊,秦始皇这个也可以说是反人类罪,但是呢,但是呢,你也不能够同同样也不能否认啊,他统一六国以后,也有有一些这个功绩啊,车同轨,书同门,把所有各各个六国的所有的道路宽度,这个就是修成这个一样的,那么车呢,这个就能够这个车的两个轱轱辘之间的这个轴距就都能够一样,方便于这个交通,书同文,各个各个六国之间的这个文字统一成这个统一的一种文字,各个国家以前字体不一样,统一了度量衡啊,统一了这个货币,那你这样的这个中国这个大一统啊,从那个时候就建立起来,就有这个有这个概念了。
24:06
啊,也也是这方面也是绝对是有利于这个经济发展的,那中国为什么现在要加入WTO组织的,那就是因为就是世界贸易组织,各个国家做贸易都是按照这个统一的这个规范,统一的这个标准,所以所以这样的东西呢,希望大家以后呢,多多的去,多多的多多的去体会啊,你看你自己能不能够这个从这个呃,生活中呢,发现很多统一的规范,并且利用这些统一的规范呢,让你自己呢,呃,有很大的这个收益啊,这其实是也可以是各个方面的,然后下边我们说这个第四个呢,一个价包依赖的其他价包需要自己手动加入到项目中,这个我们举这么一个例子,大家知道我们做文件的上传,不是文件的上传,我们需要用到一个file阿lo的这个组件。它呢,这个组件的架包要。
25:06
我想这个正常的工作,他必须呢,同时去导入我们这个IO这个组件,这个咱们就不写那个加班的名字了哈,它就是commons file uplo的,它依赖于它,我们可以把这句话拿过来。诶,你没有这个commons IO呢,他就呃这个file upload就不能够正常工作,就不能够正常的工作,所以说你必须呢,得知道要想他正常工作,必须去必须去找他,那么这个时候呢,只有这一组我们就哎我们去学一下这个信息,我们这个觉得不是什么负担。但是大家想一想,我们这个用框架的时候,三个框架,四个框架,几个框架整合在一起的时候,架架包是几十个架包,这些价包之间有没有这样的依赖关系呢?我们以前没有从这方面去强调过,其实它有依赖关系在这儿呢,这是一个spring的1SPRING加包的一个局部的依赖关系哈,我们来看一看spring扣,它是依赖这个common slogan的spring context依赖于up呢,又依赖于up alliance springs和spring。
26:26
哎,然后这个context呢,它同时也依赖这个beans扣和expression,然后呢,Expression又依赖于这个扣,然后呢,GDBC呢,依赖这个ans Co TX和A,哎这往下呢,还有这个很多,这个只是一个局部的啊spring加包的依赖的关系,那你再考虑,如果我们这里边再引入哈met,我们再引入这个,当然这spring Mac的话是就是spring的m Mac和web的那个包,这时候他们之间的这个依赖关系呢,会非常的复杂,这就要求我们呢,如果你不用这样的工具的话,就要求我们你自己得知道,诶这个扣呢,依赖的是他,这个context依赖的是他,然后你自己呢,得知道有这样的关系,你得负责人为的人工的去负责把这些需要的价包都导进来,避免有这个遗漏,那你这时候你如果这里边有任何遗漏的话,他就会给你报这个类,找不到class not,放exception。
27:26
哎,这个当然是一个非常非常这个复杂啊,非常工作量很大的一个事儿,可是可能有同学还是想啊,哎,我之前我们用框架用了这么长时间了,也没有注意过,也没有特别就是说,呃,说过这样的问题啊,啊就是没有从这方面去考虑过,那是因为还是那句话,你的价包都是老师给你准备好了的,需要导哪个老师都告诉你了,那将来你用一个新的技术是吧,诶你得到了它的核心的价包,那么这个核心的价包还会不会依赖别的呢?
28:00
啊,那么这个时候的话,你要自己去学的话,这个会极大的增加我们开发人员的学习成本,如果嗯,所有价包之间的依赖关系都需要程序员自己非常清楚的了解,那么就会这个极大的增加学习成本,以前呢,有这么一个工作哈,叫做这个电话接线员,很古老很古老的一个工作了,应该都是在这个BB机出现之前啊,好像就是你打电话,你告诉他,你要是你要是去去去呼谁或或或去往哪打,大概是他负责去把这个线呢,给你插到哪个口上,完了呢,这个时候就是就是那个时候呢,这个电话接线员呢,是需要去备很多很多这个电话号码的啊所。
29:00
就说你想吧,那个工作量是这个也是非常这个大的啊,他们得去总结很多很多这方面的技巧,怎么样去备这些电话吧,到了后来呢,有了这个智能的,这个叫啥来着,程控电话好像叫那个时候还是座机的时代,有了是程控电话以后,就不用他们去备号了,都是程序就是这个自动的啊,啊就说这个,所以说这个就特别像啊,特别像呃,你没有ma文这样的工具的时候,那就得是你自己去知道它到底这个价包之间是怎么样一个依赖的关系,它到底谁需要谁,但是呢,你有了这个mini以后,就相当于换成了这个高科技的成成功电话就不用你自己去记了,诶这个mini它会自己这个自动的把这个被依赖的价包给我们导入进来。诶,会自动将被依赖的假包导入进来,哎,所以说这个哈,也是非常重要的,有很多事儿呢,已经越来越不可能有我们这个人来做了啊,有很多事儿是嗯,越来越很多,以后啊,会越来越多的工作会交给这个机器来做。
30:09
大家知道这个人工智能现在是这个非常呃非常明显的一个趋势,那么人工智能能够做的事是哪些呢?他特别擅长做的事儿,就是机器擅长做的事,重复性的,然后呢,是可以这个由逻辑判断呢来这个推理出结果的,类似于这样的工作就是由这个程就是可以以后越来越多的就会交给程序来做,那么以后呢,这个人工智能它发展起来以后,对哪一对什么样的人有冲击呢?就是在公司里边做那些比较事务性的重复性的工作的人,就是比如说是一些基本的这个打字员啦,这个比如说是一些这个帮助,比如说这个律师事务所里边帮助这个大律师是去整理这个一些这个案例这个材料的啊这个时候的话,他对于人的这个智慧,人的感性的这个思维依赖的越少,就越适合有这个机器来做啊,所以说这个我们一定要去把握时代的脉搏是吧,不要被这个技术的发展把我们给淘汰掉,我们要始终。
31:10
保证自己站在时代发展的前列线上,对吧。
我来说两句