小编Mic*_*uff的帖子

扩展clojure core.async的功能

是否建议使用我自己的异步函数扩展core.async的功能?

信道的异步是由处理put!take!其接受回调,但协议嵌套在async.impl.protocols命名空间.是否IMPL意味着置身事外!在这种情况下,还是可以实现它们?

例如,我可以将netty通道或java套接字包装为ReadPort和WritePort.

clojure core.async

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

传播两个网络通道之间的背压

我想要写使用网状-4,其中一个服务器从一个信道(巧妙配成接收的请求的系统),并变换和潜在把结果到另一个信道到另一个后端系统(被称为).

但我想从传播反压通道的通道?具体来说 - 因为netty API是异步的 - 当out不再被阻塞时如何得到通知; 并告诉暂停/恢复?

部分解决方案

我相信可以判断通道何时可以写入channel.isWritable().

这个问题的答案提到禁用AUTO_READ,但后来我相信我必须负责轮询通道以进行读取.我不会对此感到高兴 - 除非我能在准备好阅读时收到消息.此时,使用netty的实用程序大多只是无副本缓冲区和ByteToMessageDecoder超类.

java netty

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

复杂的代码和分支预测器

分支预测逻辑有多"粘性"?如果从指令缓存中删除代码,统计数据是否保持不变?

换句话说,如果代码很复杂或者没有批量处理,那么分支预测是否会有所帮助?

让我们假设商品英特尔服务器硬件比2011年更新.

intel branch-prediction

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

是否可以绑定嵌套泛型?

是否可以将嵌套的泛型/捕获绑定在一起?

我经常遇到将类的Map查找到所述类的泛化项的问题.具体而言,我想要这样的东西(不,T没有在任何地方声明).

private Map<Class<T>, ServiceLoader<T>> loaders = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)

简而言之,我希望loaders.put/get具有类似这样的语义:

<T> ServiceLoader<T> get(Class<T> klass) {...}
<T> void put(Class<T> klass, ServiceLoader<T> loader) {...}
Run Code Online (Sandbox Code Playgroud)

以下是我能做的最好的事情吗?我是否必须忍受不可避免的@SuppressWarnings("unchecked")某个地方?

private Map<Class<?>, ServiceLoader<?>> loaders = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)

java generics capture

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

如何断言类覆盖默认__hash__和__eq__

我正在python中编写一个类装饰器.作为装饰器的一部分,我想断言该类不使用默认__eq____hash__方法.我怎样才能做到这一点?

@identifer # should throw AssertionError
class X(object):
    pass
Run Code Online (Sandbox Code Playgroud)

我已经探索了这些(除了谷歌搜索,并查看文档):

hasattr(X, '__eq__') # True :(

xeq, oeq = X.__eq__, object.__eq__
xeq is oeq # False :(
xeq == oeq # False :(

'__eq__' in X.__dict__ # False :)?
Run Code Online (Sandbox Code Playgroud)

测试类__dict__似乎可行,但如果类从超类继承方法,它似乎不起作用.所以我可以遍历继承图寻找方法,但我想先知道是否有更清洁的实现.

这是在2.7,但也希望它在3.x中工作

python

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

布尔值会自动装箱到同一个实例吗?

布尔值会自动装箱到同一个实例吗?

我有一个小测试表明确实如此,但我不会对此下任何赌注。有保证吗?

    @Test
    public void autoboxBooleans() {
        Multimap<Boolean, Integer> ids = HashMultimap.create();

        for (int i = 0; i < 10; i++) {
            Boolean rand = ThreadLocalRandom.current().nextBoolean();
            ids.put(rand, System.identityHashCode(rand));
        }

        System.out.println(ids); // {false=[453523494], true=[2024918163]}
    }
Run Code Online (Sandbox Code Playgroud)

注意这个问题讨论的是 0-127 范围之外的整数。

java autoboxing

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

是否有一个标准的clojure宏为first-not-nil?

我正在寻找一个与此相反的宏maybe-m.也就是说,我希望第一个表达式的结果返回非nil 而不评估剩余的表达式.最后一部分很重要,因为如果"解决方案"使用延迟序列,那么它们将以块的形式进行评估...这意味着可以在我不希望它们时评估表达式.

这是我正在寻找的一个例子:

(defn really-cool-stuff [a b c]
  (first-not-nil
    (operation1 a b) ; <-- this returns nil,
    (operation2 b c) ; <-- this returns non-nil, the result is returned
    (operation3 a b c))) ; <-- this is not evaluated
Run Code Online (Sandbox Code Playgroud)

macros clojure

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

内部类必须引用封闭的类吗?

我有一个内部类(非静态),它在初始化时使用对封闭类的引用.内部类现在会保留对封闭类的引用吗?

class Enclosing {
  class Inner {
    private final ABC innerField = outerField.computeSomething();
  }

  private final XYZ outerField = something();
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

我非常清楚,一个可以参考的外部类Enclosing.this.

但是,如果类不使用引用,编译后是否必须引用?即使引用仅用于初始化,是否有必要?

它在哪里说内部类总是持有外部类的引用?

java inner-classes

0
推荐指数
1
解决办法
1481
查看次数