既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
整个制鞋大车间,有个机器负责把鞋底膜摆放好,传送带运到一个密闭小盒内,一个气垫放上,高温压印。鞋底成型了。
(图片截图自:如何做一双适足的鞋子 — 自动制鞋生产线 )
传送到下一个链条,皮革准备好机器自动缝合,基本误差很低。
差不多了,最后上一个自动的拉伸鞋子看看生产的这个鞋子质量如何。
这时候鞋子基本上好了,后期销售再配点鞋带就可以了。
工程化/项目组织 是什么鬼呢? 就是通过一条纽带把项目的代码,文档,测试,脚本等组织管理起来,目标是提供一个简单的使用,比如mvn clean deploy直接发布jar包。或者npm run start去启动一个前端项目。就只有这个好处吗?
在这里做Java的朋友,可以理解为一个流水线很方便的按个按钮就将代码生成jar包,接着可以自动发送jar包,也允许少量人工比如把jar包发给一些个人使用。
回到实际项目中,这里拿一个Java项目来说
在外面项目中,我们会把代码,放在一些文件夹(package)中。
然后也有一些启动脚本(不同配件)放在特定目录,测试代码放在不同的目录。
然后用maven/gradle,里面使用了不同的插件(plugin)去运行代码的编译,代码测试,编译产物拷贝移动到特定目录。
然后用另一些插件去组织代码。
下面是一个真实的Shoe项目的“车间视图”,下面再解释。
(IntelliJ开发工具视角,左边文件目录结构,中间为pom.xml, 右边为构建生命周期)
让我们来看这个工作车间的一个产品作业线(一个子模块leixuewei-classobject)。
谈谈这个制鞋项目,编译一个鞋子类,写一个测试类,打包代码为一个jar包。
类似摆放鞋子原料,如上图,我们开发需要把代码相关文件放置好。
如下图,整个项目把代码分为了两个大目录src/main(核心代码) 和src/test (测试)
- src/main/java 负责放置项目的核心代码
- src/main/resources 负责放置项目运行相关配置
- src/test/java 负责放置项目的测试代码
- src/test/resources 负责放置项目测试相关配置
做Java的同学经常会使用一个叫Maven的软件工具,用它来管理项目的代码,依赖,同时执行测试,跟打包。
就像上面一个真正的制鞋子的车间图一样,Maven就像整个流水线系统一样。制鞋车间分步骤的组装鞋子,Maven分步骤地执行各个阶段的插件编译源码(填充鞋底),执行测试(机械臂拉伸缝好的鞋子),打包代码(自动配件分类包装)。
具体工作如下:Maven这个工具根据pom.xml读取项目组织,依赖,插件plugin(类似制鞋车间内的一些辅助维修工具)。
- maven-compiler-plugin : 这个插件负责编译java代码成class文件
- maven-surefire-plugin : 这个插件负责执行测试代码
- maven-jar-plugin: 这个插件负责整理class和相关配置达成jar包
maven软件把这些插件绑定到了不同的软件构建生命周期,这就像一条龙车间流水线一样按照顺序执行,把源码转化为最终产品。
Maven 还能做的事情更多,这里只是展示了编译打包了一个jar,它还能把jar包上传到公共仓库给其他开发下载使用呢。
通过把整个项目使用Maven管理,以后需要打包项目,只需要运行mvn clean package就可以打包代码了。
这个命令就像,我们在制鞋车间,输入指令一样,车间根据指令执行对应的操作,保证了整个过程都是机械无人工参与,减少人为操作失误导致的质量问题。
小白听完,满脸高兴,这个过程还能自动化的,原来编程这么有意思的!(可不,软件世界只是现实世界的体现,对现实问题的抽象罢了!)
总结
好的项目工程化,可以把开发过程整规范管理。
分好了不同车间,不同成员开发不同的模块,大大减少互相干扰。
而且前端后端工程化技术棧不一样,大数据SparkJob项目也不一样,但是整个过程是很类似的,规范的把开发原材料(源码Java/Html/Js等等)转化为高质量的输出制品(jar包,zip包),也有构建好后直接把包分享和部署到测试环境运行的,甚至动态测试提升部署到线上的!
这里有一个点很重要,工程化需要适度原则,雷学委建议读者去参考对应语言的优秀开源项目的代码工程化方式!
学委见过把代码一股脑打包的,几个G,你就是上去改个标点符号也要打包半天,这不是好的工程化。
也看过把十几个类拆成6个项目,改一个类速度是快了,但是搞一个聚合功能,那你得跨组件修改代码,多个重新运行打包,得不偿失!
小白直白的问:何时需要工程化调整?
当你打包测试代码这些时间大大超过开发写代码的时间,那你就得想想工程化是不是没做好!!!
另外,建议长期关注学习这个 =>雷学委趣味编程故事汇编。
好了小白,学委这次分享就到这里,你回去告诉奶奶要多多注意身体,每天掌握一点点知识,劳逸结合更好呢!
持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
欢迎关注,还有尽情点赞收藏!
参考链接
本文的工程化展示项目
Maven 一款Java项目组织利器
如何做一双适足的鞋子 — 自动制鞋生产线
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新