3000 天,破茧成蝶
扫描二维码
随时随地手机看文章
大家好,我是二哥呀。
不得不说,中秋节是我们国家非常重要的节日之一。每年的中秋佳节,二哥都会收到一些博客社区寄来的礼品,这次有知乎、CSDN 和 Apipost,给大家小晒一波????。
朋友圈有小伙伴留言说,“怎么才能像二哥一样,收到这些礼品呢?”我当时大言不惭回复他说,大概也就需要 3000 天的坚持吧!
(瞧我这得意忘形的死样子)
不过确实,从 2014 年开始写博客到现在,8 年的时间,粗略一算,真的有 3000 天了。
好了,接下来给大家分享一波二哥编程星球里一位球友的故事,这位球友一开始,有点温水煮青蛙的味道,上班 CRUD,下班躺尸,就这样从实习到工作,过了三年时间,但突然有一天,开始奋发图强,觉得不能再这么荒废下去了,于是来二哥星球开始了连续 90 天的打卡之旅,感觉蜕变了很多。
说真的,这位球友的坚持,远超二哥当年的努力程度。说来也巧,我们差不多都是工作 3 年后开始幡然醒悟的。来看看这位球友的故事吧。
坦白从宽????
先来看一下球友的坦白从宽,可以说像极了二哥实习和毕业的那会。
作为一个 PHP 转 Java 的业务开发,经常对自己的 Java 基础是否扎实有个问号。实际业务上由于基本上都是 CURD,并没遇到什么困难,但越是这样有时候心里就越慌。
原来是想看二哥的《Java 程序员进阶之路》或者 JavaGuide,看了一部分,感觉还是想系统性的过一遍。于是,刷了一遍《Head+First+Java》、《Think in Java》。
看完后当时感觉自信心爆棚,于是去隔壁小傅哥的抽奖系统刷了一通,中间断断续续,现在差不多快完结了。
感觉快要步入刷的越多、心里越慌的程度了,大概是自己学的很多没真正应用落地。
比如小傅哥的重学设计模式,自己也跟着做完了,也输出了自己的博客,但还是没啥感觉。
反而在抽奖中实际体验过的模板模式,慢慢开始能落地到业务上了,感觉开始熟练化了。
所以除了输出,最重要的还是要落地到自己业务的实际代码中,如果没有实际项目,可以在自己的模拟项目中,先写一版,之后考虑如何重构。
今年除了抽奖,就是 TiDB 了,新型数据库,语法基本上兼容 MySQL,但用起来挺舒服的,不用分库分表了,去年引入到业务中了,由于遇到了一些问题,开始被迫倒逼系统性学习,TiDB 官网有相关的系统性学习视频,甚至还有考试。
哈哈哈,感觉二哥有空联合星球的小伙伴整理一下题库,边学习边考试,提高熟练度。
说了这么多,就是跟大家打声招呼!!!
然后列一下学习计划吧。
- 二哥的 Java 面试指南
- 带着疑问去做 Java 程序员进阶之路
- 源码学习:Spring、Mybatis
- 项目实战
打卡之旅
这位球友的毅力真的是没得说,从进入星球到现在,真的是没有间断过。起到了一个很好的模范带头作用,关键是,这样自律的表现,给他也带来了质的提高。二哥接下来就来挑一下球友的打卡记录分享出来,给大家鼓鼓劲和加加油????????。
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
- Java 程序员进阶之路 - Java 概述
- Java 程序员进阶之路 - Java 基础语法
- Java 程序员进阶之路 - 面向对象编程
今天开始二哥的进阶之路,这个真的是挺适合初学者,不过用来复习也很不错。还有几件小事:
- 一、文字勘误了 2 个小问题,提了个 PR。
- 二、final 方法中有一个不太理解的表述,二哥有空帮忙看下@沉默王二
这位球友非常认真,在阅读《Java 程序员进阶之路》的过程中还发现了一些小错误,并且提交了 PR。
2022-07-04 21:35
今天主要是 ReetrantLock 和 ReentrantWriteLock。
- ReetrantLock
- (1)非公平锁实现 AQS 父类 AbstractOwnableSynchronizer 记录了持有锁的线程 AQS state 属性记录重入次数,来保证加解锁
- (2)公平锁实现 hasQueuePredecessors() 从后往前找最后一个等待线程,若不为自身线程,说明前面还有任务等待,无法获取锁
- 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 月份计划
- 二哥的 Java 程序员进阶之路完结
- 冰河大大的 SpringCloud Alibaba 实战开始
7 月份不贪多,需要恢复恢复状态,初步目标 2~3 篇!后续可能会继续穿插 Spring 和 Mybatis 的学习来把基础打得更扎实一点,具体可能还是要看后面的一些学习感觉,是先把实战篇完成,还是穿插着来。
2022-07-14 21:52
今天主要是并发编程的计划任务-ScheduledThreadPoolExecutor。
- 用途
- (1)在给定的延迟之后运行任务
- (2)周期性地重复执行任务
2.为什么不用 Timer?
- (1)Timer 单线程模式,在执行任务时某个 TimerTask 耗时久,会影响其他任务
- (2)Timer 任务调度基于绝对时间,对系统时间敏感
- (3)Timer 不捕获 TimerTask 执行时抛出的异常,因此一个任务失败,会影响其他任务
- ScheduledThreadPoolExecutor 结构
- (1)继承 ThreadPoolExecutor
- (2)实现 ScheduledExecutorService
- schedleAtFixedRate()
- (1)在 initialDelay 后第一次执行任务
- (2)每隔 period ,再次执行任务
- schedlueWithFixDelay
- (1)在 initialDelay 后第一次执行任务
- (2)每当任务执行完成后,等待 delay,执行任务
- 主要方法执行逻辑(见思维导图)
2022-08-07 19:13
2022-09-08 23:26
2022-09-12 21:48
二哥点评
这位球友的打卡内容真的是非常非常的仔细,就连中秋假期也没有停下脚步。他的这种毅力让我想起了 2014 年开始坚持写博客的那段“光辉岁月”(大言不惭,????)
不再去埋怨环境不好啊,不再去埋怨公司没有发展前景啊,不再去抱怨队友不给力啊,就是踏踏实实地专注于自身的成长,每天积累一点点,一点点。
久而久之(8年时间,3000天),二哥变成了你们眼中的这个样子,每到中秋节之前,各大博客平台都“非常积极”地送来中秋礼品(装,让我这个逼再装会)
有不少读者经常给我抱怨说,自己这个学不会,那个没有耐心,本质的原因就是因为你关注了太多外界的干扰因素,没有几个人能做到日复一日的坚持。
可一旦你做到了,根本就到不了拼天赋、拼家庭背景,就能在学生阶段、工作阶段脱颖而出。
好了,心灵鸡汤就先灌到这吧,你们小心点喝,别噎着,????
ending
一个人可以走得很快,但一群人才能走得更远。当你处在一个学习氛围浓烈的环境中时,就会不由自主地往前冲刺。二哥的编程星球已经有 780 多名 球友加入了,如果你也需要一个良好的学习氛围,戳链接加入我们吧。
星球置顶帖里的知识图谱和精华贴里已经沉淀了非常多优质的内容,多看看这些,相信能帮助你走的更稳、更远。
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。