我有一个问题 - 在索引中查找键值对 - 比方说cassandra或postgres - 通常在O(logn)附近
来源:https://github.com/tinkerpop/blueprints/wiki/Graph-Indices.
在redis文档中,它指出运行时复杂性为O(1).
资料来源:http ://redis.io/commands/get http://redis.io/commands/hget
获取多个键的值只是线性O(m),其中m是检索到的键数 http://redis.io/commands/hmget
这怎么可能?
我正在看scala反射API,我有很多例外.
Doc参考:http: //docs.scala-lang.org/overviews/reflection/environment-universes-mirrors.html
如何从通用中获取typetag?
def getChildSettings[T: ru.TypeTag](path: String, settingsParameterObject: T) = {
import scala.reflect.runtime.{ currentMirror => m }
val m = ru.runtimeMirror(getClass.getClassLoader)
val classC = ru.typeOf[T].typeSymbol.asClass
}
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
No TypeTag available for ParameterObject.type
Run Code Online (Sandbox Code Playgroud)
即使是一个非常简单的例子似乎也不起作用(在repl中编辑是的)
import scala.reflect.runtime.universe._
import scala.reflect.runtime.currentMirror
import scala.reflect.runtime.{universe => ru}
def getTypeTag[T: ru.TypeTag](obj: T) = ru.typeTag[T]
case class ParameterObject(stringType: String, optionType: Option[String])
getTypeTag(ParameterObject)
Run Code Online (Sandbox Code Playgroud)
我猜它是关于我如何调用该方法的.
请参阅 https://issues.scala-lang.org/browse/SI-5205 和 https://github.com/scala/scala-dist/pull/20
从scala中弃用了八进制转义值前导0,我没有看到惯用的替代方法.
你现在如何处理scala 2.10中的octals?
编辑 - unix权限是八进制
这不起作用 - 有什么方法可以让我的代码保持一致,并以某种方式反映classOf ClassTag?
class Foo[T : reflect.ClassTag] { def foo = classOf[T] }
<console>:7: error: class type required but T found
class Foo[T : reflect.ClassTag] { def foo = classOf[T] }
Run Code Online (Sandbox Code Playgroud)
看来这应该工作,但唉:(
我们在负载测试和扩展akka应用程序方面取得了一些进展,但我们看到scala.concurrent.forkjoin.ForkJoinPool.scan()在visualvm中成为第二大热点,约占自我时间的20%.自我时间(CPU)列仅表示其中的一小部分(小于自身时间列值的1%).
我怀疑这意味着阻塞或上下文切换可能存在问题,但我不太确定 - 任何人都可以提供洞察力吗?如果它是上下文切换我猜测调度调度程序吞吐量到更高的数量可能会增加我们的收益,否则如果它是由阻塞引起的,我们需要更多地读取代码.
任何见解都非常感激.
在repl中,这引发了异常,我不知道为什么.我真的很想了解这一点.
scala> (1 until 10000).foreach("%s%s".format("asdf", "sdff"))
java.lang.StringIndexOutOfBoundsException: String index out of range: 8
at java.lang.String.charAt(String.java:686)
at scala.collection.immutable.StringLike$class.apply(StringLike.scala:54)
at scala.collection.immutable.WrappedString.apply(WrappedString.scala:32)
at scala.collection.immutable.WrappedString.apply(WrappedString.scala:32)
at scala.collection.immutable.Range.foreach(Range.scala:75)
Run Code Online (Sandbox Code Playgroud) 我没有看到使用异步结果处理异常的明显方法.例如,如果我想重试异步操作.我希望这样的东西,但handleAsync不会做你认为它做的事情 - 它在异步运行另一个线程上的回调.在这里返回CompletionStage是不正确的.当天的危害问题:thenApply就是thenCompose因为exceptionally是为了什么?
CompletionStage<String> cf = askPong("cause error").handleAsync((x, t) -> {
if (t != null) {
return askPong("Ping");
} else {
return x;
}
});
Run Code Online (Sandbox Code Playgroud)
askPong问演员的地方:
public CompletionStage<String> askPong(String message){
Future sFuture = ask(actorRef, message, 1000);
final CompletionStage<String> cs = toJava(sFuture);
return cs;
}
Run Code Online (Sandbox Code Playgroud) 大多数ElasticSearch文档讨论了通过REST API处理索引 - 有什么理由我不能简单地从磁盘移动或删除索引文件夹?
我试图了解操作系统如何处理不同模型中的上下文切换,以更好地理解为什么在请求数量达到峰值的情况下NIO性能更好.除了线程数量可能有限之外,我很好奇如何在大量请求中执行阻塞操作会影响资源利用率.
在每个线程模型的一个请求中,比如基于servlet 2.5的Web应用程序,如果499个线程正在等待数据库IO并且只有一个线程需要工作,则OS上下文在所有这500个线程之间切换,试图找到需要工作的线程?要执行上下文切换,操作系统必须存储当前线程的状态,并恢复下一个线程的状态.执行此操作后,操作系统将发现它不需要任何CPU时间,并将保持上下文切换,直到找到需要工作的线程.此外,在服务器利用率方面,这看起来如何?CPU是否很低,因为它主要受到交换上下文而不是实际计算任何内容的IO成本的约束?
在此先感谢您的帮助.如果你能指出我的书籍,教科书等方向,我也会非常感激.
multithreading nonblocking context-switch threadpool context-switching
scala ×5
reflection ×2
akka ×1
backup ×1
cpu-usage ×1
disk ×1
fork-join ×1
forkjoinpool ×1
idiomatic ×1
java ×1
java-8 ×1
nonblocking ×1
octal ×1
purge ×1
redis ×1
scala-2.10 ×1
scalability ×1
threadpool ×1
types ×1