一个用JAVA写测算服务器响应速度程序
任务描述
需要做一个程序 对某一服务器运行的web server进行测算 看对提出的request做出相应的时间 并且在多个request同时提出时的响应时间
计划
因为java sdk中包含有比较全面的class能够对等多种协议的处理方法进行了封装 用起来比较方便 能够在比较短的时间内快速开发出这一测算工具
需要 个功能
a 因为不是仅仅对一个web server或者一个form进行测算 所以需要程序能够灵活处理 完成各种工作 我采用了配置文件的形式 让程序从配置文件中读取数据 并作相应动作
b 需要采用多线程方式 对同一个web server提交多次request
开发过程
(读者可以跟随这一过程 自己动手写代码 到全文结束 就能有一个完整可用的程序了)
主要的工作都有TestThread来完成 代码如下 class TestThread implements Runnable { Parameter param; TestThread(Parameter par) { param = par; } public void run() { long time = new Date() getTime(); try { URL target = param url; HttpURLConnection conn = (HttpURLConnection) target openConnection(); conn setRequestMethod(thod); int i; for( i = ; i < param length; i++ ) { conn setRequestProperty(param key[i] param value[i]); } nnect(); BufferedReader in = new BufferedReader( new InputStreamReader(conn getInputStream())); String inputLine; while( (inputLine = in readLine()) != null ); } catch(Exception e) { } long time = new Date() getTime(); System out println(time time ); } } class TestThread implements Runnable 而不是用extends Thread 的好处是独立设计一个类 这个类还可以extends其它的class 而不是单独的extends Thread 另外一个好处是 可以把处理方法放在各个不同的方法中 然后在void run()中调用 程序结构比较清晰
程序工作如下
在初始化一个TestThread实例的时候 接受一个Parameter参数(稍候介绍) 并在线程启动时 计算开始的时间 向目标机器发送请求包 接受目标机器的返回结果 再次计算时间 并得到两次时间之差 这就是服务器的响应时间
具体程序可以自己看懂 就不多说了
class Parameter { URL url; String[] key; String[] value; String method; int length = ; public void addPair(String k String v) { Array set(key length k); Array set(value length v); length++; } } 是用来传递参数的一个类 参数是主程序从文件中读出来并存入这个类的一个对象里 然后通过初始化TestThread传递给它的对象
public class TestServer { static int loopTimes = ; public Parameter readFromArgFile(String str){ FileInputStream fileInput; BufferedReader br; Parameter param = new Parameter(); try { fileInput = new FileInputStream(new File(str)); br = new BufferedReader( new InputStreamReader( fileInput )); String line; while( (line = br readLine()) != null ) { if( line startsWith( URL ) == true && line indexOf( = ) >= ) { int f = line indexOf( = ); String urlstring = line substring(f+ ); urlstring trim(); param url = new URL(urlstring); } else if( line startsWith( METHOD ) == true && line indexOf( = ) >= ) { int f = line indexOf( = ); String method = line substring(f+ ); method trim(); thod = method; } else if( line indexOf( = ) != ) { int f = line indexOf( = ); String key = line substring( f ); String value = line substring(f+ ); param addPair(key trim() value trim()); } } fileInput close(); br close(); } catch(FileNotFoundException e) { System out println( File + str + not found ); } catch(NullPointerException e) { } catch(IOException e) { System out println(e); } return param; } public static void main(String[] args) { int i; int j; Parameter param; TestServer tester = new TestServer(); for(i = ; i < Array getLength(args); i++) { param = tester readFromArgFile(args[i]); for(j = ; j < loopTimes; j++) { Thread th = new Thread(new TestThread(param)); th start(); } } } } 主程序main也比较简单 从命令行参数中读取文件名 并依次打开 读取其中的配置参数 创建Parameter对象 并传递给TestThread对象 然后启动TestThread线程 需要注意的是其中的错误处理 当发现某个文件读写错误的时候 是跳过这个文件而读取下一个文件 而不是简单的退出
就这么简单 (当然 适当的改写一下 就可以做一个加贴机或者灌水机之类的东东 那是你的爱好 和我无关 ))
程序全文列在最后 并附上了说明
lishixinzhi/Article/program/Java/hx/201311/27192
C语言效率比java快多少
LZ可以先看看计算机原理,和语言发展史,这两者领域不同,没有可比性。但是如果你说计算1+1之类的问题的话C的工作准定快,快在哪,因为C可以说是最接近机器(汇编)层次的语言,也就是嵌入式这个方向的核心语言,因为别的语言不会直接“碰触”机器硬件,当然还有其他如容量消耗等问题。JAVA的一个弊病...
数据分析的方向都有哪些?
1、增收益 最直观的应用,即利用数据分析实现数字化精准营销。通过深度分析用户购买行为、消费习惯等,刻画用户画像,将数据分析结果转化为可操作执行的客户管理策略,以最佳的方式触及更多的客户,以实现销售收入的增长。下图为推广收支测算分析,为广告投放提供决策依据。下图为渠道销量分析,为渠道支持提供...
手机大智慧JAVA大概流量是多少?
曾经做过这样的实际测算,内容如下:网络:中国移动 手机:多普达S600 WINDOWS手机 软件:国信“金太阳”手机证券 刷新频率:20秒\/次 使用时间:每天4小时,连续20天 实际流量:80M 使用手机大智慧软件的流量也与之类似,楼主可以下载一个国信证券的“金太阳”试试,他是完全免费的,有流量统计功能,也许...
java绘图,怎么解决显示不流畅的问题?
但区别在于,由于DataBuffer可以转化为描述BufferedImage象素点的int[],byte[]或short[]等数组集合,因此我们不再使用Java提供的Graphics对象,而是直接操作像素点进行所有绘图的实现。 但是,这样进行数组操作会快吗?现在我们为其各自构建三个示例,尽量以比较趋同的处理流程构建,分别测算三种方法的具体效率...
苏州新电怎么样?对于一年工作经验的Java程序员,现在工资大概多少?谢谢...
公司现已拥有700多名资深软件技术人员,员工本科比率90%,平均工作年龄4.5 年。以710人,每月平均工资福利支出6500元,13个月工资估算,年工资福利支出为59995000元,即6千万元。注册资金1000万,每年项目收入应该在2亿以上。初步测算,有一年工作经验的员工工资水平应该在4000~4500左右。每月到手3900左右...
昭通java培训学校告诉你现在到电脑学校学软件开发技术有前途吗?_百 ...
—、IT职位TOP10--软件工程师雄居榜首 在前程无忧公布的IT职位TOP10中,软件工程师依然是热销职位。二、需求:全国软件人才需求缺口。全国需要软件高级人才5万人,中级软件人才15万人,初级软件人才25万人,再加上企业、社区、机关、学校等行业,初步测算,市场缺口为近60万人。三、招聘:软件开发技术人才...
如何确定软件的开发成本价格?
3.直接非人力成本通常与工作量估算结果无关,宜单独分项测算;4. 成本估算结果,也通常为一个范围,而不是单一的值。四、确定软件开发成本 在《软件工程 软件开发成本度量规范》中,将软件开发成本分为四类,主要是为便于对成本构成(即哪些成本属于开发成本,哪些不属于开发成本)进行清晰界定。而在实际...
大家IT技能是怎么选的
除非你想做很底层的东西,例如改进google的排序速度之类的,前端,后端或者手机应用都可以学啊。挑一个你自己喜欢的并且持之以恒就行了。有人喜欢前端或者手机,因为看得见摸得着,有人喜欢后端。java比较热,在我这个城市java招聘量比PHP多了两倍。题主如果要是计算机专业或者相关的,建议学个PHP或者Java...
个人技能展示有哪些
本人熟悉财务管理的内容和方法,能进行财务管理的事前测算、事中监督、事后考核工作,熟悉从预计损益表、...熟悉Linux系统基本操作,熟悉C++、JAVA、汇编、Perl等编程语言; 熟悉计算机软件工程理论;熟悉测试流程和技巧...之所以填写会做的,是因为它可以帮助你加分,一个公司招聘职员的时候都希望他是个全才,什么事情都能做,...
如何创建手机APP?大概需要多少资金?需要什么技术
APP定制开发 开发一个手机APP到底要多少钱,其实在没弄清楚详细需求之前,是不能随便给客户报价的,由于APP开发公司必须综合评估客户App的功能需求,质量要求,以此评估出必要投入多少的人工设计和开发量,才能基本测算出App的开发成本。第一、APP开发报价受企业需求因素的影响 在评估APP报价之前,开发者会先...
兴龙复方: 给你个比较直接的办法:在你发请求的地方记录时间:long requestTime = System.currentTimeMillis(); 当服务器有返回的时候记录时间 long responseTime = System.currentTimeMillis(); 两者的差就是响应时间,单位:毫秒 long time = responseTime-requestTime;
五家渠市15943735086: 怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数 - ?
兴龙复方: java.net.*; public class HttpDemo{ public static void main(String[] args)throws Exception{ URL url = new URL('地址'); HttpURLConnection http = (HttpURLConnection)url.openConnection(); //获取网页的源码 BufferedReader br = new ...
五家渠市15943735086: javaweb系统设计计算浏览器响应时间? - ?
兴龙复方: 写一个filter过滤器计算就行,request来的时候记录一个时间,response的时候记录一个时间,然后就能计算出浏览器相应时间了
五家渠市15943735086: 如何通过java对redis进行性能测速 - ?
兴龙复方: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop、add/remove及取交集并集...
五家渠市15943735086: 用JAVA为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知速度ABC,求速度 - ?
兴龙复方: public interface Vehicle {double getSpeed();} public abstract class AbstractVehicle implements Vehicle {protected int A;protected int B;protected int C;} public class Car007 extends AbstractVehicle {@Overridepublic double getSpeed() ...
五家渠市15943735086: 求助:我一个java的程序在一个8核的服务器上跑,跟我手提上跑的速度差不多 - ?
兴龙复方: 如果你的程序只有一个线程,那么八核和单核的速度是一样的.你希望比较出来速度,那么你可以打开你电脑上的软件,比如网页,游戏等等等,越多越好,等到电脑的cpu核心都工作,所有的线程都被占用的时候,你再比较速度就很明显了.如果在闲置电脑上打开一个1K的txt文档,你觉得八核会比单核的快吗?不知道我说的你懂了没有?
五家渠市15943735086: 求一个用来获取windows磁盘读写速率的java代码 - ?
兴龙复方: Sigar sigar = new Sigar(); FileSystem fslist[] = null; try { fslist = sigar.getFileSystemList(); } catch (SigarException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String dir = System.getProperty("user.home");// 当前用户文件夹...
五家渠市15943735086: 如何用java写后台响应的程序 - ?
兴龙复方: 使用J2EE技术或者叫Java Web技术开发一个Web服务器,服务器返回Json数据,android客户端解析json数据,使用http协议和服务器通信,android有相应模块和API. 首先楼主得懂Java后台也就是Java EE,用Servlet搭建Web服务,Serlvet映射一个URL
五家渠市15943735086: java开发BS系统 服务器响应慢?
兴龙复方: 除了 部门下的电脑配置 几网络原因 还有可能就是 这个软件性能上有关 进行压力测试 或性能测试 检查一下..
五家渠市15943735086: java方面的, 应用TCP编程, 完成一个多线程版的服务端 ,当Client访问时 ,返回当前访问的时间..求编码 - ?
兴龙复方: 这个需要多线程么?把服务端搞成常驻内存的就好了吧.比如while.下面是我刚给你写的测试代码,仅供参考:客户端:static Socket server; public static void main(String[] args) throws Exception { InetAddress address = InetAddress.getByName...