Java SE
文章平均质量分 91
Java SE
hmi1024
种树最好的两个时间,十年前和现在
展开
-
IDEA快捷键
CtrlCtrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切选择内容Ctrl + C 复制光标所在行 或 复制选择内容Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)Ctrl + W 递进式选择代码块。可选中光标所在的单词或...转载 2020-06-18 09:45:10 · 162 阅读 · 0 评论 -
Java NIO缓冲区(Buffer)实现数据的存取
1.什么是NIONIO 是java New IO的简称,在jdk1.4里提供的新API。1. 为所有的原始类型提供(Buffer)缓存支持。2. 字符集编码解码解决方案。3. Channel:通道(一个新的原始I/O抽象)。4. 支持锁和内存映射文件的文件访问接口。5. 提供多路(non-bloking)非阻塞式的高伸缩性网络...原创 2020-03-25 16:54:41 · 321 阅读 · 0 评论 -
Java IO序列化与反序列化及自定义序列化
序列化:把对象转换为字节序列的过程称为对象的序列化。通过实现Serializable接口实现序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。自定义序列化:通过实现Externalizable接口,重写它的方法writeExternal()和readExternal()。package com.hmi.io;import java.io.FileInputStrea...原创 2020-03-23 11:38:48 · 159 阅读 · 0 评论 -
关于java中InputStream和BufferedInputStream的比较以及缓冲区概念
BufferedInputStream是一个带有缓冲区域的InputStream,它的继承体系如下:InputStream|__FilterInputStream|__BufferedInputStream以看作是BufferedInputStream对外提供滑动读取的功能实现,通过预先读入一整段原始输入流数据至缓冲区中,而外界对BufferedInputStream的读...转载 2020-03-22 15:54:50 · 980 阅读 · 0 评论 -
Java8 HashMap源码的简单分析(1)
首先在阅读HashMap源码前,我们需要知道的:一.数组:连续的存储结构,存储相同类型的数据。对于指定下标的查找,时间复杂度为o(1);对于定值的查找,需要遍历数组,时 间复杂度为o(n),对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn)。二.单链表:离散的存储结构。单链表是由结点组成,而每个结点是由数据域和指针组成。单链表查询...原创 2020-03-02 23:09:13 · 310 阅读 · 0 评论 -
Java HashMap为什么通过(n - 1) & hash 获取哈希桶数组下标?
看过HashMap源码人应该都知道HashMap是如何根据hash值来计算哈希桶数组下标的,就是通过(n - 1) & hash来计算的,那么为什么用的是位运算而不是取模运算(hash % n)呢?HashMap源码的简单解析 if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(h...原创 2020-03-03 13:55:59 · 4960 阅读 · 3 评论 -
Java HashMap之tableSizeFor方法
jdk1.8中HashMap的tableSizeFor方法是相对于jdk1.7版本的一个新增方法。tableSizeFor的功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂。例如输入13则返回16,输入63返回64。/** * Returns a power of two size for the given target capacity. */...原创 2020-03-01 19:44:44 · 267 阅读 · 0 评论 -
Java 多线程模拟简单死锁
1.首先我们要知道什么是死锁以及死锁产生的条件?死锁:死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作 用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁产生的条件:互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一...原创 2020-03-19 10:51:09 · 219 阅读 · 0 评论 -
Java 队列和栈的简单实现
一.队列和栈1.队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表2.栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表3.队列先进先出(FIFO),栈先进后出(FILO)二.队列实现package com.hmi.collection;import java.util.ArrayList;import java.util.Li...原创 2020-02-29 19:48:09 · 146 阅读 · 0 评论 -
Java 二叉查找树的插入及遍历的简单实现
1.何为二叉查找树?(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。2.二叉查找树的简单实现:package com.hmi.test;public class BinarySearchTree { int data; // ...原创 2020-03-08 20:56:01 · 215 阅读 · 0 评论 -
java中String类重写的equals及hashcode方法
equals方法: public boolean equals(Object anObject) { //如果为同一对象的不同引用,则返回true if (this == anObject) { return true; } //判断该对象是否是String的实例 if (anObjec...原创 2020-02-28 15:10:26 · 2112 阅读 · 0 评论 -
Java重写equals方法后为什么还需要重写hashcode方法?
一.equals的作用及与 == 的区别1.equals通常用来比较两个对象的内容是否相等;2.==用来比较两个对象的地址是否相等,equals方法默认等同于“==”;3.Object类中的equals方法定义为判断两个对象的地址是否相等,地址相等则认为是对象相等。这也就意味着,我们新建的所有类如果没有复写equals方法,那么判断两个对象是否相等时就等同于“==”,也就是两个对象的地...原创 2020-02-28 14:44:29 · 250 阅读 · 0 评论 -
Java 通过File类的listFiles()遍历文件夹
首先我们看下File类的listFiles()的源码: public File[] listFiles() { String[] ss = list(); //用ss存放子文件名 if (ss == null) return null; //若为空则返回null int n = ss.length; File[] fs = ...原创 2020-03-21 18:13:50 · 8445 阅读 · 0 评论 -
Java IO流实现文本复制
package com.hmi.io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class InputStreamTest { public static void main(String[] args) throws IO...原创 2020-03-21 20:35:24 · 144 阅读 · 0 评论