注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

最近的一些小笔记 5.0,多线程下载,图形,xstl等等  

2007-04-22 20:59:49|  分类: J2SE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    先贴张最近项目中的图,是用java合成xtl,xml生成html.笔记最后面有解释.觉的光是表格画的还瞒好看.估计不会有什么泄漏资料的问题^_^.

最近的一些小笔记 5.0,多线程下载,图形,xstl等等 - souljava - 千鸟

 

1.java5.0 开始的for/in 循环.  方便的遍历方法.for/in的目标是消灭Iterator

      int a[]={1,3,5,2};
       for(int c:a){
        System.out.print(c);
       }

out: 1352   //a[]有多长就遍历多少次

for/in 循环在以前的版本中是被转译成这个样子的:

for(Iterator<E> #i=(expression).iterator();#i.hasNext();){

    declaration=#i.next();

statement;

}

2. 多线程下载 的方法
  public void run(){
    while(startPos < endPos && !stop){
      try{
        URL url = new URL(dlURL);
        HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection ();
        String sProperty = "bytes="+startPos+"-";
        httpConnection.setRequestProperty("RANGE",sProperty);//请求传输的开始位置
        System.out.println("线程" + threadID + " 下载文件......请等待" );
        textArea.append("\n线程" + threadID + "下载文件......请等待");
        InputStream input = httpConnection.getInputStream();
        byte[] b = new byte[1024];
        int offset;
        offset = (int)endPos - (int)startPos;
        if(offset>1024) offset = 1024;
        while(input.read(b,0,offset)> 0 && startPos < endPos && !stop){
          offset = (int)endPos - (int)startPos;
          if(offset>1024) offset = 1024;
          System.out.println("started " + startPos + " offset: " + offset);
          file.write(b,0,offset);
          startPos += offset;//下一次开始写的位置
        }
        System.out.println("线程 " + threadID + " 下载完毕!!");
        done = true;
        textArea.append("\n线程" + threadID + " 下载完毕!");
        file.close();
      }
      catch(Exception e){
        e.printStackTrace ();
      }
    }
  }

3.    从控制台输入数字

Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();
4 换皮肤
可以改换Java的界面风格(look   and   feel),  
   
  比如将其由Java风格改为windows风格,linux风格。  
   
  try   {  
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
            }   catch   (Exception   e)   {  
  System.out.println(e);  
  }  
   
  上面语句是让程序采用系统界面的风格。  
   
  另外还有  
  UIManager.getCrossPlatformLookAndFeelClassName()  

5.装入图像
  方法a:image img=toolkit.getdefaulettoolkit().getimagename("filename");
  然后用mediantracker 等待完成.
  这个方法不装图像,而在另一个线程来做,显示的话,会只有一半
  方法b; imageicon icon =new imageicon("filename");
      image image=icon.getimage();
 
  方法c,applet装入图像
       Image MyCursor1 = getImage(getDocumentBase(),"Images/hammer1.gif");
       MediaTracker  mt=new MediaTracker(this);
          mt.addImage(img,0);
   mt.waitForAll();

6. 继承. 初始化的时候 调用最顶层父类的构造方法
7.IllegalArgumentException
    抛出的异常表明向方法传递了一个不合法或不正确的参数。

8.java.awt.EventQueueinvokeAndWait
public static void invokeAndWait(Runnable runnable)
                          throws InterruptedException,
                                 InvocationTargetException
导致 runnable 的 run 方法在 EventQueue 的指派线程上被调用。在所有挂起事件被处理后才发生。
在这发生之前调用被阻塞。如果从事件指派线程进行调用,则该方法将抛出 Error
  作用主要是,相关图形计算在派生线程中运行,而不影响绘制awt.

9 最后用java合成xsl,xml生成html
package com.soulnew.xml;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
public class Transform {
/**
* Performs an XSLT transformation, sending the results
* to System.out.
*/
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("Usage: java Transform [xmlfile] [xsltfile]");
System.exit(1);
}
File xmlFile = new File(args[0]);
File xsltFile = new File(args[1]); // JAXP reads data using the Source interface
Source xmlSource = new StreamSource(xmlFile);
Source xsltSource = new StreamSource(xsltFile);
// the factory pattern supports different XSLT processors
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
//trans.transform(xmlSource, new StreamResult(new File("ad.html")));
trans.transform(xmlSource, new StreamResult("ad.html"));
}
}

10.xstl 复杂xml的模块化解析
  节点关系如下  ALL_DATA/DATA/SINGLE_STATISTICS/MOL/Class_Name
   a.指出解析方式
  <?xml version="1.0" encoding="GB2312"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 

b. <!--根模板-->
    <xsl:template match="/">
       <xsl:apply-templates select="ALL_DATA/DATA"/><!--调用主模板-->
    </xsl:template>
    
 c.  <!--主模板-->
  <xsl:template match="DATA">
   <xsl:value-of select="Number"/> <!--读出一个值->
   <xsl:apply-templates select="SINGLE_STATISTICS/MOL"/> <!--调用下一个模板->
  </xsl:template>
 
d.  <xsl:template match="SINGLE_STATISTICS/MOL"><!--子模板入口->
      <xsl:value-of select="Class_Name"/>
    </xsl:template>

  评论这张
 
阅读(516)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017