小编Jac*_*cob的帖子

为什么Haskell中的递归函数如此之慢?

我试图模仿Sieve使用Haskell找到所有素数少于一些数.我发现其他Haskell程序以极快的速度使用Sieve方法.但是我写的下面的递归函数非常慢.代码如下

sieve' :: Integer -> Integer -> [Integer]

sieve' n 1 = [2 .. n]

sieve' n (k + 1) | [x | x <- sieve' n k, x == k + 1] == [] = sieve' n k

    |otherwise = [x | x <- sieve' n k,  x == k + 1 || not (mod x (k + 1) == 0)]



sieve :: Integer -> [Integer]

sieve n = sieve' n n
Run Code Online (Sandbox Code Playgroud)

筛20需要大约2分钟.在我写这个问题的时候,Sieve 30还没有完成.

任何人都可以解释为什么这个递归函数是如此缓慢.感谢您的任何帮助,您可以提供.

haskell

5
推荐指数
1
解决办法
532
查看次数

backbone.js model.save没有设置id

我继承了一个基于骨干js的应用程序.我真的很喜欢骨干,我只是开始了解它.根据我的理解,当在新实体上调用model.save时,它应该将其发布到服务器,服务器应该返回相同的json,但是具有分配的id,并且主干应该将该id保存到模型,以便进一步保存结果到PUT使用ID进行更新.

但是,当我调用model.save()然后尝试获取model.id属性时,它为null.

这是因为我没有回电话吗?所以该物业尚未设定?

我如何设置成功回调?打电话model.save({success: function(){...}})不起作用?

这是实际的电话:

model.save(null, {
    success: function () {
        alert('success');
    },
    error: function () {
        alert('error');
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery backbone.js

5
推荐指数
1
解决办法
4231
查看次数

组合子的类型签名与其等效Lambda函数的类型签名不匹配

考虑这个组合子:

S (S K)
Run Code Online (Sandbox Code Playgroud)

将其应用于参数XY:

S (S K) X Y
Run Code Online (Sandbox Code Playgroud)

它签订合同:

X Y
Run Code Online (Sandbox Code Playgroud)

我将S(SK)转换为相应的Lambda术语并得到了这个结果:

(\x y -> x y)
Run Code Online (Sandbox Code Playgroud)

我使用Haskell WinGHCi工具获取(\ xy - > xy)的类型签名,并返回:

(t1 -> t) -> t1 -> t
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义.

接下来,我使用WinGHCi获取s(sk)的类型签名并返回:

((t -> t1) -> t) -> (t -> t1) -> t
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义.为什么类型签名不同?

注意:我将s,k和i定义为:

s = (\f g x -> f x (g x))
k = (\a x -> a)
i = (\f -> f)
Run Code Online (Sandbox Code Playgroud)

haskell combinators lambda-calculus combinatory-logic type-signature

5
推荐指数
3
解决办法
566
查看次数

使用javascript禁用标记(链接)

有没有人如何使用javascript禁用标签(链接)?

例:

<div class="sub-heading">
  Contact Details &nbsp; &nbsp; &nbsp; 
  <a href="./cust_add_edit_customer.php?action=edit_customer_details&amp;cust_code=12761">  
    <img class="imgVA editIconPad" src="../images/edit0.gif" 
      alt="Edit Contact Details" border="0" width="20" height="17">
  </a>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望在单击按钮后禁用此标记.

javascript

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

LINQ to SQL缓存问题

长话短说:我正在使用Linq来进行sql,但是我的缓存存在问题

我的应用程序是元数据驱动的,所以我不希望缓存(数据库中的更改应该反映在页面刷新的网站上).有没有办法关闭缓存?或者一种重置缓存的方法(例如,当我在数据库中更改数据时,我必须在物理上更改代码并在看到结果之前重新编译).

最后是ac#question(希望是我的一个基本错误).在下面的代码,如果我跑method1,然后method2再doc2 == doc1(和我希望它从DB获得原始值)

这对我来说似乎很奇怪,因为RecordDictionary类是旋转数据(所以不直接与模型相关),在我的代码中,赋值在不同的控制器中; 但不知何故linq to sql是缓存更改应用于doc1并应用它们doc2(如果我退出我的应用程序,然后重新编译然后doc2等于我期望它(直到我更改doc1)

举例说明

public RecordDictionary method1()
{
    RecordDictionary doc1 = genericRepository.GetRecordById(
        action.AppliesToModelEntityId, 27);

    //do some stuff to doc1 here
    return doc1;
}

public RecordDictionary method2()
{    
    RecordDictionary doc2 = genericRepository.GetRecordById(
        action.AppliesToModelEntityId, 27);
    return doc2;
}

public RecordDictionary GetRecordById(int ContainerModelId, int id)
{
    var query = (from dv in _db.DataValues
                 where dv.DataInstance.IsCurrent == true &&
                     dv.DataInstance.DataContainer.DataContainerId == id …
Run Code Online (Sandbox Code Playgroud)

c# caching linq-to-sql

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

使用迭代方法求解递归关系

考虑这个例子:

T(n) = T(7n/8) + 2n 
Run Code Online (Sandbox Code Playgroud)

我假设T(1)= 0

并尝试以下列方式解决它

T(n) = T(7n/8) + 2n
     = T(49n/64) + 2.(7n/8) + 2n
     = T(343n/512) + 2.(7n/8).(7n/8)+ 2.(7n/8) + 2n 
     = T(1) + 2n ( (7n/8)^i + ..... + 1)               
Run Code Online (Sandbox Code Playgroud)

但我无法得出任何结论.我对下一步该怎么办感到困惑.

algorithm recurrence

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

如何使用 ExpressionType.Index 的 NodeType 创建 .NET 表达式?

我正在编写评估 .NETExpression树的代码。我正在尝试创建一个 C# 4 测试来练习我对 的处理ExpressionType.Index,但我无法弄清楚如何通过LambdaExpression. 无论我尝试什么,表达式都会以ExpressionType.Callor的形式出现ExpressionType.ArrayIndex。例如:

IList<int> myList = new ObservableCollection<int> { 3, 56, 8 };
Expression<Func<int>> myExpression = () => myList[3]; 
// myExpression.Body.NodeType == ExpressionType.Call

myList = new int[] { 3, 56, 8 };
myExpression = () => myList[3]; 
// myExpression.Body.NodeType == ExpressionType.Call

int[] myArray = new int[] { 3, 56, 8 };
myExpression = () => myArray[3]; 
// myExpression.Body.NodeType == ExpressionType.ArrayIndex

List<int> myNonInterfaceList = new List<int> { …
Run Code Online (Sandbox Code Playgroud)

c# lambda expression-trees clr4.0 c#-4.0

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

有没有时间你不会使用递归?

我有一个大学实验室的问题;

编写一个简短的程序,输出通过使用字符'c','a','r','b','o'和'n'形成的所有可能的字符串.

这似乎是一个常见的面试问题,并有详细记录.

所以我使用递归方法用Java编写它并不太难,何时或为什么你会选择不使用递归?最简单的方法是什么?

我开始编写一个计数器,它会倒计数到6,然后输出将引用char并打印字符串.

谢谢,

java recursion

4
推荐指数
3
解决办法
8407
查看次数

检测ASP.NET网站的出站连接排队

有没有办法检测何时尝试出站连接排队?

我们的ASP.NET应用程序向其他Web服务发出大量的出站请求.最近我们遇到了主要的性能问题,其中对特定端点的调用需要很长时间才能完成或超时.该服务的所有者在他们看来没有看到任何性能问题.当我们分析网络流量时,我们确实看到了HTTP请求确实及时完成.那时我们发现我们漫长的等待时间和超时是由于连接排队造成的.

我们解决此问题的第一种方法是简单地增加到该端点的允许出站连接数,因此:

<system.net>
  <connectionManagement>
    <add address="http://some.endpoint.com" maxconnection="96" />
  </connectionManagement>
</system.net>
Run Code Online (Sandbox Code Playgroud)

这确实使我们对端点的调用大大减少了.但是,我们注意到这导致我们的整体入站请求需要更长时间才能完成.那时我们遇到了Microsoft KB 821268.遵循"经验法则"指南,我们提出了以下额外更改:

<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>      
Run Code Online (Sandbox Code Playgroud)

这似乎解决了一切.我们的呼叫some.endpoint.com仍然很快,我们的响应时间也下降了.

但是,几天后,我们注意到我们的网站性能不佳,我们看到了一些SQL Server超时.我们的DBA没有看到服务器性能有任何不妥,所以这看起来像是类似的事情再次发生; 我们想知道增加的连接some.endpoint.com是否导致其他出站调用队列,可能是由于线程不足.

最糟糕的是,我们还没有找到一种好的技术来明确地知道是否正在进行出站连接排队.我们所能做的就是观察我们提出请求和在申请中收到回复之间的时间.很难知道超时和长响应时间是否是由于特定排队造成的.

是否有任何有效的工具来测量和调整出站请求限制?任何其他性能调优技巧也一定会受到赞赏.

asp.net performance tcp iis-7.5 threadpool

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

找不到带有“@testing-library/cypress”的数据列表选项

我正在尝试编写一个测试,以确认 a具有使用来自 的基于角色的查询<datalist/>的元素列表。奇怪的是,当我尝试按角色查询时:<option/>@testing-library/cypressoption

cy.findByRole('option')
Run Code Online (Sandbox Code Playgroud)

...我没有返回任何结果:

4000 毫秒后超时重试:无法找到具有“选项”角色的可访问元素

...尽管页面中出现内容:

<datalist id="subjects-list">
  <option value="one">one</option>
  <option value="two">two</option>
</datalist>
<input list="subjects-list" value=""/>
Run Code Online (Sandbox Code Playgroud)

有没有办法找到这些选项@testing-library/cypress?

wai-aria html-datalist cypress testing-library cypress-testing-library

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