2016-01-04 veryyoung
前文说到了 Gradle 依靠 Groovy 语言发挥出了强大的性能。 Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。 继续阅读 »
2017-06-10 UFreedom
JVM
初识 Java 虚拟机 何为虚拟机 何为虚拟机,说白了就是工作在 PC 或者移动手机操作系统之上的一款软件,有的虚拟机能完整的虚拟某个操作系统的环境比如 VMWare,Parallels Desktop,让你能在 Mac 系统上使用 Windows,Windows 系统里面使用 Linux。而有的虚拟机呢,则用来解释执行某个计算机程序,让你无关它的底层实现,你只需要关注上层如何使用它提供的编程套件就好,正所谓:一次编译,到处运行,比如 Java 虚拟机。 继续阅读 »
2017-06-24 UFreedom
JVM
Java 虚拟机结构 根据 Java 虚拟机规范,Java 的基本结构可归纳为如图所示: 继续阅读 »
2017-04-06 blademainer
众所周知,当我们执行没有任何调优参数(如java -jar myapplication.jar)的 Java 应用程序时,JVM 会自动调整几个参数,以便在执行环境中具有最佳性能。但是许多开发者发现,如果让 JVM ergonomics (即JVM人体工程学,用于自动选择和行为调整)对垃圾收集器、堆大小和运行编译器使用默认设置值,运行在Linux容器(docker,rkt,runC,lxcfs 等)中的 Java 进程会与我们的预期表现严重不符。 本篇文章采用简单的方法来向开发人员展示在 Linux 容器中打包 Java 应用程序时应该知道什么。 more 存在的问题 我们往往把容器当虚拟机,让它定义一些虚拟 CPU 和虚拟内 继续阅读 »
2015-04-10 Eric Wang
volatile概述 volatile关键字是一个类型修饰符,被设计用来修饰被不同线程访问和修改的变量,在JVM1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。 在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解决这个问题,需要把变量声明为volatile(不稳定的),以后用到该变量都会到主存中进行存取,一般多任务环境下各任务间共享 继续阅读 »
2014-07-21 veryyoung
(1)ClassLoader基本概念   与C或C++编写的程序不同,Java程序并不是一个可执行文件,而是由许多独立的类文件组成的,每一个文件对应一个Java类。 此外,这些类文件并非全部装入内存,而是根据程序需要逐渐载入。 ClassLoader是JVM实现的一部分,ClassLoader包括bootstrapclassloader(启动类加载器),ClassLoader在JVM运行的时候加载Java核心的API,以满足Java程序最基本的需求,其中就包括用户定义的ClassLoader。 这里所谓的用户定义,是指通过Java程序实现的两个ClassLoader:一个是ExtClassLoader,它的作用是用来加载Ja 继续阅读 »
2018-07-23 LEo
1)如果系统已经安装java,通过以下方式设置java相关环境变量: $ ls -lrt /usr/bin/java lrwxrwxrwx. 1 root root 22 Mar 20 14:49 /usr/bin/java -> /etc/alternatives/java $ ls -lrt /etc/alternatives/java lrwxrwxrwx. 1 root root 73 Mar 20 14:49 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java 继续阅读 »
2015-02-05 veryyoung
利用Jrebel提升工作效率 老早就听说有Jrebel这款神器了,热部署,去官网看了看,license贵的离谱啊,300RMB per licence 只有用盗版咯。 阿弥陀佛 记录下流程。 1.安装插件 本人习惯用IDEA做开发(依然是盗版,罪过),找Jrebel的插件咯。 鄙视IDE的童鞋可以直接配置JVM,下面会提到的 在IDEA Setting里的plugins可以在线安装,鄙人所处网络环境堪忧,选择离线安装,这也是本人比较推荐的一种方式。 移步https://plugins.jetbrains.com/plugin/4441?pr=idea 下载适合IDEA版本的ZIP包 还是在IDEA Setting 继续阅读 »
2014-06-30 veryyoung
原理:Android是基于Java的,要编译成类似Java字节码运行在类似JVM的Dalvik虚拟机上,市面上有很多Java反编译工具,所以反编译一般的安卓程序并修改程序其实是不太难的。 下面讲一讲怎么反编译安卓程序并植入广告(以有米广告为例),仅供学习参考,如若用在商业软件上,造成的后果本人概不负责。 工具下载 本例子用到了两个工具,APKTOOL和AUTO-SIGN,前者用来对程序进行反编译和重编译,后者用来给生成的APK文件进行签名。 本人在Ubuntu 下进行的测试,windows和,mac下应该不会有太大的区别。 下载apktool https://code.google.com/p/android-apkto 继续阅读 »
2016-09-12 徐哲
1.Java与C++的异同 Java解释性语言:源代码-编译器(字节码)-JVM执行 C/C++编译型语言:编译链接成二进制代码 Java不存在全局变量,全局函数,没有指针,不支持多重继承,不支持运算符重载,没有预处理器,不提供goto语句(但保留关键字),不支持自动强制类型转换,必须显式强制类型转换。 Java为纯面向对象语言,所有代码包括函数,变量等都属于类 继续阅读 »