小编Arn*_*sen的帖子

CQL3现在需要Cassandra的架构吗?

我上周刚刚参加了Cassandra的速成课程,从Thrift API到CQL到了SuperColumns,我不应该使用它们和用户复合键.

我现在正在尝试CQL3,看起来我不能再插入未在架构中定义的列,或者看到那些列中的列 select *

我错过了一些在CQL3中启用它的选项,或者它是否希望我定义模式中的每一列(忽略宽,灵活行的目的,imho).

cql cassandra cql3

9
推荐指数
2
解决办法
3621
查看次数

Akka Actors的异步初始化

我正在尝试找到异步初始化actor的正确模式,以便我可以查找ActorRef它所需的依赖项.我想避免使用ActorSelection,因为它是

  • 关于它指向的演员数量的模糊不清,以及
  • 有一些开销对许多人来说是不可取tell

看看Actor LifeCycle看起来几乎是同步的,直到消息循环开始,包括preStart等等,这让我觉得我只有两个选择之一:

使用签名为的工厂方法 Future[ActorRef]

构造actor的所有依赖项都是异步解析并通过via传递的Props.

这种方法的主要问题是你不能使用这个工厂在另一个actor内部构造一个actor,因为它有同样的问题,即它一直是乌龟,所有actor的层次结构及其异步连接.

使用becomestash转换演员

使用actorOf,立即生成一个actor ,ActorRef但它以初始化状态启动,执行依赖解析,stash同时传入消息,最后become执行运行状态和unstashAlling.

对于演员而言,这感觉更加惯用,即使我的所有依赖都将var取而代之val.

两者似乎都有很多开销,让我想知道我是否是最好的选择,或者我是否在文档中找不到合适的模式.

asynchronous scala akka

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

什么XMPP客户端目前支持PubSub(XEP-0060)?

什么最终用户客户端(不是库)现在向用户公开XMPP XEP-0060

xmpp

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

Java Threadpool与高请求场景中的新线程

我有一些旧的Java代码用于REST服务,它为每个传入的请求使用一个单独的线程.即主循环将在socket.accept()上循环并将套接字移交给Runnable,然后Runnable将启动其自己的后台线程并调用自身运行.直到最近,我才注意到这种情况令人钦佩,我注意到在高负荷下接受处理请求的滞后将变得不可接受.当我钦佩地说,我的意思是它在没有大量CPU使用的情况下每秒处理100-200个请求.当其他守护进程添加负载时性能只会降低,然后只有一次负载超过5.当机器处于高负载(5-8)时,其他进程的组合,从接受到处理的时间会变得非常高( 500ms到3000ms)而实际处理时间不到10ms.

已经习惯了.NET上的Threadpools,我认为线程创建是罪魁祸首,我想我会在java中应用相同的模式.现在我的Runnable使用ThreadPool.Executor执行(并且池使用和ArrayBlockingQueue).同样,它在大多数情况下都很有效,除非机器负载变高,然后从创建runnable到run()被调用的时间表现出大致相同的荒谬时间.但更糟糕的是,随着线程池逻辑的到位,系统负载几乎翻了一番(10-16).所以现在我得到了相同的延迟问题,负载加倍.

我怀疑是队列的锁争用比先前没有锁的新线程启动成本更差.任何人都可以分享他们的新线程与线程池的经验.如果我的怀疑是正确的,那么任何人都有另一种方法来处理没有锁争用的线程池?

我很想让整个系统单线程,因为我不知道我的线程有多大帮助,IO似乎不是一个问题,但我确实得到了一些长期存在的请求阻止一切.

谢谢,阿恩

更新:我切换到Executors.newFixedThreadPool(100);并保持相同的处理能力,加载几乎立即加倍并运行12小时显示负载始终保持2倍.我想在我的情况下,每个请求的新线程更便宜.

java sockets threadpool

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

将方法组转换为表达式

我试图弄清楚是否有一个简单的语法将方法组转换为表达式.使用lambdas似乎很容易,但它并没有转化为方法:

特定

public delegate int FuncIntInt(int x);
Run Code Online (Sandbox Code Playgroud)

