C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码--升级版

news/2024/5/17 0:00:39/文章来源:https://blog.csdn.net/wyz52126/article/details/7770267

源代码下载:http://files.cnblogs.com/sufei/AutoFor2.rar  

上次文章链接:http://www.cnblogs.com/sufei/archive/2012/01/12/2320430.html

写这些并不是不会用测试工具,也并不是无视测试工具,而是做为一个程序员希望用自己写的东西来完成一些功能,从而更深入的学习一下相关技术

而且这样的小工具,不是测试工具那样繁琐很方便 。

上次文章引言


    我们一直在做网站,但在我河南这块,对测试工作,特别是压力测试一般都不怎么在意,都是自己访问一下速度不错就行了,再就是数据库访问速度测试也是同样情况

程序员在写Sql代码时,一般是一个人写完之后,一运行可快完事

其实这些是不够的,我们根本没有进行过多用户多线程的测试,如果是100个,一千个要同时访问,还会有这样的速度吗?

我们自己反思一下是不是有这样的经历呢,我做的网站刚上传服务器,打开很快,调数据库1000条以内一秒用不了,感觉非常好,但过了不几天,就会感觉到网站很慢很慢,于是去检查测试

其实这些可以提前做的,我下面来实现一个多线程测试网站访问速度的功能。

上次文章效果


说明:

         1.一次可以开N多个线程;

         2.可以设置要访问的地址;

         3.可以设置要循环访问的次数;

相关技术点:

         1.C# Winform;

          2.httpHelper类;这是我之前自己写的一个类,大家可以参考一下(带证书,无视编码,设置代理等)

          3.多线程;

          4.线程之间的传参;

          5.委托与匿名委托的使用方法;

接下来看看本次的效果吧,

其实是应在家的需求在原来的基础之上做了简单的修改,

源代码可以下载,大家自己修改吧

我就修改到这里,希望大家多多指教啊

下面的源代码

View Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Data.SqlClient;namespace AutoFor
{public partial class TextFor : Form{private delegate void UpDateDgvDelegate(string msg, int rowId, string columnName);private UpDateDgvDelegate _upDateStateDelegate;public TextFor(){InitializeComponent();_upDateStateDelegate = new UpDateDgvDelegate(UpDateDgv);}/// <summary>/// 修改表格的行数据/// </summary>/// <param name="msg">要修改为的数据</param>/// <param name="rowId">行号</param>/// <param name="columnName">列名</param>private void UpDateDgv(string msg, int rowId, string columnName){try{dgvTextFor.Rows[rowId].Cells[columnName].Value = msg.ToString();}catch { }}/// <summary>/// 程序执行时间测试/// </summary>/// <param name="dateBegin">开始时间</param>/// <param name="dateEnd">结束时间</param>/// <returns>返回(秒)单位,比如: 0.00239秒</returns>public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd){TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);TimeSpan ts3 = ts1.Subtract(ts2).Duration();return ts3.TotalMilliseconds.ToString();}/// <summary>/// 执行数据/// </summary>/// <param name="dgvrowid"> 线程号行号</param>/// <param name="number">循环总次数</param>private void PingTask(int dgvrowid, int number, string url, int time){//获取开始时间DateTime st = DateTime.Now;//开始时间this.BeginInvoke(_upDateStateDelegate, st.ToString("hh-mm-ss"), dgvrowid, "开始时间");for (int i = 0; i < number; i++){//获取线程开始时间DateTime stThread = DateTime.Now;try{HttpHelps hh = new HttpHelps();//自动访问百度,主要是延长时间string strdate = hh.GetHttpRequestStringByNUll_Get(url, null);//当前循环次数this.BeginInvoke(_upDateStateDelegate, strdate, dgvrowid, "数据");//当前循环次数this.BeginInvoke(_upDateStateDelegate, (i+1).ToString(), dgvrowid, "当前循环次数");//获取结束时间DateTime et = DateTime.Now;//结束时间this.BeginInvoke(_upDateStateDelegate, et.ToString("hh-mm-ss"), dgvrowid, "结束时间");//总用时(毫秒)this.BeginInvoke(_upDateStateDelegate, ExecDateDiff(st, et), dgvrowid, "总用时(毫秒)");do{if (stThread.AddSeconds(time) <= DateTime.Now){break;}} while (true);}catch { }}}/// <summary>/// 创建表格/// </summary>/// <param name="rows">生成多少行数</param>private void CreateTable(int rows){DataTable dt_Sale = new DataTable();DataColumn dc = null;//线程IDdc = new DataColumn();dc.ColumnName = "线程ID";dc.DefaultValue = "1";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);//循环类型dc = new DataColumn();dc.ColumnName = "循环类型";dc.DefaultValue = " ";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);//当前循环次数dc = new DataColumn();dc.ColumnName = "当前循环次数";dc.DefaultValue = " ";dc.DataType = Type.GetType(" System.String");dt_Sale.Columns.Add(dc);//开始时间dc = new DataColumn();dc.ColumnName = "开始时间";dc.DefaultValue = " ";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);//结束时间dc = new DataColumn();dc.ColumnName = "结束时间";dc.DefaultValue = " ";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);//总用时(毫秒)dc = new DataColumn();dc.ColumnName = "总用时(毫秒)";dc.DefaultValue = " ";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);//测试数据dc = new DataColumn();dc.ColumnName = "数据";dc.DefaultValue = " ";dc.DataType = Type.GetType("System.String");dt_Sale.Columns.Add(dc);DataRow dr = dt_Sale.NewRow();for (int i = 1; i < rows; i++){dr["线程ID"] = i.ToString();dr["循环类型"] = "For循环";dr["当前循环次数"] = "0";dr["开始时间"] = "00:00:00";dr["结束时间"] = "00:00:00";dr["总用时(毫秒)"] = "0";dr["数据"] = "";dt_Sale.Rows.Add(dr);dr = dt_Sale.NewRow();}dgvTextFor.DataSource = dt_Sale;}private void button3_Click(object sender, EventArgs e){int count = Convert.ToInt32(txtCount.Text.Trim());int number = Convert.ToInt32(txtNumber.Text.Trim());CreateTable(count + 1);//开启number个线程for (int i = 0; i < count; i++){Thread pingTask = new Thread(new ThreadStart(delegate{PingTask(i, number, textBox1.Text.Trim(), Convert.ToInt32(txtForTime.Text.Trim()));}));pingTask.Start();Thread.Sleep(Convert.ToInt32(txtKtime.Text.Trim()) * 1000);}}}
}

里面所用的HttpHelps类在打包文件里面有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_825044.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站的文章怎么才能让百度等搜索引擎快速收录?

原文地址&#xff1a;https://www.jb51.net/yunying/487673.html 网站的文章怎么才能让百度等搜索引擎快速收录&#xff1f;网站中的文章收录很慢&#xff0c;怎么才能让网站的文章被百度快速收录呢&#xff1f;下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下 网…

百度网站收录教程(个人版)

让百度搜索到有两种方法&#xff0c;一种是等百度主动来爬取你的网站&#xff0c;还有一种是你自己主动提交给百度告诉它来爬取。第一种周期太过漫长&#xff0c;所以本文就讲第二种 1.准备网站 首先&#xff0c;想要做SEO的同学&#xff0c;需要考虑清楚所选择的前端框架。现…

一招技巧解决360搜索结果页展示网站LOGO

原文地址&#xff1a;https://www.shenduwang.com/article/yzjqjjssjgyzswzlogo_1.html 导读&#xff1a;当你在搜索引擎中搜索一个关键词的时候&#xff0c;搜索结果页会以不同的方式呈现&#xff0c;有的展示LOGO&#xff0c;有的展示一张图片&#xff0c;有的只显示标题与描…

防护升级 让你的网站拥有HTTPS加密传输

在网络安全日益恶化的今天&#xff0c;各大网站都开始注意到HTTPS&#xff08;超文本加密传输协议&#xff09;在安全防护上的技术优势&#xff0c;可是由于各种因素的影响&#xff0c;HTTPS协议的普及仍面临着相当大的挑战。例如&#xff0c;要将一家网站的服务器主机进行HTTP…

IIS服务器asp.net 网站文件夹权限设置

2019独角兽企业重金招聘Python工程师标准>>> 在IIS中选择网站&#xff0c;点击“编辑权限...”&#xff0c;在文件夹属性窗口中&#xff0c;选择”安全”&#xff0c;然后点击“编辑...”按钮&#xff0c;添加用户“IIS APPPOLL\应用程序池名称”&#xff0c;修改权…

地下数据交易网站被黑 疑似Target报复

日前&#xff0c;在黑市论坛上&#xff0c;黑客大肆出售从Target及其他公司盗走的信用卡数据。 有两个网站专门出售被盗的信用卡和借记卡信息——其中就有Target公司被盗的部分信息&#xff0c;然而这两个网站在遭到匿名黑客的攻击后曾一度处于关闭状态。 “Hi subhumans and m…

如何把其他网站的搜索页挂到自己的网站上_seo网站排名优化工具推荐

推荐seoj67745网站排名优化工具&#xff0c;企业经常采用SEO优化&#xff0c;以获得更好的排名和更好的流量自己的网站。搜索引擎优化有哪些方法&#xff1f;或者什么更有效&#xff1f;因此&#xff0c;虽然区域关键字优化的转化率很高&#xff0c;但是区域关键字优化对于用户…

一次网站性能排查实录

接到一个求助电话&#xff0c;说是有个阿里云上的服务器&#xff0c;有性能瓶颈&#xff0c;但又没有什么具体的数据&#xff0c;只是说偶尔客户端有少数连接不上&#xff0c;或者连接会突然中断。我的天&#xff0c;最怕这种状况了&#xff0c;还得自己去找问题表现是什么&…

Visual Studio 2012网站如何只生成一个DLL文件

简介&#xff1a; 在Visual Studio 2005,2008,2010版本中&#xff0c;都有Web Deployment工具将网站进行发布&#xff0c;所有代码文件和库文件发布&#xff0c;生成为一个动态链接库文件&#xff0c;而在Visual Studio 2012中却不再提供此工具。 而这一功能实际上已经内置在Vi…

第一阶段:前端开发_HTML——网站后台显示页面

2018-03-30 HTML 一、HTML介绍 1&#xff09;超文本标记语言&#xff1a; 超文本&#xff1a;页面内可以包含图片、链接&#xff0c;甚至音乐、程序等非文字元素&#xff0c;比普通文本更强大。 标记语言&#xff1a;使用一组标签对内容进行描述的一门语言&#xff0c;它不是编…

手把手教你从零基础开始搭建个人网站

曾有不少人问过我怎么搭建自己的博客。其实搭建个人博客的方式有很多&#xff0c;有使用Git Page的&#xff0c;有使用一些博客平台的&#xff0c;也有自己购买网站空间或服务器搭建的&#xff0c;更有大神索性自己开发一套博客程序来用的。本文所介绍的方法全部基于Linux系统服…

传统网站维护难,智能化建站平台帮助国际学校一站解决...

公司名称&#xff1a;句容碧桂园学校客户公司行业&#xff1a; 教育学校网站网址&#xff1a;http://www.jrbgy.net/建站产品&#xff1a;云企业官网--阿里云市场自营建站产品 句容碧桂园学校是碧桂园教育集团旗下连锁学校&#xff0c;从幼儿园至大学预科15年一贯的全日制寄宿制…

阿里云个人网站LAMP

阿里云建站-官方教程 例如你的 root用户现在没有密码&#xff0c;你希望的密码修改为abc&#xff0c;那么命令是&#xff1a;mysqladmin -u root password abc 解决Apache无法解析PHP问题 如果没有mbstring模块需要手动安装↓&#xff0c;修改php.ini&#xff08;extension_d…

网站服务器购买配置选购方案

云服务器 的配置选择&#xff0c;和网站或应用的类型、访问量、数据量大小、程序质量等因素有关&#xff0c;建议和您的网站或应用的开发技术人员沟通&#xff0c;选择最适合您的配置。 如果您没有技术人员可提供建议&#xff0c;可以参考我们的建议进行配置选择。网站初始阶段…

一个对开发者可能会越来越有用的网站

i18n啥是 i18n&#xff1f;这应该又是一个程序员的智慧。我们经常在某些软件里面会看到 i18n 目录&#xff0c;它代表的就是应用程序本地化代码的目录。那为什么有个这么奇怪的名字呢&#xff1f;因为 Internationalization 作为目录名字来说&#xff0c;实在是太长了啊啊啊啊啊…

【大数据之网站用户行为分析】

网站数据分析历史&#xff0c;从“您是第***位来访用户”到现在百家齐放的专业工具提供商&#xff0c;网站分析已经逐渐发展衍化成一门科学。但面对形态各异的分析数据&#xff0c;很多人仍然困惑于数据的来源&#xff0c;了解数据的收集原理&#xff0c;也许对你解决这些困惑有…

几个游戏门户网站的对比,挺说明问题哦。

几个游戏门户网站的对比&#xff0c;挺说明问题哦。

拒绝 IE 的网站

如果你用 IE 访问 http://www.openaddict.com/ &#xff0c;你将被拒绝&#xff1a;If youre reading this it means youre using Microsofts Internet Explorer to attempt to view Open Addict.com. Youre being blocked because Internet Explorer doesnt adhere to web sta…

渗透某政府网站

导读&#xff1a; 适合新手去学习 这是第一次接触PHP注入&#xff0c;所有的东西都是在入侵中自己找到的。 是一个政府的网站&#xff0c;这个城市和我还有些渊源&#xff0c;在这里就不多说了&#xff01;在主页找了一个PHP&#xff1f;ID的连接&#xff0c;加个返回出错了&am…