虚拟机字节码执行引擎
代码编译的结果是从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。
概述
执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器...
water
8年前 (2017-03-09) 2259℃ 0评论
0喜欢
虚拟机类加载机制
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,确是编程语言发展的一大步。
概述
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机类加载机制
与那些在编...
water
8年前 (2017-03-02) 2278℃ 0评论
0喜欢
类文件结构
代码编译的结构从本地机器码转变为字节码,是存储格式发展的一小步,确实编程语言发展的一大步
计算机只认识0和1,我们写的程序需要被编译器翻译成0和1构成的二进制格式才能被计算机执行。由于虚拟机及建立在虚拟机之上的大量程序语言大量出现,越来越多的程序语言选择了与操作系统和...
water
8年前 (2017-02-25) 2685℃ 0评论
0喜欢
虚拟机性能监控与故障处理工具
概述
给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore)文件、堆转储快照(heapdump/hprof文件)。
...
water
8年前 (2017-02-24) 2372℃ 0评论
0喜欢
垃圾收集器与内存分配策略
当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们需要对这些“自动化技术”内存动态分配与内存回收的技术实施必要的监控和调节
对象已死
垃圾收集器在对堆进行回收之前,第一件事就是确定这些对象有哪些存活哪些死去(不可能再被...
water
8年前 (2017-02-24) 2387℃ 0评论
0喜欢
Java自动内存管理机制
Java程序员把内存控制的权利交给Java虚拟机,一旦出现内存泄漏和溢出方面的问题,不了解虚拟机是怎样使用内存的,排查错误将会成为一项异常艰难的工作
Java虚拟机内存的各个区域都有不同的作用、服务对象及可能产生的问题
运行...
water
8年前 (2017-02-23) 2547℃ 0评论
0喜欢
什么是Mock?
Mock是虚拟对象,是为了模拟真实对象而创建的,这些虚拟对象的行为是可控的。为方便理解,可以把Mock视为『汽车碰撞实验』中的『假人』。
真实软件架构
测试软件架构
为什么需要Mock?
真实软件架构中的对象行为是不确定的(eg:时间、对象的状态)
...
water
8年前 (2017-02-20) 3167℃ 0评论
0喜欢
1. Junit介绍
1.1. 简介
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和...
water
8年前 (2017-02-18) 2722℃ 0评论
0喜欢
当学习了Java NIO和IO的API后,一个问题马上涌入脑海:
我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。
Java NIO和IO的主要区别
下表总结了Java NIO和IO之...
water
8年前 (2017-02-14) 2346℃ 0评论
0喜欢
背景
生产环境中可能出现各种问题,但是这些问题又不是程序error导致的,可能是逻辑性错误,这时候需要获取程序运行时的数据信息,如方法参数、返回值来定位问题,通过传统的增加日志记录的方式非常繁琐,而且需要重启server,代价很大。BTrace应运而生,可以动态地跟踪java运行...
water
8年前 (2016-12-06) 2935℃ 0评论
0喜欢
JMX 配置
远程机器的程序需要加上JVM参数
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=fa...
water
8年前 (2016-12-06) 3781℃ 0评论
0喜欢
今天第一次翻看Effective Java,在其第一个item中讲静态工厂方法的有点的时候说到“它们每次被调用
的时候,不要非得创建一个新的对象”并在结尾处提到—"String.intern方法以一种有限的形式实现了这
种优化",由于以前...
water
8年前 (2016-11-10) 2579℃ 0评论
1喜欢
推荐一、 定义
放在一个类的内部的类我们就叫内部类。
二、 作用
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3...
water
8年前 (2016-10-22) 2244℃ 0评论
0喜欢
Appium环境部署
安装JAVA环境
安装Android环境
安装node.js, npm(解压包,建立软连接)
例如:
ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/node /usr/local/...
water
9年前 (2016-07-26) 3016℃ 0评论
0喜欢
流API
JDK8新增加的许多功能中,有两个极为重要,分别是lambda表达式和流api。
流Api的关键一点在于能执行非常复杂的查找、过滤和映射数据等操作。
流Api提供了一种高效且易于使用的处理数据的方式
要想完整地理解和使用流API,需要牢固地掌握泛型和lambda表达式。...
water
9年前 (2016-06-29) 2653℃ 0评论
0喜欢
1.Optional简述
到目前为止,著名的NullPointerException是导致Java应用程序失败的最常见原因。过去,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励...
water
9年前 (2016-06-29) 3458℃ 0评论
1喜欢
Lambda表达式
自Java1.0以来,已经增加了许多功能,其中两个最为突出,对java语言产生了深远影响,从根本上改变了代码的编写方式。第一是JDK5增加的泛型,第二是Lambda表达式
Lambda表达式是JDK8新增加的功能,它显著增强了Java,原因有两个...
water
9年前 (2016-06-28) 2688℃ 0评论
0喜欢
I/O 、applet以及其他主题
Java 程序通过流执行I/O。流是一种抽象,要么产生信息,要么使用信息 。流通过Java的I/O系统链接到物理设备。所有流的行为方式是相同的,尽管与它们链接的物理设备是不同的。这意味着可以将许多不同类型的输入-磁盘文件、键盘或网络socket...
water
9年前 (2016-06-21) 2513℃ 0评论
0喜欢
多线程编程
多任务处理有两种不同的类型:基于进程的多任务处理和基于线程的多任务处理
基于进程的多任务处理“大局”,而基于线程的多任务处理“细节”
使用多线程可以编写出更加高效的程序,以最大限度地利用系统提供的处理功能(使空闲时间保持最小)比如网络上数据传输速率比计算...
water
9年前 (2016-06-19) 2926℃ 0评论
0喜欢
还记得以前本站的一篇文章《如何在Google App Engine上运行PHP》吗,其实那是借用 Quercus, 一个 100% 的用Java 实现的一个 PHP 引擎。今天,这样的东西太多了,能运行在Java的虚拟机JVM上的程序意味着有天然的跨平台性,现...
water
9年前 (2016-06-16) 2949℃ 0评论
0喜欢