虚拟机字节码执行引擎——《深入理解JVM》第8章

虚拟机是相对于物理机的概念,这两种机器都有代码执行能力,但区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上,而虚拟机的执行引擎这是自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。
继续阅读“虚拟机字节码执行引擎——《深入理解JVM》第8章”

防御性编程(转)

转:https://www.cnblogs.com/bakari/archive/2012/08/27/2658215.html
防御性编程是一种细致、谨慎的编程方法。为了开发可靠的软件,我们要设计系统中的每个组件,以使其尽可能地“保护”自己。我们通过明确地在代码中对设想进行检查,击碎了未记录下来的设想。这是一种努力,防止(或至少是观察)我们的代码以将会展现错误行为的方式被调用。

继续阅读“防御性编程(转)”

ES中的TransportClient学习——Java代码全记录

ES里有多种方式可以使用Java client对现有集群执行标准的index、get、delete和search操作,也可以在运行的集群上执行管理任务
获取client非常简单的。最常见的获取client的方式是创建TransportClient。
TransportClient的必须大版本是相同的,比如都是2.x或者5.x,小版本不同会有一些小问题。理想情况下,和ES的版本完全对应。
TransportClient在7.0会被声明不推荐deprecated,8.0就是完全移除。
建议用rest client,具体迁移有个说明,但还是要先懂TransportClient的功能,这也是这篇的意义。 继续阅读“ES中的TransportClient学习——Java代码全记录”

一文看完《Java多线程编程核心技术》这本书(上)

chapter1——线程基本知识

线程不同步:如果多个线程对同一个对象中的同一个实例变量进行操作,会出现值被更改、值不同步的情况,影响程序的执行流程。

关键字synchronized是在任意对象及方法上加锁,加锁的代码叫做"互斥区"或者临界区。这种方法叫做同步方法。

继续阅读“一文看完《Java多线程编程核心技术》这本书(上)”