摘要: 下面是求节点介数的代码,介数就是指经过一个点的最短路径的比例,在计算复杂网络中节点重要性的时候会用到。/** * 用来计算介数 * 要计算所有的最短路径,用DIJ计算最短路径的时候我们可以发现一个规律:最后生成的结果是最小生成树,而一棵树是可以用一个一维数组表示的。 * 所以本代码在计算介数的时候具有和DIJ相同的时间复杂度。 */public class Betweeness { private double[][] dis; private int N; Betweeness(double[][] dis) { this....阅读全文
posted @ 2012-05-15 15:54 GG大婶 阅读(22) 评论(0) 编辑
摘要: JVM的总体结构大致如下:这样,其实我们就知道了JVM到底是来干什么的了。学习的时候最初也是最重要的是得明白自己要从这个里面学到什么东西,如果学习JVM的时候去把具体的实现也去看一遍,估计收获是有的,但是花的时间太长了,所以这里就止步于字节码,不会再往下深究。这里基本上我们想象的属性全有了。常量池应该是最重要的,因为从上面可以看到下面的属性之类的都是保存其在常量池中的索引。常量池中有很多种类型,下面分别具体来看。常量池中容纳的符号引用包括三种特殊字符串:全限定名:倒过来的域名用来作为类或接口的名称,唯一的。简单名称:字段或方法的名称,保存的就像在Java文件中定义的。描述符:给出字段的类型。其阅读全文
posted @ 2012-04-11 09:00 GG大婶 阅读(66) 评论(0) 编辑
摘要: 通过Executors创建线程池的时候调用newFixedThreadPool方法,继承的大概结构如下:创建完成之后,线程池的结构如下:在创建完线程池之后就可以调用execute方法来执行给定的Runnable了,具体的代码如下: 1 public void execute(Runnable command) { 2 if (command == null) 3 throw new NullPointerException(); 4 if (poolSize >= corePoolSize || !addIfUnderCorePo...阅读全文
posted @ 2012-04-10 17:04 GG大婶 阅读(264) 评论(0) 编辑
摘要: 下面的代码如果没有出现线程冲突结果应该是200,但实际的结果在100到200之间: 1 class Foo{ 2 public String x = ""; 3 public void add(){ 4 x+="1"; 5 } 6 } 7 public class Main extends Thread{ 8 public boolean flag; 9 public Foo foo;10 public Main(boolean flag){11 this.flag = flag;12 }13 pu...阅读全文
posted @ 2012-04-09 13:56 GG大婶 阅读(184) 评论(0) 编辑
摘要: import java.io.BufferedInputStream;import java.io.InputStreamReader;import java.net.URL;import java.sql.Date;public class StockInfo { public static final String SOURCE = "http://hq.sinajs.cn/list="; // 股票名称 public String stock_name; // 今日开盘价 public double begin_price; // 昨日收盘价 p...阅读全文
posted @ 2012-03-30 12:21 GG大婶 阅读(49) 评论(0) 编辑
摘要: private static String unknow2chines(String str){ String result = ""; int start = 0, end = 0; while(start < str.length()) { start = str.indexOf("&#", end); if(start >= 0){ result += str.substring(end, start); start = start + 2; end = str.indexOf(";", start); if阅读全文
posted @ 2012-03-30 10:30 GG大婶 阅读(14) 评论(0) 编辑
摘要: 指令含义iconst_m1把int型常量-1压入栈中iconst_0把int型常量压入栈中fconst_1把float型常量1压入栈中lconst_2把long型常量2压入栈中dconst_3把double型常量3压入栈中bipush byte1把byte1转换成int型压入栈中sipush byte1,byte2把byte1,byte2组成的short转换成int压入栈中aconst_null把空对象压入栈中ldc indexbyte1把常量池中指定下标的一个字长压入栈ldc_w indexbyte1,indexbyte2把常量池中指定下标的一个字长压入栈ldc2_w indexbyte1,阅读全文
posted @ 2012-03-26 22:31 GG大婶 阅读(46) 评论(0) 编辑
摘要: Java Class文件 属性在Java Class文件中多处出现,可以再ClassFile、field_info、method_info和Code_attribute表中。Java虚拟机规范定义了9种属性,为了能正确地解释Java class文件,所有Java虚拟机都必须能够三种属性:Code、ConstantValue和Exception。为了 能正确地实现Java和Java 2平台类库,虚拟机实现必须能够识别InnerClassers和Synthetic属性。有规范定义的attribute_info表的类型如下:名称使用者描述Codemethod_info方法的字节码和其他数据Const阅读全文
posted @ 2012-03-13 10:46 GG大婶 阅读(27) 评论(0) 编辑
摘要: 在程序用也有28效应,也就是20%的代码占用了80%的时间。方法调用会使优化器的有效性降低,因为优化器在不同的方法调用间不能有效的工作,因此优化器在方法调用的时候就无法专注于代码了。方法调用的频率越高,方法间可以用来优化的代码就越少,优化器就会越低效。ClassFile表中各项的含义如下:magic【u4】:0xCAFEBABE,用于辨别是不是Java class文件。minor_version【u2】:主版本号。major_version【u2】:次版本号。constant_pool_count【u2】:常量个数。constant_pool【cp_info】:常量池。access_flags阅读全文
posted @ 2012-03-13 10:00 GG大婶 阅读(13) 评论(0) 编辑
摘要: 任何Java虚拟机实现的核心都是它的执行引擎,在Java虚拟机规范中,执行引擎的行为适用指令集来定义。对于每条指令,规范都详细规定了当实现执行到该指令时应该处理什么,但是却对如何处理言之甚少。 Java虚拟机指令集关注的中心是操作数栈,一般是把将要适用的值压入栈中。虽然Java虚拟机没有保存任意值的寄存器,但每个方法都有一个局部变量集合。指令集实际的工作就是把局部变量当成寄存器,用索引来访问,不过,不同于iinc指令——它可以直接增加一个局部变量的值,要使用保存在局部变量中的值之间,必须先将它压入栈中。阅读全文
posted @ 2012-03-08 19:24 GG大婶 阅读(16) 评论(0) 编辑