0%

java 命令用于启动 java 应用:它首先会启动 java 运行时环境(JRE),然后加载指定的类,调用类的 main() 方法。main() 方法必须定义为 publicstatic 的,并且不返回任何值,参数是 String 类型的数组,该方法的形式如下:

1
public static void main(String[] args)
阅读全文 »

本文通过编写一个简单的 HelloWorld 带你熟悉下 JNI,包括如何编写一个 JNI 方法,如何打包成动态链接库,如何加载并调用等。

阅读全文 »

Linux 系统下命令繁多,每个命令又有不同的使用参数。要记住所有命令的使用方式不太现实,因为实在是太多了,而且大多数平常还用不到,即使一时记住了也会很快忘记。实际上工作时经常用到的命令很少,比如 ls、cd、tail、tar、top、ps 等等,用的多了自然就记住了。

阅读全文 »

Java 的类加载器采用双亲委派机制解决类的加载问题。在类加载器体系中,除了启动类加载器外,每个类加载器都有自己的父类加载器。这些类加载器都是「啃老族」,对于类加载这件事,总是先请求自己的父类加载器去处理,如果父类加载器处理不了,自己再去执行类加载操作。

阅读全文 »

轻量级锁是对 synchronized 的一种优化机制,它是一种乐观锁,适用于多线程竞争比较弱的情况。在这种情况下,相对于传统的重量级互斥锁(使用操作系统互斥量加锁),轻量级锁的性能更好。

阅读全文 »

并发编程中经常会使用到 volatile 关键字,使用该关键字修饰的共享变量可以保证多线程之间的可见性,也就是说当一个线程修改了变量的值,另一个线程能够读到修改后的值。

阅读全文 »

在多线程环境下,如果要访问共享变量,通常要使用同步机制来保证访问的正确性。如果变量不需要共享,可以将其移到单个线程内,这样就不需要同步操作。ThreadLocal 把线程和要使用的对象关联起来,线程自己保存一份独立的副本,从而实现了数据访问的安全性。

阅读全文 »

多个事务并发的情况下,如果没有任何限制,一个事务的操作可能会影响另一个事务的执行结果,从而造成脏读、不可重复读、幻读等并发一致性问题。

阅读全文 »