标识哈希码源码分析

标识哈希码(identity hash code)在Java一般使用obj.hashCode()来代表对象的地址,但是两个相同的对象就不行了,两个相同的对象的hashcode是相同的。因此,如果要对比两个相同的对象的地址可以使用 System.identityHashCode(obj)。标识哈希码(identity hash code)标识哈希码是一个对象身份的唯一标识,对象的标识哈希码可以通过 obj.hashCode() 或 System.identityHashCode(obj) 方法获取。标识哈希码的特点: 一个对象在其生命期中标识哈希码是保持不变的; 如果两个对象引用的相等,即:a == b,那么两个对象的 System.identityHashCode(obj) 必定相等; 那么两个对象的 System.identityHashCode(obj) 不相等,那他们必定不是同一个对象; 如果 System.identityHashCode(obj) 相等的话,由于存在HASH冲突,所以并不能保证 a == b;System.identityHashCode(obj...

JavaDNS缓存分析

问题描述由于服务器235故障,导致部署在235的Redis数据库无法使用,临时将域名redis235.xxx.com解析到232上的Redis数据库。在服务器235恢复后,重新将域名redis235.xxx.com解析回235上的Redis数据库,发现Resin上的应用程序仍然在读写232上的Redis。问题原因由于InetAddress解析redis235.xxx.com域名到232后,缓存了域名的解析结果,导致重新解析域名到235时,出现上述的问题。虽然Resin配置中存在<jvm-arg>-Dnetworkaddress.cache.ttl=600</jvm-arg>,但是由于networkaddress.cache.ttl不属于系统属性,因而这样的设置是无效的。InetAddress缓存机制java.net.InetAddress有一个缓存用于存储解析成功与解析失败的域名。默认情况下: 如果已安装Security Manager服务,为了防止DNS欺骗攻击,解析成功的域名结果将被永久缓存。 如果未安装Security Manager服务,域名解...

ConcurrentModificationException源码分析

ConcurrentModificationException源码分析AbstractList的核心属性modCount,初始值为0,表示List结构已经被修改的次数。结构修改包括改变List的大小,或以其他类似的方式导致其在迭代的过程中产生不正确的结果的行为。protected transient int modCount = 0;这个属性会在iterator()方法返回的Iterator以及listIterator()方法返回的ListIterator中用到。如果modCount的值非预期的改变,那么Iterator或ListIterator会在执行next()、remove()、previous()、set()、add()方式时,抛出ConcurrentModificationException异常。通过这种方式,保障了在使用迭代器进行迭代的过程中,一旦List的结构被并发修改,会提供fail-fast的行为,不是非确定性的行为。子类对该modCount的使用是可选的。如果子类系统提供一个支持fail-fast行为的迭代器,那么子类只需要在add(int, E)、remov...

Java类加载器

Default Class Loaders默认的类加载器加载各自类路径上的类和资源: AppClassLoader:应用类加载器搜索应用程序的类路径(classpath)加载类和资源; SystemClassLoader:扩展类加载器搜索扩展类路径(JRE/lib/ext)加载类和资源; BootstrapClassLoader:引导类装入器搜索引导类路径(JRE/lib/rt.jar)加载类和资源;Bootstrap 或 Primordial 类加载器是所有类加载器的父类。它加载 Java 运行时,即运行JVM本身所需的类。默认类加载器加载机制Java中的类加载机制是双亲委派模型,即按照 AppClassLoader → SystemClassLoader → BootstrapClassLoader 的顺序。当前的类加载器以线性、分层的方式搜索资源。如果类加载器无法定位一个类,它会向相应的子类加载器抛出java.lang.ClassNotFoundException异常。然后,由子类加载器捕获异常后,继续在其对应的类路径上尝试搜索该类,对于在层次结构中任何类加载器的类路...

编写基准测试用例

编写基准测试编写基准测试用例比对 Thymeleaf 3.x 版本与 2.x 版本性能:https://github.com/mbosecke/template-benchmarkRun complete. Total time: 00:10:23 Benchmark Version Mode Cnt Score Error Units Freemarker.benchmark 2.3.23 thrpt 50 12831.470 ± 862.381 ops/s Handlebars.benchmark 4.0.1 thrpt 50 14488.231 ± 262.421 ops/s Mustache.benchmark 0.9.1 thrpt 50 18...

Go 语言基础

Tech Stack

功能 框架
日志框架 logrus
SQL映射 unknown

安装配置

```shell

1、下载并解压二进制包

tar -C /data/service -xzvf go1.9.3.linux-amd64.tar.gz sudo ln -s /data/service/go-1.9.3 /usr/local/go