不少初学者朋友在学习Java过程中,会对着视频敲Java项目,其中遇到的BUG还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂

这些朋友应该怎样才能掌握一个项目所用的知识点呢?至少不至于过了一头半个月就想不起来这个项目是什么东西呢?

1 刚开始运行项目的时候,你别根据视频或现有代码敲,而是得先运行通人家的代码。
自己敲代码的时候,会拘泥于API或模块的细节,多敲代码后反而会一头雾水。而且,你敲代码的时候,很有可能因为敲错一个地方而导致整个系统没法运行,而且这种错误很难排查,往往你用了1天敲完整个系统,跑不通,用了3天时间发现了10个敲错了地方,改了还是跑不通,再用了5天,把所有问题都改了,才跑通,这样就浪费至少1周时间了。
 
2 找项目,你得找一定能跑通的,比如star比较多的github项目,或者销量比较好的视频教程,或者干脆买书,书上的代码经过出版社加持,大多能跑通。否则你学了半天,找了一个跑不通的项目,再用半个月去调试,这样浪费的时间更多了。
 
3 找到可以跑通的项目后,根据说明,优先搭建环境,比如选对jdk版本,搭建好mysql数据库环境,创建好MySQL的表,搭建好IDEA集成开发环境,必要的话再搭建好分布式组件,再通过pom.xml文件引入依赖包。环境好环境,再按提示跑系统,可以这样说,系统跑通了,这个项目你就成功一半了。
 
4 后面很关键,别先理解源码的含义,先结合一个业务流程,跑通增删改查的流程。请注意,别多跑业务流程,因为大多数业务的流程很相似,跑通一个就行了。
 
从界面上跑通一个流程后,你再去看代码,先看从前端到后端再到数据库的流程,看下请求经过了哪些类,这些类是怎么处理了,最后是怎么落实到数据库里的。
 
比如现在大多数Java项目,都是spring boot,从控制器到业务逻辑类再到repo层,外带Spring Cloud Alibaba组件,或者nginx,netty,redis等组件。当你跑通一个流程后,你就知道请求怎么被控制器方法处理,控制器方法怎么做参数验证,控制器方法如何调用业务方法,业务方法怎么通过JPA(或其它ORM)访问数据库。总之先理解流程,再理解sprign cloud alibaba组件等枝干。
 
5 然后你再依样画葫芦,多跑几个业务流程,再结合代码理解整体流程,这时,你可以关注些细节,缺啥补啥。比如你不理解@Service注解,那你就去查,你不理解JPA连接数据库的业务模型类或连接数据库的Repo类的含义,那你也查,这样你就通过运行效果,能对应到具体的代码上,然后能通过看代码,理解相关语法细节。
 
请注意,一定是先流程再细节,先框架再语法。当你理解流程的时候,一定别拘泥语法,遇到不懂的,先整体上理解,比如先理解,通过业务模型类能做JPA映射,在基础上理解流程,等你理解好流程以后,再去通过业务模型类里面的@Table和@Entity等注解,理解做映射的细节步骤。
 
6 当你看明白流程和搞清楚流程中的细节语法以后,再去看衍生的组件。比如某个项目的重点是讲Spring Boot整合spring cloud alibaba微服务,那么你先通过看其它资料,知道Nacos,Sentinel等组件是干嘛的,再到项目中找到和Nacos和Sentinel的相关配置,比如Nacos体现在配置文件里,Sentinel体现在xx类和xx注解中。
 
而且,在项目中,一定是会把Nacos和Sentinel等组件体现到业务中,你可以通过业务,很好地进一步理解Nacos和sentinel的用法和api。
用这种方法,你能很快理解项目的框架和其中的组件,这种方法的操作要点是先搭环境再运行通再结合业务看,看明白以后,你想怎么记就怎么记,用记事本什么都行
 
