吕二狗少年发现奇妙世界

2016-09-16  本文已影响65人  雅俗共赏M

前言:吕二狗从小家境贫寒,在他6岁的时候因为敌军入侵了城池,在城中烧杀掳掠,他的父母也因此命归黄泉,只留下了一个无依无靠,对这个世界还充满好奇与善意的二狗。而他父母所遭遇的一切,都被藏在箱子里的二狗看到了,小小的二狗,又一次留下了眼泪,而这一次不是撒娇,而是以后再也没有人可以让他肆意地撒娇了,他的父母都被官军杀害了!

二狗经过十几年的流浪,最终逐渐在一个名叫貂丝城的城池中安定了下来,但是流浪的生活虽然暂时结束了,但是内心那燃烧着的痛依然强烈。

二狗将自己以前所保存的书籍,从自己沾满污渍的袋子里拿了出来,经过了这十几年的积累,二狗已经保存了许多各种各样的书籍,不过有些因为时间过长,存放不当,封面早已经难以辨认,还有一些因为潮湿,快腐烂到只能当劈柴烧掉了。二狗于是赶紧把那些潮湿的书拿了出来,一本一本地放在太阳底下晒着,其余地则按照类别整理好,放置到了书柜上。

于是二狗下定决心,向勾践学习,立志沉潜一段时间,学习兵法,谋略,套路,并坚持锻炼身体,为的就是那一天的复仇,而那一天,究竟是哪一天呢?

二狗看的第一本兵书,叫做《深入理解Java虚拟机-JVM高级特性与最佳实践》,经过几周的学习,二狗汲取到了大量的知识,但是他觉着学习东西不能只是纸上谈兵,还要去实践操作,这样才能在将来的某一天,带领自己的士兵冲锋陷阵,身先士卒。所以,第二天清晨,他披上铠甲,拿起武器,静静地走到了那看似危机蛰伏的龙潭虎穴

出了固若金汤的城池,他继续向东偏南走去,只见那边天空乌云笼罩,刹那间一股寒气逼了过来,二狗慢慢地咽了一口,抬起头凝视远方,心想那波谲云诡的黑暗地带究竟隐藏着什么......

随着慢慢地靠近、他那原本冷静的心也逐渐变得不安起来。

随着进一步地接近,他终于看清楚了它的面貌,这个时候他才稍微放松了一下,因为此物看起来不算强大,尚可战胜:

package JVMLearning.sixChapter;

/**
 * Created by Max on 2016/9/14.
 */
public class Computer {

    private String keyBoard;
    public static final String name = "MiniJack";

    public Computer(String keyBoard) {
        this.keyBoard = keyBoard;
    }

    public String function2() {
        String describe = "play games";
        return describe;
    }

    public int solveException() {
        int a;
        try {
            a = 1;
            return a;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        } finally {
            a = 2;
        }
    }
}

于是二狗决定先发制兽,举起武器,向怪物砍了过去!!!啊啊啊我打我打!!!!@#¥%……&*!@#¥%……&@

二狗首先对怪物发起了第一波的进攻,怪物面对这突如其来的攻击,显然没有任何准备,就在这电光火石之间,怪物身重数刀,其中一刀砍到了怪物的心脏之处,这个时候怪物静静地立在地上,注视了二狗几秒,然后轰然倒地,血流不止,这个时候二狗杀意正酣,又一个箭步冲了上去,最后又经过二狗的数次补刀,从头到尾,从前到后,这只怪物最终含恨死去。

其实这个故事告诉我们,他妈的偷袭有多么重要!

二狗此时已是满脸血迹,全身上下已被鲜血染红,仿佛刚从染缸里面爬出来。他在逐渐平复呼吸的同时,也准备好了把这只怪物给带回去,作为自己的首胜战利品。

最后待二狗将它拽回家已是筋疲力尽,挪动几步之后,在恍惚中倒了下去。

待到二狗缓慢地睁开眼睛,看到屋子里的东西,逐渐回忆起了之前所发生的事情。就在这个时候,他突然发现,这只怪物的尸体好像发生了一些微妙的变化。

二狗走上前去,惊奇地发现仅仅过了几个时辰,该怪兽的尸体已经逐渐变成了一块块的晶石,块头小一点的已经在微弱地闪着紫蓝色的光芒,大的还在由血红向紫蓝变化中,尸身周围的一滩滩血迹也逐渐变成了非常细小的晶石粒。

二狗犹犹豫豫地拿起了其中一块比较小的晶石,缓慢地举到眼前,原来在一圈微弱的光芒之中,上面刻有一行行的符号,这种符号他以前从未见过,上边写着:

CA FE BA BE

