查看原文
其他

3000 天,破茧成蝶

沉默王二 沉默王二 2022-09-26

作者:沉默王二
Java 程序员进阶之路:https://tobebetterjavaer.com

大家好,我是二哥呀。

不得不说,中秋节是我们国家非常重要的节日之一。每年的中秋佳节,二哥都会收到一些博客社区寄来的礼品,这次有知乎、CSDN 和 Apipost,给大家小晒一波😄。

朋友圈有小伙伴留言说,“怎么才能像二哥一样,收到这些礼品呢?”我当时大言不惭回复他说,大概也就需要 3000 天的坚持吧

(瞧我这得意忘形的死样子)

不过确实,从 2014 年开始写博客到现在,8 年的时间,粗略一算,真的有 3000 天了。

好了,接下来给大家分享一波二哥编程星球里一位球友的故事,这位球友一开始,有点温水煮青蛙的味道,上班 CRUD,下班躺尸,就这样从实习到工作,过了三年时间,但突然有一天,开始奋发图强,觉得不能再这么荒废下去了,于是来二哥星球开始了连续 90 天的打卡之旅,感觉蜕变了很多

说真的,这位球友的坚持,远超二哥当年的努力程度。说来也巧,我们差不多都是工作 3 年后开始幡然醒悟的。来看看这位球友的故事吧。

坦白从宽😂

先来看一下球友的坦白从宽,可以说像极了二哥实习和毕业的那会。

作为一个 PHP 转 Java 的业务开发,经常对自己的 Java 基础是否扎实有个问号。实际业务上由于基本上都是 CURD,并没遇到什么困难,但越是这样有时候心里就越慌。

原来是想看二哥的《Java 程序员进阶之路》或者 JavaGuide,看了一部分,感觉还是想系统性的过一遍。于是,刷了一遍《Head+First+Java》、《Think in Java》。

看完后当时感觉自信心爆棚,于是去隔壁小傅哥的抽奖系统刷了一通,中间断断续续,现在差不多快完结了。

感觉快要步入刷的越多、心里越慌的程度了,大概是自己学的很多没真正应用落地。

比如小傅哥的重学设计模式,自己也跟着做完了,也输出了自己的博客,但还是没啥感觉。

反而在抽奖中实际体验过的模板模式,慢慢开始能落地到业务上了,感觉开始熟练化了。

所以除了输出,最重要的还是要落地到自己业务的实际代码中,如果没有实际项目,可以在自己的模拟项目中,先写一版,之后考虑如何重构。

今年除了抽奖,就是 TiDB 了,新型数据库,语法基本上兼容 MySQL,但用起来挺舒服的,不用分库分表了,去年引入到业务中了,由于遇到了一些问题,开始被迫倒逼系统性学习,TiDB 官网有相关的系统性学习视频,甚至还有考试。

哈哈哈,感觉二哥有空联合星球的小伙伴整理一下题库,边学习边考试,提高熟练度。

说了这么多,就是跟大家打声招呼!!!

然后列一下学习计划吧。

  1. 二哥的 Java 面试指南
  2. 带着疑问去做 Java 程序员进阶之路
  3. 源码学习:Spring、Mybatis
  4. 项目实战

打卡之旅

这位球友的毅力真的是没得说,从进入星球到现在,真的是没有间断过。起到了一个很好的模范带头作用,关键是,这样自律的表现,给他也带来了质的提高。二哥接下来就来挑一下球友的打卡记录分享出来,给大家鼓鼓劲和加加油💪🏻。

2022-06-06 20:57

2022-06-08 23:40

今天按计划开始 Java 基础,计划是这样的:

  • (1)CS Note、Java Gudie、Java 程序员进阶之路、Effective Java 把基础过一遍

  • (2)基础知识过的时候,整理一下基础的骨架

  • (3)对比三个 Guide 的基础骨架不同,合一把

  • (4)根据这份基础骨架后续定期复习,把容易忘记的,和一些能整理的点梳理出博客

今日份:CS Note(Java 基础 1~6 节)

2022-06-26 19:13

  1. Java 程序员进阶之路 - Java 概述
  2. Java 程序员进阶之路 - Java 基础语法
  3. Java 程序员进阶之路 - 面向对象编程

今天开始二哥的进阶之路,这个真的是挺适合初学者,不过用来复习也很不错。还有几件小事:

  • 一、文字勘误了 2 个小问题,提了个 PR。
  • 二、final 方法中有一个不太理解的表述,二哥有空帮忙看下@沉默王二

这位球友非常认真,在阅读《Java 程序员进阶之路》的过程中还发现了一些小错误,并且提交了 PR。

2022-07-04 21:35

