摘要: 先列举最常见的单例模式: 一:饿汉式 1、直接创建适合简单的单例模式: 2、适合需要较复杂的初始化的单例模式: 二:懒汉式 此方法线程不安全 1、双锁检验懒汉式 此方法看似解决了线程安全问题,实际上还存在隐患,可能出现线程a还在初始化instance但未完全初始化时,线程b就通过instance!= 阅读全文
posted @ 2019-03-12 19:46 Noctis33 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 在java的内部类中,计算HashCode通常使用 code = 元素* 31 + 下一个元素 以String为例 为了保证hashcode值尽量避免冲突,因此用素数相乘的同时,又要保证范围较大。 而31作为一个素数,又可以优化运算 i*31== (i<<5)-1 内存也只占用5字节,因此通常选用3 阅读全文
posted @ 2019-03-09 10:18 Noctis33 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 例题:# 各个部门中 最高工资中最低的那个部门的 最低工资是多少? 先考虑取得各个部门最高工资 结果为: 再将此表命名tmp在进行查询 此时结果却为: 由此可见查询之后的表结构数据之间并无关系 因此应该使用其中的单列数据 解法一: 或者将此表与主表进行关联查询 解法二: 不理解数据库的基础就会犯这种 阅读全文
posted @ 2019-03-08 19:13 Noctis33 阅读(11737) 评论(0) 推荐(0) 编辑
摘要: 在已知元素容量的情况下,为了尽量减少碰撞增加查询效率,应该尽量选择较大数的同时避免资源浪费。 HashMap底层通过hash值来计算索引位置的源码: 1.重新计算hash值 2.计算索引 由此可见索引位置是新的hash值与运算数组长度减一,而为了尽量使索引值尽量均匀,应当使数组长度为2的倍数,确保与 阅读全文
posted @ 2019-03-07 09:53 Noctis33 阅读(1675) 评论(0) 推荐(0) 编辑