加载中
支持像红薯一样的那些同行们的这份执着,跟着技术的脚步,不断超越。
@oschina
2008年8月31日,OSChina 网站正式上线,到今天刚好是 4 个年头。感谢这四年来大家不离不弃的支持。我们...
huanghuang 2012/08/14 16:28 发布了新博客:
huanghuang 2011/11/22 01:51 回答了问题: ImageIO.write写文件的速度如何?

继续针对上面的问题,抛出一段代码。

问题讨论的来源:有6万多个小于6k的小文件需要写到硬盘上,我采用了多线程,最大线程数200,并行数设置了50,大家可以测试运行一下,我的参数设置的是否合理,最终目的是测试一下用多线程写6万个小于6k文件用多长时间。

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.Serializable;
import java.net.URL;
import java.sql.Timestamp;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
 * 写几万个小于6k的文件工作类
 * @author Admin
 *
 */
public class MyWork {
 public static void main(String[] args) {
  Timestamp startTime = new Timestamp(System.currentTimeMillis());
  MyWork my =new MyWork();
  my.doIt();
  Timestamp entTime1 = new Timestamp(System.currentTimeMillis());
  long time_b = startTime.getTime();
  long time_a = entTime1.getTime();
  long totalTime1 = time_a - time_b;
  long totalsecond1 = totalTime1 / 1000;
  System.out.println("totalsecond1=" + totalsecond1);
 }
 public void doIt( ) { 
  ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 200, 3,
     TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(50),
     new ThreadPoolExecutor.CallerRunsPolicy());
  //我机器运行用时记录的结果
   //3000个文件用时: 26s          
   //60000个文件用时: 521s              
      
  int maxFileCount=60000; //待写文件个数
  for (int i=0;i<maxFileCount;i++) {  
 
           String task = ""+ i;

           threadPool.execute(new MyThread(task));
   }
 }
 /**
  * 线程类
  * @author Admin
  *
  */
 private  class MyThread implements Runnable,Serializable {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
  private Object threadPoolTaskData;


  private MyThread( Object task) {
         this.threadPoolTaskData = task;
  }
  public Object getTask(){
   return this.threadPoolTaskData;
   }

  @Override
  public void run() {
   System.out.println("start .."+threadPoolTaskData);

   try {

    ImageIcon imageIcon = new ImageIcon("d://s.png");//读本机文件    
    BufferedImage bufferedImage = new BufferedImage(256, 256, BufferedImage.TYPE_4BYTE_ABGR);  
    
     Graphics   gc   =   bufferedImage.createGraphics();     
              gc.drawImage(imageIcon.getImage(),0,0,imageIcon.getImageObserver()); 
    
    ImageIO.write(bufferedImage, "png", new File("d://bbb//a007"+threadPoolTaskData+".png"));
       gc.dispose();
       gc=null;
   } catch (Exception e) {
    System.out.println("yichang"+ e.getMessage()); 
    
   }
   threadPoolTaskData =null;
  }
  } 
}

@huanghuang
java写文件用ImageIO.write 和FileOutputStream+BufferedOutputStr...
huanghuang 2011/07/02 14:09 回答了问题: ajax setTimeout

的确是把事件的执行顺序搞错了。

@huanghuang
一个页面上既有ajax,又有setTimeout,ajax返回的数据有时会显示不出来,如何解决这种冲突?
huanghuang 2011/07/02 09:16 回答了问题: ajax setTimeout

发现:调用使用ajax有返回值的函数时,得用setTimeout("abc()",3000)

//abc()函数使用ajax了;广域网必须延时,内网就不用了;

//谁有其它好的办法?

@huanghuang
一个页面上既有ajax,又有setTimeout,ajax返回的数据有时会显示不出来,如何解决这种冲突?
huanghuang 2011/06/29 08:49 发布了问题:
huanghuang 2011/06/21 14:55 回答了问题: 明星软件工程师的10种特质

真的热爱编程,但是有个电话面试官问:“你这个年龄还可以coding吗?”我直接回答他:“我还可以呀”

@小编辑
如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业...
huanghuang 2011/06/10 14:33 回答了问题: 网站的http头注入漏洞,如何解决
刚查了一下request.ServicePoint.Expect100Continue   是.net 里面的
@huanghuang
现在使用tomcat6018 ,第三方检查出网站存在 http头注入 漏洞,让我们解决,请问可用什么方法解决?
huanghuang 2011/06/10 14:12 回答了问题: 网站的http头注入漏洞,如何解决

如何过滤,过滤条件是什么?

@huanghuang
现在使用tomcat6018 ,第三方检查出网站存在 http头注入 漏洞,让我们解决,请问可用什么方法解决?
huanghuang 2011/06/10 10:40 回答了问题: 网站的http头注入漏洞,如何解决

    http头注入漏洞

n        测试过程

构造如下请求:

 

GET http://www.xnmyx.cn:80/ HTTP/1.1

Expect: <script>alert(12345)</script>

Host: www.xnmyx.cn

Connection: Keep-alive

Accept-Encoding: gzip,deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)

Accept: */*

弹出预期的信息窗口12345,如下图:

说明在http头中注入代码成功。

@huanghuang
现在使用tomcat6018 ,第三方检查出网站存在 http头注入 漏洞,让我们解决,请问可用什么方法解决?

没有更多内容

加载失败,请刷新页面

返回顶部
顶部