但我可以这样说,由于这是学习项目,不是你参与开发过的商业项目,更不是公司用来挣钱的商业项目。所以你只是从人家的项目里理解技能,这样对你提升技能的帮助,也是有限的。你产生似懂非懂的感觉,或者过了一两个月后忘记项目细节,这很正常,也无法避免,更无法缓解和改善。
 
但是后面你要继续做的,绝不是自己动手从零开始实现这个项目,这也是很多初学者的误区,解释下原因。
1 以初学者的能力,从零开始敲一个项目,难度太大,这样做的结果大多是不了了之。
2 如果从零开始敲项目有效果,那么排查万难硬着头皮敲一个,也不是不可以,但公司里不是这样开发项目的,公司里开发项目的方式一般是根据现有代码改,而不是从零开始敲,所以自己敲一个项目,哪怕用了三个月半年时间敲出来,其实大概率是无用功。
3 有比从零开始敲项目更好的学习方法,所以从零敲项目没必要。
 
这里说个观点,通过学习项目学习,哪怕这个项目包含的技术要点再多,但充其量只是拾人牙慧。可以靠这种方式入门,但为了高效提升,或者提升到更高的程度,一定得参与商业项目开发,即直接到公司里去做项目。
 
所以跑通一个Java项目后,如果你感觉把握不大,可以再去找个跑一下,但项目数量别操作3个。跑通后,赶紧去找实习细节。
 
1 如果是在校生,你直接问你们老师,或者是硕导博导,他们一般有外面公司的项目。你就和他们说,我想学习,能不能晚上周末或假期,到
 
你们教研室来学做项目,不收钱,只要让我参与就行。
这样老师有了免费劳力,一般都肯,然后你进项目组以后,争取自己动手开发一个项目,说动手开发一个项目也不准确,应该是按现有项目改出一个功能,这样比你运行通5个项目都强。或者可以这样说,你哪怕运行通,或者所谓吃透再多的项目,都比不上自己在商业项目中实现一个功能模块。
 
2 如果你大三大四,快实习了,你就把你跑通的项目写到简历中,然后出去找实习公司,当然中间是要背面试题。找实习公司也先别看钱,优先获取实践机会,这样等你毕业后,因为你的技能是通过真实项目掌握的,你一定远比通过学习项目的其它人强。
 
3 如果你已经工作,想要转行到Java开发,那也一样,背面试题,简历上写你运行通的Java项目,优先找个能提供实践的机会,必要的话,你找个培训班,用钱买人家辅导服务,用钱买人家推荐工作的服务。
 
最后做个总结。
1 如果大家只是运行人家的项目学习,通过人家的java项目学习,哪怕你把人家项目中的每个细节都掌握,面试找工作时,顶多得到的评价是“熟悉xx框架,熟悉xx语法”,但很难证明相关技能的项目开发经验,这样找工作得碰运气。不过这块不能省,很多零基础的学员都这样入门的。
2 这里多说一句,如果你能结合你学习项目的需求,说明xx技术的用法,那倒有可能让面试官感觉你有xx技术的项目实践经验,这样哪怕你之前没做过真实项目,只要你结合项目说的技术到位,再背些面试题,还真有可能找到工作。
3 一定注意,你运行人家的项目,目的是为了找java工作,所以你在通过人家的项目学习时,不仅要做到理解其中的含义,更要把其中学到的技术用到找工作(或找更高级的工作)上,所以通过运行人家代码学习时,一定别拘泥于只搞明白人家项目技术。
 

这是我的公众号,其中包含了大量面试文章,同时我自己出了多本Python和Java方面的书籍,会定期在公众号里发书的电子版。请大家关注下我的公众号,谢谢了。

