为了学到更多的新知识,我们经常会去网上搜索各种学习资料。或者,在学习、工作过程中遇到了解决不了的问题,我们也会去网上搜索答案(比如百度、谷歌一下)。这篇文章,主要想跟大家聊聊关于学习资料的选择。

建议

山寨

在日常生活中,有时稍有不慎,我们可能会买到一些让人哭笑不得的山寨商品,比如

  • 蓝月壳(正品:蓝月亮)
  • 娃啥啥(正品:娃哈哈)
  • adidogs(正品:adidas)
  • 六日兔(正品:大白兔)

谣言

有时也会在网上看到各种谣言、假新闻,比如在新冠疫情期间,就出现了很多谣言,这些造谣者还真是唯恐天不乱呀,我选了几则脑洞比较大的给大家“欣赏”一下。

所以,不管是购物,还是看新闻,官方渠道才是最靠谱的。

学习资料

我们在网上找学习资料时也是如此,肯定是优先选择官方资料最靠谱,不然也可能会遇到“山寨”的学习资料,最后导致自己吸收了错误的知识。我们要学习的很多软件开发技术,都源自西方国家(比如美国),因此很多官方资料都是全英文的,有时官方也会提供中文翻译版,或者会有一些热心的网友进行翻译。关于Java学习资料的选择,我给大家的核心建议是:不要完全相信任何非官方的技术资料!!!

非官方资料

网上的很多非官方资料都有以下特点:

  • 作者往往都是只按照自己的经验在写文章,但是这些经验就是对的么?不一定。很多知识点都是粗糙验证一下就得出结论,并没有考虑全面和严谨,也没有参考官方资料
  • 文章的抄袭现象也比较严重,看到写得有点道理的,就把它给抄了。你抄我的,我抄你的,只要有一个人的文章写错了,其他一大片人写的文章都是错的

推荐

Java的官方是Oracle公司,这里给大家推荐一个Oracle官方的Java SE学习资料:The Java Tutorial(全英文),觉得看英文费劲的话,可以用工具翻译一下。

错误资料

为了让大家充分认识到官方资料的重要性。下面给大家列举几则不同领域的错误资料。

  • 我并不认识作者,对作者也并无偏见,只是针对文章内容进行讨论
  • 如果你还没有学过相关的专业知识,看不懂文章的内容是正常的,也不需要你看懂,你只需要知道这篇文章大概哪里有错就行

数据结构之红黑树

这篇文章的标题是《史上最清晰的红黑树讲解(下)》。文章中的这幅图画得有问题,因为它根本就不是一颗红黑树,图一旦错了,后面的所有操作都是没有意义的。

下图是我在文章底下发表的个人浅见。

下图是其他网友的见解。有人表示质疑。也有人没看出有啥问题,并表示很赞。

C\C++的sizeof

这篇文章的标题是《C语言中简单的sizeof()函数》。不用看文章内容,因为标题就已经错了。在C\C++中,sizeof并不是函数,它是一个运算符,函数和运算符是有本质区别的。但凡作者懂一点点汇编语言的话,都可以很容易通过汇编语言去证明sizeof并不是一个函数。

CSS选择器[att|=val]

w3school这个网站估计很多学习前端开发的人都知道,里面有大量前端开发的资料。但是,一个网站很知名,并不代表它的内容完全正确,毕竟它并不是官方。所以,我并不会完全相信它里面的内容,也基本不会去这个网站查询资料。这里有一篇w3school关于CSS选择器的文章,关于属性选择器[att|=val]的描述,极其不严谨:

选择att属性值以"val"开头的所有元素

CSS的官方是W3C组织,再来看看W3C官方的描述

Represents an element with the att attribute, its value either being exactly "val" or beginning with "val" immediately followed by "-" (U+002D).

简单翻译一下,官方的大概意思如下:

选择att属性值刚好等于"val"或者以"val"开头并且后面紧跟着一个减号(-)

如果你还不能感受到w3schoolw3c官方描述的差异之大,我举一个实例。比如有以下4个元素

