可以把普通的Java程序做成真正的exe,也就是单一个exe就可以在没有安装JVM的机器上运行。这样的工具常见的有JET和gcj.前者是收费的,而且做出来的exe还是需要一堆dll。推荐使用gcj.他有windows和Linux版,直接下载zip包,不需要安装,里面有不少例子,一些build的批处理文件。从原理来说gcj自己实现了JVM规范,也就是你编写一个HelloWorld.java,其中的main方法为System.out.println("foo");
当使用gcj把它做成exe(大约2M),运行这个exe时,会启动里面的一个小型jvm,在这上面跑HelloWorld。
其实,把Java做成纯exe实在是吃力不讨好,有很多限制,文件又大。
我比较倾向另几种做法:
. 使用InstallAnywhere等工具,制作一个exe的安装包
用户可以选择使用他机器上的JRE或是这个安装包内的JRE来运行程序
这是很常见的一种做法,如JBuilder就是这么做的。
这样的好处是不要求对方机器上装有JRE,而且你原来的程序不需要任何改动。
InstallAnywhere中一个压缩的JRE大概是8M。
. 制作成可执行的jar,也就是在META-INF的MANIFEST文件制定Main-Class
可以通过命令行java -jar jarfile.jar来执行,windows默认的把*.jar使用javaw -jar打开,所以有些机器上可以直接双击jar ......
Java
如何遍历
MC
所有
ITEM
1
、
mc
遍历
item
原理
Mc
遍历
item
用到的命令有三个:
stats items
,
stats cachedump, get
。通过
telnet
程序
telnet
到
mc
服务器上(
telnet ip
地址
端口号,如
telnet 192.168.0.1 11211
),依次执行上述
3
个命令即可遍历
mc
的
item
对象,及查看
key
对应的
value
值。
1)
stats items
:显示各个
slab
中
item
的数目和最老
item
的年龄
(
最后一次访问距离现在的秒数
)
stats items
STAT items:1:number 2
STAT items:1:age 847
STAT items:4:number 1
STAT items:4:age 831
STAT items:10:number 1
STAT items:10:age 830
END
2
)
stats cachedump
:
stats cachedump
slab_id limit_num
,显示某个
slab
中的前
limit_num
个
key
列表,显示格式如下:
ITEM key_name [
value_length b; expire_time|access_time s]
其中,
memcached 1.2.2
及以前版本显示的是访问时间
(timestamp)
,
1.2.4
以上版本 ......
1.首先创建一个工程随便命名。
2.创建一个类命名为Reg.
3.执行代码
4.输入注册的姓名,显示栏目会出现please input register name:,只要输入英文名然后回车,注册码就出来了。把姓名和注册码像:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Reg {
private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";
public String getSerial(String userId, String licenseNum) {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.add(1, 3);
cal.add(6, -1);
java.text.NumberFormat nf = new java.text.Dec ......
public class FindPrime {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 100;
String s = "100以内的素数:";
for (int i = 1; i <= num; i++) {
int count = 0;
for (int j = 1; j <= (int) Math.sqrt(i); j++) {
if (i % j == 0)
count++;
}
if (count > 1)
s += "";
else
s += i + " ";
}
System.out.println(s);
}
//result
//100以内的素数:1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
}
......
public class Fibonacci {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NumOfFibonacci(9);
}
public static int MyFibonacci(int i){
if(i>0) {
if(i == 1)return 1;
if(i == 2)return 1;
else return MyFibonacci(i-1)+MyFibonacci(i-2);
}
else
return 0;
}
//获得数列的前n项
public static void NumOfFibonacci(int n){
String s = "斐波那契数列的前"+n+"项:";
for(int i=1; i<=n; i++){
s += MyFibonacci(i)+" ";
}
System.out.println(s);
}
//result
//斐波那契数列的前9项:1 1 2 3 5 8 13 21 34
}
......
/**
* 找出四位数所有的吸血鬼数字
* 吸血鬼数字:位数为偶数的数字可以由一对数字相乘而得,这对数字包含乘积一半的位数
* 如:1260 = 21*60
*/
public class Vampire {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="";
for(int i=1; i<10; i++){
for(int j=0; j<10; j++){
s += (10*i+j)+" ";
}
}
System.out.println(s);
String[] arr = s.split(" ");
System.out.println("两位数的个数为:"+arr.length);
int a,b;
int count=0;
for(int j=0; j<arr.length; j++){
for(int k=0; k<arr.length; k++){
a = Integer.valueOf(arr[j]).intValue();
b = Integer.valueOf(arr[k]).intValue();
//为能以两个0结尾
if(a*b<10000 && a*b>1000 && (a*b)%100!=0){
count++;
System.out.print(arr[j]+"_"+arr[k]+" ");
}
}
System.out.println();
}
System.o ......