小编Oli*_*ler的帖子

即使未指定@Load,Objectify也会在Ref <?>后面加载对象

我有一个引用用户对象的帐户对象.

@Cache
@Entity
public final class Account {

    @Id Long id;
    @Index private Ref<User> user;

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public User getUser() {
        return user.get();
    }
    public void setUser(User user) {
        this.user = Ref.create(user);
    }

}
Run Code Online (Sandbox Code Playgroud)

我按照此处的建议隐藏了参考资料:http://code.google.com/p/objectify-appengine/wiki/Entities - 请注意参考资料没有 @Load注释.

当我从Android客户端调用我的Google Cloud Endpoint时,看起来Objectify会向嵌入式用户提供帐户对象,即使未指定@Load也是如此.

@ApiMethod(name = "account.get")
public Account getAccount(
        @Named("id") final Long id
) {
    return ofy().load().type(Account.class).id(id).now();
}
Run Code Online (Sandbox Code Playgroud)

当我使用Apis Explorer直接查询帐户时,我同时获得了嵌入用户的帐户:

200 OK
{ 
"id": …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine objectify google-cloud-endpoints

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

哪里可以在App Engine上安全保存p12文件?

在App Engine上,我需要一个p12文件来创建签名的URL:

https://developers.google.com/storage/docs/accesscontrol#Signing-Strings

Google没有说明保留此文件的最佳做法.

我可以使用WEB-INF目录存储文件吗?然后它将成为源代码的一部分并与密码保持在一起以打开它.

这里的最佳做法是什么?还是其他方法?

-

性能怎么样?一遍又一遍地加载文件是否有效?App Engine是否自动在调用之间缓存文件(在同一实例上)?或者我需要使用servlet加载文件一次,然后以某种方式将其保存在静态变量中?有没有更好的方法来实现这一点,例如将文件存储在数据存储区记录中,然后将其保存在memcache中?这种方法有多安全?可能不好,对吧?

security google-app-engine signing

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

如何使用替代侦听端口配置 coturn?

我们尝试coturn使用替代侦听端口进行配置,但它不起作用。我想澄清一下我们是否在做正确的事情,以及它是否因为/me stupid服务器或服务器而无法正常工作。

我们正在使用turns(安全)。我希望服务器侦听端口 5349 和 443,如果 443 具有阻止流量的 Web 代理,则默认端口和 443 以防其他一切都被阻止。我打算给客户端 2 个冗余服务器,每个端口一个。

  • 这是个好主意还是您认为没有必要?

当我配置coturn

tls-listening-port=5349
alt-tls-listening-port=443
Run Code Online (Sandbox Code Playgroud)

只有 5349 件作品。当我更改规格顺序时,443 有效。

好像alt-tls-listening-port一点效果都没有。

我知道在使用 UDP 时,端口默认是连续的,但评论说

# Alternative listening port for TLS and DTLS protocols.
# Default (or zero) value means "TLS listening port plus one".
Run Code Online (Sandbox Code Playgroud)

和非 TLS 部分

# This is needed for RFC 5780 support
# (STUN extension specs, NAT behavior discovery). The TURN Server 
# supports RFC …
Run Code Online (Sandbox Code Playgroud)

stun webrtc turn coturn

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

在对象中查询字段不为空的所有记录的有效方法

我想有效地查询索引字段以检索索引字段不为空(存在于索引中)的所有记录.要查询的字段包含Ref<T>另一个实体,如果这是相关的.

我能做的是不等式搜索,比如.filter/.filterKey("fieldname >=", "a"),a是我想要抓取的最小的ASCII.

但这有效吗?或者我可以以某种方式进行相等搜索,它会返回索引中存在的所有记录吗?

-

这就是我的数据的样子:我想过滤"overlay"列有一个键的所有记录,并省略那些没有设置字段的记录.我想尽可能使用相等过滤器,所以我不需要复合索引(因为我同时在其他字段上过滤).

数据快照

-

我可以用它来测试 != null

.filter("user >", "\uFFFD");
Run Code Online (Sandbox Code Playgroud)

这是为了测试 == null

.filter("user <", "\uFFFD");
Run Code Online (Sandbox Code Playgroud)

我猜这不是它应该做的方式.有没有办法用平等而不是不平等来解决这个问题?

google-app-engine objectify

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

Android上缺少HttpClientBuilder?

Apache已弃用DefaultHttpClient,但似乎Android并非如此,另请参阅此处不推荐使用Java HttpClient - 它有多难?

输入

org.apache.httpcomponents:httpclient:4.3.5
Run Code Online (Sandbox Code Playgroud)

代替

new DefaultHttpClient(); 
Run Code Online (Sandbox Code Playgroud)

我现在用

HttpClient httpClient = HttpClientBuilder.create().build();
Run Code Online (Sandbox Code Playgroud)

创建一个http客户端.这在Java项目中工作正常,但在Android项目中使用时,缺少以下导入

import org.apache.http.impl.client.HttpClientBuilder;
Run Code Online (Sandbox Code Playgroud)

HttpClient sendClient =  new DefaultHttpClient();
Run Code Online (Sandbox Code Playgroud)

未在Android中标记为已弃用且编译良好.

我不想再次添加Apache httpclient(如果我这样做,Android Studio无论如何都会排除它).

Android文档在这里说http://developer.android.com/reference/android/net/http/AndroidHttpClient.html#newInstance(java.lang.String)来使用

AndroidHttpClient.new Instance(string)
Run Code Online (Sandbox Code Playgroud)

"获得具有合理默认值的http客户端".

有谁知道在Android上创建HttpClient的正确方法是什么,以及userAgent字符串是什么!?

java android apache-httpclient-4.x androidhttpclient

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

如何在 socket.io 客户端上使用回调?

我想回拨服务器以确认我的客户端已接到电话。在相反的方向,这是大量记录并且工作正常,但是我如何从客户端确认?

注意:我在 Android 上使用 socket-io-java-client https://github.com/socketio/socket.io-client-java,而不是 JavaScript,但这应该无关紧要。好吧,也许确实如此。

    socket.on("onMessage", new Emitter.Listener() {
                @Override public void call(Object... args) {
                    // I have the args here and the last argument is a callback,
                    // but what do I need to do to callback the server using that arg?
                }
            })
Run Code Online (Sandbox Code Playgroud)

在 Swift 中它看起来像这样,但我无法弄清楚如何使用上述库在 Java 中执行此操作。

    socket.on("onMessage") { data, ack in
        ack?()
    }
Run Code Online (Sandbox Code Playgroud)

有没有人这样做过或知道如何实现这一目标?

java android socket.io socket.io-java-client

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

为什么sdp中的m=行包含端口?这对候选人来说不是多余的吗?

根据 RFC 4566 https://www.rfc-editor.org/rfc/rfc4566#page-22,sdp 中的 m= 行包含一个端口:

m=audio 49170 RTP/AVP 0

ICE候选港口不是已经确定了吗?这些还包含端口:

a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host

正如 RFC 5245 https://www.rfc-editor.org/rfc/rfc5245#page-9所述,

“ICE 是提供/应答模型的扩展,其工作原理是在 SDP 提供和应答中包含多个 IP 地址和端口,然后通过点对点连接检查来测试连接性。”

这是否意味着 m= 行中指定的端口已过时?

当使用 libjingle 创建新的 sdp Offer 时,它显示 IP 地址0.0.0.0以及端口 9(这是“丢弃”端口)。所以它显然没有看到 m= 行中的相关端口:

m=audio 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 106 105 13 127 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

sdp

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

等于上课不可能吗?

在Java中,我有一个带签名的函数,其中传入了一个Type:

public Object convert(Object object, Type type) {
}
Run Code Online (Sandbox Code Playgroud)

在函数内部,我想确定Type是否为String,但是当我这样做时

String.class.equals(type.getClass())
Run Code Online (Sandbox Code Playgroud)

Android Studio告诉我'equals()' between objects of inconvertible types 'Class<capture of ? extends Type>' and 'Class<String>'.

我究竟做错了什么?

java equals

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

是增加工作线程的数量还是在 Netty 中创建自己的线程池更好?

假设我们的 Netty 服务器 (4.1.32) 响应 HTTP 调用。我们进一步假设它必须在回答传入请求之前执行某些阻塞操作,例如,它必须执行传出调用(此处使用不同的库)来加载外部数据。

具有持久连接的NioEventLoopGroup的线程数讨论

如果我的 messageReceived 方法阻塞或需要很长时间才能完成,会发生什么情况?

@Maksym 回应

您应该避免在处理程序中使用线程阻塞操作。

很明显,工作线程的数量是有限的。因此,有效地阻塞所有可用的工作线程意味着 Netty 将对任何进一步的请求进行排队,直到工作线程变得可用。

另一方面,按照建议将阻塞操作移至我自己的线程上,将对线程切换产生性能影响,而反过来,可用硬件将阻塞的是我自己的线程池。恕我直言,使用我自己的线程池只会增加另一层复杂性,但不会提高性能。相反,我宁愿增加工作线程的最大数量,并让 Netty 完成对请求进行排队的工作。

这里建议的做法是什么?

java multithreading netty

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

使用Android上的RxJava以定期间隔发出UI中的绘图对象

我在Observable中解析SVG文件.在解析XML时,点作为"Path"对象发出.解析发生在一个单独的线程中,我想逐点绘制SVG文件.换句话说,我想逐个向UI发射点,例如每50毫秒一个.

private void drawPath(final String chars) {

    Observable.create(new Observable.OnSubscribe<Path>() {

        @Override public void call(Subscriber<? super Path> subscriber) {
            try {

                while ([omitted]) {

                    // omitted: a lot of processing
                    // an XML path from an SVG file is parsed into an Android path to be drawn on a canvas
                    // this happens point by point

                    subscriber.onNext(path); // emit path point by point as the XML is processed
                }
            }
                subscriber.onCompleted();
            } catch (Exception e) {
                subscriber.onError(e);
            }
        }

    }).buffer(50, TimeUnit.MILLISECONDS, …
Run Code Online (Sandbox Code Playgroud)

android rx-java

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