小编Rob*_*vey的帖子

纯粹的查找速度单值类型c#?

.NET 4.5.1

我有一堆Int16值,它们的范围是-4到32760.范围内的数字不是连续的,但它们的排序是从-4到32760.换句话说,16-302的数字是不在"束",但数字303-400在那里,数字2102不存在,等等.

什么是确定特定值(例如18400)是否在"束"中的全速最快方法?现在它在Int16 []中并且Linq Contains方法用于确定数值是否在数组中,但是如果有人可以说明为什么/如何不同的结构将更快地传递单个值,我将不胜感激.速度是此查找的关键("束"是静态类的静态属性).

有效的示例代码

Int16[] someShorts = new[] { (short)4 ,(short) 5 , (short)6};
var isInIt = someShorts.Contains( (short)4 );
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是可以完成的最高效的事情.

谢谢.

c# linq arrays performance

2
推荐指数
1
解决办法
174
查看次数

尝试/除了班级中的每个方法?

我目前正在使用Google的BigQuery API,它在调用时偶尔会给我:

apiclient.errors.HttpError: <HttpError 500 when requesting https://www.googleapis.com/bigquery/v2/projects/some_job?alt=json returned "Unexpected. Please try again.">
Run Code Online (Sandbox Code Playgroud)

返回是一件很愚蠢的事情,但无论如何,当我为任何一种方法得到这个时,我只想睡一两秒然后再试一次.基本上,我想用以下方法包装每个方法:

def new_method
    try:
        method()
    except apiclient.errors.HttpError, e:
        if e.resp.status == 500:
            sleep(2)
            new_method()
        else:
            raise e
Run Code Online (Sandbox Code Playgroud)

这样做的好方法是什么?

我不想显式重新定义类中的每个方法.我只是想自动将一些东西应用到课堂上的每一个方法中,所以我对未来有所了解.理想情况下,我会采取一个类的对象,O,并围绕它的包装,重新定义每个方法的类此尝试不同的包装,所以我得到了一些新的对象,P,当它得到一个500错误自动重试.

python

2
推荐指数
1
解决办法
723
查看次数

为什么Haskell允许使用Shape列表,但没有Square或Circle或Triangle列表

为什么Haskell允许在第一个例子中做一个Shape列表,但不像第二个例子那样?据我所知,两个列表都有元素

{ name :: String, position :: Vector3D, radius :: Double }
Run Code Online (Sandbox Code Playgroud)

要么

{ name :: String, position :: Vector3D, dimensions :: Vector3D }.

前1:

data Shape
    = Sphere { name :: String, position :: Vector3D, radius :: Double }
    | Prism { name :: String, position :: Vector3D, dimensions :: Vector3D }
Run Code Online (Sandbox Code Playgroud)

前2:

