- 浏览: 79006 次
文章分类
- 全部博客 (48)
- AOP (0)
- ASP.NET (1)
- C# (0)
- Community Server (0)
- Database (0)
- Design Pattern (3)
- JAVA (1)
- JavaScript (1)
- Linux (1)
- O/R Mapping (0)
- OO (3)
- SQL Server (1)
- VB.NET (0)
- Visual Studio 2005 (2)
- Windows (2)
- WPF (0)
- XML/XSLT (0)
- 常用工具类 (0)
- 人生感悟 (0)
- 算法 (0)
- 转载 (5)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (3)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (15)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (2)
- [网站分类]4.其他技术区 (4)
- [网站分类]5.企业信息化 (0)
- [网站分类]6.读书心得区(技术书籍阅读心得、书籍推荐) (0)
- [网站分类]7.提问区(.NET技术方面的提问) (0)
- [网站分类]8.技术转载区(.NET技术文章转载, 请注明原文出处) (1)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [网站分类]Dottext区 (0)
- [网站分类]GIS技术 (0)
- [网站分类]IT英才专区(IT职场交流) (0)
- [网站分类]SharePoint (0)
- [网站分类]博客园.NET俱乐部(俱乐部组织与活动方面的文章) (0)
- [网站分类]软件发布区(发布自己开发的代码、软件) (0)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (0)
- [网站分类]业界新闻 (0)
最新评论
-
xjw1987524:
这个问题我是弄啦很久,我也试过反编译,不知道为什么就是不成功; ...
支持中文参数的 jspSmartUpload
原理其实非常简单,取出两个时间差的秒数,再在0到该秒数之间随机获取一个整数,将其做为秒添加到较小的时间上,可以说实现上并没什么技术难点,可以在数据类型的边界条件上却需要格外的注意,比如将大于 System.Int32.MaxValue 或小于 System.Int32.MinValue 的值转成 int 时,如果直接在变量前加上类型名转换((int)d),不会有有异常产生,但得到的值却是 System.Int32.MinValue,还有就是对于Math.Abs 方法,当参数 value 等于 MinValue 将会引发 System.OverflowException 异常。
代码如下:
<!---->
using System;
namespace Yyw
{
public class DateTimeHelper
{
/**//// <summary>
/// 获取随机时间
/// <remarks>
/// 由于Random 以当前系统时间做为种值,所以当快速运行多次该方法所得到的结果可能相同,
/// 这时,你应该在外部初始化 Random 实例并调用 GetRandomTime(DateTime time1, DateTime time2, Random random)
/// </remarks>
/// </summary>
/// <param name="time1"></param>
/// <param name="time2"></param>
/// <returns></returns>
public static DateTime GetRandomTime(DateTime time1, DateTime time2)
{
Random random = new Random();
return GetRandomTime(time1, time2, random);
}
/**//// <summary>
/// 获取随机时间
/// </summary>
/// <param name="time1"></param>
/// <param name="time2"></param>
/// <param name="random"></param>
/// <returns></returns>
public static DateTime GetRandomTime(DateTime time1, DateTime time2, Random random)
{
DateTime minTime = new DateTime();
DateTime maxTime = new DateTime();
System.TimeSpan ts = new System.TimeSpan(time1.Ticks - time2.Ticks);
// 获取两个时间相隔的秒数
double dTotalSecontds = ts.TotalSeconds;
int iTotalSecontds = 0;
if (dTotalSecontds > System.Int32.MaxValue)
{
iTotalSecontds = System.Int32.MaxValue;
}
else if (dTotalSecontds < System.Int32.MinValue)
{
iTotalSecontds = System.Int32.MinValue;
}
else
{
iTotalSecontds = (int)dTotalSecontds;
}
if (iTotalSecontds > 0)
{
minTime = time2;
maxTime = time1;
}
else if (iTotalSecontds < 0)
{
minTime = time1;
maxTime = time2;
}
else
{
return time1;
}
int maxValue = iTotalSecontds;
if (iTotalSecontds <= System.Int32.MinValue)
maxValue = System.Int32.MinValue + 1;
int i = random.Next(System.Math.Abs(maxValue));
return minTime.AddSeconds(i);
}
}
}
测试代码:
<!---->using System;
using NUnit.Framework;
namespace Yyw
{
[TestFixture]
public class DateTimeHelperFixture
{
/**//// <summary>
/// 边界测试
/// </summary>
[Test]
public void TestGetRandomTime()
{
DateTime minTime = DateTime.MinValue;
DateTime maxTime = DateTime.MaxValue;
Random random = new Random();
for (int i = 0; i < 10000; i++)
{
DateTime randomTime = DateTimeHelper.GetRandomTime(maxTime, minTime, random);
CheckResult(minTime, maxTime, randomTime);
}
for (int i = 0; i < 10000; i++)
{
DateTime randomTime = DateTimeHelper.GetRandomTime(minTime, maxTime, random);
CheckResult(minTime, maxTime, randomTime);
}
}
private void CheckResult(DateTime minTime, DateTime maxTime, DateTime randomTime)
{
System.TimeSpan ts1 = new System.TimeSpan(randomTime.Ticks - minTime.Ticks);
System.TimeSpan ts2 = new System.TimeSpan(randomTime.Ticks - maxTime.Ticks);
Assert.IsTrue(ts1.Seconds >= 0 && ts2.Seconds <= 0);
}
}
}
发表评论
-
获取某目录下的所有文件(包括子目录下文件)的数量(C#)
2005-11-04 17:27 3993以前写过一个通过计算目录遍历所有文件和子目录的方法来获得某目录 ... -
Visual Studio 2005 试用笔记
2005-11-06 21:36 942今天开始用上了 VS 2005 ... -
C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
2005-11-09 22:52 1316(很喜欢李建忠老师的这个讲座,可惜暂时没更多的了,继续关注 M ... -
利用视图管理器高效编写 SQL SELECT 语句
2006-02-19 13:27 973献给初学者,老鸟别扔砖头 编写 ... -
将Web站点下的绝对路径转换为虚拟路径
2006-05-07 12:48 1219很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法 ... -
比较高效地实现从两个不同数组中提取相同部分组成新的数组(只支持Int类型) [C#]
2006-05-13 22:17 4050有时候我们需要从两个不同数组中提取出相同的部分 ... -
基于 .NET 2.0 System.Net.Mail namespace 的邮件发送组件
2006-05-17 13:11 1889一个基于 .NET 2.0 System.Net.Mail n ... -
从 CCS 1.1 升级到 CS 2.0 所遇到的问题和部分解决方法
2006-06-16 12:58 835整理了一下,记录在这 ... -
.NET Enum The Next Level
2006-08-20 17:15 1176声明:本文内容出自:http://www.codeprojec ... -
NHibernate 实体类中重写 Equals() 和 GetHashCode()
2006-09-17 17:08 1557在正常的对象操作中,当两个对象都是通过 new ... -
初识 db4o
2006-10-25 21:41 944今天早上收到 IBM developerWork ... -
Spring.Net AOP 学习之旅: 使用 Throws Advice 处理异常
2006-10-30 21:12 4341写在前头:本文示例和部分文字来自《Sprin ... -
.NET 1.1 下不使用 System.Web.Mail.SmtpMail 发送邮件的其它选择
2006-12-22 20:35 1250最近工作原因需要维护 ASP.NET 1.1 的程 ... -
.NET 中的 委托与事件
2006-12-27 10:10 1937一、什么是委托 ...
相关推荐
接下来,我们需要实现随机选择名字的功能。C#中的`Random`类可以生成随机数,我们可以利用它来随机选取一个索引,从而得到对应的名字。如下所示: ```csharp Random rand = new Random(); int randomIndex = rand....
为了确保每次运行都能得到不同的结果,我们可能需要对Random类的种子进行特殊处理,或者使用DateTime.Now.Millisecond获取当前时间作为种子,以增加随机性。 程序的用户界面(UI)设计也很关键。C#提供了Windows ...
在给定的代码示例中,展示了如何在C#中利用当前时间来生成一个带有随机后缀的ID编号。 #### 代码分析 ```csharp private string Get_BillMain_Id() { Random ra = new Random(); string id = string.Format("{0:...
本项目以"C#实现随机生成防伪码"为主题,旨在探讨如何利用C#语言高效地创建具有随机性和唯一性的防伪码。 首先,我们要理解防伪码的基本特性。防伪码通常由一组数字、字母或其他字符组成,设计时需考虑以下几个方面...
总的来说,C#实现随机过程的模型识别是一项综合性的任务,它要求开发者具备扎实的数学基础、编程技能以及对统计模型的理解。通过这个项目,我们可以深入学习C#编程,同时提升在随机过程和模型识别领域的理论知识与...
在点名系统中,这些随机数可以对应于参与者名单中的索引,从而实现随机选取名字的功能。 点名速度的控制体现了系统的灵活性和个性化。在代码中,可以通过设置延迟时间来调整点名的快慢。例如,可以使用`System....
3. **加密强度的伪随机数生成**:在C#中,我们可以使用RNGCryptoServiceProvider类,它是RandomNumberGenerator的一个实现,提供强加密级别的随机数。例如,以下代码展示了如何使用RNGCryptoServiceProvider生成一个...
以上就是如何使用C#实现根据日期时间生成带随机数的字符串的方法,这个功能在很多场景下都十分实用,比如生成唯一的日志文件名、动态图片URL等。通过这个类,我们可以轻松地创建出既有时间戳又有随机性的唯一标识。
本文将详细介绍如何使用C#实现数组元素的打乱顺序功能,涉及到了C#数组的遍历以及随机数的操作。 首先,我们创建一个泛型类`Item<T>`来存储和处理数组。泛型类的好处在于它可以处理任何类型的数组,只要该类型支持...
本文将详细介绍如何使用C#实现这一功能,并探讨如何将生成的波形数据保存以便后续处理。 首先,我们需要理解波形图的基本概念。波形图是一种图形表示形式,通常用于展示随着时间变化的数据,比如声音信号或生理信号...
根据给定的信息,本文将详细解释如何在C# WinForm应用程序中实现实时动态时间的显示功能,并确保用户能够随时查看到当前的时间。 ### 一、动态时间显示的基本原理 在C# WinForms中,要实现实时动态的时间显示,...
在C#中,可以使用`Stopwatch`类来测量时间: ```csharp using System.Diagnostics; // 在生成防伪码之前启动计时器 var stopwatch = new Stopwatch(); stopwatch.Start(); List<string> generatedCodes = ...
学习这个源码可以让你深入了解NTP协议的实现细节,以及如何在C#中处理网络通信和时间同步。这对于开发需要精确时间同步的应用,如金融交易系统、分布式数据库或实时监控系统等,是非常有价值的。 在压缩包中的"Set...
在C#中,`DateTime.Now` 类提供了获取当前系统日期和时间的功能。通过这种方式生成的时间戳可以用来创建独特的序列号。在给定的内容中,作者通过将年、月、日、时、分、秒和毫秒拼接起来形成一个字符串作为序列号。 ...
【C#实现仿新浪微博BigPipe】是一个针对网页加载性能优化的技术实践,主要目的是通过C#编程语言模仿新浪微博的高效数据加载策略——BigPipe。BigPipe是Facebook提出的一种页面加载技术,它通过将一个网页拆分成多个...
总的来说,这个压缩包中的C# Winform项目展示了如何利用C#编程语言和Winform库来实现一个基本的短信验证码功能,这对于初学者来说是一个很好的实践项目,可以帮助他们理解C#编程以及网络通信、API集成和用户界面设计...
总结起来,实现“C#实现随心桌面背景图片”的功能,需要掌握以下关键知识点: 1. P/Invoke 技术,用于在C#中调用Windows API。 2. Windows API 中的SystemParametersInfo函数,用于设置桌面壁纸。 3. 使用C#的`...
在这个例子中,`RNGCryptoServiceProvider`是一个具体的实现,用于生成加密级的随机字节。 总结一下,C#中的随机数生成主要通过`System.Random`类完成,提供整数和浮点数的生成。为了获取更高安全级别的随机数,...
本文通过具体的代码示例介绍了如何在C#中实现窗口抖动效果。通过对窗口位置属性的随机更改,可以轻松地为用户界面添加这种有趣的动态效果。值得注意的是,开发者可以根据具体的应用场景调整抖动的幅度、持续时间和...
在C#中,我们可以使用`System.Security.Cryptography`命名空间下的`MD5`类实现哈希计算。 3. **保存到Cookie**:将MD5哈希后的验证码以Cookie的形式保存在用户浏览器中。设置Cookie的名称、值(哈希后的验证码)、...