不少初学者朋友在学习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. STM32单片机的学习方法(方法大体适用所有开发版入门)

    1,一款实用的开发板. 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的.但开发板不宜多,多了的话连自己都不知道该学哪个 ...

  2. 零基础小白要如何跟好的学习嵌入式Linux

    作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学 ...

  3. 『学了就忘』Linux基础 — 14、Linux系统的设备文件名和挂载

    目录 1.设备文件名 (1)为什么需要设备文件名 (2)硬件设备文件名命名规则 2.挂载点 3.挂载 (1)什么是挂载 (2)挂载前的分区要求 (3)小结(重点) 1.设备文件名 (1)为什么需要设备 ...

  4. nvidia-msi命令解读

    nvidia-msi 或者 watch -n 1 nvidia-smi 打印出表格中: 第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转 ...

  5. JAVA笔记15__TCP服务端、客户端程序 / ECHO程序 /

    /** * TCP:传输控制协议,采用三方握手的方式,保证准确的连接操作. * UDP:数据报协议,发送数据报,例如:手机短信或者是QQ消息. */ /** * TCP服务器端程序 */ public ...

  6. linux 内核源代码情景分析——越界访问

    页式存储管理机制通过页面目录和页面表将每个线性地址转换成物理地址,当遇到下面几种情况就会使CPU产生一次缺页中断,从而执行预定的页面异常处理程序: ① 相应的页面目录或页表项为空,也就是该线性地址与物 ...

  7. Spring源码学习之容器的基本实现(一)

    前言 最近学习了<<Spring源码深度解析>>受益匪浅,本博客是对学习内容的一个总结.分享,方便日后自己复习或与一同学习的小伙伴一起探讨之用. 建议与源码配合使用,效果更嘉, ...

  8. Redis源码分析(intset)

    源码版本:4.0.1 源码位置: intset.h:数据结构的定义 intset.c:创建.增删等操作实现 1. 整数集合简介 intset是Redis内存数据结构之一,和之前的 sds. skipl ...

  9. 使用psftp向服务器上传文件

    老师刚才说想用psftp上传文件到服务器,我之前没听过,学了一下,总结下.我们用PSFTP主要也就是上传和下载. PSFTP是PuTTY SFTP客户端,用于本地与服务器间安全传输文件(使用SSH连接 ...

  10. jmeter 插件安装之阶梯式压测(五)

    一.Jmeter插件安装 jmeter-plugins-manager-1.4.jar 下载地址:https://jmeter-plugins.org/install/Install/ 下载之后将插件 ...