<div id="mj">div1</div>
<div id="mj-xmg">div2</div>
<div id="mj_xmg">div3</div>
<div id="mjxmg">div4</div>

假设我使用属性选择器[id=mj]

  • 按照w3school的描述,会选择div1、div2、div3、div4四个元素
  • 按照w3c官方的描述,只会选择div1、div2两个元素,div3、div4不符合要求

能感受两者描述的千差万别了吧?它们是完全不相同的两个意思!

Java中class的JDK版本

这篇文章的标题是《如何查看class文件的jdk版本》,于2015年7月30日发表。

上图中有3处低级错误,我都用红线画出来了。

  • 8个字节CA FE BA BE,正确说法应该是:4个字节CA FE BA BE
  • 4个字节00 00,正确说法应该是:2个字节00 00
  • 4个字节00 33,正确说法应该是:2个字节00 33

学过计算机的同学应该都知道这属于计算机常识,所以这是非常非常非常低级的错误。到了2019年,还是有别的作者转载了这篇文章,标题也是《如何查看class文件的jdk版本》,内容也是一模一样的,没做任何变动。4年过去了,依然还是很多人不知道这篇文章是错的。

我觉得大家多写技术博客、热爱分享是件很好的事情。但是如果大家在写文章的时候,能够多参考官方资料、多加验证后再发表出来,那么我们技术圈的文章质量就会越来越高,作者自身的技术水平也将真正变得越来越好。

另外,如果你经常写优质的技术博客,当你写到一定程度时,自然而然就会有出版社的编辑找你合作写书,机会都是留给有准备的人。当然,写书并不是一件容易的事,有很多严格的要求。

书中的错误

听我说完前面的几个错误示范,你可能会想:那我选择看技术书籍应该会好很多吧?毕竟书本应该是比较严谨的吧?我想说的是:你想多了!首先,很多出版社是不清楚图书内容对错和含金量的;其次,图书的内容是由图书作者编写的,跟他在网上写技术文章并无太大区别,就是格式不一样,图书有一套严格的格式要求。所以,不管是网上的技术文章,还是你平时看的某些技术书籍,都可能是有错误的。比如这本翻译的书籍《CSS权威指南》。

书中错误的地方我已经用红线框住。

来看一下W3C官方的说法:

A double bar (||) separates two or more options: one or more of them must occur, in any order.

简单翻译一下,官方的大概意思如下:

它们至少出现1个,而且是任意顺序

而《CSS权威指南》中说的是必须以先X后Y的顺序出现,跟官方的说法完全不相符。

官方文档的错误

看了这么多的错误示范,你可能又会想:那以后优先选择官方文档,总不会错了吧?是的,在我看来,这是最好最严谨的选择。不过,需要提醒的是,官方文档也是人写出来的,是人难免会出错,所以其实官方文档也可能会有错误。比如之前我在阅读W3C官方文档时就发现了一处错误,是一篇关于background属性的介绍。

  • 错误写法:background-size: 10em 10em;
  • 正确写法:background-size: 10em auto;

我于2017年12月6日给W3C官方提交了修改建议,后来在2018年1月13日被W3C官方采纳了,说明这的确是个错误。

虽然官方文档也可能会有错误,但是这种情况是少之又少的,而且一般都不会是原则性、很离谱的错误。总之,优先选择官方文档就没错了!还是那句话:不要完全相信任何非官方的技术资料!!!

最后的提醒

我写的文章,也属于非官方资料

  • 大家看的时候也要持保留态度,也是一样,不要完全相信
  • 官方资料大多都是英文,而且西方人的阅读习惯和我们不太一样,所以这其实给初学者带来了不小的学习困难
  • 《秒懂Java》系列的内容是以官方文档为主要参考资料,经过一系列严谨查证后,最后再得出结论
  • 我会尽力使用通俗易懂的语言,让大家能够轻松愉快地学到严谨又全面的知识
  • 如果大家发现了我哪里不严谨的,希望能够直接指出,感激不尽

