标签: stack-overflow

使用LongStream和jOOλ生成素数会导致StackOverflowError

出于教育目的,我想使用Java-8创建素数流.这是我的方法.x如果没有不超过的主要除数,则该数字为素数sqrt(x).所以假设我已经有一个素数流我可以使用以下谓词来检查:

x -> Seq.seq(primes()).limitWhile(p -> p <= Math.sqrt(x)).allMatch(p -> x % p != 0)
Run Code Online (Sandbox Code Playgroud)

在这里,我使用jOOλ库(0.9.10,如果重要的话)仅用于limitWhile标准Stream API中不存在的操作.所以现在知道一些先前的素数prev我可以生成下一个素数迭代数字,直到找到与该谓词匹配的那个:

prev -> LongStream.iterate(prev + 1, i -> i + 1)
                  .filter(x -> Seq.seq(primes()).limitWhile(p -> p <= Math.sqrt(x))
                                                .allMatch(p -> x % p != 0))
                  .findFirst()
                  .getAsLong()
Run Code Online (Sandbox Code Playgroud)

把所有东西放在一起我写了以下primes()方法:

public static LongStream primes() {
    return LongStream.iterate(2L, 
            prev -> LongStream.iterate(prev + 1, i -> i + 1)
                              .filter(x -> Seq.seq(primes())
                                              .limitWhile(p -> p <= Math.sqrt(x)) …
Run Code Online (Sandbox Code Playgroud)

java stack-overflow java-8 java-stream

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

如何像使用SQL连接一样使用OData Expand?

我正在试图找出如何完成相当于:

select *
from Users u
inner join Comments c on c.UserId = u.Id
where Id = 1569
Run Code Online (Sandbox Code Playgroud)

(表别名以获得更好的sql可读性)

...在StackOverflow OData端点上.这个网址将如何构建?我正在看OData.org上的Expand文档,我认为它看起来像:

https://odata.sqlazurelabs.com/OData.svc/v0.1/rp1uiewita/StackOverflow/Users?$Expand=Comments&$filter=UserId eq 1569 但是不对.

在Linq中,它就是这个(我想),但不支持Join:

Users.Where(u=>u.Id==1569).Join(Comments, u=>u.Id, c=>c.UserId, (a,b)=>a.Id==b.UserId)

我不需要在Linq中严格解决这个问题,我只是想弄清楚如何构造查询URL.基本上,我如何将SQL连接谓词转换为OData URL并在一次调用中执行此操作?

sql stack-overflow odata

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

找到变量Buf的确切地址

作为参考,我使用以下代码:

#include <stdio.h>
#include <string.h>

int main (void) {
    char buf[100]; // ------> How do I find the address in gdb?

    printf ("Buffer is at memory location: %08x\n", &buf);
    strcpy (buf, "some random text");
    printf ("Text is [%s]\n", buf);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能gdb告诉我buf变量的地址?

stack-overflow buffer gdb

24
推荐指数
3
解决办法
6万
查看次数

如何处理或避免C++中的堆栈溢出

在C++中,堆栈溢出通常会导致程序无法恢复的崩溃.对于需要非常强大的程序,这是一种不可接受的行为,特别是因为堆栈大小有限.关于如何处理问题的一些问题.

  1. 有没有办法通过一般技术来防止堆栈溢出.(一种可扩展,强大的解决方案,包括处理大量堆栈的外部库等)

  2. 有没有办法处理堆栈溢出,以防它们发生?优选地,堆栈被解开,直到有处理器来处理该类问题.

  3. 有些语言,有可扩展堆栈的线程.这样的东西在C++中是可能的吗?

关于C++行为解决方案的任何其他有用的评论将不胜感激.

c++ stack-overflow crash error-handling

24
推荐指数
2
解决办法
3万
查看次数

clojure cons vs lazy-seq

为什么cons在这个上下文中使用lazy-seq,但是conj没有?

这有效:

(defn compound-interest [p i]
   (cons p (lazy-seq (compound-interest (* p (+ 1 i)) i))))
Run Code Online (Sandbox Code Playgroud)

这不会(它给出堆栈溢出[1]异常):

(defn compound-interest2 [p i]
   (conj (lazy-seq (compound-interest2 (* p (+ 1 i)) i)) p))
Run Code Online (Sandbox Code Playgroud)

[1]哦,你好!在stackoverflow上询问涉及堆栈溢出的问题.

stack-overflow clojure cons

24
推荐指数
1
解决办法
3403
查看次数

大型2D阵列给出了分段故障

我正在Linux中编写一些C++代码,我已经声明了一些2D数组,如下所示:

 double x[5000][500], y[5000][500], z[5000][500];
Run Code Online (Sandbox Code Playgroud)

在编译期间没有错误.当我执行它时说"分段错误".

Wen我将数组的大小从5000减少到50,程序运行正常.我该如何保护自己免受这个问题的影响?

c++ linux stack-overflow

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

C# - 实体框架 - mscorlib.dll中发生未处理的"System.StackOverflowException"类型异常

mscorlib.dll中发生未处理的"System.StackOverflowException"类型异常
确保您没有无限循环或无限递归.

以下代码在此方法成功时调用:

internal static List<RivWorks.Model.Negotiation.ProductsSold> GetProductsSoldByCompany(Guid CompanyID)
{
    var ret = from a in _dbRiv.ProductsSold where a.Company.CompanyId == CompanyID select a;
    return ret.ToList();
}
Run Code Online (Sandbox Code Playgroud)

在返回时,它调用实体模型并尝试填充所有外键控对象(子对象).架构是[1公司有0到多个ProductsSold].出于某种原因,对以下代码的调用只会自行级联:

[global::System.Data.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("RIV_Model", "FK_ProductsSold_Company", "Company")]
[global::System.Xml.Serialization.XmlIgnoreAttribute()]
[global::System.Xml.Serialization.SoapIgnoreAttribute()]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public Company Company
{
    get
    {
        return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company").Value;
    }
    set
    {
        ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company").Value = value;
    }
}
/// <summary>
/// There are no comments for Company in the schema.
/// </summary>
[global::System.ComponentModel.BrowsableAttribute(false)]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public global::System.Data.Objects.DataClasses.EntityReference<Company> CompanyReference
{
    get
    {
        return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company");
    }
    set
    {
        if ((value …
Run Code Online (Sandbox Code Playgroud)

c# stack-overflow recursion entity-framework

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

为什么reduce在Clojure中给出了StackOverflowError?

我正在尝试连接一系列Seqs.

我可以做到apply concat.

user=> (count (apply concat (repeat 3000 (repeat 3000 true))))
9000000
Run Code Online (Sandbox Code Playgroud)

但是,根据我有限的知识,我会假设使用apply力量来实现懒惰的Seq,这对于非常大的输入来说似乎并不合适.如果可以的话,我宁愿懒洋洋地这样做.

所以我认为使用reduce就可以完成这项工作.

user=> (count (reduce concat (repeat 3000 (repeat 3000 true))))
Run Code Online (Sandbox Code Playgroud)

但这导致了

StackOverflowError   clojure.lang.RT.seq (RT.java:484)
Run Code Online (Sandbox Code Playgroud)

我很惊讶,因为我会认为语义reduce意味着它是尾调用的递归.

两个问题:

  • apply是最好的方法吗?
  • reduce一般不适合大投入?

stack-overflow recursion reduce clojure

23
推荐指数
1
解决办法
1543
查看次数

如何增加在Windows 7下运行的Apache的堆栈大小?

我想我在Windows 7下的Apache服务器上运行的是一个堆栈溢出运行cakePHP应用程序.

apache stack-overflow windows-7-x64

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

在Java 8中实现无堆栈递归

如何在Java中实现无堆栈递归?

似乎出现最多的词是"蹦床",我不知道这意味着什么.

有人在IN DETAIL中解释如何在Java中实现无堆栈递归吗?还有什么是"蹦床"?

如果你不能提供其中任何一个,你能指出我正确的方向(即一本书来阅读它或一些教导所有这些概念的教程)?

java stack-overflow recursion tail-call-optimization

21
推荐指数
1
解决办法
4965
查看次数