Java全境突击手册-有工作实践经验食用更佳

前言

本文献给像我一样挣扎在Java路上的同行者,希望能对你有所帮助。文章主线非常直接,就是针对一些常见的问题进行答疑,中间会按照学习路线进行相应的推荐,有我自己写的和精选的我学习过的资料。为什么有想写这个的冲动呢,也算是忙完后的自我总结吧,今年年终总结也就结合着这个去写了,不会再去做额外的心路回写,新的一年还要继续努力啊。

Java

基础-♥

口语化讲解Java基础和集合--401阅读 · 14点赞 · 8收藏

工作年限偏短,比如2年及以下的时候问基础会多一些。常规年限高一些,IO、反射和泛型之类的应用知识会问的多一些,更多时候我觉得网络知识也是非常重要的一环。

如果是零基础或者刚入门Java的话,我建议先看看B站或者资源站上的一些零基础培训班课程。如果你是工作了,回头温习,那就千万不要看零基础版本,纯纯浪费时间,直接看SpringBoot或者Cloud的实战课,结合工作自己敲一敲。看视频的时候也别老老实实一倍速,两倍速拉起来,关键时候结合课程文档放慢看就行。为什么说看SpringCloud系列课,其实也不是让你马上上手这些东西,也就是配置而已,最主要是培养学习兴趣,学习和了解新东西的兴趣,这很重要,避免你学不下去,八股真的很枯燥。

基础部分老鸟可以持续关注上面文章总结的部分,集合部分也包含在内了,这也算是基础的范畴内,属于常规八股。HashMap一定要了解透彻,为啥?因为他设计太巧妙了,1.7到1.8的变动很大,各个都是骚操作,是人是鬼都在秀,你写不出来总得理解大佬这么写有啥好处,当然更多的原因是这在基础中属于略难的知识点,有点说头。网络部分一般问的不多,除了头部厂商很少有这么刨根问底的,为了效率可以放弃这块,专攻更关键的部分。当然后续我会持续更新这篇基础,会加入网络的知识。

差点忘了,我去,我后面更新了新的知识点,堆相关的PriorityQueue和阻塞队列BlockingQueue系列,这俩常见于算法和线程池,也是经典知识,千万要看。

并发-♥♥♥♥

口语化讲解多线程与并发--307阅读 · 14点赞 · 8收藏

口语化讲解JUC--363阅读 · 15点赞 · 8收藏

现在太卷了,我觉得在真实的场景中并发的相关知识点才是所谓的基础,所以这块我分成两部分来总结相关的知识点。

从落地上讲,多线程在Java中更多是在JMM的规则下进行具现化。在认识一块知识版块时,我喜欢从原理和概念开始,开篇讲了多线程相关名词的解释以及多线程带来的三个问题,可见性、原子性、有序性。然后从Java开发者的角度去看Java提供了什么手段让我们保证线程安全,这里也同步解释了线程的一些概念。最后对Java中的核心关键词Synchronized、volatile、final做了一些总结。

JUC也是常见,这一篇相对来说会具体很多,很多都是真实的。CAS、LockSupport和基于这两者的AQS,都是基础的原理知识,ConcurrentHashMap和上面提到的HashMap同样重要,连理由都是相同的,设计太巧妙了,属于有难度的知识点。线程池更是不用多说,吃透就完了,最好再看看源码,了解下里面的一些计数标志位,代码怎么流转的,而不仅仅是知道运行原理。ThreadLocal也是框架中比较常用的东西,Spring的事务就用到了这个。

文章里还有些我没更新完的,后面抽时间会更新上去,比如ForkJoinPool和CompletableFuture的执行原理,尽量到源码级别,我个人比较喜欢用这个来多线程优化。还要了解一些线程安全的集合类,比如CopyOnWriteArrayList。

性能优化-如何爽玩多线程来开发--5302阅读 · 91点赞 · 208收藏

目前我认为我写的最接地气的一篇文章,通篇充斥着粘来即用的代码套路以及图例。我完整的分享了我在日常开发中是如何运用多线程去优化代码,在哪些场景下用了多线程,最后还小小的炫了一下多线程事务提交。写这篇文章的时候,我翻了好多文章,就是担心写重复了,毕竟多线程优化算是很常见的手段了。但是令我惊讶的是,几乎所有文章都是对多线程的理论讲解或者八股,有些文章会带有一些案例,但是这就像刚学会加减乘除让你做高数一样,那就离谱。所以我在写案例的时候,就结合了我工作中的场景,把对应的代码套路抽象出来,开箱即用,我自己都经常粘贴着用,那能不好用嘛。

