小编Ron*_*ein的帖子

平均函数没有溢出异常

.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)

.net c# algorithm average overflow

19
推荐指数
3
解决办法
8382
查看次数

mongodb类型更改为数组

我在mongodb中有一个字符串.{"field": "some text"},我想将它们全部转换为数组.{"field": ["some text"]}

我知道我可以遍历所有文件,获取字段,然后更新,但我想知道是否有更清洁的方式.

谢谢.

javascript mongodb node.js

17
推荐指数
4
解决办法
1万
查看次数

在C#中以编程方式锁定Windows工作站

我遇到了锁定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.

c# windows pinvoke pure-managed

16
推荐指数
1
解决办法
7452
查看次数

java.util.Objects.requireNonNull vs Preconditions.checkNotNull

Guava Preconditions的文档说明:

使用的项目com.google.common一般应避免使用 Objects.requireNonNull(Object).取而代之的是,无论使用何种的 checkNotNull(Object)或者Verify.verifyNotNull(Object)是适当的情况.(对于接收消息的重载也是如此.)

有人可以解释这个建议的理由吗?

这是为了保持一致性还是存在根本性的错误Objects.requireNonNull

java guava

14
推荐指数
2
解决办法
4149
查看次数

C# - 作为关键字真的需要"易变"吗?

随着我越来越深入地阅读volatile关键字的含义,我不断对自己说"这是实现的方式,这不应该是高级编程语言的一部分".
我的意思是,CPU缓存数据的事实对于JIT编译器应该是有趣的,而不是C#程序员.

一个相当大的选择可能是一个属性(比方说VolatileAttribute).

你怎么看?

.net c# multithreading jit volatile

13
推荐指数
3
解决办法
1466
查看次数

需要:.NET中的文件系统接口和实现

可能重复:
如何在C#中模拟文件系统进行单元测试?

我使用Moq作为模拟框架,将单元测试编写到我的代码中.
我的代码包括使用对System.IO类的直接调用来调用文件系统.例如,File.Exists(...)等等.
我想将该代码更改为更易测试,所以我应该有一个接口,比方说IFile,用相关的方法Exists(string path).
我知道我可以从头开始编写它,但我认为可能有一个完整,健壮的框架,它具有文件系统的接口和实现.这个(期望的)框架也可以是某种"服务",因此它的API不必是System.IO命名空间的"接口等价物" .
请注意,我真的很想拥有接口(而不是静态方法),以便我的代码可以用于依赖注入

到目前为止我得到了什么:

还有其他建议吗?

.net file-io unit-testing dependency-injection mocking

12
推荐指数
2
解决办法
5147
查看次数

使用.NET 2.0+进行分布式缓存?

使用.NET实现分布式缓存的最佳方法是什么?

编辑:我正在寻找内部和外部应用程序的通用缓存模式

asp.net caching distributed-caching

11
推荐指数
0
解决办法
2186
查看次数

Environment.GetCommandLineArgs - 为什么它是一个方法?为什么不是财产?

我试图了解创建该方法的团队的设计考虑因素Environment.GetCommandLineArgs.

它可能是一个静态属性,非常像System.Web.HttpContext.Current.毕竟,返回的值一旦可用就不应该改变.所以它更像是当前运行过程的属性.

我知道.NET中的任何属性都是getter/setter方法的语法糖.但这是使用属性而不是显式getter方法的确切原因.

或者也许我在这里缺少一些东西?

你怎么看?

.net methods properties environment-variables

8
推荐指数
1
解决办法
1033
查看次数

我们可以使用MS WebDeploy创建新的网站吗?

我通过VS2012和命令行阅读了很多关于WebDeploy的帖子,文档页面等.

在所有部署方案中,我注意到目标站点应该已存在于目标计算机(IIS)上.

如果目标(主机)计算机上不存在创建网站的包,是否可以选择创建该网站

command-line webdeploy visual-studio-2012

7
推荐指数
1
解决办法
1374
查看次数

分布式键值存储,总数据大小为80TB

TL; DR:

我想建议分布式键值存储,平均值.入口大小最多50KB,安装在Linux环境(专用服务器)上.
文件系统解决方案可以.
我找到了一些解决方案:Ceph,Cassandra,Riak等等.

细节

我正在为我们的一个组件寻找存储解决方案,它应该是一个键值存储,平面命名空间.

脚本

读/写模式非常简单:

写入键值后,在接下来的几个小时内会有一些读数.

在那之后,没有任何东西触及给定的键值.我们希望将数据保留用于将来的目的,"存储模式".

其他用法方面

  • 操作系统:Linux
  • Python客户端/连接器
  • 总大小:高达80TB(此值也代表未来需求).
  • 平均条目大小(对于kv对中的单个值):10到50 KB,未压缩,主要是文本数据
  • 压缩:内置或外置.
  • 加密:不需要
  • 网络带宽:1Gb,单个LAN
  • 服务器:专用(不在云端)

最重要的要求

"基础"要求是:

  • 操作系统:Linux
  • Python客户端/连接器或通过HTTP的RESTful API
  • 可轻松存储高达80TB(此值也代表未来需求).
  • 最大读取延迟:首次读取时为几秒,"存储模式"为30秒(参见上文中的说明)
  • 内置复制(以便将数据存储在多个节点上)

很高兴有

  • RESTful网关
  • 后台数据备份到另一个存储(用于灾难时的数据恢复).
  • 易于配置

到目前为止我发现了什么

  • 头孢
  • HDFS
  • HBase在HDFS之上
  • 光泽
  • GlusterFS
  • Mongo的GridFS - 但我能相信Mongo的基础设施吗?
  • Cassandra - 不是一个选项,因为合并过程会消耗双倍的磁盘大小
  • Riak - 看起来像Cassandra一样有问题,需要更多的研究
  • Swift + OpenStack(实际存储可以在Amazon S3上)
  • 伏地魔
  • 有许多其他工具,但我不会在这里写,因为其中一些有专有许可,其他工具似乎不成熟.

我对以上提到的任何工具(总容量超过50TB)或者您认为足够的工具的任何建议表示感谢.

key-value-store distributed-filesystem

6
推荐指数
1
解决办法
957
查看次数