zoukankan      html  css  js  c++  java
  • Java NIO系列之[说在前面的话]

    在开始这个系列文章之前,先聊一些题外话,说说我为什么要写Java NIO这个系列技术文章(不看完会错失一个亿的),因为Java NIO并不像JVM,中间件源码那么有吸引力,但这个技术点是java的基础,好多人开发者不注重基础的学习,而是喜欢做项目,get最新的技术点,其实我以前也是这样的,一味地做项目,总是了解最新的技术,把新技术运用到自己做的项目中,了解新技术本身是非常好的学习习惯,但是忽视了最基础的东西是值得反思的。

    其实我很久以前就有写技术文章,写博客的打算,一直迟迟没有产出,一是因为自己比较懒,最重要的是我认为自己的技术还没有到了能够产出高质量文章的程度,如果写博客只是为了记录自己的学习轨迹,以便自己复习的话,我认为完全没有必要发博客,自己做些笔记保存到印象笔记就够了,因为你发了博客,别人就可以搜到你的博客,然而你写的博客没有什么深度,甚至还存在很多的问题,对他人的学习不但没有帮助,反而还会误导读者,这一点我就深有感触,我看过好多人写的博客,写的很乱,没有条理可言,而且好多都有问题的,看到这样的文章真的让人很难受。

    还是要重申我的观点,仅代表我个人观点而已,写博客一定要认真,写完要多检查几遍,看看有没有错别字,知识有没有错误的地方,是否经过自己深入的思考。因为知识程度的差距,技术水平的有限,难免会有一些错误,书籍都有错误,何况我们个人的一些博客呢,但我们可以抱着对自己以及读者负责的态度,尽量减少自己的错误,在写一个技术博客的之前,一定要对技术点有充分的了解,研究到一定深度再写。

    我在写博客的时候,一定是我已经阅读了不止一本同类书籍,看过官方文档,撸过代码,看过源码才写的,通过看书,对一个技术有了整体的了解,再通过阅读同一个技术不同作者写的书,思考不同作者的行文思路,你会对一个技术点有更为深入的理解,因为每个作者的技术背景可能不同,写书时肯定都有自己的侧重点,当然也有重叠的内容,就当复习学过的知识了,然后就是一定要结合官方文档,官方文档也是最好的最权威的学习资料了,好多作者写书也是参考官方文档的,甚至有的书就是把官方文档翻译过来的。还有就是一定要写代码,不止写一遍,反正我写一遍是记不住的,尤其是跟着视频学习,一边看视频一边敲代码的,一定要不看视频和书籍把代码自己再写一遍,我就是这么做的,效果也还可以。在这之前我都是先把自己学习时写的笔记保存在印象笔记的,要写就一定认真地写,不然真的没有多大意义。

    那么我现在开始写博客了,是不是就意味着我的技术水平足以支撑我写出高质量有深度的博客文章了,不是的,我还在不断地学习中,我是一个渴望通过努力成为技术大牛的理想主义者,所以我一直在学习的过程中,还在不断地升级打怪的路上,只是我的学习重点发生了改变,由以前学习各种技术框架和做项目转变到现在的基础知识上来,这一切的转变都要从阿里的一次面试说起:

    众所周知,大家都知道大厂在招人时是很注重基础的,并且对技术的要求不止是会用的层面,而我以前学习技术恰恰是停留在会用的层面的,学习的知识很广,别人说出来的技术基本都了解过,做过的项目也不少,但就是感觉自己的技术能力的提升不是很大,所以我的面试结果大家想必已经知道了,最后挂在了算法上,基础掌握不牢。经过这次面试,我总结了自己的不足,知道了自己与真正的大佬的差距有多大,于是有了学习的动力和更高的目标,以后再战阿里,人要有梦想,万一哪天实现了呢。

    带着再战阿里的目标,于是我制定了更深入的学习计划,列出了要阅读的书籍,回归基础,深入学习io,并发等基础知识,要深入源码的研究,搞JVM,研读框架源码 (当然接下来也会有JVM,框架源码等专栏博客),在看书或是看教学视频的时候,一定需记笔记,整理思路,于是我开启了自己的博客之路。并且还开了自己的微信公众号,知乎专栏,头条号,就是要强迫自己更深入的学习,然后进行技术产出,理清思路,以便日后复习,并且要认真地写,分享自己的技术思考与学习过程。可能读者就要问了,你不是说担心写不出高质量的技术文章,怕误导读者吗?是的,以前不写博客就是出于这种考虑,但现在我没有了这种顾虑,现在我每个技术点都要读不止一本书,大量地写代码练习,研读源码,即使不能做到百分百没错,不能让所有读者满意,但是我也已经尽最大努力对自己负责,对读者负责,质量不高是因为能力有限,但最起码是用心在写。

    之所以先从NIO开始,是因为我在深入学习NIO的时候,想看一些大牛写的博客,辅助自己学习这一块的知识,但是我找了个遍都没有找到满意的文章,要么就是只有几篇,简单介绍下NIO和BIO的区别,NIO的用法,没有深入API源码,很不系统(我个人认为不深入源码讲解原理都是在耍流氓,并且我这人有强迫症,知识一定要成体系,要系统化,针对一个独立的技术点的博客文章也一样),要么就是把国外大佬写好的博客直接翻译过来,不加入自己的思考与理解。并且关于NIO这块的技术书籍也少的可怜(不知道是不是大佬们都不屑于这样小的技术点)。

    总之,学习起来比较费劲,可能有的小伙伴就要说了,网上那么多培训机构的教学视频,总有讲NIO的吧,况且看视频比看书和文章容易理解的多,还节省学习时间。是的,这点我不可否认,网上关于NIO的学习视频的确不少,看视频也容易理解,但是我认为好多的视频作为入门很合适,培训机构往往有教学时间的限制,大佬们平时又都有自己的工作要忙,所以几乎不可能在视频中带着你把所有的api都过一遍,更不用说深入研究了。要深入一项技术,看书和研读底层源码是最好不过的了,并且要不止一遍的看。接下来的NIO这个系列文章,我会把几乎每个api都过一遍,并且结合java8和java11的源码,java11有改动或新增的点我也会重点整理出来,还有就是尽量做到系统地分析一个技术点,不是浅尝辄止,如果那样就不能称之为系列文章了,当然了,每一个api的源码那么多,有的类上千行源码,我也不太可能把所有的源码都分析一遍,只能是分析一些我认为重要的代码。

    好了不说太多了,接下来用代码说话,希望我的文章能给读者学习这块知识带去一些帮助,期望优秀的你和我一起学习,共同成长。

  • 相关阅读:
    剑指offer[19]——顺时针打印矩阵
    剑指offer[17]——树的子结构
    剑指offer[16]——合并两个排序的链表
    剑指offer[15]——反转链表
    剑指offer[14]——链表中倒数第k个结点
    剑指offer[13]——调整数组顺序使奇数位于偶数前面
    剑指offer[12]——数值的整数次方
    剑指offer[11]——二进制中1的个数
    剑指offer[10]——矩形覆盖
    linux的基本命令
  • 原文地址:https://www.cnblogs.com/wildwolf0/p/10680938.html
Copyright © 2011-2022 走看看