这个警告意味着什么:
应启用结构类型成员方法getMap的反射访问
该警告包括对scala文档的引用,但我不明白我的代码与解释的关系.(具体来说,解释提到了反思......我的代码如何使用反射?)
我有这个:(Scala 2.11.2)
object getMap {
implicit def fromOptionToConvertedVal[T](o:Option[T]) = new {
def getMap[R] (doWithSomeVal:(T) => R) = new {
def orElse(handleNone: => R) = o match {
case Some(value) => doWithSomeVal(value)
case None => handleNone
}
}
}
}
import getMap._
val i:Option[Int] = Some(5)
val x = i getMap (_*2) orElse 1
Run Code Online (Sandbox Code Playgroud)
这会在下面生成警告:
[warn] /Users/Greg/git/Favorites-Demo/src/main/scala/com/rs/server/ThriftServer.scala:34: reflective access of structural type member method getMap should be enabled
[warn] by making the implicit value scala.language.reflectiveCalls visible.
[warn] This …Run Code Online (Sandbox Code Playgroud) 我正在运行Mac原生Docker(没有虚拟机/码头机).
我有一个巨大的形象,其中有很多基础设施(Postgres等).我已经运行了清理脚本来摆脱许多残骸 - 未使用的图像等等.
当我运行我的图像时,我收到如下错误:
could not create directory "/var/lib/postgresql/data/pg_xlog": No space left on device
Run Code Online (Sandbox Code Playgroud)
在我的主机上Mac/var占用60%的可用空间,通常我的磁盘有很多存储空间.
这是一些Docker配置,我需要提高它给它更多的资源?
来自mountdocker内部的相关行:
none on / type aufs (rw,relatime,si=5b19fc7476f7db86,dio,dirperm1)
/dev/vda1 on /data type ext4 (rw,relatime,data=ordered)
/dev/vda1 on /etc/resolv.conf type ext4 (rw,relatime,data=ordered)
/dev/vda1 on /etc/hostname type ext4 (rw,relatime,data=ordered)
/dev/vda1 on /etc/hosts type ext4 (rw,relatime,data=ordered)
/dev/vda1 on /var/lib/postgresql/data type ext4 (rw,relatime,data=ordered)
Run Code Online (Sandbox Code Playgroud)
这是df:
[11:14]
Filesystem 1K-blocks Used Available Use% Mounted on
none 202054928 4333016 187269304 3% /
tmpfs 1022788 0 1022788 0% /dev
tmpfs …Run Code Online (Sandbox Code Playgroud) 我有一个基于actor的系统,它执行定期的,CPU密集的数据摄取以及RESTful端点.我正在使用Akka演员来发信号/控制摄取过程的各个阶段,而Spray(当然是建立在Akka上)来为我的休息端点提供服务.
我的问题是这样的:当摄取开始时它消耗了大部分CPU,使RESTful端点挨饿直到完成.
降低摄取优先级的最佳方法是什么?现在,摄取和Spray模块共享相同的ActorSystem,但如果这有助于解决方案,它们可以分开.
我开始使用基本映像errordeveloper/oracle-jdk.此Dockerfile显示在此处供参考:
FROM progrium/busybox
MAINTAINER Ilya Dmitrichenko <errordeveloper@gmail.com>
RUN opkg-install curl ca-certificates
ENV JAVA_HOME /usr/jdk1.8.0_31
RUN curl \
--silent \
--location \
--retry 3 \
--cacert /etc/ssl/certs/GeoTrust_Global_CA.crt \
--header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-x64.tar.gz" \
| gunzip \
| tar x -C /usr/ \
&& ln -s $JAVA_HOME /usr/java \
&& rm -rf $JAVA_HOME/src.zip $JAVA_HOME/javafx-src.zip $JAVA_HOME/man
ENV PATH ${PATH}:${JAVA_HOME}/bin
ENTRYPOINT [ "java" ]
CMD [ "-version" ]
Run Code Online (Sandbox Code Playgroud)
我想把它移到Alpine Linux,所以做了以下更改:
FROM alpine
MAINTAINER Ilya Dmitrichenko <errordeveloper@gmail.com>
RUN apk --update upgrade && apk add …Run Code Online (Sandbox Code Playgroud) 我正在阅读Kafka文档并注意到以下行:
但请注意,消费者组中的消费者实例不能超过分区.
嗯.我该如何自动缩放?
例如,假设我有一个具有hi/lo优先级的消息传递系统,因此我为hi和lo优先级消息创建了消息和分区的主题.
如果这是RabbitMQ,我将为每个分区分配一个可自动扩展的消费者组,如下所示:
如果我理解Kafka模型,我不能在一个消费者群体中为每个分区提供> 1个消费者,因此该图片对Kafka不起作用,对吧?
好的,那么> 1个这样的消费群体怎么样:
这取决于Kafka的限制,但是......如果我理解这是如何工作的,那么两个消费者群体都会从一个分区(例如msg.hi)中提取自己的偏移,这样就不会知道另一个 - 意味着消息可能会被传递两次!
如何实现我在Rabbit设计中使用Kafka的能力,并仍然保持行为的"队列"(我不想发送消息两次)?我错过了什么?
我正在将我的项目从RabbitMQ转移到Kafka,并试图了解reactive-kafka的速度有多快.
我现在能够向Rabbit写入大约12K /秒的简单消息/秒,并且在读取时通过"hello world"流以大约4K /秒的速度从队列中轻松拉动.
我用反应流移动到卡夫卡,我可以写1M或秒 - 巨大的胜利!但是在相同的环境中,我只能使用此处示例中的方法在读取流中以大约2K /秒的速度流动:DummyConsumer.scala
有没有人知道如何将读取回到与Rabbit方法相当的水平?
有趣的是:我只是"直接"尝试(通过原始Java驱动程序访问Kafka与反应卡夫卡),并获得大约22K读取,所以这非常好.它关于我如何使用被动反应卡夫卡正在减慢事情的速度.
好的......我正在寻找这个东西.接下来我尝试了原始的Akka流"hello world":
now = System.currentTimeMillis()
count = 0
val in2 = Source(1 to num)
val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit b =>
import GraphDSL.Implicits._
val show = Flow[Int].map{ i => count +=1; if(count==num) println(s"time 2 ($count): "+(System.currentTimeMillis() - now)); i }
in2 ~> show ~> Sink.ignore
ClosedShape
})
g.run()
Thread.sleep(2000)
Run Code Online (Sandbox Code Playgroud)
这个速度非常快,为742K /秒!所以Kafka raw非常快,Akka流很快.因此,罪魁祸首就在于如何构建反应性kafka(或者更有可能)我试图如何使用它.考虑到摩擦,我应该期待看到接近原始卡夫卡22K /秒的东西.嗯.
我正在尝试使用scalatest测试这样的应用程序:
object Main extends App {
val name = "Greg"
}
class JunkTests extends FunSpec with MustMatchers {
describe("Junk Tests") {
it("Junk-1 -- Must do stuff") {
println("Name: "+Main.name)
// some test here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的名字输出始终为null.如何让我的主要对象在测试期间使用它的设施?在实际使用中我有一个应用程序,它是一个Http服务器,我想发送它的消息,但现在它从未初始化,所以服务器永远不会启动.这个简单的例子表明Main永远不会被初始化.
我试图在Scala反射中看到一个注释,到目前为止还没有骰子.我错过了什么?
我的注释:( Java)
@Target({ElementType.PARAMETER}) // Also tried ElementType.CONSTRUCTOR
@Retention(RetentionPolicy.RUNTIME)
public @interface MongoKey {
String info = "";
}
Run Code Online (Sandbox Code Playgroud)
尝试使用Scala反射访问它的部分:
case class One(
@MongoKey name : String,
stuff : List[String]
)
val targetObj = One("FOO", List("a","b"))
val targetType = typeOf[One]
// Given an object (case class) the Type of the case class, and a field name,
// retrieve the typed field object from the case class.
def unpack[T](target: T, t: Type, name: String): (Any, Type) = {
val im = cm.reflect(target)(ClassTag(target.getClass)) …Run Code Online (Sandbox Code Playgroud) 我只是在Mongo(prod环境)中设置了一个副本集.我现在得到了很多例外,如下(剪辑).
我进入mongo并在我的主mongo节点上运行了一个serverStatus命令,并且只有大约300个连接,所以它几乎无法正常工作.
以下是我的服务器代码中的连接选项设置:
auto_connect_retry = false
connections_per_host = 10
threads_multiplier = 10
max_wait_time = 120000
connect_timeout = 10000
socket_timeout = 0
Run Code Online (Sandbox Code Playgroud)
我有错误的配置吗?
Sep 9, 2013 8:31:26 PM com.mongodb.DBPortPool gotError
WARNING: emptying DBPortPool to /10.0.8.10:27017 b/c of error
java.net.SocketException: Connection timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:146)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at org.bson.io.Bits.readFully(Bits.java:46)
at org.bson.io.Bits.readFully(Bits.java:33)
at org.bson.io.Bits.readFully(Bits.java:28)
at com.mongodb.Response.<init>(Response.java:40)
at com.mongodb.DBPort.go(DBPort.java:142)
at com.mongodb.DBPort.call(DBPort.java:92)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:244)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
at com.mongodb.DBCollection.findOne(DBCollection.java:347)
at com.mongodb.DBCollection.findOne(DBCollection.java:332)
at com.mongodb.casbah.MongoCollectionBase$class.findOneByID(MongoCollection.scala:232)
at com.mongodb.casbah.MongoCollection.findOneByID(MongoCollection.scala:866) …Run Code Online (Sandbox Code Playgroud) 假设我有 2 个分支,一个功能分支和一个开发分支。
功能分支上通常没有 SLA,这意味着我可以整天将损坏的代码推送到它,并且不应触发 CI 构建。
然后我打开一个 PR 进行开发。我在 pull_request: created 上触发 CI 构建操作。假设这个构建失败了。默认情况下我无法合并 PR,这是正确的。
现在我想将编辑推送到功能分支以更新 PR。我希望这些推送触发 CI 构建(因为我们现在正在一个开放的 PR 中工作)。在这些 push-CI 通过之前,我不想让 PR 继续/合并。
我如何在 GitHub Actions 中做到这一点?我试过了,on pull_request: edited但这对我不起作用。
我正在寻找功能等价物:
on:
push:
if: inside_open_pr
Run Code Online (Sandbox Code Playgroud) scala ×6
akka ×2
apache-kafka ×2
docker ×2
alpine-linux ×1
annotations ×1
busybox ×1
casbah ×1
certificate ×1
github ×1
mongodb ×1
reflection ×1
scalatest ×1
spray ×1