「gbnjava实现」gbase java
今天给各位分享gbnjava实现的知识,其中也会对gbase java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、(200分)扩展UDP实现可靠传输(SR,GBN)
- 2、如何用70行Java代码实现神经网络算法
- 3、如何运行java程序
- 4、java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
- 5、java 实现 简体gb 到 繁体 再到 big5码 的转换
(200分)扩展UDP实现可靠传输(SR,GBN)
UDT协议-基于UDP的可靠数据传输协议
1. 介绍
随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additive increase multiplicative decrease)算法彻底减少了TCP拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在BDP增加到很高的时候比较容易受包损失攻击另外,继承自TCP拥塞控制的不公平的RTT也成为在分布式数据密集程序中的严重问题。拥有不同RTT的并发TCP流将不公平地分享带宽。尽管在小的 BDP网络中使用通常的TCP实现来相对平等的共享带宽,但在拥有大量BDP的网络中,通常的基于TCP的程序就必须承受严重的不公平的问题。这个RTT 基于的算法严重的限制了其在广域网分布式计算的效率,例如:internet上的网格计算。
一直到今天,对标准的TCP的提高一直都不能在高BDP环境中效率和公平性方面达到满意的程度(特别是基于RTT的问题)。例如:TCP的修改,RFC1423(高性能扩展),RFC2018(SACK)、RFC2582(New Reno)、RFC2883(D-SACK)、和RFC2988(RTO计算)都或多或少的提高了点效率,但最根本的AIMD算法没有解决。HS TCP(RFC 3649)通过根本上改变TCP拥塞控制算法来在高BDP网络中获得高带宽利用率,但公平性问题仍然存在。
考虑到上面的背景,需要一种在高BDP网络支持高性能数据传输的传输协议。我们推荐一个应用程序级别的传输协议,叫UDT或基于UDP的数据传输协议并拥有用塞控制算法。
本文描述两个正交的部分,UDP协议和UDT拥塞控制算法。一个应用层级别的协议,位于UDP之上,使用其他的拥塞算法,然而这些本文中描述的算法也可以在其他协议中实现,例如:TCP。
一个协议的参考实现叫[UDT];详细的拥塞控制算法的性能分析在[GHG04]中可以找到。
如何用70行Java代码实现神经网络算法
如何用70行Java代码实现神经网络算法
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数
public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;llayernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;jlayernum[l]+1;j++)
for(int i=0;ilayernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;llayer.length;l++){
for(int j=0;jlayer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;ilayer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;jlayerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);
while(l--0){
for(int j=0;jlayerErr[l].length;j++){
double z = 0.0;
for(int i=0;ilayerErr[l+1].length;i++){
z=z+l0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}
public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
如何运行java程序
1.首先将代码拷贝下来保存在文本文件gbn.java中,注意,扩展名为java,并且文件名称必须是gbn.java,不能是其它文件名。
2.然后,需要编译gbn.java文件,一般使用SUN公司JDK编译器,到 下载JDK5.0,安装,JDK5除了安装JAVA编译器和开发文档以外,还会安装JAVA虚拟机,因为现在的IE不能运行JAVA,必须安装JVM以后才能运行,在JDK5安装过程中会提示安装的。
3.将gbn.java拷贝到jdk5.0的安装目录的BIN目录下,运行 javac gbn.java
将生成gbn.class 和packet.class两个文件
4.建立一个test.html 文件,文件代码如下
html
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
titleUntitled Document/title
/head
body
applet code="gbn.class" width="320" height="320"
/applet
/body
/html
将test.html,gbn.class,paket.class同时拷贝到同一目录下,运行test.html就可以看到这个APPLET的运行情况了.
java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
通过JDK1.6知道String类中getBytes(”编码“)方法可以讲一个数用指定的编码转成一个字节数组,String中通过指定的 charset解码指定的 byte 数组,构造一个新的 String。代码如下:
try{
String s = "java学习";
System.out.println(s);
String result = new String(s.getBytes("GB2312"),"iso-8859-1");
System.out.println(s);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
扩展资料:
getBytes() 方法有两种形式:
1、getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
2、getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
参考资料:
百度百科-getBytes()
java 实现 简体gb 到 繁体 再到 big5码 的转换
public class CharDecode {
public static void main(String[] args) throws Exception{
// TODO: Add your code here
System.setProperty("file.encoding","big5");//系统默认字符改成big5
System.out.println("please enter a chinese String:");
byte [] buf = new byte[1024];
String strInfo = null;
int pos = 0;
int ch = 0;
while(true)
{
ch = System.in.read();
System.out.println(Integer.toHexString(ch));
switch(ch)
{
case '\r':
break;
case '\n':
strInfo = new String(buf,0,pos);//使用默认字符集
for(int i=0;istrInfo.length();i++)
{
System.out.println(Integer.toHexString(/*(int)*/strInfo.charAt(i)));
}
System.out.println(new String(strInfo.getBytes("big5"),"gb2312"));//big5转换成gb2312
break;
default:
buf[pos++] = (byte)ch;
}
}
}
}
关于gbnjava实现和gbase java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。