JVM-♥♥♥♥♥

口语化讲解JVM--1326阅读 · 59点赞 · 49收藏

JVM这一块我自己总结的还是比较全面,直接看我写的大部分都能命中。大致需要了解下JMM的概念、JVM对于内存的划分,类和对象的生命周期以及一些额外的知识,比如TLAB、逃逸分析。重点需要弄明白何为垃圾回收,相关的判断、垃圾回收算法和G1等重点垃圾回收器的原理。

其实JVM如果想要培养兴趣可以从性能优化做起,比如如何调整参数,选用什么样的垃圾回收器之类的。举例来说-Xms-Xmx相同避免内存抖动,选用G1或者更高级的ZGC,动态调整新老年代的大小,减少FullGC次数。还有些预防性的参数,比如堆外内存或者元空间的限制。可以找一些Java写的中间件的启动脚本,看看人家启动参数怎么写的。这一块其实可以看看一些优化课的视频,讲得会更详细,顺道熟悉一下JVM的知识。

数据库

MySQL-♥♥♥♥♥

口语化讲解MySQL--1304阅读 · 56点赞 · 38收藏

我一向喜欢建立成体系的知识结构,这一篇就是写得很完整的一篇。MySQL的结构、索引、日志、事务、SQL执行原理等等写的很详细,关键是加了一些不常见的细节进去,比如哈希索引的内部用途、bufferpool的读写结构优化。这一篇和之前不同,涵盖了较全面的知识点,不用太去关注其他没提到的部分。

数据库设计-MySQL设计小册--751阅读 · 19点赞 · 16收藏

口语化讲解数据库优化--2008阅读 · 28点赞 · 20收藏

数据库这块必须提到的优化部分,我这里写了两篇,设计那篇写的不太好,但是收录的大佬文章质量不错。优化那篇很不错,建议自己总结总结,化作项目亮点。

从零开始的SQL修炼手册--理论篇-589阅读 · 27点赞 · 16收藏

从零开始的SQL修炼手册--实战篇-2758阅读 · 56点赞 · 75收藏

全文1.6W字的超长篇幅,带案例手把手教学SQL优化,理论加实践还有操作步骤,力求做到十全十美。九步优化方法也是提炼了常用的优化手段,并按照效果强弱进行了排序,目标是让不会SQL优化的人,拿到手册至少会知道怎么下手。我觉得初学者很有必要在读了上面的理论后,根据手册进行实践,在实践中温习理论知识点。

缓存-♥♥♥

口语化讲解Redis--1036阅读 · 22点赞 · 31收藏

缓存大概率就是Redis,当然本地缓存比如caffeine或者guava cache也需要知道源码的程度。没看错,只要提到了必然是源码级别,当然源码也相对简单,一般是拿着ConcurrentHashMap等并发容器魔改。Redis这篇写的不算全面,建议看我后面推荐的知识网站精进一下,需要注意的是,最后数据一致性和分布式锁的总结不错,一定要看。

框架及中间件

Spring、Spring Boot和Mybatis-♥♥♥

口语化讲解Spring、Mybatis--1103阅读 · 34点赞 · 40收藏

网上关于Spring、Spring Boot和Mybatis的一些知识点总结都很零碎,我努力想拼凑出一套完整的,但是受限于我没有真正完整读完Spring的源码,所以只能弄个大杂烩出来。说实话有点水,可以看看其他大佬写的,后面会推荐。

消息队列-♥♥♥♥

大碗宽面-Kafka一本道万事通--6319阅读 · 60点赞 · 177收藏

这一篇完美做到了我前面所说的知识体系的完整输出,从基础名词解析到进阶概念,然后对Kafka的机制分析,再结合场景输出,最后简单总结下源码,堪称完美。

Kafka开发实录--1351阅读 · 18点赞 · 28收藏

中间件的学习必然无法绕开实战,从基础的搭建开始,摸索学习。通过对核心参数的优化调整,来复习前面学到的理论,解决中途遇到的问题也会成为加深理解的助力。

消息队列选用一种即可,在选择中可以了解下主流消息队列之间的对比,其原理和场景大多雷同,精通其一其他就很好了解和上手。

搜索引擎-♥♥

ElasticSearch理论体系构建--830阅读 · 29点赞 · 38收藏

