JDK中对IO的操作提供io
和nio
两个包,在这两个包中可以看到在io
包中,类名多以Stream结尾,而nio
包中多以Buffer
结尾。Java中NIO与IO的最大区别是IO面向流(Stream)的,NIO是面向缓冲(Buffer)。面向流意味着每次从流中读一个或多个字节,直至读取所有字节,读取的内容没有被缓存在任何地方,而且是顺序读取,它不能前后移动流中的数据,如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。NIO的缓冲导向方法略有不同,数据读取到一个可以稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据(譬如读入缓冲区中的数据不是一条完整的数据,需要与下一次读取的内容拼接),而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。
盘点一下那些好玩的位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算即对数据的二进制直接操作,具有效率高的特点。在Java中,位运算有<<
(左移),>>
(右移),>>>
(无符号右移),&
(且),|
(或),^
(异或),~
(取反),其中~
(按位取反)是单目操作,其他都为双目运算。因为直接的位运算极其高效,通过合理的应用位运算能极大的提高程序的效率。
Scala之隐式转换(implicit)
Implicits in Scala refers to either a value that can be passed “automatically”, so to speak, or a conversion from one type to another that is made automatically.
大意是讲implicit
在scala中是指一个可以被自动转换的值,也就是说类型的转换是自动完成的。
Java中常用数据结构-Collection
java内置的数据结构中主要有Collection和Map两个接口实现的集合结构类,Collection用于存储数组形式的单一对象集合,Map使用Key-Value的键值对结构存储对象的集合。其中Collection结构下又主要有List, Set, Queue三种接口,如常用的ArrayList, LinkedList是List的主要实现,HashSet, TreeSet是Set的实现,PriorityQueue, ConcurrentLinkedQueue是Queue的实现,除此之外,BlockingQueue和Deque也是Queue的常用接口。(基于jdk1.8)
Linux下boot/grub/i386-pc/normal.mod未找到问题
启动linux系统时屏幕提示:1
2error: file ‘boot/grub/i386-pc/normal.mod’ not found
Entering rescue mode…
windows10和Ubuntu双系统,今天进入Ubuntu的时候出错,显示这个信息,顿时头大。