小编Joe*_*Joe的帖子

LINQ身份功能?

关于LINQ语法只是一点点关注.我压扁的IEnumerable<IEnumerable<T>>SelectMany(x => x).

我的问题是lambda表达式x => x.它看起来有点难看.是否有一些静态的'身份功能'对象,我可以用而不是x => x?有点像SelectMany(IdentityFunction)

c# linq lambda linq-to-objects

39
推荐指数
4
解决办法
8197
查看次数

事务管理块以挂起的COMMIT/ROLLBACK结束

我有一个视图功能:

@transaction.commit_manually
def xyz(request):
    if ABC:
        success = something()

        if success:
            status = "success"
            transaction.commit()

        else:
            status = "dataerrors"
            transaction.rollback()
    else:
        status = "uploadproblem"
        transaction.rollback()

    return render(request, "template.html", {
        'status': status,
    })
Run Code Online (Sandbox Code Playgroud)

我相信每个代码路径都以这种或那种方式结束事务.但Django似乎在抱怨它没有.有任何想法吗?

Django Version:     1.3
Exception Type:     TransactionManagementError
Exception Value:    Transaction managed block ended with pending COMMIT/ROLLBACK
Run Code Online (Sandbox Code Playgroud)

编辑:没有其他异常被抛出来改变代码路径.

django transactions

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

Scala如何在方法定义中接收多个参数?

Java有:

public void someMethod(int ... intArray) { // question: what is the equivalent to "..." 
    // do something with intArray
}
Run Code Online (Sandbox Code Playgroud)

如何在Scala中实现相同的功能?也就是说,将未定义数量的参数传递给方法?

java scala variadic-functions

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

在Scala中使用动态标签和属性构造XML?

我希望能够这样做:

val myXml = <myTag { someAttributes }> </myTag>
Run Code Online (Sandbox Code Playgroud)

(因为我不知道编译时属性细节是什么)

还有这个:

val myXml = <{someTag}></{someTag}>
Run Code Online (Sandbox Code Playgroud)

这不是有效的Scala语法.我最接近的是使用Elem对象来构造元素,但它有点麻烦(插入我不想要的PCDATA).有没有像上面这样做的方法?

xml scala

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

Java:为什么这不会被垃圾收集?

关于GCing理论的快速问题.我有以下方法.它运行,并退出该方法.为什么即使在GC运行后,计时器仍然存在并保持"TICK"?我不相信在这个方法存在之后仍然有对定时器或timertask的引用,所以我希望定时器被GCed并导致异常.请帮我理解这个概念.

谢谢,jbu

private void startTimer()
    {
        Timer timer= new Timer();
        TimerTask timerTask= new TimerTask()
        {

            @Override
            public void run()
            {
                System.out.println("TICK");
            }
        };

        timer.scheduleAtFixedRate(timerTask,
                0,
                500);
    }
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

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

为什么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
查看次数

我打算如何在Go中使用Filepath.Walk?

filepath.Walk函数采用函数回调.这是直接函数,没有上下文指针.当然,一个主要的用例Walk是走一个目录并根据它进行一些操作,参考更广泛的上下文(例如将每个文件输入到表中).

如果我在C#中编写它,我将使用一个对象(可以指向上下文中的对象的字段)作为回调(使用给定的回调方法),因此该对象可以封装Walk从中调用的上下文.

(编辑:用户" usr "表示闭包方法也发生在C#中)

如果我在C中写这个,我会要求一个函数和一个上下文指针,void *因此该函数有一个上下文指针,它可以传递给Walk函数并将其传递给回调函数.

但Go只有函数参数,没有明显的上下文指针参数.

(如果我设计了这个函数,我会把一个对象作为一个回调而不是一个函数,符合接口FileWalkerCallback或其他什么,并callback(...)在该接口上放置一个方法.然后,消费者可以在传递它之前将任何上下文附加到对象到Walk.)

我能想到的唯一方法是捕获回调函数中外部函数的闭包.这是我如何使用它:

func ScanAllFiles(location string, myStorageThing *StorageThing) (err error) {
    numScanned = 0

    // Wrap this up in this function's closure to capture the `corpus` binding.
    var scan = func(path string, fileInfo os.FileInfo, inpErr error) (err error) {
        numScanned ++

        myStorageThing.DoSomething(path)
    }

    fmt.Println("Scan All")

    err = filepath.Walk(location, scan)

    fmt.Println("Total scanned", numScanned)

    return
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我创建了回调函数,因此它的闭包包含变量numScanned和 …

closures go

18
推荐指数
1
解决办法
9305
查看次数

睡觉的演员?

让演员入睡最好的方法是什么?我将演员设置为代理,希望维护数据库的不同部分(包括从外部源获取数据).由于多种原因(包括没有超载数据库或通信和一般负载问题),我希望演员在每个操作之间休眠.我正在看10个演员对象.

演员将无限运行,因为总会有新数据进入,或者坐在表中等待传播到数据库的其他部分等.想法是让数据库在任何时候都尽可能完整及时.

我可以通过无限循环执行此操作,并在每个循环结束时进行休眠,但根据http://www.scala-lang.org/node/242,actor使用线程池,只要所有线程都被阻塞,它就会被扩展.所以我想每个actor中的Thread.sleep都是个坏主意,因为会不必要地浪费线程.

我可能有一个中央演员有自己的循环,在时钟上发送消息给订阅者(如异步事件时钟观察者)?

有没有人做过类似的事情或有任何建议?很抱歉有额外的(可能是多余的)信息.

干杯

scala actor

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

通用与类型安全?在C中使用void*

来自OO(C#,Java,Scala),我非常重视代码重用和类型安全的原则.上述语言中的类型参数可以完成这项工作并启用通用数据结构,这些结构既是类型安全的,也不会"浪费"代码.

当我陷入C时,我意识到我必须做出妥协,我希望它是正确的.我的数据结构void *在每个节点/元素中都有一个,我失去了类型安全性,或者我必须为我想要使用它们的每种类型重新编写我的结构和代码.

代码的复杂性是一个显而易见的因素:遍历数组或链接列表是微不足道的,并且添加*next一个结构不是额外的努力; 在这些情况下,不尝试重用结构和代码是有道理的.但对于更复杂的结构,答案并不那么明显.

还有模块化和可测试性:将类型及其操作与使用该结构的代码分离,使测试更容易.反之亦然:在一个结构上测试某些代码的迭代,同时它试图做其他事情变得混乱.

那么你的建议是什么?void *和重用或类型安全和重复的代码?有没有一般原则?当我不适合时,我是否试图强迫OO进行程序化?

编辑:请不要推荐C++,我的问题是关于C!

c generics void void-pointers

16
推荐指数
3
解决办法
5837
查看次数

读取,修改和编写XML的最佳方法

我的计划是使用我的C#程序读取XML文档,搜索我想要更改的特定条目,然后写出修改后的文档.但是,我已经变得不稳定,因为很难区分元素,无论它们是使用XmlTextReader开始还是结束,我正在使用它来读取文件.我可以做一些建议让我走上正轨.

该文档是一个HTML文档,因此您可以想象,它非常复杂.

我想在HTML文档中搜索元素id,例如查找并更改src;

<img border="0" src="bigpicture.png" width="248" height="36" alt="" id="lookforthis" />
Run Code Online (Sandbox Code Playgroud)

c# xml

15
推荐指数
2
解决办法
7万
查看次数