这个属于选择性了解,项目用到了再说,而且现在也有新的竞争者出现,比如ClickHouse。应用场合有雷同,但是专精不同,看业务适配情况。如果有了解的话,建议好好学习一下这个经典的分布式架构。为什么这么说呢,因为我觉得它是一个相当好的分布式学习案例,而且还是数据库,属于经典的既要又要。它的Translog高可用理念,增删改查的分布式操作原理都很值得学习,分布式的相关概念大体就是这些东西了,你看其他的分布式中间件会更容易理解。

ElasticSearch开发指北和场景题分析--857阅读 · 16点赞 · 23收藏

天元突破-ElasticSearch性能究极进化--748阅读 · 27点赞 · 37收藏

既然了解了ElasticSearch的理论自然也要通过实践来加深印象,我总结了一些常见的有意思和说头的场景,比如重建索引的三种方式、时区问题等。性能优化则是全面进行了讲解,推荐学习,会通过前面的理论来指导如何进行具体的优化。

ElasticSearch不停机重建索引引申来的优化与思考--5440阅读 · 30点赞 · 47收藏

如果想要详细了解不停机索引的全过程,推荐看下这一篇,里面有详细的参数和操作步骤,为了避免内容不够还添加了一些相关的知识点。

分布式事务-♥

分布式事务Seata-1.5.2使用全路线指北--2798阅读 · 22点赞 · 25收藏

醒醒,Seata都更新2.0了,哈哈。这是篇安装部署文章,可以看看后面的聊聊分布式事务的思考,最好亲自使用下,没准会遇到我文中相同的问题,在解决问题中进一步了解分布式事务中的真实问题。

分布式和微服务-♥♥♥

这个就很宽,基本上就是Spring Cloud套件,建议可以专门看看套件里的一些源码,或者公司自己写的框架的源码。我把公司写的那个扒了个底朝天,这里就不放链接了,想看从我主页里找吧,怕被淦。

从学习角度的话,很有必要,这里就特别建议找一些好的项目,比如实战课视频或者架构源码系列的视频附赠项目。记住,一定要动手实践,这没得说。

口语化讲解高可用--786阅读 · 0点赞 · 2收藏

这里有个纯理论总结的高可用思想,写的不好,我后面会加入更真实具体的案例进行填充。

设计模式-♥♥♥

设计模式该怎么说--313阅读 · 6点赞 · 5收藏

理论其实看看这篇突击也行,但是更推荐通过一些书籍去学习,真正写点案例,这玩意硬背真的很容易忘,可以在自己的工作中主动去用。

拒绝叠叠乐!我用设计模式重构核心项目--3415阅读 · 74点赞 · 75收藏

比如我在做这个项目的时候,其实一开始有刻意去用,但是后来总结的时候发现确实带来了好处,这里主要用的模板模式。

大数据-♥

砥砺前行-初学Flink的我如何快速定位并解决数据同步问题--704阅读 · 15点赞 · 3收藏

如何巧妙解决Flink数据倾斜问题--869阅读 · 12点赞 · 2收藏

在线上问题的摸爬滚打中突击TIDB--567阅读 · 20点赞 · 8收藏

Flink近一月的开拓记录和沉淀分析--683阅读 · 18点赞 · 6收藏

这一块也是选修,博主因为工作的原因兼着大数据的开发,以上纯记录,后续会更新一篇理论知识。

实战案例

组件-♥♥♥♥♥

六脉神剑-我在公司造了六个轮子--28361阅读 · 322点赞 · 714收藏

上一篇爆款,爆麻了,干货满满,主要讲了我在公司里写过的组件,我觉得最有价值的除了核心代码之外还有我特意整理的版更记录。

Spring Boot Starter开发指北(案例+代码地址)-2112阅读 · 37点赞 · 29收藏

续-开发组件更新-提效工具分享--1848阅读 · 17点赞 · 12收藏

具体怎么写Starter以及写些什么东西,可以从这两篇文章中找到答案。

功能模块-♥♥♥♥

后端思想-如何设计一个操作和管理Excel的业务模块--1582阅读 · 43点赞 · 33收藏

关于Excel的业务模块设计是我觉得我目前独立设计过的相对比较复杂的业务向组件了。这个组件从上线开始伴随着主站一路迭代,目前也是应用在几十个系统中,只要和Excel沾边都会直接使用该组件,切实提高了整个团队开发的效率。将原本比较麻烦的Excel上传、处理、保存、展示、下载等操作统统简化,提升了开发的效率,也让用户得到了更好的使用体验。文章里面除了常规的业务代码封装,还有一点我在使用EasyExcel中间件时的一些代码套路,一点小小的定制优化。