以下所有内容均有效:

Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用实例方法,它会在表达式中分解:

Foo foo = new Foo();
Func<int, int> func2 = foo.AFuncIntInt;
FuncIntInt del2 = foo.AFuncIntInt;
Expression<Func<int, int>> funcExpr2 = foo.AFuncIntInt; // does not compile
Expression<FuncIntInt> delExpr2 = foo.AFuncIntInt;      //does not compile
Run Code Online (Sandbox Code Playgroud)

最后两个都无法使用"无法将方法组'AFuncIntInt'转换为非委托类型'System.Linq.Expressions.Expression <...>'进行编译.您是否打算调用该方法?"

那么在表达式中捕获方法组有一个很好的语法吗?

谢谢,阿恩

lambda expression method-group c#-3.0

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

有没有办法记住或物化IEnumerable?

当给出一个d你可能正在处理一个固定的序列,如列表或数组,AST将枚举一些外部数据源,甚至是一些现有集合上的AST.有没有办法安全地"实现"可枚举,以便像foreach,count等枚举操作每次都不执行AST?

我经常用来.ToArray()创建这个表示,但如果底层存储已经是一个列表或其他固定序列,那似乎就是浪费了复制.如果我能这样做会很好

var enumerable = someEnumerable.Materialize();

if(enumberable.Any() {
  foreach(var item in enumerable) {
    ...
  }
} else {
  ...
}
Run Code Online (Sandbox Code Playgroud)

不必担心,.Any()foreach尝试枚举序列两次,没有它不成功复制可枚举.

c# linq

8
推荐指数
2
解决办法
2736
查看次数

使用带密码保护的私钥和crypto.createSign

我正在尝试使用node.js加密API和密码保护的私钥来签名并验证消息,这样就可以获得以下信息:

> var sig = crypto.createSign('RSA-SHA256').update('psst').sign(pk,'hex');
Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)

并且节点在此时锁定.我似乎无法找到以编程方式传递密码的选项.

openssl cryptography node.js

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

有没有办法将当前项目中的包导入工作表

我喜欢工作表作为REPL的替代品,但我继续在工作表中实现函数,然后将它们复制回实际项目中.如何从当前项目导入包,以便我可以在工作表中调用这些函数?

scala scala-ide

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

连接Play过滤器以包装错误处理程序

我有一个Play过滤器,可以像这样执行一些post请求记录:

class LoggingFilter extends Filter with LazyLogging {
  override def apply(f: (RequestHeader) => Future[Result])(rh: RequestHeader): Future[Result] =
    f(rh) andThen {
      case Success(result) =>
        logger.info(s"[SUCCESS] ${result.header.status}")
      case Failure(e) =>
        val end = System.currentTimeMillis()
        val duration = end - start
        logger.error(s"[FAILURE] ${e.getMessage}}", e)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我也有onServerError处理程序将某些已知的异常映射到适当的Result.不幸的是,在错误处理程序将已知异常转换为结果之前调用过滤器,让我没有发送给调用者的STATUS代码和日志中处理异常的堆栈跟踪.

有没有办法定义过滤器,以便它包装请求发布错误处理程序调用?

scala playframework

8
推荐指数
0
解决办法
326
查看次数

有没有办法使用Task <T>作为未来值T的等待句柄?

我想使用一个方法返回一个方法返回一个值,以便在以后可用时返回一个值,这样调用者可以阻止使用Wait或附加一个continuation甚至等待它.我能想到的最好的是:

 public class Future<T> {
    private ManualResetEvent mre = new ManualResetEvent();
    private T value;
    public async Task<T> GetTask() {
        mre.WaitOne();
        return value;
    }
    public void Return(T value) {
        this.value = value;
        mre.Set();
    }
}
Run Code Online (Sandbox Code Playgroud)

主要问题是mre.WaitOne()是阻塞的,所以我假设每次调用GetTask()都会调度一个新线程来阻塞.有没有办法以异步方式等待WaitHandle,或者是否已经有一个帮助器来构建等效功能?

编辑:好的,是TaskCompletionSource我正在寻找什么,我只是在为自己的生活而努力?

c# task-parallel-library async-await async-ctp

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