今天来给大家谈一谈如何高效地学习编程。

无论什么时候,找到学习的目标,以及学习的套路都非常的重要。找不到的话,就只能事倍功半,付出了很多努力,却迟迟得不到最好的回报。

三四年前,我特别喜欢收藏文章,觉得有些技术文写得真好,忍不住收藏了!等过了一段时间后,闲得无聊,就去翻收藏夹,想着学一波,谁知道竟然找不到——不是微信给我删了,而是收藏夹里躺的“尸体”实在是太多了,根本就找不到。

后来,我就总结了一个小窍门——每周收藏夹里最多躺五篇文章,如果想进来第六篇,之前的必须得清一篇。别小看这个小窍门,它真的有督促我去学习,去消化。

有句话说得好,学习的时候一定要把自己当成一台计算机,既有输入,也要有输出。只输入不输出会堵塞,只输入不输出会枯竭。

我在网上看到有大佬列出 Java 工程师应该掌握的知识点,分了 5 个梯度,我觉得蛮有道理的。

第一梯度:操作系统、计算机组成原理、计算机网络、数据结构、算法。这个我之前已经强调很多次了,也列了对应的学习资料。比如说《深入理解计算机系统》这本黑皮书是要必读的,不管什么时候读。

这第一梯度的知识还是挺庞大的,需要花很多时间去消化。科班的比较适合一上来就啃,啃不动的可以放到后面再去补,反正是不要绕过去。

第二梯度:Java 基础、JVM 内存模型和 GC 算法、JVM 性能调优、JDK 工具、设计模式

Java 基础方面我写过《教妹学Java》,这部分内容目前处于断更的阶段,我在想后面的内容怎么继续下去,在“沉默王二”这个号上写感觉有点不太适合了,因为之前的反响一般;打算后面用我妹的那个号“程序员宝宝”来写,然后这个号次条转载一波。

除了《教妹学Java》,我推荐过另外一个 GitHub 上标星 115k+ 的 Java 教程,我自己从 GitHub 上下载到本地整理了一份 PDF,我看百度网盘下载的次数接近 1 万次,还是挺受欢迎的。

Java 基础里面有一块内容,就是并发编程,需要花大力气。我之前也推荐过这方面的资料,几个阿里的朋友写的,叫《深入浅出 Java 多线程》。

至于 JVM,一本书搞定,就是周志明老师的那本《深入理解 Java 虚拟机》,不过这书和《深入理解计算机系统》差不多,都挺难吃透的,需要花时间去读,前后持续的时间会比较久。

然后是设计模式,这块需要通过大量的实战经验才能有所感悟,设计模式玩得炉火纯青,写出的代码就更优雅,阅读起来也会更加舒服,可维护性、可扩展性就更强。推荐好朋友小傅哥重写的 Java 设计模式,全网下载次数应该有 3 万多次了。

第三梯度:Spring 系列、MyBatis、Dubbo 等主流框架

Spring 系列的话,我之前推荐过松哥的视频,在 B 站上有,大家可以去搜一下“江南一点雨”,质量我觉得还是挺不错的。听松哥说,今年还会录一些新的视频。

至于 Spring Boot 和 Spring Cloud,木得说,大家直接搜“纯洁的微笑”,看他的博客就行了。虽然微笑哥现在不怎么写这方面的教程了,但它之前写的就足够用来学习了。

MyBatis 其实很简单,学起来不复杂,就是怎么在 XML 文件里写 SQL 的事,不难,直接看官网就行。

Dubbo 是阿里巴巴公司开源的一个高性能服务框架,使得应用可通过 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。学习 Dubbo 的话,也推荐直接看官方文档。

第四梯度:MySQL、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper 等数据库或者中间件

MySQL 的话,推荐先看《SQL 必知必会》,再看《MySQL 必知必会》,然后是《高性能 MySQL》。

Redis 的话,推荐看老钱的《Redis 深度历险:核心原理与应用实践》,在业界的评价还是蛮高的。

Kafka 和 RabbitMQ 是两款比较主流的消息中间件,具备消息传递的基本功能,但在一些特殊的功能方面存在差异,RocketMQ 在阿里集团内部有大量的应用场景。这部分的学习可以直接看官方文档,然后通过实战项目提升自己对这些消息中间件的应用功底。

Zookeeper 是一个分布式的、开源的程序协调服务,可以到菜鸟教程上学习。

第五梯度:CAP 理论、BASE 理论、Paxos 和 Raft 算法

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项——CAP 理论。

BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

Paxos 算法是一种基于消息传递且具有高度容错特性的共识算法。

Raft 算法是一种用于替代 Paxos 的共识算法,安全性更高,并能提供一些额外的特性。

这些都是一些比较难以理解的知识点,需要通过大量的实战经验(海量数据的前提下)才能很好的掌握,属于中级、高级程序员应该掌握的内容。

大家在学习编程的时候,一定要形成自己的知识体系,建议大家通过思维导图来梳理知识点。比如说并发编程这块的知识点如下图所示。

最后,提几点建议吧。

  • 试着去造个轮子。虽然我们常说,不要重复造轮子,为了开发效率,可以不造轮子,但必须得具备造轮子的能力。
  • 多做技术分享。可以是写博客这种面向大众的,也可以是团队的内部分享,新人培训等。
  • 重视英语。学好英语可能和掌握编程语言一样重要,如果英语足够好,可以直接阅读一手的英语资料,接收知识的时间可能就比其他人早了不少。
  • 及时温习。网上说,人在一天后的记忆量只有 30%,所以我们上学的阶段各种考试,月考,周考,其实就是用来加强记忆的,很多题都是做过的,换汤不换药。

加油~

