My Tip

database

  • where and on
  • limit

spring

  • set 注入 int
  • 后处理器的切入时机

Filter mapping规则

  • 如何添加多个Mapping
  • 如何排除某个规则

shrio

  • 如何配置多个realm
  • 如何在realm中加盐

多线程

  • 实现一个无锁的线程安全的栈
  • CAS原理
  • 自旋是什么
  • 如何证明无锁的线程安全的栈是线程安全的。
  • 守护线程的finally块会被执行么?
  • FutureTask是啥子?

HashMap

数据结构

  • Hash算法

    • h 32位
    • h = h^(h>>>20)^(h>>>12)
    • h = h^(h>>>7)^(h>>>4)
    • 算法中是采用(h>>>7)而不是(h>>>8)的算法,应该是考虑1、2、3三位出现重复位^运算的情况。使得最低位上原hashCode的8位都参与了^运算,所以在table.length为默认值16的情况下面,hashCode任意位的变化基本都能反应到最终hash table 定位算法中,这种情况下只有原hashCode第3位高1位变化不会反应到结果中,即:0x7FFFF7FF的i=15。
      其中h^(h>>>7)^(h>>>4) 结果中的位运行标识是把h>>>7 换成 h>>>8来看。 
      
      即最后h^(h>>>8)^(h>>>4) 运算后hashCode值每位数值如下: 
      8=8 
      7=7^8 
      6=6^7^8 
      5=5^8^7^6 
      4=4^7^6^5^8 
      3=3^8^6^5^8^4^7 
      2=2^7^5^4^7^3^8^6 
      1=1^6^4^3^8^6^2^7^5 
      结果中的123三位出现重复位^运算 
      3=3^8^6^5^8^4^7     ->   3^6^5^4^7 
      2=2^7^5^4^7^3^8^6   ->   2^5^4^3^8^6 
      1=1^6^4^3^8^6^2^7^5 ->   1^4^3^8^2^7^

    hash过程

  • Entry<K,V>

    • int hash
    • K key
    • V value
    • Entry<K,V> next
  • Map
    • table = Entry[]
    • int loadFactor = 16
    • int capacity = 0.75
    • -

Object

  • hashCode()
    • 本地方法,返回对象地址
    • String等很多类重写了该方法。
    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }
  • equals相等则 hush一定相等,反之不成立。

异常

  • 对于运行时异常,JVM是怎么处理的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值