看着这些奇怪的符号,立即引起了二狗的极大兴趣,于是他赶紧从书柜上找一些与奇怪文字有关的书籍来进行查询,经过一整个下午的时间,几乎翻遍了所有书籍,二狗还是没有找到,就在快要放弃之时,突然想到了放在桌子的那本《深入理解Java虚拟机-JVM高级特性与最佳实践》,于是抱着尝试的态度翻了几页,一个似曾相识的符号引起了他的注意,刹那间他激动地跳了起来,上边写着

Class晶石的魔数的获得很有"浪漫气息",值为:0xCAFEBABE

他找到了,他终于找到了,于是他接着朝后边看相关的描述,大约过了10分钟之后,二狗把书慢慢地放下,轻轻扭过头去看屋子里的那堆已经完全形成的晶石,他紧张又激动,他发现了一个惊天的秘密!

据书上描述,这些发着微弱紫蓝荧光的晶石,乃是制造巨型怪兽的必备组件,不同的晶石上有不同的描述,代表着不同的功能。刚刚看到的那串符号"CA FE BA BY"代表着这只怪兽是属于Ⅰ型的,那么二狗不禁想到,难道还有Ⅱ型?Ⅲ型?那么他们是该有多强大呢?一想到这里,二狗不禁后背发凉。

接着借着这本书,二狗继续对其余的晶石进行了解读:

0000 0034

书上还记载了34这种表示法其实是由高等智慧生物采用的十六进制编码,34说明这只怪兽的版本号,通过书上给出的记录,这只怪兽是一只最新研制的。

00 25

表示这只怪兽一共有多少个部位。

借着巨大的好奇心,二狗一头扎进去对这25个部分的解读:

<1> 0A 0007 001A : 怪兽功能信息(u1,u2,u2)
<2> 09 0006 001B : 怪兽部位命名描述信息(u1,u2,u2)
<3> 08 001C : 怪兽部位命名信息(u1,u2)
<4> 07 001D : 怪兽名字系列信息(u1,u2)
<5> 0A 0004 001E : 怪兽功能信息(u1,u2,u2)
<6> 07 001F : 怪兽名字系列信息(u1,u2)
<7> 07 0020 : 怪兽名字系列信息(u1,u2)
<8> 01 0008 (0008代表后边还有8个字节的字符串信息)
6B 65 79 42 6F 61 72 64 (该8个字节编码的字符串为:keyBoard)
: 怪兽文(u1,u2,u1)
<9> 01 0012
4C 6A 61 76 61 2F 6C 61 6E 67
2F 53 74 72 69 6E 67 3B (此18个字节编码的字符串为:Ljava/lang/String;)
: 怪兽文(u1,u2,u1)
<10> 01 0004
6E 61 6D 65 (编码字符串为name)
: 怪兽文(u1,u2,u1)
<11> 01 000D
43 6F 6E 73 74 61 6E 74 56 61 6C 75 65 (编码字符串为constantValue)
: 怪兽文(u1,u2,u1)
<12> 08 0021 : 怪兽部位命名信息(u1,u2)
<13> 01 0006
3C 69 6E 69 74 3E -> <init>
: 怪兽文(u1,u2,u1)
<14> 01 0015
28 4c6a 6176
612f 6c61 6e67 2f53 7472 696e 673b 2956

 ->(Ljava/lang/String;)V (参数类型)
             : 怪兽文(u1,u2,u1)

<15> 01 0004
43 6F 64 65 -> Code (Code属性)
: 怪兽文(u1,u2,u1)
<16> 01 000F
4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65
-> LineNumberTable
: 怪兽文(u1,u2,u1)
<17> 01 0009
66 75 6E 63 74 69 6F 6E 32 -> function2
: 怪兽文(u1,u2,u1)
<18> 01 0014
2829 4c6a 6176 612f 6c61
6e67 2f53 7472 696e 673b -> ()Ljava/lang/String;
: 怪兽文(u1,u2,u1)
<19> 01 000E
73 6f6c 7665 4578 6365 7074
696f 6e -> solveException (方法名称)
: 怪兽文(u1,u2,u1)
<20> 01 0003
28 29 49 -> ()I (方法的描述,先参数后返回值)
: 怪兽文(u1,u2,u1)
<21> 01 000D
5374 6163 6b4d 6170 5461 626c 65
-> StackMapTable
: 怪兽文(u1,u2,u1)
<22> 07 001D : 怪兽名字系列信息(u1,u2)
<23> 07 0022 : 怪兽名字系列信息(u1,u2)
<24> 01 000A
536f 7572 6365 4669 6c65 -> SourceFile
: 怪兽文(u1,u2,u1)
<25> 01 000D
43 6f6d 7075 7465 722e 6a61 7661
-> Computer.java
: 怪兽文(u1,u2,u1)
<26> 0C 000D 0023: 怪兽部位类型信息
<27> 0C 0008 0009: 怪兽部位类型信息
<28> 01 000A
70 6c61 7920 6761 6d65 73
->play games
: 怪兽文(u1,u2,u1)
<29> 01 0013
6a61 7661 2f6c 616e 672f
4578 6365 7074 696f 6e
-> java/lang/Exception
: 怪兽文(u1,u2,u1)
<30> 0C 0024 0023: 字段或者方法的类型信息
<31> 01 001F
4a 564d 4c65 6172 6e69 6e67 2f73 6978
4368 6170 7465 722f 436f 6d70 7574 6572
-> JVMLearning/sixChapter/Computer (类的全限定名)
: 怪兽文(u1,u2,u1)
<32> 01 0010
6a 6176 612f 6c61 6e67 2f4f 626a
6563 74
-> java/lang/Object (父类的权限定名)
: 怪兽文(u1,u2,u1)
<33> 01 0008
4d69 6e69 4a61 636b
-> MiniJack (static final字段的名称)
: 怪兽文(u1,u2,u1)
<34> 01 0013
6a 6176 612f 6c61 6e67 2f54 6872 6f77
6162 6c65
-> java/lang/Throwable (异常类的全限定名)
: 怪兽文(u1,u2,u1)
<35> 01 0003
28 29 56 -> ()V (方法的描述,无参数和空返回值)
: 怪兽文(u1,u2,u1)
<36> 01 000F
70 7269 6e74 5374
6163 6b54 7261 6365
-> printStackTrace
: 怪兽文(u1,u2,u1)