我一直都觉得:在学习技术的过程中,最重要的阶段就是初学阶段,你第一次接触的学习资料极其关键,一定要找一份靠谱、优质的学习资料。这就好学习讲普通话。

  • 如果你一开始是跟着广东人学习讲普通话,那么你的普通话可能就会带有广东口音,就算你后期改为跟着北京人学习普通话,且经过了长期的刻意训练,可能还是会有那么一点点的广东口音
  • 但是,如果你一开始就跟着北京人学习讲普通话,那么你的普通话从一开始就是非常正宗的,就算后面经常跟广东人交流,也不会把自己的普通话给带偏

github

简介

最后,给大家介绍一个作为程序员(软件开发工程师)必须要知道的网站:github

  • 它是全球最大的程序员交流网站
  • 由于程序员以男性居多,所以它也被网友调侃为是全球最大的同性交流网站GayHub

全世界的程序员都可以将自己的编程作品(完整的软件、代码片段等)上传到github,共享给其他的程序员去阅读、学习、下载、修改,所以你也可以理解为github是一个代码仓库。这种将自己的代码分享、开放出去的操作,我们叫做开源,也就是开放源代码(Open Source Code)。

如果你立志要成为一名优秀的程序员,那么就点击“Sign up”注册一个github账号吧。

提高开发效率

以后你在开发过程会经常用到这个网站。比如当你不知道某个功能该如何实现时,就可以去github上搜索相关的代码,很多时候你想实现的功能,别人都已经实现过了,直接把别人写好的优秀代码下载到自己的项目中即可。这样的话,你就不用去亲手写这段代码了,极大地提高了开发效率。

学习交流

github集结了全世界各地的优秀程序员,他们开源了非常多的优秀作品,都值得我们细细品读和学习,我们能从中学到非常多的代码编写技巧、编程思想等,有助于提高我们自身的技术实力。

你也可以给别人的作品提交代码(比如修改建议、新的功能),成为该作品的贡献者之一,与全世界的其他程序员一起来维护这个作品,让这个作品越来越好。

当你的开发经验积累到一定程度时,手里肯定也攒了很多优秀的编程作品,你也可以考虑把它们开源到github。全世界的其他程序员也可以给你提交代码,跟你一起来维护这个作品,你必然也能从中学到不少技术。

这是我的github主页:https://github.com/CoderMJLee,我也很喜欢开源自己平时的编程作品,点击Follow即可关注作者的动态。

更多的机会

github上有个点赞功能,别人给你的作品点一个赞,你就会得到一颗星星(star)。一般星星数量越多,就说明你的作品越受认可越优秀。一般有上千颗星星的作品,都算是不错的作品。当然,星星数量并不是绝对的参考标准,不是说星星数量少的作品就一定不行。

现在很多公司的招聘需求中,都有直接表明:拥有或参与过github优秀作品是加分项。

当你在github上积累到一定程度时,也可能会有大厂HR主动邀请你加入他们团队。在2017年初时,我曾收到过微软HR的面试邀请,电话沟通了一番,由于当时我已经在创业,并且他们工作地点又在上海,就没有考虑这次机会。当时也有聊到薪资要求,我说我之前是7位数年薪,她说只要达到技术要求,这个是没有问题的。我举这个例子,并不是想说明我的个人能力如何,因为这仅仅是面试邀请,面试是否能通过,这还是个未知数。我只不过是想借助这个例子告诉大家github这个平台对我们来说很重要。

如果你是名初学者,现在也不用想太多,一步一步来,慢慢积累,积累到一定程度,机会自然会找上门,该有的都会有的!但是如果你没积累好,就算会有机会摆在你面前,你也抓不住,眼睁睁看着机会从手中溜走!最后送大家一句我一直都非常喜欢的8个字:你若盛开,蝴蝶自来!加油!

