package X3DBuilder;
目前创新互联已为上1000+的企业提供了网站建设、域名、虚拟空间、网站托管、企业网站设计、贺州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
import java.io.*;
public class X3DCreator
{
public int xBins;
public int yBins;
public int i;
public int k;
public float min =0;
public float max = 0;
public double xSpacing;
public double zSpacing;
public double scalefactor;
public float[][] data;
public float[][] data2;
public float[] data1;
public X3DCreator() throws IOException
{
//导入文件test1513.data,并建立通向test1513.data的输入流
BufferedReader in = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("test1513.data")));
//从文件中读取第一行,并且将其格式化成数字xBins
xBins = Integer.parseInt(in.readLine());
//从文件中读取第二行,并且将其格式化成数字yBins
yBins = Integer.parseInt(in.readLine());
//算法,计算两数各自减一后的倒数
xSpacing = 1.0/(xBins-1);
zSpacing = 1.0/(yBins-1);
//将两数分别储存到数组data 中
data = new float[xBins][yBins];
//将两数的乘积储存到数组data1 中
data1 = new float[xBins*yBins];
//将两数分别储存到数组data2 中
data2 = new float[yBins][xBins];
for (i=0; ixBins; i++)
for (int j=0; jyBins; j++){
//继续从文件的第三行开始一行一行读取信息.并将读出的数据放在data中
data[i][j] = Float.parseFloat(in.readLine());
//通过多次循环比较获得数组data中的最大值并赋值给max
if (max data[i][j])
max = data[i][j];
//通过多次循环将二维数组data中的数据全部放置到数组data1中
data1[k]= data[i][j];
k=k+1;
}
//赋值max的倒数给scalefactor
scalefactor = 1.0/max;
//关闭读取文件的流对象
in.close();
//打印data1的第16 个元素
System.out.println(data1[16]);
//打印data所有元素的个数
System.out.println(k);
for (i=0; iyBins; i++)
for (int j=0; jxBins; j++){
//循环赋值
data2[i][j] = data1[j*yBins+i];
}
//创建写入文件test.x3d的流
BufferedWriter fout = new BufferedWriter(new FileWriter("test.x3d"));
//创建读取文件x3d1.txt的流
BufferedReader in2 = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("x3d1.txt")));
String inputLine;
while ((inputLine = in2.readLine()) != null) {
//fout.write(inputLine);
//一行一行把从文件x3d1.txt读取的字符串写入文件test.x3d。
fout.append(inputLine);
//写入一个行分隔符,也就是换行。
fout.newLine();
}
fout.newLine();
//下面应该是写入一些xml内容
fout.append("ElevationGrid height ='");
for (i=0; iyBins; i++)
for (int j=0; jxBins; j++)
{
// fout.append(" "+scalefactor*data2[i][j]+" ");
fout.append(" "+data2[i][j]+" ");
}
fout.append("'");
fout.append(" xDimension='" + xBins + " ' ");
fout.append(" xSpacing='" + xSpacing + " '");
fout.append(" zDimension='" + yBins + "' ");
fout.append(" zSpacing='" + zSpacing + "'/ ");
fout.newLine();
//关闭读取流
in2.close();
// BufferedWriter fout2 = new BufferedWriter(new FileWriter("test.svg",true));
BufferedReader in3 = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("x3d2.txt")));
String inputLine2;
while ((inputLine2 = in3.readLine()) != null) {
//继续将文件x3d2.txt的内容也写入到test.x3d中
fout.append(inputLine2);
fout.newLine();
}
//关闭读取文件流
in3.close();
//关闭写入文件流.
fout.close();
}
}
//结束
public static String format(long paramLong)//paramLong是一个传递进来的long型整数
{
int i = 60 * 60;定义i=60乘60就是3600
long l1 = paramLong / i;定义l1等于paramLong除以i
long l2 = (paramLong - l1 * i) / 60;定义
long l3 = paramLong - l1 * i - l2 * 60;定义
String str1;声明字符串
label64: String str2;label是监听
if (l1 10L)如果l1小于10
{
str1 = "0" + l1;字符串拼接
if (l2 = 10L)如果l2大于等于10
break label175;结束监听
str2 = "0" + l2;字符串拼接
label92: if (l3 = 10L)监听如果l3大于等于10
break label195;结束监听
}
for (String str3 = "0" + l3; ; str3 = l3)for循环,
{
return str1 + ":" + str2 + ":" + str3;
str1 = l1;
break label64:
label175: str2 = l2;
label195: break label92:
}
}
主要研究一下监听是怎么用的吧
添加和更新用户代码:
……
else if(method.equals("manager")){ //判断提交的action中的method是否是manager
String username2 = (String)session.getAttribute("user"); //接受到session里存放的user
if(username2 == null){ //判断用户名是否为空
request.getRequestDispatcher("error.jsp").forward(request, response); //如果用户名为空则跳转到error.jsp页面
}
else{
String ra = request.getParameter("ra").trim(); //获得请求中为ra的值
if(ra.equals("add")){ //判读ra是否是add
String username = request.getParameter("username").trim(); //接受用户名
String password = MD5.MD5(request.getParameter("password").trim()); //接受用户密码并进行MD5加密
String isuse = request.getParameter("isuse").trim(); //接受用户的状态
if(isuse.equals("在用")) //判断isuse的状态是否是“再用”
isuse = "1"; //如果isuse的状态是“再用” 赋值给isuse为1
else
isuse = "2"; //如果isuse的状态不是“再用” 赋值给isuse为2
int flag = loginbean.addManager(username, password, "2", isuse); //定义flag 用来记录 addManager方法是否正确执行
if(flag == Constant.SUCCESS){ //根据flag值 判断添加管理员是否成功 如果flag值与Constant.SUCCESS相同则添加成功
request.setAttribute("message", "增加管理员成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else if(flag == Constant.SAME_NAME){ //根据flag值 判断添加管理员是否成功 如果flag值与Constant.SAME_NAME相同则表示用户名已经存在
request.setAttribute("username", username);
request.setAttribute("message", "该用户名已经存在!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{ //根据flag值 判断添加管理员是否成功 如果flag值既不与Constant.SUCCESS相同也不与Constant.SUCCESS相同 则添加失败 返回信息:系统维护中
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
else if(ra.equals("update")){ //获得请求中为ra的值 如果是update 修改
String username = request.getParameter("username").trim();
String password = request.getParameter("password").trim();
String isuse = request.getParameter("isuse").trim();
if(!password.equals("")){ //判断用户密码 如果不为空 则经过MD5加密
password = MD5.MD5(password);
}
if(isuse.equals("在用"))
isuse = "1";
else
isuse = "2";
int flag = loginbean.updateManager(username, password, "2", isuse); //根据flag值 判断修改管理员是否成功
if(flag == Constant.SUCCESS){ //根据flag值 判断修改管理员是否成功 如果flag值等于Constant.SUCCESS的值 则修改成功 跳转到user.jsp页面并提示 修改管理员信息成功
request.setAttribute("message", "修改管理员信息成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{ //根据flag值 判断修改管理员是否成功 如果flag值不等于Constant.SUCCESS的值 则修改不成功 跳转到user.jsp页面并提示 系统维护中,请稍后再试!
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
保证hashCode 不同的算法,很多人都研究这个算法,算法很多
这个怎么保证的我不知道
但是我可以给你解释下算式
int 是4位byte的 4*8=32bit 一也注意到了12+20=32
h ^= (h 20) ^ (h 12);意味着h=h的前12位不变+中间的8位位中间的8位和前8位异或值+后12位为后12位和前间12位和9-20位的异或值(+不是加法是连接,一共32位)
h ^ (h 7) ^ (h 4); 之后再用类似的方式
新h=前4位不变+前3位和5-7位异或值+前25位和后25位和4-28位的异或值