小编Bas*_*wub的帖子

无需重新部署即可重新启动GAE实例

我目前正在运行(免费)Google App Engine实例,我需要手动重启.但是,在我的项目的"实例"选项卡中,它只是为我提供了"查看日志"或"关闭"的选项.

关闭实例不是一个选项,因为我不想手动将应用程序重新部署到google appspot.这不是一个选项,因为我需要从多个位置(甚至在路上)这样做,我的项目位于一台台式计算机上.

我希望能够重新启动实例的原因是因为我的Java应用程序中的缓存.我缓存某些用户和数据,以便我很少需要调用数据存储区.

但是,当我想从数据存储中删除某些记录时,它们仍然存在于我的应用程序的缓存中.这意味着用户可以访问已经手动删除的数据.

我知道可以编写一次性管理应用程序来清除缓存,但这不是我希望解决这个问题的方式.它应该比那更容易.

有没有办法重新启动正在运行的实例,有效地重新启动我的Java应用程序,而无需将整个应用程序重新部署到谷歌appspot?

java google-app-engine

6
推荐指数
2
解决办法
5245
查看次数

下划线会改变整数的行为吗?

为什么这个代码

int[] a = {
    0,
    1,
    1_0,
    0_1,
    1_0_0,
    0_1_0,
    0_0_1
};

System.out.println(Arrays.toString(a));
Run Code Online (Sandbox Code Playgroud)

产出这个输出[0, 1, 10, 1, 100, 8, 1]

为什么输出中有8?下划线是否添加了一些秘密功能?

java

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

如何将HashMap(作为对象属性)保存到数据存储区

我正在使用GAE(Google App Engine)数据存储来存储人员.

每个人都有一个名字,一个唯一的标记,他们收到的消息列表(字符串)和他们完成的测试列表(字符串).这些都是支持的类型.

但是,我还想存储一个包含String键和String值的HashMap,以及有关它们已完成的测试的信息.

我正在尝试保存的示例Map(请注意,这是示例数据,而不是实际数据)

[
    <'test_easy_1', 'completed in 3 minutes'>
    <'test_easy_2', 'completed in 5 minutes'>
    <'test_hard_1', 'completed in 15 minutes'>
    <'test_hard_2', 'completed in 3 minutes.. Did you cheat?'>
]
Run Code Online (Sandbox Code Playgroud)

我想拯救这样的人

@Override
public boolean savePerson(Person p) {
    if (p.getEntity() == null) {
        return false;
    }

    p.getEntity().setProperty("name", p.getName());
    p.getEntity().setProperty("token", p.getToken());
    p.getEntity().setProperty("messages", p.getMessages());
    p.getEntity().setProperty("completedTests", p.getCompletedTests());
    p.getEntity().setProperty("testInformation", p.getTestInformation()); // does not work
    DatastoreServiceFactory.getDatastoreService().put(p.getEntity());

    return true;
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题:

如何将HashMaps作为对象属性保存到数据存储区?

我希望以一种方式执行此操作,我不必为HashMap创建整个类和新的数据存储区索引.但是,如果这是唯一的方法,我想知道如何这样做.谷歌搜索这并没有产生明确和明显的方式来处理这种情况.

java google-app-engine google-cloud-datastore

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

Java:使用plus +运算符连接String和表达式的意外行为

考虑以下代码

public class Test {
   public static void main(String... strings) {
      System.out.println("String, " + false);
      System.out.println("String, " + getFalse());
      System.out.println("String, " + new TestClass());
      System.out.println("String, " + (new TestClass() == null));
      System.out.println("String, " + new TestClass() == null);
   }

   private static class TestClass {
      public String toString() {
         return "false";
      }
   }

   private static boolean getFalse() {
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

为什么最后一次System.out.println打印的输出与其他输出不同?我不知道,这是一个错误吗?是否与plus运算符有关?StringBuilder?

java string behavior operator-keyword

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