最后载送大家一本美团大佬手撕的 300 道 LeetCode 刷题笔记,纯 Java 版,对于算法薄弱或者需要提高的同学都十分受用(提起码:xs23):

https://pan.baidu.com/s/1xe3r8qDuKE99p2ZD9w2XrQ

我是沉默王二,我们下期见。

偷偷地告诉学弟学妹们一个高效学习编程的秘密!大学四年悄悄惊艳他们,嘘相关推荐

  1. 学弟学妹:大佬们,别劝了,学不动了,学不动了

    橡皮擦,一个逗趣的互联网高级网虫,为你带来新职场故事,搬来程序员敲门砖. 逛一逛CSDN的热榜,成了每天的日常操作,这里总是充满着乐趣. 这不,今天又看到一篇文章. <奉劝那些刚参加工作的学弟学 ...

  2. 【自我感悟致学弟学妹】大三上的感悟,何为真正优秀的人

    突然发现半年前写的小博客,不知道为什么被设置为私密了..还是放出来吧.. 我是计算机专业的,但是这篇文章不针对某个专业的同学,而是针对所有人. 明天就要考计算机三级和四级了,然而几乎没有复习的我已经放 ...

  3. 程序员的奋斗史(四十六)——大学断代史(十)——给学弟学妹们的忠告——终结篇

    文/温国兵 「写在前面」 大学断代史终于要完结了,就像一条再长的路总有终点一样.该系列文章前前后后写了一两个月,也该收尾了,至于收尾的文章,想了想,决定写写自己对学弟学妹的忠告.本篇文章以话题的形式呈 ...

  4. 奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些并发编程知识是你必须要掌握的!完整学习路线!!(建议收藏)

    大家好,我是冰河~~ 今天给大家带来一篇完整的并发编程学习路线,这应该是全网最全的并发编程学习路线了吧,希望能够为各位小伙伴们带来实质性的帮助. 如果这篇文章对大家有点帮助,小伙伴们点赞,收藏,评论, ...

  5. 【高考志愿填报-让你领先在起跑线上】学长给学弟学妹七点建议,字字珠玑!

    文章大纲 一:前言 二: 选择什么学校和选择什么专业 (一): 选择学校需要前需要考虑的事情 (二): 辅助你做决策的工具 (三): 选择什么专业 三: 计算机专业如何 (一) 什么是计算机类专业: ...

  6. 写给湘大计算机相关专业的学弟学妹们

    写给湘大计算机 写给湘大计算机相关专业的学弟学妹们 不管未来怎么样,但是作为一个大学四年真正奋斗过的学长,我觉得我比其他人更有资格写这样的一篇文章.希望能给湘大的学弟学妹们一些正能量. 奋斗篇 首先写 ...

  7. 给学弟学妹们几点建议

    专业介绍:软件工程专业推行高层次.实用型.复合型的工程科学技术教育,培养具有扎实的计算机理论基础.软件工程专业基础和国际最新前沿技术,能运用先进的工程化方法.技术和工具从事软件分析.设计.开发.维护等 ...

  8. 一个大二学生送给大一学弟学妹的建议

    博主简介:先简单的介绍一下我吧,本人是一名大二学生,来自四川.目前所学专业是人工智能,致力于在CSDN平台分享自己的学习内容. 我为什么要写这篇文章? 我来到CSDN也已经一年了,在这一年里面,我学会 ...

  9. 计算机考研【调剂心得体会】,给学弟学妹们的一些经验感想(希望对你们有所帮助)

    前言   本人为21考研考生,所报专业为计算机科学与技术,因为数学单科没过线导致无缘复试,开始了调剂.个人感觉调剂还蛮难的,尤其对于一战的考生来说,所以想把自己的一些心得分享给有需要的小伙伴叭,谈不上 ...

最新文章

  1. jhipster创建项目问答汇总_[恭喜JHipster社区喜提 VueJS !]
  2. 在python中使用关键字define定义函数_python自定义函数def的应用详解
  3. Servlet中使用RequestDispatcher调派请求--include
  4. web farm 讨论引出
  5. JavaScript,等比例缩放图片的函数,很好用。
  6. 小程序·云开发,属于小程序的全栈开发机遇
  7. JAVA编写的火车票售票系统
  8. android之uniapp调用weex的module
  9. PHP判断手机横向,如何用css和js移动端分别判断手机横竖屏的状态
  10. Oracle中文转拼音函数
  11. 云计算数据中心架构简图
  12. 湖南科技大学c语言上机题库,2018年湖南科技大学计算机科学与工程院824C语言程序设计与数据结构综合之C程序设计考研核心题库...
  13. 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
  14. 利用高德地图 API 显示地图信息
  15. 【面试题 - mysql】进阶篇 - 索引
  16. 远程桌面 连接栏不见无法退出
  17. 【神经网络】梯度消失与梯度爆炸问题
  18. python简单小游戏代码-零基础python教程-用Python设计你的第一个小游戏
  19. 计算机专业职业理想作文400字,理想的职业400字作文
  20. 小甲鱼《零基础学习Python》课后笔记(二十八):文件——因为懂你,所以永恒

热门文章

  1. 微信公众号基础功能搭建
  2. 旅游类APP-环境搭建
  3. 【旅游类APP源码】开发者案例开源,走过路过不可错过!
  4. TpLink路由访问控制
  5. AQS抽象队列同步器原理详解
  6. 百度地图让用户“私人定制“:一场语音定制背后的AI能力强势输出
  7. git拉取代码报错fatal Authentication failed for ‘httpxxxx.git‘‘解决方案
  8. 计算机专业毕业设计致谢,计算机毕业论文致谢范文3篇
  9. 科技巨头纷纷发力AI,智能硬件已来临,变现还会远吗?
  10. Android去除默认提示音