data Sphere = Sphere { name :: String, position :: Vector3D, radius :: Double }
data Prism = Prism { name :: String, position :: …
Run Code Online (Sandbox Code Playgroud)

oop polymorphism haskell functional-programming list

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

这个素数分解代码适用于小数字,但是对于大数字而言失败并出现OutOfMemoryException?

我正试图获得大量的主要因素..

let factors (x:int64) =
  [1L..x]
  |> Seq.filter(fun n ->  x%n = 0L)

let isPrime (x:int64) = 
 factors x
 |> Seq.length = 2

let primeFactors (x:int64)= 
 factors x 
 |> Seq.filter isPrime
Run Code Online (Sandbox Code Playgroud)

这适用于13195但是因为600851475143的OutOfMemoryException而失败?

对不起,如果我错过了一些明显的东西,那只是我在F#上的第三天,直到今天早上我还不知道是什么主要因素.

primes f# ml

2
推荐指数
1
解决办法
210
查看次数

如果你必须在if语句中放置中断,为什么我们需要在while操作中打扰条件?

这只是一个普遍的问题.

我最初写的

    do
    {
        scanf("%i", &Carselect);
        if (Carselect == 1)
        {
            mass = 1100;
            velomax = 200;
        }
        else if (Carselect == 2)
        {
            mass = 1888;
            velomax = 415
        }
        else if (Carselect == 3)
        {
            mass = 18000;
            velomax = 129;
        }
        else
        {
        printf("Error in input. Please enter 1, 2 or 3.\n");
        }
    }
    while (Carselect != 1 || Carselect != 2 || Carselect != 3);
Run Code Online (Sandbox Code Playgroud)

我陷入了困境.我在有效条件的陈述中放了休息,这让我可以离开,就像这样

    do
    {
        scanf("%i", &Carselect);
        if (Carselect == 1)
        {
            mass …
Run Code Online (Sandbox Code Playgroud)

c if-statement do-while

2
推荐指数
1
解决办法
47
查看次数

在 ClickOnce WPF 应用程序中找不到资源文件的部分路径

我在测试环境中发布了单击一次应用程序,但在需要访问文件的部分中出现“找不到部分路径”异常。

Could not find a part of the path 'C:\Users\admin\AppData\Local\Apps\2.0\E65K03BT.792\Resources\file.pem'.
Run Code Online (Sandbox Code Playgroud)

我在代码中指定此路径,如下所示:

..\\..\\Resources\\file.pem
Run Code Online (Sandbox Code Playgroud)

当我从 Visual Studio 运行它时,一切都运行良好。

它仅在实际部署的应用程序上失败。

c# clickonce

2
推荐指数
1
解决办法
1948
查看次数

测试当前条目是 CollectionViewSource 中的第一个还是最后一个条目

我正在通过实体框架将 MS SQL Server 表中的行读取到 C# CollectionViewSource 中。一行 = 一个集合条目。

我使用数据绑定将每个 CollectionViewSource 条目的数据元素连接到 WPF GUI 的控件。用户使用 GUI 上的按钮使用如下所示的命令处理程序在集合条目中前后翻页。

    private void DisplayNextRecordButtonCommandHandler(object sender, ExecutedRoutedEventArgs e)               //  Select the Next record for Display.
    {
        MyCollectionViewSource.View.MoveCurrentToNext();
        //Prevent the display of an "empty" record
        if (MyCollectionViewSource.View.IsCurrentAfterLast)
        {
            orgUnitAssetRskViewSource.View.MoveCurrentToPrevious();
        }
        selectedRecordPosition = orgUnitAssetRskViewSource.View.CurrentPosition;
    }
Run Code Online (Sandbox Code Playgroud)

在我开始在 GUI ComboBox 和 Text 控件中包含“SelectionChanged”和“TextChanged”事件之前,一切都运行良好。当我移动到集合中的下一个或上一个条目时会触发这些事件。一切正常,直到我到达集合中的第一个或最后一个条目。

“IsCurrentAfterLast”测试不会阻止我翻过集合中的最后一个条目,当我这样做时,我会收到“对象引用未设置为对象的实例”异常。我假设当“SelectionChanged”和“TextChanged”事件在第一个集合条目之前或最后一个集合条目之后遇到虚假数据时会导致异常。

在没有像“IsCurrentFirst”和“IsCurrentLast”这样的东西的情况下,谁能提出一种有效的方法来计算集合中的条目,这样我就可以避免越过第一个和最后一个?

c# wpf collectionviewsource

2
推荐指数
1
解决办法
335
查看次数

突变何时会成为副作用?

我遇到了以下有关如何终止未标记为功能的reduce的文章,但包含了很多有关数组突变为功能的问题。

在主要答复突变数组提前打破迭代出来,但阵列可以很容易地推回拼接项目,有点暧昧的解决方案,可以说是不是在所有的功能可以恢复到原来的状态。

但是,如果可以对项目进行修改(变异),则许多算法都将获得显着优势。

对于Javascript(单线程(无工作程序),无代理),如果修改只是暂时存在,是否将其视为变异?或者函数返回后,突变是否只是副作用。

以下功能是增效剂吗?

function mutateAndRepair(arr) {  // arr is an array of numbers
    arr[0]++;
    arr[0]--;
}
Run Code Online (Sandbox Code Playgroud)
  • 该数组包含1个或多个项目。
  • 数组的第一项(索引0)是最大安全整数范围内的数字。
  • 该数组不是共享缓冲区
  • 代理未监视该阵列

我认为这不是变异,因为变异仅在函数执行时存在,并且由于JS阻止,因此没有其他代码能够看到变异,因此没有副作用。

考虑到约束条件是否符合JavaScript编码人员使用的通用功能范例?

javascript functional-programming

2
推荐指数
1
解决办法
86
查看次数

SQL Server Management Studio 安装失败,位置无效

在我之前的安装由于我的一个损坏的硬盘驱动器而损坏后(E:下图中),我正在尝试重新安装 SSMS。尝试卸载以前的版本不起作用,因为它尝试从该驱动器中查找卸载程序。

无论如何,运行安装程序都会出现以下错误,并且无法编辑的位置指向有效的驱动器。

“位置无效。请输入有效位置以继续。”

在此输入图像描述

我非常确定旧安装的残余部分一定在注册表中的某个地方。知道去哪里寻找吗?或者有任何替代解决方案来解决这个问题?

ssms

2
推荐指数
1
解决办法
3493
查看次数

IQueryable 的顺序是否保留在 C# EF Core 中的实际查询中?

因此,当我为 DbContext 编写查询时,可查询的顺序实际上代表了输出查询。例如:

_dbContext
.Table
.OrderBy(i => i.Date)
.Take(25)
.Where(i => i.Variable == "something")
.ToList()
Run Code Online (Sandbox Code Playgroud)

相对

_dbContext
.Table
.Where(i => i.Variable == "something")
.OrderBy(i => i.Date)
.Take(25)
.ToList()
Run Code Online (Sandbox Code Playgroud)

因此,这些查询是不同的,因为第一个查询按日期获取最后 25 个项目并执行 where 子句。但另一个从where的结果中取出25。

当它被执行时,它会保持这个顺序吗?或者这就像一个构建器,其中所有属性都被设置和执行。如果我查看普通的 SQL,我无法在同一查询中的TAKE之前进行操作。WHERE所以对我来说这是有道理的。


我感到困惑的原因是,如果我用 MS SQL 编写第一个查询,我们会得到以下结果:

SELECT TOP 25 * FROM `Table` WHERE `Variable` = 'something' ORDER BY `Date`
Run Code Online (Sandbox Code Playgroud)

其中从 where 结果中取出 25。

c# linq iqueryable entity-framework-core

2
推荐指数
1
解决办法
367
查看次数