小编alo*_*loo的帖子

如何读取和复制HTTP servlet响应输出流内容以进行日志记录

我在我的java webserver(实际上是appengine)中创建了一个过滤器,用于记录传入请求的参数.我还想记录我的网络服务器写的结果响应.虽然我可以访问响应对象,但我不确定如何从中获取实际的字符串/内容响应.

有任何想法吗?

java logging servlets servlet-filters

45
推荐指数
4
解决办法
5万
查看次数

如何提高Field.set的性能(使用MethodHandles进行perhap)?

我正在写一些调用的代码Field.setField.get数千次.显然,由于反射,这是非常缓慢的.

我想看看我是否可以MethodHandle在Java7中提高性能.到目前为止,这就是我所拥有的:

而不是field.set(pojo, value),我正在做:

private static final Map<Field, MethodHandle> setHandles = new HashMap<>();

MethodHandle mh = setHandles.get(field);
if (mh == null) {
    mh = lookup.unreflectSetter(field);
    setHandles.put(field, mh);
}
mh.invoke(pojo, value);
Run Code Online (Sandbox Code Playgroud)

但是,这似乎没有比使用反射的Field.set调用更好.我在这里做错了吗?

我读到使用invokeExact可能会更快,但当我尝试使用它时,我得到了一个java.lang.invoke.WrongMethodTypeException

有没有人成功地优化了对Field.set或Field.get的重复调用?

java reflection performance field methodhandle

38
推荐指数
4
解决办法
6262
查看次数

更改UIWindow的rootViewController

当我的应用程序第一次加载时,我将rootViewControllermy 的属性设置UIWindowcontrollerA.

在我的应用程序中的某个时候,我选择更改rootViewControllercontrollerB.

问题在于,有时当我进行翻转过渡时controllerB,我会看到controllerA背后的观点.由于某种原因,视图没有被删除.什么更令人担忧的是,设置后rootViewControllercontrollerB,controllerAdealloc方法永远不会被解雇.

我已经尝试UIWindow在切换之前删除手动的子视图controllerB,这解决了controllerA在后台看到视图的问题但是controllerAdealloc仍然永远不会被调用.这里发生了什么????

苹果文档说:

根视图控制器提供窗口的内容视图.将视图控制器分配给此属性(以编程方式或使用Interface Builder)将视图控制器的视图安装为窗口的内容视图.如果窗口具有现有视图层次结构,则在安装新视图之前将删除旧视图.

UPDATE

这是我的AppDelegate的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self showControllerA];
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)showControllerA
{
    ControllerA* a = [ControllerA new];
    self.window.rootViewController = a;
}