经过这么多的分析之后,不知不觉,天色已暗。这时二狗突然想到一个问题,既然这些晶石是组成这只怪兽的组件,那么我能不能用一种方法再把他给重新组合起来,让其重新复活?如果复活以后,我该怎么操控他呢?他会被我操控吗?

其实二狗肚子早就饿了,于是正准备合上书本的时候,突然留意到了一处密文,上面写着

在所有的晶石中,还有一块不太起眼但是十分重要的晶石,上面刻有该战斗机器的操作权限信息(access_flags)

"操作权限信息"!!!,真是得来全不费工夫,二狗想看看究竟是怎样的一个数据才可以操作,只见上边写到只有当晶石上刻有"0x0001"的时候才可以由任何人操作,还有一些其他操作权限说明,不过这个时候二狗已经顾不了看那么多了,知道这个就可以了。于是他飞速地又跑到了那堆晶石旁,经过好大一会的搜寻,才最终找到,定睛一看,嘿!"0x0001",此时二狗感觉一阵阵的阳光普照,春暖花开。

在得到这个令人欣慰的结果之后,二狗欢心满意地出去吃了顿饭,回来之后,又借着月光解读下去。

00 06

这一项表示这只怪兽的描述信息,可以根据这个数据在刚才那25个部分里面找到一些说明。

0007

这一项表示这只怪兽的上一代怪兽的信息,根据这个数据可以在刚才的那25个部分的描述里找到一些上一代的蛛丝马迹。

0000

这一项表示该怪兽属于自动产生动力,不需要对外接口,其实这个描述二狗没怎么看明白

0002 0002 0008 0009 0019 000A 0009 0001 000B 00000002 000C

这一项表示该怪兽身上有两个重要的组件,并分别对其进行了描述

0003 0001 000D 000E 0001 000F 0000002A 0002 0002 0000000A

这句表示这只怪兽一共有三个具有威胁性的武器,这是其一

2A B7 00 01 2A 2B B5 00 02 B1

表示怪兽是如何来进行使用武器的

0000 0001 0010 0000000E 0003

这些表示的信息不是特别重要,二狗自动将其忽略了。

0001 0011 0012 0001 000F 00000021 0001 0002 00000005

这是怪兽的第二项武器的描述

12 03 4C 2B B0

表示怪兽是如何来进行使用武器的

0000 0001 0010 0000000A 0002

这些表示的信息不是特别重要,二狗又自动将其忽略了。

0001 0013 0014 0001 000F 0000007A 0001 0005 0000001A

这是怪兽的第三项武器的描述

04 3C 1B 3D 05 3C 1C AC 4D 2C B6 00 05 03 3E 05 3C 1D AC 3A 04 05 3C 19 04 BF

表示怪兽是如何来进行使用武器的

0004
start_pc end_pc handler_pc catch_type
0000 0004 0008 0004
0000 0004 0013 0000
0008 000F 0013 0000
0013 0015 0013 0000

这句表示当这只怪兽发生故障的时候,要怎样自动去操作。

0002 0010 0000001E 0007
0000 0017
0002 0018
0004 001D
0008 0019
0009 001A
000D 001B
000F 001D

这些代表这只怪兽内部的复杂网络与外部组件的关联关系。

不知不觉,太阳逐渐在东方升起了曙光,二狗知道自己研究了一晚上,逐渐他感觉自己脚掌发麻,浑身无力,这次比上次刚回来还要虚弱,就这样,他一下躺倒在了这堆晶石旁边。二狗眼睛微闭,嘴里一直在小声地说:老子我他妈再也编不下去了!

上一篇下一篇

猜你喜欢

热点阅读