摘要: 定义 Netty 提供异步的、基于事件驱动的网络应用程序框架,用于快速开发高性能的、高可靠的网络IO程序。 原生 NIO 存在的问题 NIO 类库和 API 复杂,使用门槛高。需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等 阅读全文
posted @ 2020-08-21 00:02 吹不散的流云 阅读(20) 评论(0) 推荐(0) 编辑
摘要: My first blog! 阅读全文
posted @ 2020-08-12 18:25 吹不散的流云 阅读(101) 评论(1) 推荐(1) 编辑
摘要: title: 算法-归并排序 date: 2020-06-30 01:28:52 tags: Algorithm category: Algorithm 对两个有序数组进行排序: 将arr数组中,左右两个有序数组分别复制到两个数组中,逐个比较,再放到原数组中,这样原数组有序。(或者利用双指针遍历,复 阅读全文
posted @ 2020-06-30 01:28 吹不散的流云 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 堆: 需满足两个条件: 1、是一个完全二叉树 2、parent > child (大顶堆) 完全二叉树,确保可以用数组来表示,并且从任意节点开始出发,可以轻松得到其父节点和两个子节点。 对于节点i,parent = (i - 1) / 2, c1 = i * 2 + 1, c2 = i * 2 + 阅读全文
posted @ 2020-06-21 17:25 吹不散的流云 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要使用线程池 线程池复用线程有以下几点优点: 减少资源创建 ⇒ 减少内存开销,创建线程占用内存。使用 new Thread 每次启动线程都需要进行对象和线程; 降低系统开销 ⇒ 创建线程需要时间,会延迟处理的请求; 提高稳定稳定性 ⇒ 避免无限创建线程引起的 OOM; 功能更强大 ⇒ 提供 阅读全文
posted @ 2020-03-30 23:59 吹不散的流云 阅读(98) 评论(0) 推荐(0) 编辑
摘要: J.U.C 是 java.util.concurrent 的缩写,是 jdk 的并发包,包含了很多并发相关的类。下面介绍常用的类。 一、Atomic 原子操作类 1. 原子更新基本类型 使用原子的方式更新基本类型,Atomic 包提供了以下 3 个类: AtomicBoolean AtomicInt 阅读全文
posted @ 2020-03-29 16:46 吹不散的流云 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一、安全发布 1. 对象发布与逸出 发布对象:使对象能够在当前作用域之外的代码中使用 逸出:某个不应该发布的对象被发布 (1)变量逸出原有作用域 程序示例: public class N00_Test { private String[] strs = {"1", "2", "3"}; public 阅读全文
posted @ 2020-03-28 00:23 吹不散的流云 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、线程安全 1. 线程安全 可以简单的理解为:一个方法或者一个实例可以在多线程环境中使用而不会出现问题。 2. 线程不安全的原因 多个线程使用了相同的资源,如同一内存区(变量、数组或对象)、系统(数据库、web服务等)或文件等。更准确的说,是多个线程对同一资源进行了写操作。多个线程只读取相同的资源 阅读全文
posted @ 2020-03-24 03:09 吹不散的流云 阅读(111) 评论(0) 推荐(0) 编辑
摘要: date: 2019-08-31 Demo QuartzSample.java public class QuartzSample { public static void main(String[] args) throws SchedulerException { StdSchedulerFac 阅读全文
posted @ 2020-01-17 00:28 吹不散的流云 阅读(470) 评论(0) 推荐(0) 编辑
摘要: date: 2019-04-07 00:48 一、基本流程 1、初始化属性集合和数据集合 2、从数据集中选择最优划分属性,并以该属性为当前决策节点 3、更新数据集合和属性集合(删除掉上一步中使用的属性,并按照属性值来划分不同分支的数据集合) 4、依次对每种取值情况下的子集重复第2步 5、若子集只包含 阅读全文
posted @ 2020-01-15 00:28 吹不散的流云 阅读(236) 评论(0) 推荐(0) 编辑