Asp.net有一个Application_End事件发生在应用程序结束时,就像这样
void Application_End(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
我的问题如下:这个事件什么时候发生在真实中,即什么样的情况会触发它?
假设我有一个运行的银行Web应用程序24x7x365,它一次连续执行并且一次从数千个地方访问,然后这个Application_End事件何时发生?什么样的情况对此负责?
为了不用单元测试污染我的项目,我喜欢为我的单元测试创建一个单独的项目; 我在单元测试项目中添加了对测试项目的引用.但是,这是行不通的那么好我VSTO Excel中添加项目:当我创建一个独立的单元测试项目,并转到添加引用>项目,没有项目来接.
到目前为止我所做的是添加引用>浏览,并从调试文件夹中选择加载项DLL.我也不时遇到问题,引用突然不起作用,需要删除/重新添加dll引用.
任何人都可以解释为什么VSTO项目不会作为常规项目出现吗?还有比我现在做的更好的方式吗?
在"Programming F#"中,我遇到了像这样的模式匹配(我简化了一下):
let rec len list =
match list with
| [] -> 0
| [_] -> 1
| head :: tail -> 1 + len tail;;
Run Code Online (Sandbox Code Playgroud)
实际上,我知道最后一个匹配识别列表的头部和尾部.从概念上讲,我不明白为什么它有效.据我所知,::是cons运算符,它在列表的头部位置附加一个值,但它并不像我在这里被用作运算符.我应该将其理解为列表的"特殊语法",其中::根据上下文被解释为运算符或"匹配模式"吗?或者可以使用其他运算符为列表以外的类型扩展相同的想法?
我不确定这个问题有一个正确答案,但我们走了.虽然可以用线性代数形式陈述许多数值问题,但从我有限的经验来看,使用Math.NET而不是在原始数组上编写等效操作的简单操作存在性能开销.
作为测试用例,我编写了代码来计算向量与列表中最接近的向量之间的距离,有3个版本:在数组上运行,在密集向量上运行,以及使用MKL提供程序在密集向量上运行.在数组上运行比在向量上运行快4倍,比使用MKL提供程序快3倍.
缺点是我必须手动编写距离计算,而不是利用内置的Norm函数.好处是它更快.注意:我没有发布代码,如果需要我会很乐意这样做,我可能也会使用Math.NET不正确.
所以我的问题如下:在我看来,使用更高级别的抽象会带来性能成本.这是一般的情况,还是有情况(如实例的稀疏矩阵),使用Math.NET预期会超过阵列上的手动编写操作?
如果是这种情况,我倾向于认为使用Math.NET的线性代数部分对于涉及矩阵的"真实"代数非常有用,以避免重新实现更复杂的计算/算法,并可能用于代码可读性,但对于通过向量操作更简单的向量的操作,对原始数组进行处理可能是更好的主意.
任何关于使用图书馆的好主意和你应该自己动手的事情都会受到赞赏!
我刚开始玩任务并行库,遇到了有趣的问题; 我对将要发生的事情有一个大概的了解,但是希望听到比我更有能力的人的评论来帮助了解正在发生的事情.我为有点冗长的代码道歉.
我开始使用随机游走的非并行模拟:
var random = new Random();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
var simulations = new List<int>();
for (var run = 0; run < 20; run++)
{
var position = 0;
for (var step = 0; step < 10000000; step++)
{
if (random.Next(0, 2) == 0)
{
position--;
}
else
{
position++;
}
}
Console.WriteLine(string.Format("Terminated run {0} at position {1}.", run, position));
simulations.Add(position);
}
Console.WriteLine(string.Format("Average position: {0} .", simulations.Average()));
stopwatch.Stop();
Console.WriteLine(string.Format("Time elapsed: {0}", stopwatch.ElapsedMilliseconds));
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
然后我在并行循环中写了我的第一次尝试:
var localRandom …Run Code Online (Sandbox Code Playgroud) 是否有像Mahout这样的.net库.你可以推荐什么机器学习?
当方法的参数列表增长到它们不适合在一行上时,我喜欢格式化代码,使得每个参数都在一个单独的行上(遵循StyleCop建议),如下所示:
public void MyMethod(
int someArgument,
double someOtherArgument,
int someMoreArguments)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是这种格式是"脆弱的",并且在使用Ctrl + K + D时不会自动重新格式化.例如,如果我碰巧在其中一个参数前面插入一些空格,它就不会被删除,我最终会做一些繁琐的手动重新格式化.如果我复制一个方法(比如,提供一个重载的签名),副本中的参数缩进变得非常混乱.
我在LINQ语句中遇到了类似的问题,我也喜欢在多行格式化,例如:
myEnumerable.
.Where(this and that)
.Where(this and that)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我意识到这是完整的强迫性格式化,并且是一个非常小的问题,但有没有办法让Visual Studio 2010在错位时自动重新缩进该模式后面的多行参数?
我正在研究一些C#代码处理像移动平均线这样的问题,我经常需要使用List/IEnumerable并处理大量的连续数据.F#Seq模块具有很好的功能,窗口化,它接收序列,返回一系列连续元素的序列.
C#是否具有与LINQ开箱即用的等效功能?
我最近遇到了一个意想不到的代码优化,并想检查我对我观察的内容的解释是否正确.以下是一个简化的情况示例:
let demo =
let swap fst snd i =
if i = fst then snd else
if i = snd then fst else
i
[ for i in 1 .. 10000 -> swap 1 i i ]
let demo2 =
let swap (fst: int) snd i =
if i = fst then snd else
if i = snd then fst else
i
[ for i in 1 .. 10000 -> swap 1 i i ]
Run Code Online (Sandbox Code Playgroud)
2个代码块之间的唯一区别是在第二种情况下,我明确地将swap的参数声明为整数.然而,当我用#time在fsi中运行2个片段时,我得到:
情况1实时:00:00:00.011,CPU:00:00:00.000,GC gen0:0,gen1:0,gen2:0
情况2实时:00:00:00.004,CPU:00:00:00.015,GC …
c# ×3
f# ×3
.net ×2
asp.net ×1
cons ×1
data-mining ×1
events ×1
excel ×1
java ×1
linq ×1
math ×1
math.net ×1
ms-access ×1
optimization ×1
performance ×1
random ×1
simulation ×1
unit-testing ×1
vb.net ×1
vba ×1
vsto ×1
windowed ×1