240 发简信
IP属地:上海
  • 120
    《跟闪电侠学Netty》开篇:Netty是什么?

    在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化下场景:客户端每隔两秒...

  • 我还用的win7!

    告别win10,拥抱linux

    安装linux操作系统(๑• . •๑) win10升级 先问你一个问题,你讨厌win10升级系统吗? 我的回答:是,明明已经把自动更新关闭了,可是还是会有“易升”,win1...

  • 120
    9.Float类源码解析

    Float 和Double实际上一个模子印出来的,为什么这么说,往下看 1. 正无穷大,负无穷大,NaN值(非数字值,常值),最大正有限值,最小正常值,最小正非零值类型,最大...

  • 其实看一下源代码还是很好理解的,不用去记几条几条什么的,打个比方说:String类 , 他有一个 char[] value 数组类型的属性,实际上这里面是把字符串拆成一个个字符扔进去,然后看它的equals方法 最后比的就是这个value ,然后在看string的hashcode方法,每一位都取出来反正有一个什么什么(n-1)次方啥的和她的每一个字符和位置有关,记不清的了,反正最后是一个int类型的值,其实脑子里面逻辑走一下,就知道,这个int类型的hashcode很容易重复,但是equals一旦一致,那么套入那个hashcode的公式里面,也肯定一样。还有一点比较hashcode 要不equals效率高,有时候我们在比较equals之前,可以先比较hashcode ,如果连hashcode也不同,equals也不用比了,这样可以提高效率.

    两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

    不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的...

  • 120
    8.Double类源码解析

    1. double把 1.0/0.0 作为无穷大,-1.0/0.0为负无穷大,NaN是为了后面 isNaN函数做准备,判断一个数是不是NaN,其实现都是通过上述v != v ...

  • 120
    7.Byte类源码解析

    1. 前面两个,一个最大值,一个最小值,不多说,为什么是-128到127 应该不需要我解释了吧,第三个方法,是不是和Boolean中的类似,博主思前想后,想到了包装类型,这玩...

  • 120
    6.Boolean类源码解析

    1. 对应基值 true和false 的 Boolean 对象,还有一个是表示基本类型 boolean 的 Class 对象,底层调用的Class.getPrimitiveC...

  • 5.StringBuilder类源码解析

    整个StringBuilder博主都不多讲,方法和StringBuffer 的一毛一样,就少了synchronized 修饰,所以记住他是线程不安全的,使用的时候一定要注意,...

  • 120
    4.StringBuffer类源码解析

    继承AbstractStringBuffer,我们有了前面的基础,后面再来看StringBuffer的时候其实很容易的。这篇文章和博主的第三篇关联度较大,最好先看一下第三篇。...

  • 120
    3.AbstractStringBuilder类源码解析

    后面大家会接触StringBuffer 和StringBuiler 这两个前者是线程安全的,后面是线程不安全,后面我们会详细讨论,说道这两个类都是继承于AbstractStr...

  • 120
    并发编程- java.util.concurrent用户指南

    译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent...

  • 120
    2.String类源码解析

    1. 首先我们可以看到是final 修饰的,不能被继承,只要被创建就不能再修改,所有我们平时看似修改实际上都是重新建了一个新的字符串。然后他实现了 Serializable接...