1. import java.util.*;
2.(A) public class Test
{ public static void main(String[] args)
{
//生成 [0-n) 个不重复的随机数 st 用来保存这些随机数
ArrayList list = new ArrayList();
int n = 10;
Random rand = new Random();
boolean[] bool = new boolean[n];
int num =0;
for (int i = 0; i<n; i++)
{
......
首先引用一篇文章,介绍一个简单的JNI的调用的过程。 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。 简单介绍及应用如下: 一、JAVA中所需要做的工作 在JAVA程序中,首先需要在类中声明所调用的库名称,如下:
static { System.loadLibrary(“goodluck”); }
在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。 还需对将要调用的方法做本地声明,关键字为native。且只需要声明,而不需要具体实现。如下:
public native static void set(int i); public native static int get();
然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。 例如程序testdll.java,内容为:
public class testdll { static { System.lo ......
反射是Java语言中很重要的一个组成部分,所以就此话题讨论的资源可谓数之不尽,日常开发也会经常使用到关于反射的Reflection
API。Java5.0
Tiger出现以后,更对反射API有了新的扩展,尽管讨论的话题很多,不过我还是觉得不够全面,尤其是对泛型这一块,所以就我所知,再花力气总结一番
首先反射的入口是从Class开始的,所以如何获取Class就变得十分关键了。这里总结了几种方式:
1.通过${name}.class 语法。这里${name}可以是对象,也可以是原始数据类型,不过别忘了void.class和Void.class
2.通过${name}.TYPE 语法。这里${name}是八种原始数据的包装类和Void.TYPE
3.通过对象的getClass()方法。
4.通过Class对象的forName()方法
5.通过类Class的getSuperclass()获取父亲类Class
6.通过类Class的getEnclosingClass()获取外部类Class
7.通过类Class的getClasses()和getDeclaredClasses()获取内部类Class
下面是一张表用来说明getClasses()和getDeclaredClasses()两个方法,稍后还会用该表说明其他Reflection API
--------------------------------------------------------------------------------------------
Member
| ......
问题:现有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 ......