后端思想-单点登录组件的设计与思考--1826阅读 · 26点赞 · 18收藏

同样是一个我设计并开发的,缺了认证的单点登录模块,很遗憾受限于公司架构,不是认证授权鉴权三位一体的完整版。在已有认证的情况下,做了一个主站-组件构成的授权鉴权模块,由于是内网,安全方面做的比较粗糙。在功能上我是按照shiro去设计的,比如注解控制权限。文章是好文章,记录了六次迭代的变更点和我的思考,最后总结的时候还列举我对这个单点登录组件的一些感想,但是组件没有做到很完善,还是有点遗憾。

Filebeat+Kafka+数据处理服务+Elasticsearch+Kibana+Skywalking日志收集系统--3009阅读 · 47点赞 · 74收藏

一个由我独立设计并开发的,完整的日志收集系统,到今天成功运行了一年半了,接入了团队的三四十个大小项目,成功抢了架构组的活,装了个大大的逼。文章详细描述了三次完整的迭代过程,为什么需要迭代?我做了什么优化?这一阶段我是怎么想的?以上大家最关心的问题,我都做出了解答。毫无疑问,这是我做过最疯狂的操作,难度系数拉满。后续更新的时候追加了一些扩充日志,以及部分配置的优化。对我来说,真的是一次很有挑战,也很长知识的经历,我至今难以想象我是如何用下班和周末时间,自己捣鼓出来这么一套庞大的东西,真TM离谱。

性能优化-♥♥♥♥♥

设计方案-大数据量查询接口优化--5457阅读 · 72点赞 · 85收藏

我本来是抱着吐槽恶心项目的心情来写这篇文章的,没想到这篇文章居然是我目前文章中最高的阅读量3343,就离谱,大家喜欢看整活嘛。文章中介绍的东西没有特别高大上,就是在极短的时间内,我憋出来了一个行之有效的解决方案,运用缓存做了一点小小的设计去加速数据的查询。基于吐槽心态,自然是完整的记录了我遇到的问题,也是希望能对有相同糟糕境遇的开发小伙伴们有一点帮助。

查询接口性能优化实录,讲点新手也能用的--3675阅读 · 74点赞 · 98收藏

这一篇是我在优化一个老项目查询接口时,突发奇想做的总结,趁着有这么一个现成的真实案例,将优化实践来了个一锅炖。文中也是尽量用朴素的语言和图例,从需求拆解分析到梳理准备和最后的具体优化操作,方方面面都覆盖了,妥妥一本优化宝典啊。

消息积压问题难?思路代码优化细节全公开--3645阅读 · 75点赞 · 128收藏

有消息积压问题的详细处理思路和伪代码,还对Kafka的生产者消费者配置的优化给出了解释。我在整个过程中遇到的问题也有详细的记录和解决方案。数据算是一般般吧,不过我会继续努力的,带来更好的文章。

开发问题思考-♥

有时候需要打开思路-开膛手参上(含错误思路详细记录)--1093阅读 · 21点赞 · 8收藏

一个小需求卡住了我,我是如何解决的,以及花样犯蠢全过程记录,额外添加了一些相关知识点作为甜点。

线上问题排查异闻录-小试牛刀--1178阅读 · 38点赞 · 49收藏

堆内存溢出和CPU高占用的详细排查步骤,不过由于太卷,这已经成为基操,建议找点更有难度的,后面项目难点中会提到。

同事血压操作集锦第一弹--2813阅读 · 66点赞 · 48收藏

果然是有了一期,二期永远难产,大家上班都辛苦,我最近也没时间找大家的BUG,有时候觉得也就算了,毕竟也是个人开发习惯,包容第一。后面会从如何帮助同事解决问题切入来写文章,预计这篇写完很快就会出来一篇,有底稿了,敬请期待。

Redis断连从框架层面该如何抢救?--1278阅读 · 21点赞 · 24收藏

我在这里写了一个组件的开关,以及如何从组件层面控制,不让其中的异常影响我们的应用程序,是一个设计相关的思考。

传世经典-♥♥♥♥♥

如何挖掘项目中的亮点(多方向带案例)--8175阅读 · 124点赞 · 274收藏

迟来一年的姊妹篇-如何说好项目难点--2019阅读 · 42点赞 · 74收藏

