小编dat*_*ser的帖子

多租户如何在App Engine中使用Objectify工作?

如何在app引擎中使用名称空间的多租户工作?我的应用程序有多个用户,每个用户有点像多租户中的租户.他们的URL以domain/customer/companyToken#pageName?param1¶m2开头.因此,如果我想为每个客户应用带有命名空间的多租户,那么从Google文档中,您需要为每个客户分配NamespaceManager的唯一ID,如下所示:

NamespaceManager.set(request.getServerName());
Run Code Online (Sandbox Code Playgroud)

现在我有几个问题.

  1. App Engine的命名空间多租户如何真正起作用?

  2. 它如何改变我们一般访问数据的方式?

  3. 它如何改变我们使用Objectify访问数据的方式?

  4. 首先,我对应用程序的上述应用的理解是,在检索数据时,所有与上述客户(租户)相关的数据都聚集在同一名称空间中,那么我们如何使用Objectify访问数据?目前公司obj作为与客户相关的所有obj的父母.(所以我的申请?)

非常感谢你提前.

java google-app-engine multi-tenant objectify

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

API 应该返回 CompletionStage 或 CompletableFuture

构建 API 时,向接口编码是一种很好的做法,因此返回 CompletionStage 似乎是最好的方法。然而我意识到我总是在获得 CompletionStage 后调用 .toCompletableFuture 。在这种情况下,推荐的方法是什么?

api java-8 concurrent.futures completable-future

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

BigQuery:使用结构创建表语句

使用结构体字段创建表语句的语法是什么?下面好像不行。我想创建一个记录字段,例如id.level1.level2.level3.

CREATE TABLE mayumi_load_test.struct_cre(
STRUCT<STRUCT<STRUCT<STRUCT<id INT64> level1> level2>level3,
  t_ TIMESTAMP
)
PARTITION BY Date(t_)
Run Code Online (Sandbox Code Playgroud)

google-bigquery google-cloud-platform

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

使用Cucumber和Capybara传递多个参数

嗨,我需要帮助Cucumber到Capybara正则表达式匹配.

所以我想在下面有一个Cucumber步骤:

I should see "10:00, 11:00, 12:00" under "div1"
Run Code Online (Sandbox Code Playgroud)

我想通过"10:00,11:00.12:00".在这一步,我想做一些事情:

Then /^I should see "([^\"]*)"+ under "([^\"]*)"$/ do | slots, selector_name |
     slots.each do |value|
     end
end
Run Code Online (Sandbox Code Playgroud)

所以基本上我想传入逗号分隔的字符串列表,并且在步骤定义中我想将此列表视为字符串数组.这可能吗?

谢谢!

ruby ui-testing cucumber capybara

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

GWT:弹出窗口阻止程序阻止RPC后打开窗口

嗨,我有以下代码:

    button.addClickHandler( new ClickHandler( ) {
        @Override   
        public void onClick( ClickEvent event ) {    
             Call 1 --> Window.open( publicBookingUrl, "_blank", null );                
            dispatcher.execute( new HasServicesAction(true), 
                    new ActionCallback<SomeResult>( ){       
                @Override 
                public void onSuccess( SomeResult result ) {
             Call 2 --> Window.open( publicBookingUrl, "_blank", null );
                } 
            });  
        }        
    });
Run Code Online (Sandbox Code Playgroud)

在Call 1中,弹出窗口阻止程序不会阻止弹出窗口打开.它在新选项卡或新窗口中成功打开一个窗口.在Call2中,弹出窗口阻止程序会阻止弹出窗口,因此用户必须明确启用弹出窗口.我发现了一篇帖子解释了这背后的原因:https://groups.google.com/forum/? fromgroups =#!topic / google- web-totokit/V0s7goJxuhc不幸的是,这个解决方案对我不起作用.

有谁知道为什么会这样?我们怎么能解决这个问题呢?

提前致谢.

javascript gwt window

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

Play Framework:thread-pool-executor vs fork-join-executor

假设我们的控制器中有一个动作.在每个请求中,许多用户都会调用performLogin.

