package game;
public class JieCeng {
public static void main(String[] args){
System.out.println(fun(10));
}
public static int fun(int n){
if(1==n)
return 1;
System.out.println( n * fun(n-1));
return n * fun(n-1);
}
} ......
package game;
public class Money {
public static void main(String[] args) {
fun("", 10);
System.out.println("总共算法:" + i);
}
// 10元钱的组成,1,2,5任意组合
public static int i = 1;
public static void fun(String log, int n) {
// int num = n;
if (0 == n) {
System.out.println(log.substring(0, log.length() - 1) + "=");
return;
} else if (1 == n) {
System.out.println(log + "1" + "=");
return;
}
if (n >= 1)
fun(log + "1+", n - 1);
if (n >= 2)
fun(log + "2+", n - 2);
if (n >= 5)
fun(log + "5+", n - 5);
i++;
}
} ......
JAVA RMI 快速入门实例
本实例为参考多篇文章写就而成,网上及书上各类文章介绍如何使用RMI有多种实例可参考,譬如有:
1. 用命令rmiregistry启动RMI注册服务的
2. 同时创建存根(stub)和骨架(skeleton)的
3. 只创建存根类的的(jdk1.2以后版本)
4. 通过RemoteRef和rmi://协议字串方式的
5. 比较少讲到的用LocateRegistry直接在代码上启动RMI注册服务的。
以上描述并非明显分类,比如,你总是可以选择用rmiregistry或者代码LocateRegistry启动RMI注册服务
下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用。
分为以下四个步骤
1. 创建远程接口及声明远程方法(HelloInterface.java)
2. 实现远程接口及远程方法(继承UnicastRemoteObject)(Hello.java)
3. 启动RMI注册服务,并注册远程对象(HelloServer.java)
4. 客户端查找远程对象,并调用远程方法(HelloClient)
5. 执行程序:启动服务HelloServer;运行客户端HelloClient进行调用
具体代码及对应步骤如下:
1. 创建远程接口及声明远程方法(HelloInterface.java)
java 代码
package com.unmi;
import java.rmi.*;
/ ......
Java数据类型与转换
Java数据类型分为三大类
布尔型,字符型(char),数值型(整数,浮点型)
整数类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
浮点类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
数据类型转换
(1). 简单数据类型之间的转换
简单数据类型包括:byte,short,char,int,long,float,double
由低级到高级分别为(byte,short,char)--int--long--float--double
.低级到高级的自动类型转换
低到高级(byte,short,char)->int->long->float->double
转换方法:直接赋值
代码如下:byte b;int i=b;long l=b;float f=b;double d=b;
.高级到低级的强制类型转换
高到低级double->float->long->int->(byte,short,char)
转换方法:低数据类型=(类型)高数据类型
代码如下:int i=99; byte b=(byte)i; char c=(char)i; float f=(float)i;
*对byte,short,char三种类型而言,他们是平级的不能相互自动转换,可使用强制类型转换
byte b1=(byte)short1; char c ......
package game;
public class HanTaGame {
public static void main(String[] args) {
fun('1', '2', '3', 2);
}
// 汉塔游戏解决方案
public static void fun(char src, char idle, char dest, int n) {
if (1 == n) {
System.out.println(src + "--->" + dest);
return;
}
//定义一个顺序
fun(src, dest, idle, n - 1);
System.out.println(src + "--->" + dest);
//进行顺序的交换
fun(idle, src, dest, n - 1);
}
} ......
这篇文章讨论和阐明了提供 JavaTM I/O 性能的多种技术。大多技术围绕调整磁盘文件 I/O,但是有些内容也同样适合网络 I/O 和窗口输出。第一部分技术讨论底层的I/O问题,然后讨论诸如压缩,格式化和串行化等高级I/O问题。然而这个讨论没有包含应用设计问题,例如搜索算法和数据结构,也没有讨论系统级的问题,例如文件高速缓冲。
当我们讨论Java I/O时,值得注意的是Java语言采取两种截然不同的磁盘文件结构。一个是基于字节流,另一个是字符序列。在Java语言中一个字符有两个字节表示,而不是像通常的语言如c语言那样是一个字节。因此,从一个文件读取字符时需要进行转换。这个不同在某些情况下是很重要的,就像下面的几个例子将要展示的那样。
低级 I/O I问题
加速I/O的基本规则
缓冲
读写文本文件
格式化的代价
随机访问
高级I/O问题
压缩
高速缓冲
分解
串行化
获取文件信息
更多信息
加速I/O的基本规则
作为这个讨论的开始,这里有几个如何加速I/O的基本规则:
避免访问磁盘
避免访问底层的操作系统
避免方法调用
避免个别的处理字节和字符
很明显这些规则不能在所有的问题上避免,因为如果能够的话就没有实际的I/O被执行。考虑下面的 ......