我试着感受implicitScala 中参数的优势.(已编辑:使用匿名函数时的特殊情况.请查看此问题中的链接)
我尝试根据这篇文章进行简单的模拟.在哪里解释如何Action工作PlayFramework.这也涉及到这.
以下代码用于此目的:
object ImplicitArguments extends App {
implicit val intValue = 1 // this is exiting value to be passed implicitly to everyone who might use it
def fun(block: Int=>String): String = { // we do not use _implicit_ here !
block(2) // ?? how to avoid passing '2' but make use of that would be passed implicitly ?
}
// here we use _implicit_ keyword …Run Code Online (Sandbox Code Playgroud) 我有一个代码:
return Response.status(Status.BAD_REQUEST).entity(errors).build();
Run Code Online (Sandbox Code Playgroud)
其中:Response来自这个包裹:( javax.ws.rs.core球衣1.9.1);
在哪里errors是:
@XmlRootElement
public class UserInfoValidationErrors {
@XmlElement String username;
@XmlElement String email;
...
Run Code Online (Sandbox Code Playgroud)
然后我有这样的JSON结果: {"username":null,"email":"Email is not valid"}
如果有办法如何避免在null那里?
我想按照这个文档-scalatest用scala-mock嘲笑的功能并检查它是否已被称为
class AggregateSpec extends FlatSpec with Matchers with MockFactory {
val data = Seq("This", "is", "something", "I", "would", "like", "to", "know")
"combop function" should "BE called for par collection" in {
val mockCombop = mockFunction[Int, Int, Int]
val parData = data.par
val result: Int = parData.aggregate(0)(
seqop = (acc, next) => acc + next.length,
combop = mockCombop
)
result should === (31)
mockCombop.expects(*, *).atLeastOnce()
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
> [info] - should BE called for …Run Code Online (Sandbox Code Playgroud) 在playframework的文档,这里已被写入:
public static void loopWithoutBlocking() {
for(int i=0; i<=10; i++) {
Logger.info(i);
await("1s");
}
renderText("Loop finished");
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白它是如何工作的:
例如,当我们在第一个请求中调用方法i = 1,然后..解锁并等待..并且新请求转到方法然后它再次从i = 0开始?当第一次请求唤醒时,它会有i = 1或0或2?
它在这里没有使用任何有状态机制?比如在请求之间存储i ..
object Initialization {
def main(args: Array[String]): Unit = {
val list = Traversable(1,2,4,5)
//list.foreach(println)
println( list.getClass.getSimpleName )
}
}
Run Code Online (Sandbox Code Playgroud)
它打印$colon$colon,但我期待类似的东西List.这个不起眼的名字是什么意思?
我想知道,如果这个
alph = ['a'..'z']
Run Code Online (Sandbox Code Playgroud)
回报我
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
那怎么能返回法语字母呢?我可以以某种方式传递一个区域设置吗?
更新: 嗯)我知道英语和法语有相同的字母.但我的观点是,如果它们不一样,但以A开头,以Z结尾.很高兴有人类语言范围的支持.
至少有些语言带有本地化支持.
(只是尝试Haskell,读一本书)
在路线:
POST /login controllers.ApplicationCtrl.login()
Run Code Online (Sandbox Code Playgroud)
在控制器中:
def login = Action(parse.json) { implicit request => {
val email = (request.body \ "email").as[String]
val password = (request.body \ "password").as[String]
Ok(Json.toJson(
Map("status" -> "OK",
"message" -> "%s created".format(email))
))
}
Run Code Online (Sandbox Code Playgroud)
在测试中
"login" in new WithApplication{
val request = route( FakeRequest(
Helpers.POST,
controllers.routes.ApplicationCtrl.login.url,
FakeHeaders(Seq(CONTENT_TYPE -> Seq("application/json"))),
""" {"email" : "bob@mail.com", "password" : "secret"} """
)).get
status(request) must equalTo(OK)
}
Run Code Online (Sandbox Code Playgroud)
当我使用命令行测试时:
curl --header "Content-type: application/json" --request POST --data '{"email" : "bob@mail.com", "password" : "secret"}' http://localhost:9000/login
Run Code Online (Sandbox Code Playgroud)
它得到了理想的回应. …
试图了解的极限EventBus在Vert.x。
有Vert.x实例以集群模式运行,因此有多个Verticles在多个物理计算机上运行。假设我们有2台机器,每台机器有10个顶点。
因此,在数量上:Vert.x群集模式下有1个实例20个Verticles实例(每台计算机10个)2台计算机,1个Event Bus
每秒有1000 000个连接进入事件总线,并处理回垂直连接。
如果2台计算机不够用,我仍然可以获得100台计算机,但是:
据我了解,事件总线(EB)处于瓶颈吗?由于EB是一种“沟通管道”的,因为它是一个对许多人来说,我想所有的,它会开始收集噪音来给它的所有事件(地址- >服务,酒吧子等),再加上它在节点间运行,是否会涉及NET通讯开销?如何缩放EB?我应该在乎吗?(或者Hazelcast集群应该照顾好这一切?)
我是否应该考虑Vert.x在100台计算机上创建1个实例(在群集模式下具有10个顶点)创建N个群集?
问:提出一个简单的问题,Event Bus在扩展方面是否有限制,我是否应该考虑使用N总线创建基础结构以确保系统得到正确扩展?
(尚未完成我的测试。)
如何防止在 Google Cloud PubSub 中发生重复的 msg?
说,我有一个代码来处理它订阅的味精。
说,我有 2 个节点具有相同的服务,具有此代码。
一旦收到消息但尚未确认,另一个节点将收到相同的消息。这就是问题所在,我们有两个重复的 msgs。
void messageReceiver(PubsubMessage pubsubMessage, AckReplyConsumer ackReply) {
submitHandler.handle(toMessage(pubsubMessage))
.doOnSuccess((response) -> {
log.info("Acknowledging the successfully processed message id: {}, response {}", pubsubMessage.getMessageId(), response);
ackReply.ack(); // <---- acknowledged
})
.doOnError((e) -> {
log.error("Not acknowledging due to an exception", e);
ackReply.nack();
})
.doOnTerminate(span::finish)
.subscribe();
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的方法是什么?这是正常行为吗?
试图为静态网站创建一个谷歌存储桶。
provider "google" {
project = "myprojectname-123"
credentials = "${file("storage-admin.json")}"
region = "us-central1"
zone = "us-central1-c"
}
resource "google_storage_bucket" "STANDARD" {
name = "mywebsite.com"
storage_class = "STANDARD"
location = "US"
website {
main_page_suffix = "index.html"
not_found_page = "404.html"
}
}
Run Code Online (Sandbox Code Playgroud)
> 地形应用
googleapi:错误 403:您尝试创建的存储桶是另一个用户拥有的域名。,禁止
为 AWS找到了这个答案
问:是否可以从 Terraform for Google Cloud 创建以存储域为中心的存储/存储桶?