第一篇:Java中文&编码问题小结
2006-03-07 | Java中文&编码问题小结
Java字符编码转换过程说明
常见问题 JVM JVM启动后,JVM会设置一些系统属性以表明JVM的缺省区域。user.language,user.region,file.encoding等。可以使用 System.getProperties()详细查看所有的系统属性。
如在英文操作系统(如UNIX)下,可以使用如下属性定义强制指定JVM为中文环境
-Dclient.encoding.override=GBK-Dfile.encoding=GBK-Duser.language=zh-Duser.region=CN
.javaà.class编译
说明:一般javac根据当前os区域设置,自动决定源文件的编码.可以通过-encoding强制指定.错误可能: 1 gbk编码源文件在英文环境下编译,javac不能正确转换.曾见于java/jsp在英文 unix下.检测方法:写u4e00格式的汉字,绕开javac编码,再在jvm中,将汉字作为 int打印,看值是否相等;或直接以UTF-8编码打开.class文件,看看常量字符串
是否正确保存汉字。
文件读写
外部数据如文件经过读写和转换两个步骤,转为jvm所使用字符。
InputStream/OutputStream用于读写原始外部数据,Reader/Writer执行读写和转
换两个步骤。文件读写转换由java.io.Reader/Writer执行;输入输出流
InputStream/OutputStream 处理汉字不合适,应该首选使用Reader/Writer,如 FileReader/FileWriter。
2`FileReader/FileWriter使用JVM当前编码读写文件.如果有其它编码格式,使用
InputStreamReader/OutputStreamWriter PrintStream有点特殊,它自动使用jvm缺省编码进行转换。
读取.properties文件
.propeties文件由Properties类以iso8859-1编码读取,因此不能在其中直接写汉
字,需要使用JDK 的native2ascii工具转换汉字为uXXXX格式。命令行:
native2ascii –encoding GBK inputfile outputfile
读取XML文件 XML文件读写同于文件读写,但应注意确保XML头中声明如 xml version=” 1.0” encoding=”gb2312” ?>与文件编码保持一致。javax.xml.SAXParser类接受InputStream作为输入参数,对于Reader,需要用 org.xml.sax.InputSource包装一下,再给SAXParser。对于UTF-8编码 XML,注意防止编辑器自动加上uFFFE BOM头, xml parser会报
告content is not allowed in prolog。
字节数组 使用 new String(byteArray,encoding)和 String.getBytes(encoding)在
字节数组和字符串之间进行转换
也可以用ByteArrayInputStream/ByteArrayOutputStream转为流后再用 InputStreamReader/OutputStreamWriter转换。
错误编码的字符串(iso8859-1转码gbk)如果我们得到的字符串是由错误的转码方式产生的,例如:对于gbk中文,由
iso8859-1方式转换,此时如果用调试器看到的字符串一般是 的样子,长度一般
为文本的字节长度,而非汉字个数。
可以采用如下方式转为正确的中文:
text = new String(text.getBytes(“iso8859-1”),”gbk”);
JDBC 转换过程由JDBC Driver执行,取决于各JDBC数据库实现。对此经验尚积累不够。对于ORACLE数据库,需要数据库创建时指定编码方式为gbk,否则会出现汉字转
码错误 对于 SQL Server 2000,最好以nvarchar/nchar类型存放文本,即不存在中文 /编码转换问题。连接 Mysql,将 connectionString 设置成 encoding 为 gb2312:
String connectionString = “jdbc:mysql://localhost/test? useUnicode=true&characterEncoding=gb2312”;
WEB/Servlet/JSP 1 对于JSP,确定头部加上 <%@ page
contentType=“text/html;charset=gb2312”%>这样的标签。对于Servlet,确定 设置setContentType(“text/html;charset=gb2312”),以上两条用于使得输出汉字没有问题。为输出HTML head中加一个 ,让浏览器正确确定HTML编码。为Web应用加一个Filter,确保每个Request明确调用setCharacterEncoding方
法,让输入汉字能够正确解析。
import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.UnavailableException;import javax.servlet.http.HttpServletRequest;/** * Example filter that sets the character encoding to be used in parsing the * incoming request */ public class SetCharacterEncodingFilter implements Filter { public SetCharacterEncodingFilter(){} protected boolean debug = false;protected String encoding = null;protected FilterConfig filterConfig = null;public void destroy(){ this.encoding = null;this.filterConfig = null;}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException { // if(request.getCharacterEncoding()== null)// { // String encoding = getEncoding();// if(encoding!= null)// request.setCharacterEncoding(encoding);// // } request.setCharacterEncoding(encoding);if(debug){ System.out.println(((HttpServletRequest)request).getRequestURI()+“setted to ”+encoding);} chain.doFilter(request, response);}
public void init(FilterConfig filterConfig)throws ServletException { this.filterConfig = filterConfig;this.encoding = filterConfig.getInitParameter(“encoding”);this.debug = “true”.equalsIgnoreCase(filterConfig.getInitParameter(“debug”));}
protected String getEncoding(){ return(this.encoding);} }
web.xml中加入:
encoding gb2312 debug false
其一:在web.xml里加上如下脚本: weblogic.httpd.inputCharset./* GBK
SWING/AWT/SWT 对于SWING/AWT,Java会有些缺省字体如Dialog/San Serif,这些字体到系统真实
字体的映射在$JRE_HOME/lib/font.properties.XXX文件中指定。排除字体显示问
题时,首先需要确定JVM的区域为zh_CN,这样font.properties.zh_CN文件才会发
生作用。对于 font.properties.zh_CN , 需要检查是否映射缺省字体到中文字体
如宋体。
在Swing中,Java自行解释TTF字体,渲染显示;对于AWT,SWT显示部分交由操作系
统。首先需要确定系统装有中文字体。汉字显示为”□”,一般为显示字体没有使用中文字体,因为Java对于当前字
体显示不了的字符,不会像Windows一样再采用缺省字体显示。部分不常见汉字不能显示,一般为显示字库中汉字不全,可以换另外的中文字
体试试。对于AWt/SWT,首先确定JVM运行环境的区域设置为中文,因为此处设计JVM与操
作系统api调用的转换问题,再检查其它问题。
JNI JNI中jstring以UTF-8编码给我们,需要我们自行转为本地编码。对于Windows,可以采用WideCharToMultiByte/MultiByteToWideChar函数进行转换,对于Unix,可以采用iconv库。
这里从SUN jdk 1.4 源代码中找到一段使用jvm String 对象的getBytes的转换方
式,相对简单和跨平台,不需要第三方库,但速度稍慢。函数原型如下:
/* Convert between Java strings and i18n C strings */ JNIEXPORT jstring NewStringPlatform(JNIEnv *env, const char *str);
JNIEXPORT const char * GetStringPlatformChars(JNIEnv *env, jstring jstr, jboolean *isCopy);
JNIEXPORT jstring JNICALL JNU_NewStringPlatform(JNIEnv *env, const char *str);
JNIEXPORT const char * JNICALL JNU_GetStringPlatformChars(JNIEnv *env, jstring jstr, jboolean *isCopy);
JNIEXPORT void JNICALL
JNU_ReleaseStringPlatformChars(JNIEnv *env, jstring jstr, const char *str);
附件jni_util.h,jni_util.c
TUXEDO/JOLT JOLT对于传递的字符串需要用如下进行转码
new String(ls_tt.getBytes(“GBK”),“iso8859-1”)
对于返回的字符串
new String(error_message.getBytes(“iso8859-1”),“GBK”);jolt 的系统属性 bea.jolt.encoding不应该设置,如果设置,JSH会报告说错误的
协议.JDK1.4/1.5新增部分
字符集相关类(Charset/CharsetEncoder/CharsetDecoder)jdk1.4开始,对字符集的支持在java.nio.charset包中实现。
常用功能: 列出jvm所支持字符集:Charset.availableCharsets()2 能否对看某个Unicode字符编码,CharsetEncoder.canEncode()
Unicode Surrogate/CJK EXT B Unicode 范围一般所用为U0000-UFFFF范围,jvm使用1个char就可以表示,对于 CJK EXT B区汉字,范围大于U20000,则需要采用2个char方能表示,此即
Unicode Surrogate。这2个char的值范围 落在Character.SURROGATE 区域内,用 Character.getType()来判断。
jdk 1.4尚不能在Swing中正确处理surrogate区的Unicode字符,jdk1.5可以。对
于CJK EXT B区汉字,目前可以使用的字库为”宋体-方正超大字符集”,随Office 安装。
常见问题
在JVM下,用System.out.println不能正确打印中文,显示为??? System.out.println是PrintStream,它采用jvm缺省字符集进行转码工作,如果 jvm的缺省字符集为iso8859-1,则中文显示会有问题。此问题常见于Unix下,jvm 的区域没有明确指定的情况。
在英文UNIX环境下,用System.out.println能够正确打印汉字,但是内部处理错误 可能是汉字在输入转换时,就没有正确转码:
即gbk文本à(iso8859-1转码)àjvm char(iso8859-1编码汉字)à(iso8859-1转码)à
输出。
gbk汉字经过两次错误转码,原封不动的被传递到输出,但是在jvm中,并未以正
确的unicode编码表示,而是以一个汉字字节一个char的方式表示,从而导致此类
错误。
GB2312-80,GBK,GB18030-2000 汉字字符集
GB2312-80 是在国内计算机汉字信息技术发展初始阶段制定的,其中包含了大部
分常用的一、二级汉字,和 9 区的符号。该字符集是几乎所有的中文系统和国际
化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位
0xa1-0xfe,低位也是 0xa1-0xfe;汉字从 0xb0a1 开始,结束于 0xf7fe;
GBK 是 GB2312-80 的扩展,是向上兼容的。它包含了 20902 个汉字,其编码范
围是 0x8140-0xfefe,剔除高位 0x80 的字位。其所有字符都可以一对一映射到
Unicode 2.0,也就是说 JAVA 实际上提供了 GBK 字符集的支持。这是现阶段
Windows 和其它一些中文操作系统的缺省字符集,但并不是所有的国际化软件都
支持该字符集,感觉是他们并不完全知道 GBK 是怎么回事。值得注意的是它不是
国家标准,而只是规范。随着 GB18030-2000国标的发布,它将在不久的将来完成
它的历史使命。
GB18030-2000(GBK2K)在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数
民族的字形。GBK2K 从根本上解决了字位不够,字形不足的问题。它有几个特点,它并没有确定所有的字形,只是规定了编码范围,留待以后扩充。
编码是变长的,其二字节部分与 GBK 兼容;四字节部分是扩充的字形、字位,其
编码范围是首字节 0x81-0xfe、二字节0x30-0x39、三字节 0x81-0xfe、四字节
0x30-0x39。
UTF-8/UTF-16/UTF-32
UTF,即Unicode Transformer Format,是Unicode代码点(code point)的实际表 示方式,按其基本长度所用位数分为UTF-8/16/32。它也可以认为是一种特殊的外
部数据编码,但能够与Unicode代码点做一一对应。
UTF-8是变长编码,每个Unicode代码点按照不同范围,可以有1-3字节的不同长度。
UTF-16长度相对固定,只要不处理大于U200000范围的字符,每个Unicode代码点
使用16位即2字节表示,超出部分使用两个UTF-16即4字节表示。按照高低位字节
顺序,又分为UTF-16BE/UTF-16LE。
UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。按照高低位字
节顺序,又分为UTF-32BE/UTF-32LE。
UTF编码有个优点,即尽管编码字节数不等,但是不像gb2312/gbk编码一样,需要
从文本开始寻找,才能正确对汉字进行定位。在UTF编码下,根据相对固定的算法,从当前位置就能够知道当前字节是否是一个代码点的开始还是结束,从而相对
简单的进行字符定位。不过定位问题最简单的还是UTF-32,它根本不需要进行字
符定位,但是相对的大小也增加不少。
关于GCJ JVM GCJ并未完全依照sun jdk的做法,对于区域和编码问题考虑尚不够周全。GCJ启动
时,区域始终设为en_US,编码也缺省为iso8859-1。但是可以用Reader/Writer做
正确编码转换。
第二篇:java路径问题小结
1.user.dir Java代码
1.//通过来获取;此目录并非是固定的,而是根据该代码所属类运行时的环境而定。
2.//普通的java程序中获得的是该类所属项目的根目录(d:workspaceapp)3.//在特定服务器下发布运行的javaweb程序则获得的是该服务器下提供运行环境的目录
4.//(如用Tomcat将获得F:Tomcat 6.0bin)5.System.getProperties(“user.dir”)
2.classes目录
顾名思义指存放类文件的根目录。
普通java程序的classes目录指appbin web项目的classes目录是指appWebRootWEB-INFclasses
Java代码
1.//在普通项目或web项目中
2.//s:获得classes目录绝对路径(包括TestClass类所属包目录)3.// appbincomtest 4.// 或appWebRootWEB-INFclassescomtest 5.//ss:获得classes目录绝对路径 6.// appbin 7.// 或appWebRootWEB-INFclasses 8.com.test.TestClass c=new com.test.TestClass();9.String s=c.getClass().getResource(“").getPath();10.String ss=c.getClass().getClassLoader().getResource(”“).getPath();
3.web项目根目录(在服务器发布后)app
(1)根据ServeletContext的getRealPath()方法获得绝对路径 Java代码
1.//第一种获得”app“绝对路径f:tomcat 6.0webappsapp 2.//第二、三种获得”app“绝对路径f:tomcat 6.0webappsapp 3.getServletContext.getRealPath(”“);4.getServletContext.getRealPath(”“);5.getServletContext.getRealPath(”/“);
(2)根据HttpServletRequest的getContextPath()方法获得相对路径 Java代码
1.getRequest().getContextPath();
4.在struts2框架中获得发布后web项目的根目录 Java代码
1.//利用ServletActionContext的静态方法
2.String real=ServletActionContext.getServletContext().getRealPath(”");3.String relative=ServletActionContext.getRequest().getContextPath());
如果使用user.dir的值的话获得的路径为%Tomcat_Home%bin,所以不推荐使用user.dir这一环境变量来获取路径。
对于新手来说,搞清楚java项目的开发目录和发布目录的信息是十分必要的,特别是使用集成开发环境下,目录的安排十分透明,如果脱离开发环境的话,很多新手都会对项目目录结构很迷茫。
第三篇:java小结
//1.累加 public class 累加 {
}
//2.阶乘
public class 30的阶乘 {
} public static void main(String[] args){
} int product=1;for(int i=1;i<=30;i++){ product=*i;} public static void main(String[] args){
} int i=1;for(int counter=1;counter<=100;counter++){ } System.out.println(i);i+=counter;
//3.倒序输出
法1 用char数组思想 import java.util.Scanner;public class 逆序输出 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);// String input[]=new String[4];input=scan.nextLine();// huiche
// String result=“";char[] Array=input[4].toCharArray();for(int i=Array.length-1;i>=0;i--){
} result+=Array[i];} System.out.println(result);} //倒序输出 法2 用reverse()方法 import javax.swing.JOptionPane;public static void main(String[] args){
}
String a = null;StringBuffer b;//输入
a=JOptionPane.showInputDialog(a);StringBuffer c1=new StringBuffer(a);b=c1.reverse();System.out.println(b);
//4.输出100 121 144...361 public class平方输入数组 {
}
//5.求最大公约数
private static int gys(int m,int n)
{
if(n==0)
return m;else public static void main(String[] args){
} int[] array=new int[10];for(int i=0;i<10;i++){ } array[i]=Math.pow((i+10),2.0);
for(int k=0;k return gcd(n,m%n); } //6.求最小公倍数 public static int gbs(int n1,int n2){ int a =(n1>n2)? n1 : n2; for(int j=a;j<=n1*n2;j++) { if(j%n1==0 && j%n2==0) { return j; } } return 0;} //7.1)十进制整数转化为二进制整数采用“除2取余,逆序排列” import java.util.Scanner;public class Main { public static void main(String[] args){ //第一行输入要几组测试数据 int N=0,a;//N为输入几组数据,a为输入的十进制数字 } String b = null;Scanner scan=new Scanner(System.in);N=scan.nextInt();Main num=new Main();for(int i=1;i<=N;i++){ } a=scan.nextInt();b=num.deimalBinary(a);int d=num.Calcute(b);if(d%2==0)System.out.println(”Even“);else System.out.println(”Odd“); /*一个方法得到二进制数,用递归 *用2去除十进制整数,可以得到一个商和余数; *再用2去除商,又会得到一个商和余数,} *如此进行,直到商为零时为止,*然后把先得到的余数作为二进制数的低位有效位,*后得到的余数作为二进制数的高位有效位,依次排列起来 */ public String deimalBinary(int a){ } public int Calcute(String b){ } char[] Array=b.toCharArray();for(int i=0;i } if(Array[i]=='1'){ } counter+=1;return counter; //7.2)十进制小数转换为二进制小数采用“乘2取整,顺序排列” /*用2乘十进制小数,可以得到积,*将积的整数部分取出,再用2乘余下的小数部分,//8.矩阵运算(加减乘)//矩阵运算 *又得到一个积,再将积的整数部分取出,*如此进行,直到积中的小数部分为零,*或者达到所要求的精度为止。 *然后把取出的整数部分按顺序排列起来,*先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。*/ import java.util.Scanner;public class Main { public static void main(String[] args){ int N1,M1,N2,M2,K;Scanner scan=new Scanner(System.in);N1=scan.nextInt();M1=scan.nextInt();int[][] a=new int[N1][M1];for(int i=0;i for(int j=0;j N2=scan.nextInt();M2=scan.nextInt();int[][] b=new int[N2][M2];for(int i=0;i { } b[i][j]=scan.nextInt();} K=scan.nextInt();if(K==1)//加法 { int[][] c=new int[N1][M1];for(int i=0;i } { for(int j=0;j } System.out.println();} } if(K==2)//减法 { int[][] c=new int[N1][M1];for(int i=0;i } for(int j=0;j for(int j:i){ System.out.print(j+” “);} System.out.println();} } if(K==3)//乘法 { int[][] c=new int[N1][M2];for(int i=0;i } { for(int j=0;j } for(int p=0;p c[i][j]+=a[i][p]*b[p][j];for(int[] i:c)for(int j:i){ System.out.print(j+” “);} System.out.println();} } } } 9.//保留确定位数输出 import java.text.DecimalFormat;//非四舍五入 DecimalFormat myformat=new DecimalFormat(”#0.00"); myformat.format(double num);//四舍五入,例为保留2位 double f=3.1415926; BigDecimal a=new BigDecimal(f); double af=a.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); 注:本小结报告来自两份论文 [1]上角标1代表 论文 <网络编码的研究进展> 杨林 郑刚等 [2]上角标2代表 论文 <网络编码研究综述> 陶少国等 网络编码研究综述 万里 基本概念 起源:R.Alshwede的蝴蝶网络模型定义:网络编码是一种融合编码和路由的信息交换技术,在传统存储转发的路由方法基础上,通过允许对接收的多个数据包进行编码信息融合,增加单次传输的信息量,提高网络整体性[1]能。 [1]本质:利用节点的计算能力提高链路带宽的利用率。核心思想:具备编码条件的网络节点对接收到的信息进行编码,然后传输给下一级的网络节点,收到信息的下一级节点如果具备编码条件,又对其接受的信息按照同样的方式进行传输与处理,如此反复,直到所有经过处理后的信息汇聚到信宿节点为止。最后,在信宿节点,[2]通过译码,即可译出信源发送的原始信息。主要优缺点: 优点: 提升网络吞吐量 2 均衡网络负载 从作者的例子[Fig.2]可以看出,虽然传输链路增加了,但是每条链路上传输的信息更均衡,解决了网络拥塞问题。3 提高带宽利用率 同2,虽然传输链路增多了,但是每条链路上的信息减少了(均衡了),总体是减少了网络带宽,提高了网络带宽利用率。缺点: 虽然网络编码优点突出, 但运用网络编码增加了计算的复杂性, 而且网路节点需要缓存足够的输入信息, 因此编码操作增加了传输时延和节点的额外的I/ O、CPU消耗。统计数据表明, 即使应用最有效的随机网络编码,其编码和译码的时间也不容忽视。此外, 应用网络编码还存在同步问题, 这主要是由于信宿节点必须等待收到足够的编码信息, 才能开始 [2]译码。同步问题给在实时系统中应用网络编码提出了挑战。 [2] 2 原理与数学模型 2.1网络编码分类 网络编码按照节点输出和输入的关系可划分为线性网络编码和非线性网络编码 网络编码按照编码系数生成的随机性可划分为随机网络编码和确定性网络编码(通过算[1] 法算出系数)2.2线性网络编码 目前的网络编码研究均局限于有限域中的线性网络编码。2.3几个基本概念 信息流:信源发送的信息,链路传输的信息以及信宿接收到的信息,均以向量形式取 [2]之于有限域。称其为信息流。本地编码向量:将节点上的信息流作为节点输入链路上传输信息的线性组合。[链路的消息流与输入链路的消息流的映射关系] 3 全局编码向量:将信源发送信息表示成信息流向量,将链路上传输的信息流当做信源向量的信息流向量各元素的线性组合,该线性组合系数构成的向量就是该链路的全局编码向量。[链路的消息流与信源的信息流的映射关系] 备注:如果忘记 可以参考论文2中的Fig.3 2.4数学模型 [2] 3网络编码的构造方法 网络编码的KEY:求得每条链路对应的编码向量 3.1集中式编码方法 3.1.1 指数时间算法 设N1,N2,...,Nn表示所有编码链路对应的编码向量, 则必定存在函数关系: p = f(N1,N2,..,Nn),并称使p=0的点(N1,N2 , ⋯,Nn)的集合称为被“函数p 分割出来的代数簇”,[2]因而算法的目标就是求得一个不位于“函数p分割出来的代数簇”上的点(p0)。3.1.2 多项式时间算法 3.1.3其他算法 1引入通用LCM(贪婪算法与启发式算法)可实现多速率的网络编码 但是由于计算量大,实现过程复杂,不实用(作为多速率网络编码的探索,具有很重要的意义) 2线性多播、线性广播和线性扩散:线性扩散是线性广播的特例, 线性广播是线性多播的特例, 反之不成立.线性广播说明了通过增加信源发送的信息流向量的维数, 可以提升传输 [2]速率;线性扩散能保证信源节点以互补的形式发送信息流。 [1]3冲突图法、矩阵满秩法、图染色法等几种构造方法。3.2分布式编码方法 3.2.1确定系数构造法 其核心思想是将网络拓扑分解成多个子树,并保证每个子树的编码矢量属于其父树编码 [1]矢量的扩张空间,且任意两个子树的共有信宿的编码矢量均线性无关。3.2.2随机系数网络编码 随机网络编码(简称RNC),该方法基于一种随机选择编码向量的策略:对于除了信宿节点外的所有中间节点,只要在一个足够大的有限域上随机选择它们输入链路到输出链路的映射,而且各节点映射关系的选取是相互独立的,就能以较高概率使各个信宿节点对应的系统转移矩阵满秩,即各信宿节点能以较高的概率成功译码。与时间多项式算法总能保证成功译码不同, 在RNC 中,虽然不能确保最终形成的系统转移矩阵M满秩, 但由于是随机选择编码向量, 其复杂性与确定性算法相比要低得多, 更易于实现, 而且99%以上的译码成功率在一般情况也足以满足需求.因此,随机网络编码具有重要的理论价值和应用价值,得到了广泛的关注和 [2]应用, 如微软提出的P2P文件共享系统Avalanche便是基于RNC的典型应用。3.3集中式与分布式的比较 集中式:需要了解全局拓扑以分配编码系数,可扩展性差。 确定分布式:掌握局部拓扑即可对入编信息进行编码,但需要通信开销。 [1]随机网络编码:实用性强,需要较大的字母表,存在解码失败概率。 4性能参考以及优化 网络编码的主要性能指标包括字母表、编解码速度和编码增益等.其中,字母表是最重要的性能指标,决定了网络编码解的存在性、编解码复杂度、延时以及存储开销.编解码速度反映了编解码操作的计算复杂度.编码增益则表征网络带宽的利用效率.网络编码设计的一个重要目标就是尽可能使用小的字母表和低复杂度的编解码操作来提高网络吞吐量或减[1]小延时. 4.1网络编码复杂性的影响因素分析 4.1.1编码构造方法 网络编码的核心,目标是寻找复杂性低的算法(分布式与集中式的共同目标)。4.1.2编码操作数 可从三个角度分析:信息分组、编码链路和编码节点, 其中从信息分组的角度减少其操作数目是降低编码操作复杂性最理想的方式, 但是分析的难度较大, 一般均从减少编码链 [2]路或者节点的数目来考虑。4.1.3有限域的大小 保证足够的译码成功率的前提下(有限域过小,译码成功率降低), 应尽量减少有限域的大小。 4.2基于简单网络的解决方案 将普通网络转化为某种易于表达, 且各网络节点具有共同特征的“简单网络”将普通网络转化为简单网络, 其网络拓扑变得十分简单,但一个不容忽视的问题就是: 简单网络的规模(节点数)比原普通网络却膨胀了许多, 也就是说网络编码的代价被放大了,“简单网络”的最小代价并不等于原网络的最小代价.但是, 将网络“简化”处理的思想在方法论上具有 [2]重要的借鉴意义,为最小代价的网络编码提供了研究方向。4.3基于信息流 信息流分解的基本原理是按照网络中信息流的特征和共性, 将原网络节点划分为一系列的子树图, 这些子树图中的节点拥有相同的编码向量, 子树里面的节点的拓扑结构不影 [2]响整个系统的多播传输, 因此每个子树可以当作一个节点来处理。4.4基于最小代价函数的解决方案 借鉴路由多播的最小代价树,将网络编码转化为线性规划问题。 5应用与研究趋势 5.1应用领域 [1]Ad Hoe网络、传感器网络、P2P内容分发、分布式文件存储和网络安全等领域。 [2]无线网络、应用层多播和P2P文件共享、传输的差错控制。5.2研究趋势 5.2.1多源网络编码 对于信源数目大于2的网络编码多播,研究不够充分,但多源多播广泛存在。5.2.2非组播网络 对于非组播网络的网络编码理论研究。5.2.3非线性网络编码 非线性研究尚未起步,性能还不可知,比线性网络编码要求与难度更高。5.2.4具体实现 网络编码的具体实现需要考虑诸多因素,也是有意义的研究方向。5.2.5与其他领域的融合 与信源编码的联合设计与优化、与信道编码和调制技术的结合、与多描述分层编码的结合。 5.2.6降低网络编码复杂度 降低网络编码复杂度,实现最小代价网络编码。5.2.7安全方面 无线网络编码在安全方面的研究。 个人简历 基本信息 姓名:** 性别:男 民族:汉学历:本科 专业:工商管理 毕业院校:**大学出生年月:**年04月 15日婚姻:否电话:** 现住址:**市** 籍贯:****Email:**@qq.com 求职意向 Java软件开发工程师 专业技能 熟练掌握Java熟练掌握Oracle数据库,, SQL 熟练掌握Jsp、JavaScript、、、Xml等 掌握Struts2、Hibernate、Spring模式下的开发。熟练掌握Tomcat容器以及J2EE 能够熟练运用 教育背景及培训经历 **.9-**.7就读于**大学专业:工商管理 **.5-**.9****培训高级Java开发 C+E 国际软件工程师项目经验 在线考试系统 项目简述:,从服务器随机调取试题并进行分数查询.相关技术:Java,JavaSE多线程基础.运行环境:Linux & Windows XP 项目职责:作为设计人员,独立编写并设计整体业务逻辑,并进行相应文档的编写以及开发计划的制定,作为开发人员,对整个设计进行实现,并进行相应的测试。 所得收获:掌握常见数据结构和实用算法,培养良好的编程习惯。 GWAP通用电子商务平台 项目简述:该系统主要由用户管理、产品展示、购物车、订单生成、产品管理等模块组成,模拟当当网,为网上在线购物而设计的一个应用系统 相关技术:Jsp、JavaScript、Struts2、Hibernate、Spring、Tomcat 5.5、mySQL 运行环境:Linux & Windows XP 项目职责:作为设计人员,跟随老师完成GWAP整体架构设计,制定开发计划,组织协调本组软件开发人员进行子项目的设计,开发和测试;完成系统的概要设计和详细设计、提交设计文档和开发计划 作为开发人员,重点参与用户注册模块、GWAP中购物车模块、订单生成模块等的开发,根据设计文档进行编码,并完成相应的单元测试 所得收获:通过此商务平台的开发,掌握了Struts2框架的使用,在购物车模块,巧妙的使用两个list分别表示“用户结算的商品”和“暂不购买的商品”,从而简化了业务逻辑,也进而简化了购物车的JSP设计。在此过程中,积累了一定的项目管理经验,提高了与小组成员协调沟通的能力以及为小组成员提供技术支持的能力;提高了软件测试能力并了解了常用软件测试工具的使用。 所获证书 2012.9达内公司签发的C+E国际软件工程师证书 自我评价 我极富敬业精神、积极开朗、乐观向上、有很强的沟通能力和团队协作能力。能承受压力、喜欢富有挑战性和具有发展空间的工作。IT行业是一个具有挑战性的行业、随着科技的不断发展它也在不断更新、不仅要会工作还要会学习、我喜欢接受这种挑战、也愿意从事这方面工作。 能认真执行公司决策,服从公司领导安排,做事能吃苦耐劳,工作积极,有良好的团队合作精神。第四篇:网络编码知识小结
第五篇:Java软件开发工程师中文简历