HashMap:为什么容量总是为 2 的次幂 HashMap:为什么容量总是为 2 的次幂HashMap 是根据 key 的 hash 值决策 key 放入到哪个桶(bucket)中,通过 tab=[(n - 1) & hash] 公式计算得出。其中 tab 是一个哈希表 2019-05-21 Java map collection
Ubuntu&CentOS安装Dokcer-CE 1. 背景1.1 概述Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作 系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容 器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 2019-04-15 PaaS Docker docker linux
深入分析HashMap 1. 传统 HashMap 的缺点 JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。 当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个 时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了优势。 针对这种情况,JDK 1.8 中引入了红 2019-04-03 Java map collection
Spring Bean Lifecycle 前言Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模式 Bean 的完整生命周期,对于 prototype 的 bean ,Spring 在创建好交给使用者之后则不会再管理后续的生命周期。 2019-03-21 Spring Spring Framework Spring
git archive 打包文件 Git 中打包文件是个简单的活,不管是打包全部文件作为 release, 还是只压缩更改的文件,一个命令就能搞定。 而且,打包之后目录结构完全不变,这对于覆盖部署来说极其方便。 2019-03-15 Git git
标准GitFLow工作流程 标准GitFlow工作流程版本管理的挑战虽然有这么优秀的版本管理工具,但是我们面对版本管理的时候,依然有非常大得挑战,我们都知道大家工作在同一个仓库上,那么彼此的代码协作必然带来很多问题和挑战,如下: 如何开始一个Feature的开发,而不影响别的Feature? 由于很容易创建新分支,分支多了如何管理,时间久了,如何知道每个分支是干什么的? 哪些分支已经合并回了主干? 如何进行Release的 2018-10-15 Git git git-flow
Linux同步系统时间 一、修改时区: 方法 1: 1cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 方法 2: 12timedatectl list-timezones #列出时区timedatectl set-timezone Asia/Shanghai #设置时区为亚洲/上海 方法 3:使用 tzselect 查看是否修改成功:date 2018-10-13 Linux linux
CentOS7 & Ubuntu 18 时间设置 1. 基本概念1.1 GMT、UTC、CST、DST 时间 UTC 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。 GMT 格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被 2018-08-30 Linux linux
解决Ubuntu 18.04 DHCP ip失效问题 解决Ubuntu 18.04 DHCP ip失效问题今天在准备弄一个k8s虚拟机集群,自然是装好一个,然后 clone 成三份。但是有一个问题,clone 的时候虽然选择了更换 MAC 地址,但是 起来之后发现 ip 地址还是没变。原来是 systemd-networkd 的老 bug。它不是根据 MAC 地址来决定是否换 IP,而是根据 /etc/machine-id 来计算出来一个值,如果这个 2018-07-14 Linux linux