[蛋疼的总结]各种语言取子字符串总结

前段时间碰到一个代码review,其中一个bug是关于java的substring的。java的substring作为一个String类下的函数,对于Java的熟练工来说,应当是了如指掌的,可是在我的记忆中生生地搞错了substring原来是不允许越界的。

我必须要为满脑袋浆糊的原因做出一个解释,那就是我发现substring函数,也就是取子字符串函数,虽是一个几乎所有语言都会提供的基本得不能再基本的库函数,但有趣的是,各家对于这个函数的设计差别很大,在一些语言中,利用一些基本类型的差别,很巧妙地解决了这个问题。

解开exe包装的java程序

本文内容只用于学习目的,由于源代码涉及版权,请勿滥用本文方法,以免惹上官司。

由于java采用了虚拟机制,一个java程序会被编译成平台无关的中间代码,并且Sun当初在设计时给与了虚拟机较高的自由度,很多优化都是在虚拟机上完成的,这就导致采用java编写的程序非常容易被反编译。
另一方面,java程序的结构决定,每一个类都是一个独立文件,这样寻找反编译后具体的代码,然后修改并装载入原始程序都非常方便。

其实以上都是废话,为了凑字数~~~我其实要解决的问题就是把一个用java编写的程序,然后对其包装成exe的程序,提取源代码。

首先:解包
本方法并不使用全部的java2exe文件。方法很简单:重命名成.rar结尾的文件。

其次:反编译
找一个jar/class反编译程序反编译,这里推荐JD,您可以从一下地址下载http://java.decompiler.free.fr/?q=jdgui,这是一个免费的软件。