先说大部分新手的情况:只是在视频前轻敲Java项目,遇到的bug还是可以解决的,但是每轻敲一个项目就感觉空空空如也,项目里的知识点感觉懂了但好像不懂。如何才能掌握一个项目中用到的知识点?
让我们分享一下好朋友丁伟的经历,他是《RocketMQ的内幕技术》的作者。在尝试学习RocketMQ之前,他从未接触过消息中间件,但通过他精益求精的学习方法,最终成为了RocketMQ社区中一名优秀的布道者。这给了他一个非常鲜明的标签,大大提高了职场竞争力。

他的总结有以下四点:
了解这个项目的使用场景以及在架构设计中要承担的责任。寻找官方文件,整体把握这个项目的设计理念。搭建自己的开发调试环境,运行官方演示示例,为进一步研究打下基础。先主流程再分支流程,注意把它们一个一个切破。
我觉得很有道理。记得刚开始工作的时候,拿到领导安排的项目,不知所措,不知道该怎么做,不知道该做什么。问领导,领导说没时间,让我先学习。我应该学什么?
起初,当然,我没有线索,但后来我明白了一点谨慎。
从项目的需求文档入手,先知道这个项目是干什么的,然后有个大概的概念,再不慌。然后在本地运行这个项目的源代码,“运行一下”。说起来容易,实际做起来还是挺难的。我记得我当时跑第一个项目用了差不多一个多星期,因为我的开发环境和项目的要求有些出入,导致了很多问题。
有两个问题让我印象深刻。第一个是乱码,类似下图。
第二个是汇编错误,原因很简单,JDK的版本不同。
这两个问题虽然简单,但是很常见。真的,新手基本都会遇到。刚开始是慌,因为源代码肯定不会有问题,问题一定是我自己的开发环境。
折腾了一个多星期,项目终于开工了。
我让自己体验测试的角色,就是点击所有可以操作的按钮,体验哪些项目开发了,哪些没有。没过多久我又检测到两三个新的bug,基本都是一些非常规操作造成的。虽然我解决不了,但领导向我汇报后还是很惊讶。他看着我的小眼睛,觉得有点像吴夏梦。“小伙子,你进步了!”
然后,我没有赶着去开发领导交给我的任务,而是去看同事已经完成的代码。当然,我是带着疑问去看的。他为什么要这样写?这样写有什么好处?如果是我,我会怎么实现?差异是我自己考虑不周吗?
当然,我不会看得太仔细,因为有些内容超出了我的技术范围。不能理解的只能“走马观花”。如果大致明白是什么意思,我就“得过且过”。
在这里给大家提个醒,千万不要纠结于技术细节,尤其是项目初期。因为你不懂业务,技术水平可能达不到,研究技术细节很容易被干掉。
还有一点就是,基本功一定要扎实,甚至不要理解整个代码上下文,这样会很难。我在GitHub上有一本115k+的Java教程,内容涵盖了Java的所有知识点,包括Java语法,Java集合框架,Java IO,Java并发编程,Java虚拟机。内容不多,只说重点。
GitHub星标115k+ Java教程,超级硬核!
尽量花一点时间巩固基础,不要让自己太被动。遇到不熟悉的知识点,主动去查。
读源代码的时候,加一些日志,加一些断点,去跑一跑。有时候,只看没有断点的源代码很可能会忽略一些关键的技术细节,因为Java是多态的。有些地方看源代码只能看到类之间的层次关系,看不到子类如何重写父类方法,也看不到实现类如何实现接口。通过调试可以看的很清楚。
还有一些分支语句。如果只是看源代码,可能不了解进入这个分支的条件。有一些关键的技术细节。只看源代码可能会很困惑,一步一步跟着断点走可能会完全理解。

例如,以StringBuilder的append方法为例。StringBuilder由字符数组在内部实现。如果新添加的字符串的长度超过了数组的长度,则需要对其进行扩展。添加断点后,您可以看到在满足容量扩展需求时,JDK的内部容量是如何扩展的,如下图所示。
一般来说项目比较大,代码会比较多。这时候最好只专注于一个模块,也就是你通过需求文档或者阅读源代码最了解的模块,尽量透彻理解这个模块的整体逻辑。如果领导只是给你安排这个模块的业务代码,入门难度会大大降低!
再次总结一下:
拿到项目后,不要急着去做。首先阅读文档,尤其是需求文档。在本地运行项目的源代码。做一些测试,看看你是否能发现一些边界错误。关注一个模块,研究源代码,但不要过多钻研技术细节。
我给你推荐两个优秀的Java开源项目。如果你还没有参加工作,可以把这两个项目作为动手项目。
SpringBoot完整的电子商务系统Mall,包括前端商城系统和后端管理系统,基于SpringBoot+MyBatis实现。Vhr:微人事是前端分离的人力资源管理系统。该项目由SpringBoot+Vue开发。
我之前做的一个电商项目也是用mall作为基本架构!商城的学习教程很全面。作者直接做了一个在线网站,用的基本技术都很清楚!
Vhr目前在GitHub上有20.8k星,属于很强的那种。
后段技术栈
Spring Boot春天安全MyBatis MySQL Redis RabbitMQ春天缓存WebSocket …
前端技术堆栈
vue element ui axios vue-路由器Vuex WebSocket vue-cli4 …
基本上都是使用主流的前端和后端技术。作者专门为初学者录制了一个项目部署的视频教程,很甜~
文件特别全面,我简单列举一下。
数据库设计,服务器环境,设置角色与资源的动态关系,密码加密,统一处理服务器异常,axios请求封装,统一处理请求异常,在Vue上挂request方法保存登录状态,成功登录后动态加载组件角色资源关系管理用户角色关系管理。
基本上每个知识点都有对应的文档。如果文件是完整的,它将是一个很好的帮助,以彻底了解该项目。
最后但同样重要的是,当你做手工训练项目时,你必须记得记笔记。我在很多地方看到这种观点,“请停止写注释,因为只有糟糕的代码才需要注释。”这个观点很巧妙。这让我想起孟子的一句话,“杨氏为我,无君也。”莫的博爱是无父的。没有父亲,没有国王,没有野兽。"

Java源代码的作者绝对是世界上最好的程序员。甚至他们写评论。那些呼吁“请不要再写评论”的人是不是都要把自己的脸打肿了?
以String为例。要了解这个班级,直接看班级的评论就够了。写得很详细。
一个优秀的Java项目也应该是这样的。评论一定要到位,不然别人怎么过?我只能说Java源代码的作者,yyds。
我是二哥。赞美一下怎么样?
,https://blog . csdn . net/Qing _ gee/article/details/117803706