def performLogin( ) = {
    Async {
        // API call to the datasource1
        val id = databaseService1.getIdForUser();

        // API call to another data source different from above
        // This process depends on id returned by the call above
        val user = databaseService2.getUserGivenId(id);

        // Very CPU intensive task 
        val token = performProcess(user)

        // Very CPU intensive calculations
        val hash = encrypt(user)

        Future.successful(hash)
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道fork-join-executor的作用.基本上,从接收请求的主线程,它跨越多个工作线程,这些工作线程将工作分成几个块.最终主线程将加入这些结果并从函数返回.

另一方面,如果我选择了线程池执行器,我的理解是从线程池中选择一个线程,这个选定的线程将完成工作,然后返回线程池来听更多的工作去做.所以这里没有发生任务的细分.

在上面的代码中,fork-join执行程序的并行性在我看来是不可能的.每次调用不同的方法/函数都需要上一步的操作.如果我选择fork-join执行器来进行线程化,那对我有什么好处呢?fork-join与线程池执行器之间的上述代码执行有何不同.

谢谢

multithreading scala threadpool actor playframework-2.0

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

将Scala单位转换为Java Void

我有一个Java类,它采用Function[String, Void],类似于Consumer功能接口。我从Scala代码中调用此Java函数。正如您在下面看到的,我function: => Unit在Scala方面接受,因为它等效于void。当我尝试应用此函数代替Void返回类型时,会发生类型不匹配的情况。显式强制转换.asInstanceOf[Void]也引发了异常。我们如何转换=> Unit为=> Void?

// Java 
class AcceptFunction {
   public void temp(Function<String, Void> f) {
      f.apply("Hello");
   }
}

// Scala
def temp(f: String => Unit): Unit = {
   new AcceptFunction().temp(new Function[String, Void]() {
   override def apply(t: String): Void = f(t) // <===== error expecting Void instead of Unit
   })
}
Run Code Online (Sandbox Code Playgroud)

java scala type-conversion typesafe

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

如何使用 Selenium webdriver 在 Capybara 中打开一个新窗口?

我找到了一个代码:page.driver.browser.switch_to.window,它显然正在切换到已经打开的窗口。我们如何使用 page.driver.browser 对象打开一个新窗口?

谢谢

ruby selenium capybara

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

Play 框架:异步与同步性能

我有以下代码:

  def sync = Action {
      val t0 = System.nanoTime()
      Thread.sleep(100)
      val t1 = System.nanoTime()
      Ok("Elapsed time: " + (t1 - t0) / 1000000.0 + "ms") 
  }

  def async = Action {
    val t0 = System.nanoTime()
    Async { 
          Future{
            Thread.sleep(100)
            val t1 = System.nanoTime()
            Ok("Elapsed time: " + (t1 - t0) / 1000000.0 + "ms") 
            }   
    }
  }
Run Code Online (Sandbox Code Playgroud)

上述代码的区别在于,sync 将在接收请求的线程上休眠,而 async 将在单独的线程上休眠,以便负责接收请求的线程可以继续接收请求而不会阻塞。当我分析线程时,我发现为异步请求创建的线程数量如预期突然增加。然而,上述两种方法(4000 个并发连接 20 秒斜坡)会产生相同的吞吐量和延迟。我希望异步能够表现得更好。为什么会这样呢?

multithreading asynchronous scala playframework-2.0

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

Java的日期如何工作?

嗨,我有以下代码:

public Date convertFromGMTToLocal(Date date) {
     return new Date(date.getTimezoneOffset() + newOffset*60*1000);  
}

public Date convertFromLocalToGMT(Date date) {
    return new Date(date.getTime() - date.getTimezoneOffset()*60*1000);
}
Run Code Online (Sandbox Code Playgroud)

convertFromLocalToGMT应该剥离时区信息,convertFromGMTToLocal应该返回时区信息.我知道java.util.Date表示epoch中的时间并且总是在GMT中,但是当显示日期时,它默认为JVM的默认时区.

我得到的解释是,如果您的时区是CST并且是CST上午10:00您正在使用convertFromLocalToGMT将时区更改为GMT,那么您实际上是要添加偏移量以获得GMT,以便获得4:00 AM CST(偏移量为-6)并且使用convertFromGMTToLocal会将此Date对象转换回上午10:00,而不管您的时区(最令人困惑的部分如何?).上面的工作如何?我很迷惑...

谢谢.

java date

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