【秒懂Java】【第1章_初识Java】04_学习资料的更多相关文章

  1. 【秒懂Java】【第1章_初识Java】02_软件开发

    通过上一篇文章<01_编程语言>,我们了解到 Java是众多编程语言中的其中一种 编程语言可以用来开发软件 因此,我们即将要学习的Java技术,是属于软件开发的范畴.那软件开发的前景如何呢 ...

  2. 【秒懂Java】【第1章_初识Java】01_编程语言

    各位小伙伴们好哇!从今日起,我将开始更新<秒懂Java>系列文章,从0开始讲解Java的方方面面,后面也将推出配套的视频版,欢迎大家保持关注! 我会尽力办到:在保证通俗易懂的同时,不丢失知 ...

  3. JAVA程序猿怎么才干高速查找到学习资料?

    JAVA程序猿怎么才干高速查找到学习资料? JAVA学习资料在互联网上较为零散,并且大多是英文的.以下介绍3种方式,让程序猿能够高速地找到自己想要的资料. 一.导航站点: 有非常多类似hao123的站 ...

  4. 《Thinking in Java》十七章_容器深入研究_练习12(Page484)

    练习12: 练习使用HashMap / LinkedHashMap / TreeMap import java.util.HashMap; import java.util.LinkedHashMap ...

  5. 《Thinking in Java》十七章_容器深入研究_练习13(Page484)

    练习13: 单词计数器 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFou ...

  6. 第一章:初识JAVA

    一:计算机语言发展史 机器语言:典型的二进制文件和计算机交流. 汇编语言: 通过大量的标识符表示一些基本操作来和计算机做交流. 高级语言:通过常见的英语指令来编写程序,完成沟通 常见高级语言 Java ...

  7. 第一章: 初识Java

    计算机程序:计算机为完成某些功能产生的一系列有序指令集合. Java技术包括:JavaSE(标准版) JavaEE(企业版) ---JavaME(移动版) 开发Java程序步骤:1.编写 2.编译 3 ...

  8. java OOP第二章_封装

    一. 封装: 属性通过private访问修饰符将其设置为私有的,只有当前类中可以访问,同时提供通过public访问修饰符的公共方法可以给任何类中访问. 通常针对属性提供公共的setter方法进行赋值, ...

  9. 《Thinking in Java》十七章_容器深入研究_练习14(Page486)

    练习14 Properties的继承树如下:

随机推荐

  1. ASP.NET MVC 数据传递进阶 从数据库拿到数据后的三种方式

    目录 回顾 数据 显示 因为这个小练习有EF的一些东西,我们来回顾一下. 一.回顾 回顾一点EF的知识怎么生成数据库模型. 1.首先我们在Models文件夹右键添加新建项,在数据分栏下有ADO.NET ...

  2. Java实现 蓝桥杯VIP 算法训练 -2进制(暴力)

    试题 算法训练 -2进制 问题描述 给出1个十进制整数N,计算出它的-2进制表示. 输入格式 第一行:一个整数N,表示要转换的十进制数. 输出格式 第一行:N的-2进制表示. 样例输入 -13 样例输 ...

  3. Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵

    螺旋矩阵 题目 问题描述 对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵. 例如,一个 4 行 5 列的螺旋矩阵如下: 1 2 3 4 5 ...

  4. Java实现 LeetCode 463 岛屿的周长

    463. 岛屿的周长 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相连(对角线方向不相连).整个网格被水完全包围,但其中恰好有一个岛屿(或者 ...

  5. Java实现 LeetCode 239 滑动窗口最大值

    239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最 ...

  6. Java实现 蓝桥杯VIP 算法提高 change

    算法提高 change 时间限制:1.0s 内存限制:256.0MB 问题描述 数组A中共有n个元素,初始全为0.你可以对数组进行两种操作:1.将数组中的一个元素加1:2.将数组中所有元素乘2.求将数 ...

  7. 我的Dos笔记

    DOS笔记:DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”[drive:][path][filename] 指定要列出的驱动器.目录和/或文件.    /A   ...

  8. Linux内核配置编译及基本调试方法

    一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...

  9. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  10. 2 个步骤为 VSCode 配置工程头文件路径!

    我用 VSCode 来 Coding,这个编辑器需要自己配置头文件路径,就是自动建立一个 c_cpp_properties.json 文件来管理头文件路径,然后需要用哪些库就手动加上即可,方法很简单, ...