- (void) showControllerB {
    ControllerB* b = …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller uiwindow ios rootview

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

升级Chrome扩展程序的权限

我们目前在Chrome网上应用店中有许多用户的扩展程序.我们目前要求访问foo.site.com,但现在我们想要更新我们的权限,以便我们可以获得bar.site.com.

据我所知,如果我们将需要这两项权限的新更新(新的扩展程序版本推送到Chrome网上应用店),现有用户将禁用其扩展程序,直到他们手动重新启用.在更新后下载扩展程序的新用户将没有问题并拥有这两个权限.但是,禁用我们当前的用户不是一种选择.

有办法解决这个问题吗?

我们已经研究了可选权限,这将解决现有用户的问题(我们只是要求他们单击按钮来升级权限并继续使用).但是对于新用户,他们不仅需要安装扩展程序,还要接受糟糕的可选权限.新用户是否有办法在安装时接受所有权限(可选和必需)?

permissions google-chrome updates google-chrome-extension chrome-web-store

24
推荐指数
3
解决办法
6414
查看次数

Appengine服务器的IP地址块?

我正在与第三方网络服务合作,该网络服务要求所有对其服务的呼叫均来自列入白名单的IP地址.也就是说,我必须给他们IP地址,我将从中调用他们的服务.

问题是我正在使用Google Appengine.在从Appengine发出传出的http请求时,有没有办法获得静态IP地址?如果失败 - 是否存在所有请求来自的IP地址块?我可以将整个集团列入白名单.如果存在,那么改变的可能性有多大?

我知道我可以设置一个简单的Amazon EC2实例作为代理(将询问另一个问题,如何具体做到这一点),但只是想确保没有其他办法.

google-app-engine ip-address whitelist

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

如何链接到chrome Web Store等Chrome扩展程序?

我想在我自己的网站上自行托管Chrome扩展程序,但希望安装体验与Chrome网上商店相同.具体来说,我想要一个"添加到chrome"按钮,要求用户再次点击一下安装扩展程序.目前,在自托管扩展上,您必须确认下载,然后确认安装.

以下是网上商店的示例:https://chrome.google.com/webstore/detail/olnconaknblgbkfgknkfmmfhhbebkekd

我想自我托管的唯一原因是他们可以在安装扩展程序时留在我的网站上.

如果这有助于体验(即从我的网站到Chrome网上商店的特殊链接,可以立即开始下载),我将完美地托管在chrome网上商店.

有任何想法吗?

google-chrome google-chrome-extension google-chrome-devtools chrome-web-store

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

GSON序列化非常慢

我正在尝试使用GSON序列化7000 POJO的数组,并且序列化时间非常慢.序列化以下对象的数组大约为3-5秒:

public class Case {
    private Long caseId;
    private Key<Organization> orgKey;

    private Key<Workflow> workflowKey;
    private Key<User> creatorKey;

    private Date creationTimestamp;
    private Date lastUpdatedTimestamp;

    private String name;
    private String stage;
    private String notes;
}
Run Code Online (Sandbox Code Playgroud)

使用自定义序列化器/反序列化器序列化关键字段:

public class GsonKeySerializerDeserializer implements JsonSerializer<Key<?>>, JsonDeserializer<Key<?>>{

@Override
public JsonElement serialize(Key<?> src, Type typeOfSrc, JsonSerializationContext arg2) {
    return new JsonPrimitive(src.getString());
}

@Override
public Key<?> deserialize(JsonElement src, Type typeOfSrc, JsonDeserializationContext arg2) throws JsonParseException {
    if (src.isJsonNull() || src.getAsString().isEmpty()) {
        return null;
    }

    String s = src.getAsString();
    com.google.appengine.api.datastore.Key …
Run Code Online (Sandbox Code Playgroud)

java performance serialization json gson

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

使用来自iOS + Bonjour的Google Oauth2网络流(Yikes!)

我正在构建一个iOS应用程序,要求用户使用服务器端Web流通过Oauth2授权Google API.我目前打开一个UIWebView来启动oauth2流程.

这在模拟器中工作正常,因为我正在设置重定向URI http://localhost并在本地计算机上运行服务器.

但是,我还想在连接到桌面上运行的服务器的同时在设备上进行测试.为了做到这一点,我已经让应用程序发现我的桌面地址(本地子网IP或bonjour地址http://foo.local.)连接到服务器.但是,Google Oauth2流程表示它不能将本地URI用作重定向网址.

有没有办法解决?如果可能的话,我不想乱用我的本地网络设置或IOS设备的代理请求.理想情况下,我也希望能够使用bonjour服务来发现服务器,因为我们有一个开发人员团队,我们的应用程序允许您选择本地网络上您想要连接的服务器.

选项?

bonjour ios oauth-2.0 google-oauth

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

gmail线程ID在用户中是唯一的吗?

标题说明了一切,但我想知道Gmail线程ID是否在用户中是唯一的.由于各种原因,我想根据这些ID索引全局数据结构.

gmail-api

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

mergeChangesFromContextDidSaveNotification后的KVO通知

我正在使用KVO来观察NSManagedObject的变化.我正在观察的NSManagedObject是主队列上的NSManagedObject上下文的一部分.

当我在后台(专用队列并发类型)上下文中更新此对象,然后将保存的更改合并到我的主队列上下文(在mergeChangesFromContextDidSaveNotification中)时,KVO通知将按预期触发.

但是,我预计通知只会触发实际更改的键路径,而不会触发NSManagedObject的所有键路径.即使它们没有改变,我也会收到对象的每个关键路径的KVO通知.

这是设计还是我做错了什么?

在苹果文档中看不到任何内容....

xcode core-data objective-c key-value-observing ios

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