Java NIO 编程
3.1 Java NIO 基本介绍 Java NIO 全称 Java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO),是同步非阻塞的。 NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。【基本案例】 ...
3.1 Java NIO 基本介绍 Java NIO 全称 Java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO),是同步非阻塞的。 NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。【基本案例】 ...
2.1 I/O 模型 2.1.1 模型基本说明 I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。 Java 共支持 3 种网络编程模型 I/O 模式:BIO、NIO、AIO。 Java BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任...
1.1 本课程学习要求 本课程不适用于 0 基础的学员。 要求已经掌握了 Java 编程,主要技术构成:Java OOP 编程、Java 多线程编程、Java IO 编程、Java 网络编程、常用的 Java 设计模式(比如观察者模式,命令模式,职责链模式)、常用的数据结构(比如链表)。 本课程的《Netty 核心源码剖析章节》要求学员最好有项目开发和阅读源码的经历。 1...
git init #在当前目录新建一个 Git 代码库 git clone [url] # 下载一个项目和它的整个代码历史 git config --list # 显示当前的 Git 配置 git config -e [--global] # 编辑 Git 配置文件 git add # 添加指定文件到暂存区 git add -u # 只添加modified的文件到暂存区 g...
// Merge sort public int[] mergeSort(int[] array) { if (array == null || array.length <= 1) { return array; } return divide(array, 0, array.length - 1); } public int[] divid...
Max Depth of Binary Tree Leetcode https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,1...
最近公共祖先(Lowest Common Ancestor,简称 LCA)。 git pull 这个命令我们经常会用,它默认是使用 merge 方式将远端别人的修改拉到本地;如果带上参数 git pull -r,就会使用 rebase 的方式将远端修改拉到本地。 这二者最直观的区别就是:merge 方式合并的分支会看到很多「分叉」,而 rebase 方式合并的分支就是一条直线。但无论哪种...
Balanced Binary Tree Leetcode https://leetcode.cn/problems/balanced-binary-tree/ 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3, 9, 20, nu...
Preorder Traverse Leetcode https://leetcode.cn/problems/binary-tree-preorder-traversal/ 题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root = [1, null, 2, 3] 输出:[1, 2, 3] 示例 2: 输入:root = [] ...