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的源码那么多,有的类上千行源码,我也不太可能把所有的源码都分析一遍,只能是分析一些我认为重要的代码。
好了不说太多了,接下来用代码说话,希望我的文章能给读者学习这块知识带去一些帮助,期望优秀的你和我一起学习,共同成长。
Java NIO系列之[说在前面的话]的更多相关文章
- java nio系列文章
java nio系列教程 基于NIO的Client/Server程序实践 (推荐) java nio与并发编程相关电子书籍 (访问密码 48dd) 理解NIO nio学习记录 图解ByteBuff ...
- Java NIO系列1-概观
Java NIO系列1-概观 Java NIO.中间的N你既可以理解为(new),也就是新的IO,相对于java1.5之前的IO它确实是新的;也可以理解为(no-blocking),也就是非阻塞的IO ...
- Java NIO系列教程(八)JDK AIO编程
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- Java NIO系列教程(七) selector原理 Epoll版的Selector
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- Java NIO系列教程(三) Channel之Socket通道
目录: <Java NIO系列教程(二) Channel> <Java NIO系列教程(三) Channel之Socket通道> 在<Java NIO系列教程(二) Ch ...
- Java NIO系列教程(二) Channel通道介绍及FileChannel详解
目录: <Java NIO系列教程(二) Channel> <Java NIO系列教程(三) Channel之Socket通道> Channel是一个通道,可以通过它读取和写入 ...
- Java NIO系列教程(十一) Java NIO 与 IO
Java NIO系列教程(十一) Java NIO与IO 当学习了 Java NIO 和 IO 的 API 后,一个问题马上涌入脑海: 我应该何时使用 IO,何时使用 NIO 呢?在本文中,我会尽量清 ...
- Java NIO系列教程(十)DatagramChannel
Java NIO系列教程(十)DatagramChannel 转载自并发编程网 – ifeve.com,本文链接地址: Java NIO系列教程(十) Java NIO DatagramChannel
- Java NIO系列教程(四) Scatter 和 Gather
Java NIO系列教程(四) Scatter 和 Gather Java NIO 开始支持 scatter/gather,scatter/gather 用于描述从 Channel(译者注:Chann ...
- Java NIO系列教程(三-十二) Buffer
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...
随机推荐
- python初步编写用户登录
python初步编写用户登录 python编写用户登录 用python写一个脚本,使得这个脚本在执行后,可以产生如下的效果: 1.用户的账号为:root 密码为:westos 2.用户账号和密码均输 ...
- linux初学者-数据库管理MariaDB篇
linux初学者-数据库管理MariaDB篇 MariaDB是一种数据库管理系统,是MySQL的一个分支,但是比MySQL更加优秀,可以说是MySQL的替代品.MariaDB使用的是SQL语句.下文将 ...
- Win10系统下安装labelme,json文件批量转化
一.安装环境:windows10,anaconda3,python3.6 由于框架maskrcnn需要json数据集,在没安装labelme环境和跑深度学习之前,我安装的是anacon ...
- poj 1455 Crazy tea party
这道题第一眼看去很难,其实不然,短短几行代码就搞定了. 说一下大概思路,如果是排成一排的n个人,如 1 2 3 4 5 6 7 8 我们要变成 8 7 6 5 4 3 2 1 需要交换 28次,找规律 ...
- spring boot 学习笔记(二)之打包
一.叙述 spring boot 在 pom 中可以配置成 packaging 为 jar ,这样打包出来的就是一个 jar 包,可以通过 Java 命令直接运行, Java 命令为: java - ...
- Java 设置PDF文档浏览偏好
在查看PDF文档时,可进行一些浏览偏好设置,例如是否全屏浏览.隐藏或显示菜单栏/工具栏.设置页面布局模式等,下面将通过Java编程的方式来演示如何设置. 使用工具: Free Spire.PDF fo ...
- SQL Labs刷题补坑记录(less31-less53)
LESS31: 双引号直接报错,那么肯定可以报错注入,并且也过滤了一些东西,^异或没有过滤,异或真香 -1" and (if(length(database())=8,1,0)) and & ...
- java学习中碰到的疑惑和解答(一)
今天写一个接口的时候发现,接口的方法不需要写修饰符,直接写数据类型加上方法名(参数)即可通过编译. import java.util.List; import com.bjm.pojo.Flower; ...
- 什么是HTML,HTML的简介,HTML结构
html:超文本标记语言(Hyper Text Markup Language) ==============基本结构================= <html><!--最外层为 ...
- 建立第一个G2图表
Step1:引进G2脚本 方法一:引入在线脚本 <script src="https://gw.alipayobjects.com/os/lib/antv/g2/3.4.10/dist ...