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

建议

山寨

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

  • 蓝月壳(正品:蓝月亮)
  • 娃啥啥(正品:娃哈哈)
  • 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. Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

    字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...

  2. Java实现 蓝桥杯VIP 算法提高 字符串跳步

    问题描述 给定一个字符串,你需要从第start位开始每隔step位输出字符串对应位置上的字符. 输入格式 第一行一个只包含小写字母的字符串. 第二行两个非负整数start和step,意义见上. 输出格 ...

  3. Java实现 洛谷 P1047 校门外的树

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = ...

  4. Java实现 洛谷 P1000 超级玛丽游戏

    public class Main { public static void main(String[] args){ System.out.println(" ********" ...

  5. java实现角谷步数

    你听说过角谷猜想吗? 任意的正整数,比如 5, 我们从它开始,如下规则计算: 如果是偶数,则除以2,如果是奇数,则乘以3再加1. 如此循环,最终必会得到"1" ! 比如 5 的处理 ...

  6. java实现第七届蓝桥杯方格填数

    方格填数 题目描述 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显示 ...

  7. svg 贝塞尔曲线图解(记录)

    path路径绘制中,绘制贝塞尔曲线的命令包括: Q 二次贝赛尔曲线 x1,y1 x,y T 平滑二次贝塞尔曲线 x,y C 曲线(curveto) x1,y1 x2,y2 x,y S 平滑曲线 x2, ...

  8. iOS-Code Data的快速体验

    Code Data Core Data 是iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据.使用Core Data框架,程序员可以很轻松有效地通过面向对象的接口管理数据 ...

  9. InstallShield 2015 Limited Edition 打包教程

    InstallShield 2015 Limited Edition 打包教程 右键解决方案,新增项目,选择其他项目类型,安装和部署. InstallShield2015可以免费使用,但需要下载.安装 ...

  10. CenterOS7 修改 SSH 端口

    首先修改 /etc/ssh/sshd_config 文件中的 Port.修改前一定要备份 可以同时启用多个Port所以最好先追加一个端口,新端口校验没问题之后再把原端口删除 防火墙设置 # 永久开放端 ...