传世经典,没得说,全网独一份,看到赚到。没有人会像我这样实在了,把真实案例写成一段话总结直接喂饭,这真的是非常贴心的操作,铁铁们,来个点赞收藏关注三连支持一下,拜托啦,这对我真的很重要!

好文好人推荐

javaguide.cn/-♥♥♥♥♥

Guide哥的文章质量没得说,最近更新了学习路线,就在网站进去右上角有获取方式。我认为纯新手看很友好,就是推荐大量书籍和视频,好是好,就是效率太低,在这个追求效率的时代,或许可以选择二倍速或者更实战的方向,等一定程度后再来补充细节。在应用方面,网站知识总结的质量也是顶呱呱,我经常回看,然后综合总结了我自己的知识体系进行输出。

java-family.cn/#/README-♥♥

码猿大佬的博客,但是感觉知识点很散碎,内容虽多,但是相对普通。其中Spring Cloud、分布式进阶和面经部分可以细致看看。

www.pdai.tech/md/intervie...-♥♥♥♥♥

我的知识体系构建的启蒙网站,pdai大佬虽然不更新了,但是论Java这块知识的全面而言,无出其右。优点很突出,缺点也很真实,哈哈,没有场景相关的东西,而且不更新了有些东西写得确实简略。但是一定能够要看,根据网站提到的东西去找别的资料学习,可以一定程度上把这个当成一个学习路线。

javainterview.gitee.io/luffy/-♥♥

Java3y大佬写的东西幽默风趣,作为兴趣科普我觉得很不错。但是遗憾是大佬专研于项目,这个知识网站也不更新了,作为初学者,可以看看。

doocs.gitee.io/advanced-ja...-♥♥♥

这是一个技术社区打造的博文分享,优点和缺点都很突出。优点是相对独一份的大量场景输出,这是网上很少有的,缺点缺少实战案例,纯理论就很难绷,没有细节,而且也不够详细。虽然只有三星推荐,但是强烈推荐大家看一下,至少一半的内容都可以算是精华。

github.com/hello-java-...-♥

作者断更啦,内容和其他有重合,没有太多亮点,可看可不看。

github.com/AobingJava/...-♥♥

敖丙大佬的博客,看得相对少了,也不太更新了,因为是公众号大佬,所以文章存量是够的,感兴趣的可以看一下。

javabetter.cn/home.html-♥♥♥♥

王二大佬的博客,更新频率看得出来很高,量也大,最近我会重新看一下,我记得之前没这么多内容呀,难不成最近爆更了一波???

rbmonster.github.io/learning-no...-♥

忘了这是哪个大佬的了或者是我无意间翻到的个人博客,直接跳看计算机基础部分和系统设计部分。

www.sharkchili.com/-♥♥♥

sharkchili大佬的博客是我想看的,哈哈,实战内容很丰富,有图有代码,对于一到三年的开发来说很有意义。

juejin.cn/user/430664...-♥♥♥

最后推荐下我自己的,相信大家都能看得出来,我博客除了记录或者优化之类的文章,其他文章指向性都很强,适合突击性使用,最好能搭配上面这些博客进行学习或者兴趣培养。

写在最后

2023年发生了很多事,其实也没啥好总结的,有得有失,冷暖自知。博主心态好,没有崩掉,继续努力,目前看来水平尚可,保持好学习的动力,做好自己。好久没有说出那句话了,我要让这痛苦压抑的世界绽放幸福快乐之花,向美好的世界献上祝福!!!

2024年拜个早年,祝各位身体健康、笑口常开、前程似锦、未来可期!!!

PS:本文会持续更新我自己输出的内容,并且好人好文推荐的部分,希望大家在评论区推荐优秀作者的主页或者自荐,我会看完后放到文中好人好文一栏猛猛推荐(主要是我也想看,哈哈!)

相关推荐
草履虫·3 分钟前
【Java集合】LinkedList
java
AngeliaXue5 分钟前
Java集合(List篇)
java·开发语言·list·集合
世俗ˊ6 分钟前
Java中ArrayList和LinkedList的比较
java·开发语言
zhouyiddd11 分钟前
Maven Helper 插件
java·maven·intellij idea
攸攸太上19 分钟前
Docker学习
java·网络·学习·docker·容器
Milo_K27 分钟前
项目文件配置
java·开发语言
程序员大金31 分钟前
基于SpringBoot+Vue+MySQL的养老院管理系统
java·vue.js·spring boot·vscode·后端·mysql·vim
customer0842 分钟前
【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
nsa652231 小时前
Knife4j 一款基于Swagger的开源文档管理工具
java