问题:现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。
我的解法:
1.简单的方法就是模拟这个过程。使用一个数组代表老鼠是否被吃掉,循环遍历。
2.改进一下的方法,其实这个问题就是一个m=2的约瑟夫环问题。
package com.easyProblem;
/*
* 现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,
* 请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号
*/
public class CatEatMouseProblem {
private int[] m;
public static void main(String[] args) {
CatEatMouseProblem cm = new CatEatMouseProblem();
System.out.println("=======低效的方法========");
long startTime =System.currentTimeMillis();
System.out.println(cm.easyWork(1111178));
long endTime=System.currentTimeMillis();
System.out.println("耗时:" + (endTime-startTime));
System.out.println("=======改进的方法========");
startTime =System.currentTimeMillis();
System.out ......
向数据库保存对象,采用ObjectOutputStream向数据库直接写入
/**
* Title: AF
* Description: 向数据库中写入对象测试程序
* Copyright: Copyright 2009 ufgov, Inc.
* Company: ufgov
* 创建时间: 2009-10-29
* @author 刘永伟(manlge)
* @version 1.0
*/
public class WriteObjectToBlob {
/*
* 建表sql
* CREATE TABLE "AF"."TABLE2" ("NAME" VARCHAR2(36) NOT NULL, "DATA" BLOB NOT NULL) TABLESPACE "AF"
*/
public static Connection getConnection(String host, int port, String dataBaseName,
String userName, String password) throws Exception {
......
package sort;
public class RadixSort {
// 求x 数第d位上的数字,例如12345,十位数字是4 12345/10%10=4
// d=0 表示个位 ;d=1 表示十位...依次类推
public static int digit(int d,int x){
return x/(int)Math.pow(10, d)%10;
}
public static void radixSort(int a[],int d){// d 表示位:个位,十位,百位....
// 定义10个桶0~9,每个桶存放 位的个数,例如:98,100,23,18
// 个位8,0,,3,8 分别存放在8,0,3,8桶的计数器,其中8号桶=2
int count[]=new int[10];// 定义十个计数器变量
for(int i:a){ // 取数组中每一位
count[digit(d,i)]++;
System.out.println(i+":"+d+"位上的数字是--->"+digit(d,i));
}
int i=0;
for(int c:count){
System.out.println(i+"号桶计数数"+c);
i++;
}
&nbs ......
jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1、压缩的
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Zip {
static final int BUFFER = 2048;
public static void main(String argv[]) {
try {
BufferedInputStream origin = null;
FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
dest));
byte data[] = new byte[BUFFER];
File f = new File("e:\\test\\a\\");
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin ......
Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行
一次分析,归类,理清不同方法之间的异同点。
一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的。
InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作,类似的,在
OutputStream 中我们有 FileOutputStream 这个对象。
用FileInputStream 来读取数据的常用方法是:
FileInputStream fstream = new FileInputStream(args[0]);
DataInputStream in = new DataInputStream(fstream);
用 in.readLine() 来得到数据,然后用 in.close() 关闭输入流。
完整代码见 Example 1。
用FileOutputStream 来写入数据的常用方法是:
FileOutputStream out out = new FileOutputStream("myfile.txt");
PrintStream p = new PrintStream( out );
用 p.println() 来写入数据,然后用 p.close() 关闭输入。
完整代码见 Example 2。
二在 JDK 1.1中,支持两个新的对象 Reader & Writer, 它们只能用来对文本文件进行操作,而
JDK1.1中的 InputStream & OutputStream 可以对文本 ......
Http处理步骤:
1.客户端和Web服务器建立连接;
2.客户端发送http请求;
3.服务器端接收客户端的http请求,生成http响应回发;
4.服务器关闭连接.
请求:请求行,请求头,空行,消息体.
响应:状态行,响应头,空行,消息体.
Servlet:
特点:1.普通的Java代码,使用了新的API;
2.不属于J2SE,具有单独的规范;
3.继承于HttpServlet;
4.没有main方法,由Web容器执行;
任务:1.读取客户端请求中的显式或隐式数据;
2.生成结果;
3.向客户端发送显式或隐式数据.
Web容器:
定义:管理、执行Servlet或JSP的应用程序.
处理过程:1.客户端发送请求;
2.若请求是静态页面,由Web服务器处理;若请求是JavaWeb组件,由Web容器处理;
3.Web容器根据配置文件调用具体的Servlet类;
4.Servlet根据request中的请求信息进行处理,处理完成后将结果放入response中返回到客户端;
5.Servlet执行完成后,Web容器进行后续的处理.
JavaWeb
组成:1.Web.xml配置文件;
2.静态页面和JSP页面;
3.类文件和包.
目录结构:1.AppName
2.AppName/WEB-INF
3.AppName/WEB-INF/classes
4.AppName/WEB-INF/lib
5.AppName/WEB-INF/web.xml
6.AppName/*.html,*.jsp ......