.NET Framework 3.5.
我试图计算一些相当大的数字的平均值.
例如:
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var items = new long[]
{
long.MaxValue - 100,
long.MaxValue - 200,
long.MaxValue - 300
};
try
{
var avg = items.Average();
Console.WriteLine(avg);
}
catch (OverflowException ex)
{
Console.WriteLine("can't calculate that!");
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
显然,数学结果是9223372036854775607(long.MaxValue - 200),但我在那里得到了例外.这是因为.NET Reflector检查的平均扩展方法的实现(在我的机器上)是:
public static double Average(this IEnumerable<long> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
long num = 0L;
long num2 = …Run Code Online (Sandbox Code Playgroud) 我在mongodb中有一个字符串.{"field": "some text"},我想将它们全部转换为数组.{"field": ["some text"]}
我知道我可以遍历所有文件,获取字段,然后更新,但我想知道是否有更清洁的方式.
谢谢.
我遇到了锁定Windows工作站的示例:
using System.Runtime.InteropServices;
...
[DllImport("user32.dll", SetLastError = true)]
static extern bool LockWorkStation();
...
if (!LockWorkStation())
throw new Win32Exception(Marshal.GetLastWin32Error()); // or any other thing
Run Code Online (Sandbox Code Playgroud)
这个片段有一个纯粹的托管替代方案吗?即,没有P-Invoke.
Guava Preconditions的文档说明:
使用的项目
com.google.common一般应避免使用Objects.requireNonNull(Object).取而代之的是,无论使用何种的checkNotNull(Object)或者Verify.verifyNotNull(Object)是适当的情况.(对于接收消息的重载也是如此.)
有人可以解释这个建议的理由吗?
这是为了保持一致性还是存在根本性的错误Objects.requireNonNull?
随着我越来越深入地阅读volatile关键字的含义,我不断对自己说"这是实现的方式,这不应该是高级编程语言的一部分".
我的意思是,CPU缓存数据的事实对于JIT编译器应该是有趣的,而不是C#程序员.
一个相当大的选择可能是一个属性(比方说VolatileAttribute).
你怎么看?
可能重复:
如何在C#中模拟文件系统进行单元测试?
我使用Moq作为模拟框架,将单元测试编写到我的代码中.
我的代码包括使用对System.IO类的直接调用来调用文件系统.例如,File.Exists(...)等等.
我想将该代码更改为更易测试,所以我应该有一个接口,比方说IFile,用相关的方法Exists(string path).
我知道我可以从头开始编写它,但我认为可能有一个完整,健壮的框架,它具有文件系统的接口和实现.这个(期望的)框架也可以是某种"服务",因此它的API不必是System.IO命名空间的"接口等价物" .
请注意,我真的很想拥有接口(而不是静态方法),以便我的代码可以用于依赖注入
/Source/TfsLibrary/Utility/具体细节参见源代码) 还有其他建议吗?
使用.NET实现分布式缓存的最佳方法是什么?
编辑:我正在寻找内部和外部应用程序的通用缓存模式
我试图了解创建该方法的团队的设计考虑因素Environment.GetCommandLineArgs.
它可能是一个静态属性,非常像System.Web.HttpContext.Current.毕竟,返回的值一旦可用就不应该改变.所以它更像是当前运行过程的属性.
我知道.NET中的任何属性都是getter/setter方法的语法糖.但这是使用属性而不是显式getter方法的确切原因.
或者也许我在这里缺少一些东西?
你怎么看?
我通过VS2012和命令行阅读了很多关于WebDeploy的帖子,文档页面等.
在所有部署方案中,我注意到目标站点应该已存在于目标计算机(IIS)上.
如果目标(主机)计算机上不存在创建网站的包,是否可以选择创建该网站?
我想建议分布式键值存储,平均值.入口大小最多50KB,安装在Linux环境(专用服务器)上.
文件系统解决方案可以.
我找到了一些解决方案:Ceph,Cassandra,Riak等等.
我正在为我们的一个组件寻找存储解决方案,它应该是一个键值存储,平面命名空间.
读/写模式非常简单:
写入键值后,在接下来的几个小时内会有一些读数.
在那之后,没有任何东西触及给定的键值.我们希望将数据保留用于将来的目的,"存储模式".
"基础"要求是:
我对以上提到的任何工具(总容量超过50TB)或者您认为足够的工具的任何建议表示感谢.
.net ×4
c# ×3
algorithm ×1
asp.net ×1
average ×1
caching ×1
command-line ×1
file-io ×1
guava ×1
java ×1
javascript ×1
jit ×1
methods ×1
mocking ×1
mongodb ×1
node.js ×1
overflow ×1
pinvoke ×1
properties ×1
pure-managed ×1
unit-testing ×1
volatile ×1
webdeploy ×1
windows ×1