
Java 基础篇
风雨湖
这个作者很懒,什么都没留下…
展开
-
Java NIO系列教程(一) Java NIO 概述
原文链接Java NIO由以下几个核心部分组成:channelbufferselector虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。Channe...转载 2019-04-06 12:21:29 · 101 阅读 · 0 评论 -
java8 方法引用
一、概述在学习lambda表达式之后,我们通常使用lambda表达式来创建匿名方法。然而,有时候我们仅仅是调用了一个已存在的方法。如下:Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2));在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法。Arrays.sort(stringsAr...转载 2019-04-26 10:47:09 · 146 阅读 · 0 评论 -
Java8 函数式接口
必看:深入学习Java8中的函数式接口 引言目前由于系统已经全面切换为JDK8,所以有必要系统的了解一下Java8的一些新特性,以便后续在日常工作中可以使用一些高级特性来提高编程效率。因为Java8引入了函数式接口,在java.util.function包含了几大类函数式接口声明。这里第一篇主要研究一下Functi...转载 2019-04-26 09:42:16 · 156 阅读 · 0 评论 -
Java NIO系列教程(十二) Java NIO与IO
原文链接当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IONIO面向流面向缓冲阻塞IO...转载 2019-04-07 11:09:10 · 157 阅读 · 0 评论 -
Java NIO系列教程(十一) Pipe
原文链接创建管道写入管道从管道中读取Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:Pipe pipe = Pipe.open();写入管道要向管道写数据,需要访问sink通道。像这样:...转载 2019-04-07 10:07:56 · 235 阅读 · 0 评论 -
Java NIO系列教程(十) DatagramChannel
原文链接打开DatagramChannel接收数据发送数据连接到特定的地址Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。打开 DatagramChannel下面是 DatagramChannel 的打开方式:DatagramChannel channel = ...转载 2019-04-07 09:35:23 · 175 阅读 · 0 评论 -
Java NIO系列教程(九) ServerSocketChannel
原文链接打开ServerSocketChannel关闭ServerSocketChannel监听新进来的连接非阻塞模式Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子:ServerSo...转载 2019-04-07 09:10:32 · 110 阅读 · 0 评论 -
Java NIO系列教程(八) SocketChannel
原文链接打开SocketChannel关闭SocketChannel从SocketChannel读取写入SocketChannel非阻塞模式 connect() write() &nb...转载 2019-04-06 22:05:17 · 152 阅读 · 0 评论 -
Java NIO系列教程(七) FileChannel
原文链接Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFile来...转载 2019-04-06 21:34:06 · 155 阅读 · 0 评论 -
Java NIO系列教程(六) Selector
原文链接Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道SelectionKey通过Selector选择通道wakeUp()clo...转载 2019-04-06 21:20:50 · 114 阅读 · 0 评论 -
Java NIO系列教程(五) 通道之间的数据传输
原文链接在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此通...转载 2019-04-06 20:32:06 · 118 阅读 · 0 评论 -
Java NIO系列教程(四) Scatter/Gather
原文链接Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集...转载 2019-04-06 20:11:07 · 138 阅读 · 0 评论 -
Java NIO系列教程(三) Buffer
原文链接Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。Buffer的基本用法使用Buffer读写数据一般遵循以下四个步骤:写入数据到Buffer调用flip()方法从Bu...转载 2019-04-06 13:35:13 · 126 阅读 · 0 评论 -
Java NIO系列教程(二) Channel
原文链接Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:Channel的实现这些是Java NIO中最重要的通道的实现:FileChanne...转载 2019-04-06 12:59:02 · 743 阅读 · 0 评论 -
Java8 Lambda表达式
lambda表达式入门理解:1.调用lambda表达式的函数必须包含一个函数式接口作为参数;2.lambda表达式其实就是对函数式接口的简写,因为函数式接口只有一个抽象方法;3.lambda表达式: ->左边是该匿名函数的参数 ->右边是该匿名函数要执行的代码测试代码public class ConsumerTest { public static void...原创 2019-04-24 17:33:15 · 129 阅读 · 0 评论