概述 HashMap 是我们常用的集合之一,其数据是键值对的格式存储的,底层使用的链表数组实现的,当某个链表的长度达到一定长度时,会优先对数组链表进行扩容,当链表数组达到一定的长度后,便会将链表转换为红黑树。我们常使用的方法有的 put、get、containsKey、containsValue 等,接下来我们会通过源码解析来了解他是如何实现的。但凡有理解偏差,也希望各位不要吝啬,尽情指出...
Java 集合体系学习
概述 Java 最常见的四种集合为 List Set Queue Map 其中,List、Set、Queue 均实现了 Collection 接口,而 Collection 又继承自 Iterable 接口,也就是说,List、Set、Queue 均是可以进行遍历的。而 Map 则是键值对形式的数据结构。 List 特点 有序 可重复 提供了按索...
JVM 内存区域
概述 jvm 内存区域整体分为5个部分: 程序计数器 Java 虚拟机栈 本地方法栈 Java 堆 方法区 程序计数器(Program Counter Register) 程序计数器可以看作是当前线程执行的字节码的行号指示器。Java 虚拟机的多线程是通过轮流切换并分配处理器的执行时间的方式来实现的,为了保证每个线程切换后恢复到正确的执行位置,每条线程都有一个...
Cookie & ThreadLocal 代替 session 实现无状态登录
/** * 当前用户类 */ @Data public class Principal { private int id; private String username; private String password; private String token; } /** * 描述类 */ public class PrincipalHolder { private Pr...
进制转换
前言 数制是用一组固定的符号和统一的规则来表示数值的方法 计算机底层是用的是数制是二进制 用 Java 编程使用的是十进制。Java 底层仍使用二进制 计算机常用的数制还有八进制和十六进制 进制 十进制 十进制的基本数字是0~9,逢10进位。10称作“基数”,10^n (10的n次幂)被称作“权”。 10000=1*10^4 1000=1*10^3 10...
SQL 类型
DDL:data definition language,数据库模式定义语言,关键字:create DML:data manipulation language,数据操纵语言,关键字:Insert、delete、update DCL:data control language,数据库控制语言 ,关键字:grant、remove ...
this & ClassName.this
概述 this 代表的是当前实例 ClassName.this 代表的是也是 ClassName 这个类的当前实例。经常会出现在 jdk 源码中,当一个内部类需要调用外部类的实例时。 案例 public abstract class AbstractMap<K, V> implements Map<K, V> { public Set<...
Centos 7 安装 gitlab
安装 gitlab 安装配置依赖项 sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable sshd sudo systemctl start sshd sudo yum install postfix sudo systemct...
Linux 使用 ssh key 进行免密登录
举例服务器 A 使用 ssh key 登录服务器 B。 免密登录设置 在服务器 A 执行如下命令 # 执行命令然后连按3次回车,ssh key 创建完毕 ssh-keygen -t rsa # username 和 ip 均为 服务器 B 信息 ssh-copy-id {username}@{ip} 使用以上操作便可以实现通过 ssh key 来进行免密远程登录了。以...
Linux 修改文件所属用户和组
使用chown命令可以修改文件或目录所属的用户 命令:chown 用户 目录或文件名,例子如下: # 把home目录下的qq目录的拥有者改为qq用户 chown qq /home/qq 使用chgrp命令可以修改文件或目录所属的组: 命令:chgrp 组 目录或文件名,例子如下: # 把home目录下的qq目录的所属组改为qq组 chgrp qq /home/qq 同时切换文...