初学者如何吃透一个Java项目的更多相关文章

  1. 在Eclipse中,如何把一个java项目变成web项目

    经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目.解决步骤:1.进入项目目录,可看到.project文件,打开.2.找到<natures>... ...

  2. java学习笔记(一):开始第一个java项目

    这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...

  3. 【系列教程1】Gradle入门系列二:第一个Java项目

    这篇教程的主要内容是讲解如何用Gradle编译和打包一个简单的Java项目. 该Java项目只有一个需求:我们的构建脚本必须创建一个可执行的Jar文件,换句话说,我们必须能够使用命令java -jar ...

  4. 作为Java新手,如何才能快速的看透一个Java项目?

    前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...

  5. [IntelliJ IDEA入门] 新建一个Java项目

    新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...

  6. Gradle入门(3):构建第一个Java项目

    Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...

  7. JetBrains Fleet初体验,如何运行一个java项目

    序言 各位好啊,我是会编程的蜗牛,JetBrains 日前宣布其打造的下一代 IDE Fleet 正式推出公共预览版,现已开放下载.作为java开发者,对于JetBrains开发的全家桶可以说是印象深 ...

  8. 如何创建一个Java项目

    目录 新建项目 项目信息配置 创建Java类 编译和运行 新建项目 首先双击eclipse进入到eclipse页面. 菜单"File"下的"New"里" ...

  9. 一个Java项目的学习

    1. java命令行的启动 首先是gradle build 其次是:java -Dabc.appid=1234 -classpath "a.jar:b.jar"  com.ctri ...

随机推荐

  1. C/C++编程笔记:浪漫流星雨表白装b程序

    作为一个未来可能会成为一个专业程序员的小伙们,不知道你们现在学到哪里了,学了点东西之后有没有想在你女朋友面前装个大大的b呢,今天小编就给你一个机会来研究一下下边的代码吧,保证大写的N,当然大佬是排除在 ...

  2. numpy数组的计算

    1.数组的形状 查看数组的形状: import numpy as np a = np.array([[1, 2, 3, 4, 5], [5, 6, 7, 8, 9]]) print(a.shape) ...

  3. 修炼Servlet

    修炼Servlet 一.Servlet简单认识 1.Servlet是什么 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的 ...

  4. 洛谷 P5785 [SDOI2012] 任务安排

    链接: P5785 弱化版:P2365 题意: 有 \(n\) 个任务待完成,每个任务有一个完成时间 \(t_i\) 和费用系数 \(f_i\),相邻的任务可以被分成一批.从零时刻开始这些任务会被机器 ...

  5. 这些年我@yangbodong22011参与的开源

    2020年第一天,水一篇博客,对新年起码的尊重.这里记录下我参与的开源项目情况. Talk is cheap. Show me the code Linus Torvalds Jedis PR:htt ...

  6. k8s入坑之路(13)服务迁移(定时任务 微服务 传统服务)

    定时任务迁移kubernetes 服务迁移步骤 1.安装好java 2.安装好maven 项目打包 mvn package 测试传参运行 java -cp cronjob-demo-1.0-SNAPS ...

  7. 【java+selenium3】自动化处理文件上传 (十三)

    一.文件上传 文件上传是自动化中棘手的部分,目前selenium并没有提供上传的实现api,所以知道借助外力来完成,如AutoIt.sikuli. AutoIt , 这是一个使用类似BASIC脚本语言 ...

  8. Linux usb 2. 协议分析

    文章目录 0. 背景 1. USB 协议传输格式 1.1 Packet 1.1.1 Token Packet 1.1.2 Data Packet 1.1.3 Handshake Packet 1.1. ...

  9. C#简单配置类及数据绑定

    目录 简介 配置基类 派生配置类 数据绑定 Winform中的数据绑定 WPF下的数据绑定 附件 简介 本文实现一个简单的配置类,原理比较简单,适用于一些小型项目.主要实现以下功能: 保存配置到jso ...

  10. 你会用ES6,那倒是用啊!

    leader的吐槽大会(在代码评审中发现很多地方还是采用ES5的写法,也不是说用ES5写法不行,会有BUG,只是造成代码量增多,可读性变差而已.) ps:ES5之后的JS语法统称ES6!!! 一.关于 ...