今天主要是 ReetrantLock 和 ReentrantWriteLock。

  1. ReetrantLock
  • (1)非公平锁实现 AQS 父类 AbstractOwnableSynchronizer 记录了持有锁的线程 AQS state 属性记录重入次数,来保证加解锁
  • (2)公平锁实现 hasQueuePredecessors() 从后往前找最后一个等待线程,若不为自身线程,说明前面还有任务等待,无法获取锁
  1. ReentrantWriteLock
  • (1)核心 state 高 16 位读锁次数,低 16 位写锁次数
  • (2)写锁 若读锁已被读线程获取 or 写锁已被其他写线程获取,则写锁获取失败
  • (3)读锁 写锁被其他进程获取,读锁获取失败,否则 CAS 更新,CAS 失败,走 fullTryAcireShared()  自旋

这位球友的打卡内容越来越认真,并且开始画思维导图总结了。

2022-07-10 12:45

一、6 月学习小结

之前笔记里也有不少东西,不过我都只是在附图中展示了一下,现在开始慢慢抽出来。

还是有点好处的,感觉又总结了一遍,后面的博客计划应该能省挺多事,之前只是把一些关键点记下来,以备后续整理,现在只是相当于提前了。

而且并发编程这块确实有挺多很有意思的地方。

因为并发编程这款很多和源码有关,不太好写整块的东西,都是一个个执行步骤,之前那种直接把 markdown 贴出来,自己有时候在外边想看一眼也不是很好看。

此刻推荐一个神器 markmap,可以将 markdown 转成思维导图,看上去就很清晰了。VS Code 搜索:markmap(31 K stars)

这算是自己最近的学习经验总结吧!

二、7 月份计划

  1. 二哥的 Java 程序员进阶之路完结
  2. 冰河大大的 SpringCloud Alibaba 实战开始

7 月份不贪多,需要恢复恢复状态,初步目标 2~3 篇!后续可能会继续穿插 Spring 和 Mybatis 的学习来把基础打得更扎实一点,具体可能还是要看后面的一些学习感觉,是先把实战篇完成,还是穿插着来。

2022-07-14 21:52

今天主要是并发编程的计划任务-ScheduledThreadPoolExecutor。

  1. 用途
  • (1)在给定的延迟之后运行任务
  • (2)周期性地重复执行任务

2.为什么不用 Timer?

  • (1)Timer 单线程模式,在执行任务时某个 TimerTask 耗时久,会影响其他任务
  • (2)Timer 任务调度基于绝对时间,对系统时间敏感
  • (3)Timer 不捕获 TimerTask 执行时抛出的异常,因此一个任务失败,会影响其他任务
  1. ScheduledThreadPoolExecutor 结构
  • (1)继承 ThreadPoolExecutor
  • (2)实现 ScheduledExecutorService
  1. schedleAtFixedRate()
  • (1)在 initialDelay 后第一次执行任务
  • (2)每隔 period ,再次执行任务
  1. schedlueWithFixDelay
  • (1)在 initialDelay 后第一次执行任务
  • (2)每当任务执行完成后,等待 delay,执行任务
  1. 主要方法执行逻辑(见思维导图)

2022-08-07 19:13

2022-09-08 23:26

2022-09-12 21:48

二哥点评

这位球友的打卡内容真的是非常非常的仔细,就连中秋假期也没有停下脚步。他的这种毅力让我想起了 2014 年开始坚持写博客的那段“光辉岁月”(大言不惭,😝)

不再去埋怨环境不好啊,不再去埋怨公司没有发展前景啊,不再去抱怨队友不给力啊,就是踏踏实实地专注于自身的成长,每天积累一点点,一点点。

久而久之(8年时间,3000天),二哥变成了你们眼中的这个样子,每到中秋节之前,各大博客平台都“非常积极”地送来中秋礼品(装,让我这个逼再装会)

有不少读者经常给我抱怨说,自己这个学不会,那个没有耐心,本质的原因就是因为你关注了太多外界的干扰因素,没有几个人能做到日复一日的坚持。

可一旦你做到了,根本就到不了拼天赋、拼家庭背景,就能在学生阶段、工作阶段脱颖而出。

好了,心灵鸡汤就先灌到这吧,你们小心点喝,别噎着,😃

ending

一个人可以走得很快,但一群人才能走得更远。当你处在一个学习氛围浓烈的环境中时,就会不由自主地往前冲刺。二哥的编程星球已经有 780 多名 球友加入了,如果你也需要一个良好的学习氛围,戳链接加入我们吧。

星球置顶帖里的知识图谱和精华贴里已经沉淀了非常多优质的内容,多看看这些,相信能帮助你走的更稳、更远。


没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。

欢迎点击左下角阅读原文了解二哥的编程星球详情,这可能是你学习求职路上最有含金量的一次点击。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存