摘要: 接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它。1 package chapter18;2 3 public class Hello {4 public static void main(String[] args){5 for(String arg:args){6 System.out.println("运行Hello的参数:" + arg);7 }8 }9 } 无须编译该Hello.java,可以直接使用如下命令来运行该Hello.java程序。java... 阅读全文
posted @ 2013-07-30 21:59 朗道二级相变 阅读(556) 评论(1) 推荐(0) 编辑
摘要: 1 本文概要 本章介绍Java类的加载、连接和初始化的深入知识,并重点介绍Java反射相关的内容。本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行。而且Java类加载器除了根加载器之外,其他类加载器都是使用Java语言编写的,所以我们完全可以开发自己的类加载器,通过使用自定义的类加载器,完成一些特定的功能。 本章重点介绍java.lang.reflect包下的接口和类,包括Class、Method、Field、Constructor和Array,这些类分别代表类、方法、属性、构造器和数组,Java程序可以使用这... 阅读全文
posted @ 2013-07-30 21:42 朗道二级相变 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 1 多线程 1.1 简介 大部分时候,我们编写的程序都是单线程的。也就是都只有一条顺序执行流:程序从main方法开始执行,依次向下执行每行代码,如果程序执行某行代码遇到了阻塞,则程序会停滞在该处。如果我们使用IDE工具的单步调试功能,将可以很清楚的看出这一点。 实际情况是,单线程的程序往往功能非常有限,例如我们需要开发一个简单的服务器程序,这个服务器程序需要面向不同客户端提供服务时,不同客户端之间应该互不干扰,否则会让客户端不停的等待一次请求完,而其他的客户端在等待。多线程听上去非常专业概念,其实非常简单... 阅读全文
posted @ 2013-07-30 21:23 朗道二级相变 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 5 改变线程优先级 每个线程执行都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。 每个线程默认的优先级都与创建它的父线程具有相同的优先级,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。 Thread提供了setPriority(int new Priority)和getPriority()方法来设置和返回指定线程的优先级,其中setPriority方法的参数可以是一个整数,范围是1~10,也可以是Thread类的三个静态常量:1.MAX_PRIORITY... 阅读全文
posted @ 2013-07-30 21:23 朗道二级相变 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 11 使用管道流 前面介绍的两种方式与其称为线程之间的通信,还不如称为线程之间协调运行的控制策略。如果需要在两条线程之间进行更多的信息交互,则可以考虑使用管道流进行通信。 管道流有3中存在形式:PipedInputStream和PipedOutputStream,PipedReader和PipedWriter以及Pipe.SinkChannel和Pipe.SourceChannel,它们分别是管道字节流、管道字符流和新IO的管道Channel 使用管道流实现多线程通信可按如下步骤进行: 1.使用new操作符分别创建管道输入流... 阅读全文
posted @ 2013-07-30 21:23 朗道二级相变 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 对象序列化的目标是将对象保存到磁盘中或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流(无论是从磁盘中获取,还是通过网络获取),都可以将这种二进制流恢复成原来的Java对象。1 序列化的含义和意义 序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 对象的序列化是指... 阅读全文
posted @ 2013-07-30 20:28 朗道二级相变 阅读(905) 评论(0) 推荐(0) 编辑
摘要: df命令作用:df命令用来计算磁盘所使用的文件系统及每个文件系统所使用的磁盘空间的情况,并将结果输出到标准输出设备显示出来。-a:显示所有信息-h:以更可读的方式显示,比如以K/M/G方式可以指定目录显示# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda2 41286828 11940896 27248648 31% /devtmpfs 12104288 168 12104120 1% /devtmpfs ... 阅读全文
posted @ 2013-07-30 14:49 朗道二级相变 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 如果不知道linux的某个命令用法,通常有如下两种方法来获取帮助1.命令 --help--help是一个通用的参数2.使用man命令man ls如果一个页面无法完全展示,可以用管道命令,加上more即可命令行结构 在linux系统中,一个命令通常由命令名、命令选项和命令参数3部分内容组成,中间以空格或制表符等空白字符隔开。命令形式如下: 其实这个和函数定义时候的总体结构差不多的。 其中命令选项通常是以减号-开始的单个字符,与UNIX系统不同的是,Linux系统还提供了以双减号--为起始标志的命令选项(通常称... 阅读全文
posted @ 2013-07-30 11:11 朗道二级相变 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1 ZooKeeper简介 ZooKeeper是一个为分布式应用设计的开源协调服务。它可以为用户提供同步、配置管理、分组和命名服务。ZooKeeper的文件系统使用了目录树结构,并且使用java编写,但是它也支持c。 协调服务非常容易出错,而且很难从故障中恢复,例如协调服务很容易处于竞争状态以至于出现死锁。ZooKeeper设计目的就是为了减轻分布式应用程序锁承担的协调任务2 数据模型和层次命名空间 ZooKeeper提供的命名空间与标准的文件系统非常相似。它的名称是由通过斜线分隔的路径名序列所组成的... 阅读全文
posted @ 2013-07-19 20:34 朗道二级相变 阅读(915) 评论(0) 推荐(0) 编辑
摘要: 数组是应用最广泛的数据存储结构。它被植入到大部分编程语言中。大部分数据结构都有最基本的四个操作:插入、删除、查找、修改。对于这四种操作每一种数据结构都有相应的算法。算法和数据结构因此就是非常紧密的相联系的。1 数组例子 数组的每一个元素必须是连续,也就是中间没有洞。就是说第一个元素和第三个元素有值,但不允许第二个元素是空的。 1 package chapter2; 2 3 public class Array { 4 public static void main(String[] args){ 5 //... 阅读全文
posted @ 2013-07-19 07:25 朗道二级相变 阅读(690) 评论(1) 推荐(2) 编辑