- 博客(6)
- 收藏
- 关注
原创 HashMap之tableSizeFor方法图解
在看HashMap源码时,注意到一个问题,容量必须是2的整数幂,为了保证这一点,专门给出了一个巧妙而高效的方法tableSizeFor。不妨想一下,如果是自己解决这个问题,该怎么解决? 给定一个int类型的整数n,如何求出不小于它的最接近的2的整数幂m,比如给定10得出16,给定25得出32? 普通人的简单粗暴方式 普通人的想法可能比较简单,直接对n求以2为底的对数,结果m是double类型,若小数部分为0,则m就是我们要求的指数;小数部分不为0,则对m向上取整,最后直接求2的m次幂。 首先遇到的问题是
2021-03-11 14:18:43 135
原创 阅读源码,HashMap回顾
本文一是总结前面两种集合,补充一些遗漏,再者对HashMap进行简单介绍。 回顾 因为前两篇ArrayList和LinkedList都是针对单独的集合类分析的,只见树木未见森林,今天分析HashMap,可以结合起来看一下java中的集合框架。下图只是一小部分,而且为了方便理解去除了抽象类。 Java中的集合(有时也称为容器)是为了存储对象,而且多数时候存储的不止一个对象。 可以简单的将Java集合分为两类: 一类是Collection,存储的是独立的元素,也就是单个对象。细分之下,常见的有List,S
2021-03-11 14:11:20 93
原创 阅读源码,通过LinkedList回顾基础
前言 本文基于jdk1.8 书接上回,在简单介绍ArrayList的时候,提到了ArrayList实现了RandomAccess接口,拥有随机访问的能力,当时说到了这个接口配合LinkedList理解更容易。今天就来还愿了,开始阅读LinkedList。 LinkedList也算我们比较常用的几个集合之一了,对普通程序员来说, List list1 = new ArrayList() List list2 = new LinkedList(), 该怎么选择? 其实二者最大的区别在于实现方式的不同,只看
2020-11-03 23:18:12 133
原创 阅读源码,从ArrayList开始
前言 为啥要阅读源码?一句话,为了写出更好的程序。 一方面,只有了解了代码的执行过程,我们才能更好的使用别人提供的工具和框架,写出高效的程序。另一方面,一些经典的代码背后蕴藏的思想和技巧很值得学习,通过阅读源码,有助于提升自己的能力。 当然,功利的讲,面试都喜欢问源码,阅读源码也有助于提升通过面试的概率。 结合今天的主题,一个很简单的问题,在刚学习集合时,我们都使用过如下代码,但是下面几行代码有区别吗? List list1 = new ArrayList(); List list2 = new Array
2020-10-09 20:34:47 138
原创 MySQL中事务和事务的隔离级别
本文主要是帮助理解相关知识,没有具体的操作和代码。 事务 事务就是一组操作,这组操作要么全部成功,要么全部失败。 最经典的例子就是银行转账: 张三给李四转账100,对用户来说,就是一个操作。但对应到数据库中,至少需要三步: //检查张三账户余额是否大于等于100 //张三账户-100 //李四账户+100 这三个操作可以没有顺序,但是必须全部成功或者全部失败。否则就可能导致张三损失100李四没收到,或者李四收到100但是张三没扣款成功(银行损失100)。 MySQL默认引擎InnoDB,支持事务;MyI
2020-09-02 19:28:36 237
原创 Centos7安装MySQL8.0(RPM方式)
人生处处皆学问,工作也是如此!过去不止一次在Linux上安装MySQL,可以说轻车熟路,但是写篇文章总结一下,发现有很多细节值得学习! 安装包选择 为什么用rpm? 在Linux系列上安装软件一般有源码编译安装、rpm(或者dpkg)、yum等方式,优劣主要体现在是否需要网络环境、是否能自动检测依赖,升级和卸载是否方便等。作为非运维人员,也需基本了解。 源码安装支持离线,但即使可以自动创建 Makefile等文件简化安装,整个过程也比较复杂,升级和卸载更麻烦。针对一些没有官方释出的软件,只能选择这种方式。
2020-09-02 19:01:25 870
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人