`
文章列表
原文:《Java NIO Buffer》 Buffer 与 Channel 结合使用:从 Channel 读取数据到 Buffer,或 将 Buffer 中的 Channel 写入到 Buffer。Buffer 内部就是一个内存块。NIO 将该内存块包装成一个 Buffer 对象,以方便对该内存块的操作。 Buffer 基本使用 ...
原文:《Java NIO Channel》 Channel vs Stream Stream 是单向的。要么是输入流(读数据),要么是输出流(写数据)。Channel 可以是双向的。既可以从 Channel 读取数据,又可以向 Channel 写入数据 Channel 支持异步读写;Stream 都是同步操作 Channel 总是与 Buffer 合作:将数据读取到 Buffer,或将 Buffer 中的数据写入到 Channel   常见 Channel 类 FileChannel:文件读写 DatagramChannel:UDP 通信 SocketCh ...
原文:《Java NIO Tutorial》、《Java NIO Overview》 Java NIO(New IO) 是 Java 1.4 引入的 IO API。它提供了一种不同的IO操作方式,用于替代原标准的Java IO 和 网络通信API。 Java NIO包含三个核心组件:Channel、Buffer、Selector。   Channel 和 Buf ...
简述 Java 的 IO 方式大致可分为 3 类:BIO、NIO、NIO 2(AIO) 这 3 类 IO 方式在 同步/异步 和 阻塞/非阻塞 方面有明显区别。 同步 vs 异步 同步:后续任务必须等当前调用返回后再执行。 异步:后续任务不需要等待当前调用返回,依靠事件、回调等机制实现任务间次关系。 阻塞 vs 非阻塞 阻塞:执行阻塞操作时,当前线程会处于阻塞状态,无法执行其它任务,只有条件就绪后才能继续。 非阻塞:不管操作是否结束,当前线程直接返回,由后台其它线程继续处理。     BIO   BIO 指传统的 java.io 包,也包 ...
开放地址法 基本思想:当发生哈希冲突时,即两条记录对应的地址相同(假设都为 p),基于该地址 p 生成另一个地址 p1 作为后一条记录的存储地址。如果在 p1 上也发生了冲突,则基于 p1 生成下一个地址,直到找到一个不冲突的地址   再哈希法 基本思想:有多个不同的哈希函数用于计算记录的哈希值。当发生哈希冲突时,逐个使用其它哈希函数计算哈希值,获得存储地址,直到不冲突。 这种方法不易产生数据聚集,计算时间较长,删除数据不方便。   链地址法 基本思想:将产生哈希冲突的记录存到一个链表中,哈希表中存的是该链表的头 这种方法适用于经常进行插入和删除的情况。 ...
  HashMap 这是最常使用的哈希表实现。 非线程安全。 在理想情况下,如果哈希散列正常,put 和 get 等操作可达到常数时间的性能。 HashMap 使用了 链地址法 来解决哈希冲突;当冲突元素较多时又会用 树结构 替代单链表, ...
抽象类 AbstractList、AbstractSet、AbstractQueue 包含了这些接口的通用部分。   List List 是有序集合,提供了方便的访问、插入、删除等操作。 ArrayList、LinkedList、Vector 都实现了 List 接口 它们的设计目标不同,具体行为、性能和线程安全方面也不同。   ArrayList 这是应用最广泛的动态数组。非线程安全;扩容时会增加 50% 扩容方式就是新建一个更大的内部数组,将原内部数组的数据拷贝到新数组中   Vector 这是Java早期提供的线程安全的动态数组。扩容时会增加 ...
Java原始数据类型 Java中的变量类型分为两大类:原始数据类型 和 引用类型。 原始数据类型就是常说的值类型,共8种。 它们有各自的包装类型,提供了一些非常有用的基本操作。而且包装类都是不可变类(无法被继承、也 ...
配置单 配件 价格 CPU:i5 8500 1244 显示器:戴尔 SP2318H 979 内存:威刚 万紫千红 2666MHz 8G 2条 776 主板:映泰 B360MHD PRO2 399 硬盘:东芝 Q200EX M.2 240G 349 机箱:先马 小黑洞 229 电源:航嘉 Jumper 450B 219 CPU散热器:大镰刀 赤兔马 STB120 89 键盘:戴尔 KB216 39 总价 4323   前言 很早就想买个台式机放家里日常使用。但是因为各方面条件不成熟(主要是 ...
Java 反射机制 很多编程语言都有“反射机制”。这项机制能让程序在运行期间 自省(introspect)。 通过这项技术,我们可以在运行期间获取类的属性、方法等元数据,甚至修改类的定义。 Java 的反射机制也一样。   Accessibl ...
String String 是 Java 中处理字符串相关业务的基础类。 它是典型的不可变类(Immutable):被声明为 final class,内部属性也是 final。 “不可变”的特性可以为线程安全提供便利,拷贝时也不需要额外复制数据(构造函数 String(String) 就是直接设置内部字段的引用,未拷贝数据)。    【性能】 因为“不可变”,所以字符串的拼接、裁剪等操作会产生新的 String 对象。如果处理不当,会对性能产生明显影响。   StringBuffer 该类可以避免字符串拼接过程中产生太多中间对象。通过它的 append 方法 ...
很多编程语言都存在两个或以上相似关键字的情况。初次接触编程的人可能会对此产生疑惑。但对于稍有经验的人,即使无法即兴说一段教科书般的解释,他们心里也是非常清楚这些关键字的差别的。因为真的很简单。 Java中 ...
Java中的变量类型分为两大类:原始数据类型 和 引用类型。   引用类型分类 Java 中的引用分为“强引用”、“软引用”、“弱引用”、“幻象引用”。 这些分类体现了Java对象不同的可达性状态(reachable),是垃圾收集器决 ...
本文将使用 Spring AOP 提供一个关于统一异常处理的 AOP 技术应用示例。 (可直接跳到 2.2 查看代码示例:Maven依赖 + 切面类 + Bean配置)   1. AOP简述 AOP 全称为“Aspect Oriented Programming”,中文译名为“面向切面编程”。乍一看非常令人费解。但是你真正理解这项技术(或者说这个思想)要做什么后,你又会觉得“切面”(Aspect)这个词还真有些贴切。“切面”指的是这项技术(AOP)的控制代码并不是直接与业务代码结合在一起;而是分开编写,再由AOP技术根据控制代码中(对目标业务代码)的描述将两者结合在一起。如果我们把“ ...
1. 异常基本分类   1.1 Exception vs Error 在 Java 中,Throwable、Error、Exception、RuntimeException 是常见异常的基类。 Exception 和 Error 都继承自 Throwable 类。 try { // 可以在此处抛出异常 ... } catch (Throwable e) { // 可以在此处捕获并处理异常 ... } Exception 被用于表示程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。 Error 被用于表示在程序正常运行中,不大 ...
Global site tag (gtag.js) - Google Analytics