Java NIO 中的 SocketChannel 是一个连接到 TCP 网络套接字的通道。可以通过以下 2 种方式创建 SocketChannel:打开一个 SocketChannel 并连接到互联网上的某台服务器。一个新连接到达 ServerSocketChannel 时,会创建一个 SocketChannel。打开 SocketChannel下面是 SocketChannel 的打开方式:SocketChannel socketChannel = SocketChannel.open();socketChannel.
Java NIO 中的 FileChannel 是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel 无法设置为非阻塞模式,它总是运行在阻塞模式下。打开 FileChannel在使用 FileChannel 之前,必须先打开它。但是,我们无法直接打开一个 FileChannel,需要通过使用一个 InputStream、OutputStream 或 RandomAccessFile 来获取一个 FileChannel 实例。
Selector(选择器)是 Java NIO 中能够检测一到多个 NIO 通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个 channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用 Selector?Selector 的创建向 Selector 注册通道SelectionKey通过 Selector 选择通道wakeUp()close()完整的示例为什么使用 Selector?
在 Java NIO 中,如果两个通道中有一个是 FileChannel,那你可以直接将数据从一个 channel(译者注:channel 中文常译作通道)传输到另外一个 channel。transferFrom()FileChannel 的 transferFrom() 方法可以将数据从源通道传输到 FileChannel 中(译者注:这个方法在 JDK 文档中的解释为将字节从给定的可读取字节通道传输到此通道的文件中)。
Java NIO 开始支持 scatter/gather,scatter/gather 用于描述从 Channel(译者注:Channel 在中文经常翻译为通道)中读取或者写入到 Channel 的操作。 分散(scatter)从 Channel 中读取是指在读操作时将读取的数据写入多个 buffer 中。因此,Channel 将从 Channel 中读取的数据 “分散(scatter)” 到多个 Buffer 中。
Java NIO 中的 Buffer 用于和 NIO 通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成 NIO Buffer 对象,并提供了一组方法,用来方便的访问该块内存。
Java NIO 的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个 Buffer,或者总是要从一个 Buffer 中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。
Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然 Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的 API。其它组件,如 Pipe 和 FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。
Java NIO(New IO)是一个可以替代标准 Java IO API 的 IO API(从 Java 1.4 开始),Java NIO 提供了与标准 IO 不同的 IO 工作方式。本教程讲解了 Java NIO 的三个核心组件,并介绍了跟核心组件相关的内容,旨在帮助读者 NIO 的原理。适用人群本教程是 Java 中高级教程,帮助那些想要学习 Java 并发的开发者。学习前提学习本教程前,你需要了解 Java 这门开发语言。
简介除了 Artisan 本身提供的命令之外,您也可以为您的应用程序建立属于你自己的命令。你可以将自定义命令存放在 app/Console/commands 目录底下;然而,您也可以任意选择存放位置,只要您的命令能够被 composer.json 自动加载。
介绍Artisan 是 Laravel 内置的命令行接口。它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。用法列出所有可用的命令要查看所有可以使用的 Artisan 命令,你可以使用 list 命令:php artisan list浏览命令的帮助画面每个命令都包含一个显示并描述这个命令能够接受哪些参数和选项的「帮助画面」。
介绍Redis 是开源,先进的键值对保存库。由于它可用的键包含了 字串、哈希、列表、集合 和 有序集合,因此常被称作数据结构服务器。在使用 Redis 之前,你需要经由 Composer 将 predis/predis 扩展包装在 Laravel 中。提醒: 如果你用 PECL 安装了 Redis PHP extension,则需要重命名 config/app.php 里的 Redis 别名。
介绍迁移是一种数据库的版本控制。可以让团队在修改数据库结构的同时,保持彼此的进度一致。迁移通常会和 结构生成器 一起使用,可以简单的管理数据库结构。
介绍Laravel 的结构生成器 (Schema) 提供一个与数据库无关的数据表产生方法,它可以很好的处理 Laravel 支持的各种数据库类型,并且在不同系统间提供一致性的 API 操作。建立与删除数据表要建立一个新的数据表,可使用Schema::create 方法:Schema::create('users', function($table){ $table->increments('id');});
介绍Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库的互动。 每个数据库表会和一个对应的「模型」互动。在开始之前,记得把config/database.php 里的数据库连接配置好。基本用法我们先从建立一个 Eloquent 模型开始。模型通常放在app 目录下,但是您可以将它们放在任何地方,只要能通过 composer.json 自动载入。
介绍数据库查询构造器 (query builder) 提供方便、流畅的接口,用来建立及执行数据库查找语法。在你的应用程序里面,它可以被使用在大部分的数据库操作,而且它在所有支持的数据库系统上都可以执行。注意: Laravel 查询构造器使用 PDO 参数绑定,以保护应用程序免于 SQL 注入,因此传入的参数不需额外转义特殊字符。
配置Laravel 让连接数据库和执行查找变得相当容易。数据库相关配置文件都在 config/database.php。 在这个文件你可以定义所有的数据库连接,以及指定默认的数据库连接。默认文件中已经有所有支持的数据库系统例子了。目前 Laravel 支持四种数据库系统: MySQL、Postgres、SQLite、以及 SQL Server。
基本用法Laravel 通过 Validation 类让您可以简单、方便的验证数据正确性及查看相应的验证错误信息。基本验证例子$validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5'));上文中传递给 make 这个方法的第一个参数用来设定所需要被验证的数据名称,第二个参数设定该数据可被接受的规则。
介绍Laravel 在建立时就有考虑到单元测试。事实上,它支持立即使用被引入的 PHPUnit 做测试,而且已经为你的应用程序建立了phpunit.xml 文件。在tests 文件夹有提供一个测试例子。在安装新 Laravel 应用程序之后,只要在命令行上执行phpunit 来进行测试流程。定义并执行测试要建立一个测试案例,只要在tests 文件夹建立新的测试文件。
Blade 模板Blade 是 Laravel 所提供的一个简单却又非常强大的模板引擎。不像控制器页面布局,Blade 是使用模板继承(template inheritance) 和区块(sections)。所有的 Blade 模板后缀名都要命名为.blade.php。定义一个 Blade 页面布局<!-- Stored in resources/views/layouts/master.blade.php --><html> <body>
关注时代Java