小编Joh*_*ith的帖子

负载平衡Web套接字

我有一个关于如何负载平衡Web套接字的问题.

我有一个支持Web套接字的服务器.浏览器连接到我的站点,每个浏览器打开一个Web套接字www.mydomain.com.这样,我的社交网络应用程序可以将消息推送到客户端.

传统上,只使用HTTP请求,我会通过在两个Web服务器前添加第二个服务器和负载均衡器来扩展.

使用Web套接字,连接必须直接与Web服务器,而不是负载平衡器,因为如果一台机器的物理限制为64k开放端口,并且客户端连接到负载均衡器,那么我无法支持超过64k并发用户.

那我该怎么办 -

  1. 让页面加载时客户端直接连接到Web服务器(而不是负载均衡器)?我是否只是从节点加载JavaScript,并且每次最初请求页面时,负载均衡器(或其他)会随机修改脚本的URL?

  2. 处理涟漪开始?当Web服务器关闭时,浏览器会注意到连接已关闭.我可以编写JavaScript代码来尝试重新打开连接,但该节点将会消失一段时间.所以我想我必须回到负载均衡器来查询下一个要使用的节点的地址?

  3. 我确实想知道负载均衡器在初始请求上发送重定向,以便浏览器最初请求www.mydomain.com并重定向到www34.mydomain.com.这很有效,直到节点出现故障 - 像Facebook这样的网站不这样做.他们是如何做到的呢?

load-balancing server-push websocket

91
推荐指数
2
解决办法
4万
查看次数

Scala默认参数为null

我有这样的方法:

def aMethod(param: String = "asdf") = {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果调用该方法如下,那么param将被赋予默认值"asdf":

aMethod() ...
Run Code Online (Sandbox Code Playgroud)

但我想要的是,如果调用该方法null,那么也将应用默认值:

aMethod(null)  //inside the method, I can use `param` and it has the value "asdf".
Run Code Online (Sandbox Code Playgroud)

什么是Scala最好的方法?我可以想到模式匹配或简单的if陈述.

scala

29
推荐指数
3
解决办法
3万
查看次数


scala类构造函数和抽象类型

我想使用抽象类型而不是类型参数.

在我的泛型类构造函数中,我想要一个泛型类型的参数,但代码不能编译:

class SomeOtherClass(val s: S){
    type S
}
Run Code Online (Sandbox Code Playgroud)

scala编译器错误"找不到:类型S"

如果我使用类型参数而不是抽象类型,那么它的工作原理如下:

class SomeClass[T](val t: T){
    //...
}
Run Code Online (Sandbox Code Playgroud)

如果我想在构造函数中使用泛型参数,scala是否强制我使用类型参数而不是抽象类型?

还有另一种方法吗?

generics constructor scala abstract-type type-parameter

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

JPA Criteria API和类型安全

我似乎错过了JPA的标准API及其类型安全性.请考虑以下代码:

@Entity
@Access(FIELD)
class User(

  @Id
  Long id;

  @Column(unique=true)
  String email;

  String password;
}
Run Code Online (Sandbox Code Playgroud)

元模型在这里:

@StaticMetamodel(User.class)
public static class User_ {
  public static volatile SingularAttribute<User, Long> id;
  public static volatile SingularAttribute<User, String> email;
  public static volatile SingularAttribute<User, String> password;
}
Run Code Online (Sandbox Code Playgroud)

然后使用Java EE教程中的页面构建一些代码来运用该类:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
Root<User> user = cq.from(User.class);
cq.select(user);
cq.where(cb.equal(user.get(User_.email), "john@google.com")); //this line is my problem

TypedQuery<User> q = em.createQuery(cq);
List<User> allUsers = q.getResultList();

assertEquals(1, allUsers.size());
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,如果我更改"where"子句以使用Integer而不是String("john@google.com"),我希望代码不能编译.然而它汇编得很好.

我认为标准API应该是类型安全的吗?使用标准JPQL,这几乎不比以下更安全.我的意思是,上面代码中元模型的目的是什么?我从中获得了一切.

User u = em.createQuery("select …
Run Code Online (Sandbox Code Playgroud)

java jpa type-safety criteria-api

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

Java < - > Scala Collection转换,Scala 2.10

看着代码JavaConversionsJavaConverters,我不确定这是"正确"的方式(与2.10)到Java和Scala集合之间的转换(任一方向).

似乎有很多@deprecated注释.

是否已发布Scala团队(Typesafe?)的明确答案?

谢谢,约翰

scala scala-collections

9
推荐指数
3
解决办法
3221
查看次数

在可变,协变类中Scala字段的下限类型绑定?

我想创建一个可变的协变类,所以我需要在setter方法中添加一个较低的类型绑定.但是我也想让setter方法设置一个字段,所以我猜这个字段需要绑定相同的类型?

class Thing[+F](initialValue: F) {

    private[this] var secondValue: Option[G >: F] = None

    def setSecondValue[G >: F](v: G) = {
        this.secondValue = Some(v)
     }
}
Run Code Online (Sandbox Code Playgroud)

该方法编译得很好.但是名为secondValue的字段根本不编译,错误消息如下:

    Multiple markers at this line
        - ']' expected but '>:' found.
        - not found: type G
Run Code Online (Sandbox Code Playgroud)

我需要做什么?

scala covariance

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

scala访问限定符有哪些保证?

我有一个这个代码的类:

package shop.orders.services.email

private[services] class EmailService {...}
Run Code Online (Sandbox Code Playgroud)

然后在另一个包中,我使用该类:

package shop.ui

import shop.orders.services.email.EmailService

class PaymentConfirmation extends WithFacesContext {

    var emailService: EmailService = null
Run Code Online (Sandbox Code Playgroud)

查看生成的字节码,没有任何访问修饰符的迹象,这是有道理的,因为Java不支持此类访问限制.那么如果我创建一个包含块1之类的代码的库,并尝试针对库编译块2会发生什么 - 编译器不会失败,因为信息丢失了.或者它是否包含在清单中?

我正在使用Scala 2.9.2.

scala scala-java-interop

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

从Java #map调用Scala Monads

我有一个a的实例,scala.collection.immutable.List我想调用map它上面的方法,但是来自Java.

我需要提供一个CanBuildFrom.

我注意到很多scala集合伴随对象都包含隐式CanBuildFrom实例,但我无法确定我需要使用哪一个.

这是我的Java代码:

    Function1<WeatherData, BigDecimal> mapper = new AbstractFunction1<WeatherData, BigDecimal>(){
        @Override
        public BigDecimal apply(WeatherData data) {
            return data.getTemps().reduce(adder).divide(new BigDecimal(data.getTemps().size()));
        }
    };

    scala.collection.immutable.List<WeatherData> data = ...

    data.map(mapper, ???);
Run Code Online (Sandbox Code Playgroud)

我应该作为CanBuildFrom传递什么(第二个参数?)

PS使用Scala 2.10-M5

scala scala-collections

7
推荐指数
2
解决办法
800
查看次数

Play&Akka和阻止线程进行数据库访问

我想调用一个包含大量数据的数据库,可能需要一段时间才能返回.

我打算在调用Akka.future(f)的过程中完成这项工作,并在完成工作时使用Async {}来呈现响应.

这样做是否有意义,或者我应该只在控制器中进行长数据库调用,而不将工作发送到Akka?

或者有没有办法进行非阻塞数据库访问?

scala nonblocking akka playframework-2.0

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