Redis面试问题整理

本文简单记录 Redis(缓存)相关的面试知识点

Read more →

CentOS 7 下 Redis 的安装与配置

本篇文章将介绍在 CentOS 7 系统中安装 Redis 的两种方式: 利用包管理工具yum安装 从官网下载并安装 一、利用包管理工具安装 1. 修改yum源为阿里源(如已修改可跳过) 备份系统自带源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里源并替换 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 2. Redis 的安装和配置 配置 Fedora 软件仓库 yum install -y epel-release 安装 Redis yum install -y redis Redis 服务相关命令 # 启动 systemctl start redis # 查看状态 systemctl status redis # 配置开机自启 systemctl enable redis # 关闭 systemctl stop redis # 取消开机自启 systemctl disable redis Redis 服务配置文件位置 /etc/systemd/system/redis.
Read more →

HashMap面试问题整理

本文记录下 Map 最常用的实现类 HashMap 相关的高频的面试知识点。 HashMap 的底层数据结构 数组 + 链表。结合了数组和链表二者的优点,利用数组可以在计算键的 hash 值以后快速的定位到所属位置,而当发生 hash 冲突(即两个键的 hash 值相等)时,又可以将元素以链表的形式存储。在 JDK 1.8 以后当链表的长度超过 8 且数组长度大于 64 以后会转变为红黑树。 HashMap 的工作原理 根据 HashMap 的底层结构可以知道,要想确定一个键值对(K/V)的位置要对 K 进行 hash 运算,再结合当前数组长度确定一个下标 如果计算出的下标没有元素(未发生 hash 冲突),那就依据当前的键值对构造一个 Node 放入数组中 如果发生 hash 冲突时,先判断二者的 K 是否相等,如果相等说明是同一个元素,此时更新键值对的值即可 如果 K 不相等,那就将当前元素插入到链表当中(JDK 1.7 是头插,1.8 是尾插) 插入元素后判断当前数组的长度是否大于 capacity * loadfactor,如果大于,会对整个数组进行扩容,新的数组长度为 2 * capacity,之后对 HashMap 中的所有 K 重新进行 hash,确定在新数组中的位置 Hash 算法的实现 static final int hash(Object key) { int h; return (key == null) ?
Read more →