小编lac*_*oka的帖子

如何将类似java Iterator的对象转换为clojure序列

我正在使用Sesame库在内存中的三重存储上运行SPARQL查询.

我正在使用Clojure来实现这一目标.

查询结果是一个类似自定义Iterator的[1]对象,因此clojure seq不能在开箱即用的情况下工作.

将自定义java Iterator类似对象转换为clojure序列的最优雅方法是什么?

我想到的最明显和最愚蠢的想法是循环它并建立一个clojure向量,但我确信有更优雅的方法来解决这个问题.

[1] http://www.openrdf.org/doc/sesame2/api/info/aduna/iteration/Iteration.html

java sesame clojure seq

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

Netty 4中的缓冲区所有权:如何管理缓冲区生命周期?

我一直在尝试编写一个HTTP客户端来同时获取多个提要(最多1k),这也是学习Netty 4的练习.

我的问题是,如果有一个很好的解释,新的ByteBuf基础设施如何工作?谁"拥有"他们,他们是如何分享的(是吗?)?ChannelPipeline中的每个ChannelHandler都有它自己的ByteBuf吗?

这是一个令我困惑的例子:

我将以下类的实例添加到HTTP客户端管道:

public class MyFilter extends MessageToMessageDecoder<HttpObject> {

    @Override
    protected Object decode(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
        // do some work, but leave msg unchanged
        BufUtil.retain(msg); // Why do I need to call BufUtil.retain(msg) ???
        return msg;
}
Run Code Online (Sandbox Code Playgroud)

如果我没有在msg上调用BufUtil.retain,它似乎得到了GCd,我得到了各种各样的虚假错误.

netty

9
推荐指数
1
解决办法
3496
查看次数

标签 统计

clojure ×1

java ×1

netty ×1

seq ×1

sesame ×1