小编Hen*_*rre的帖子

如何创建固定大小的对象数组

在Swift中,我正在尝试创建一个包含64个SKSpriteNode的数组.我想先初始化它空,然后我会把精灵在第16个单元,最后16个单元(模拟的棋局).

根据我在文档中的理解,我会期待如下:

var sprites = SKSpriteNode()[64];

要么

var sprites4 : SKSpriteNode[64];

但它不起作用.在第二种情况下,我得到一个错误说:"还不支持固定长度数组".这可能是真的吗?对我来说,这听起来像一个基本功能.我需要通过索引直接访问元素.

swift xcode6 ios8

87
推荐指数
7
解决办法
10万
查看次数

用于顺序代码的 Java CompletableFuture

我的新团队正在编写一个 Java gRPC 服务,为了确保我们永远不会阻塞请求线程,我们最终将或多或少的所有方法包装在 CompletableFuture 中,即使这些端点在概念上是操作的顺序列表(无并行性)。

\n

所以代码看起来像这样(如果需要,最后可以提供 Java 示例):

\n
  methodA()\n    methodB()\n      methodD() (let say this one is a 15ms RPC call)\n      methodE()\n    methodC()\n      methodF() (let say this one is a 5ms CPU intensive work)\n      methodG()\n \n
Run Code Online (Sandbox Code Playgroud)\n

语境:

\n
    \n
  • 在实践中,应用程序要大得多,并且有更多的功能层
  • \n
  • 每个应用程序主机需要处理 1000 QPS,因此您可以想象以该速率调用 methodA
  • \n
  • 某些函数(少数)进行 RPC 调用,可能需要 5-30 毫秒 (IO)
  • \n
  • 某些功能(很少)运行 CPU 密集型工作(< 5ms)
  • \n
\n

编辑1:昨天在网上进行了更多阅读后,我明白,当且仅当我们使用真正的非阻塞HTTP和DB客户端(并且看起来JDBC不是非阻塞的)时,这种模式可以减少所需的线程总数。我的理解是,如果我们有足够的内存来为每个请求保留一个线程,那么使用同步代码仍然可能是最有效的实现(减少切换线程和加载数据的开销),但是如果我们没有足够的内存为了保持那么多线程处于活动状态,那么使整个代码成为非阻塞的概念可以减少线程数量,从而允许应用程序扩展到更多请求。

\n

问题一: \n我知道这会解锁“请求线程”,但实际上有什么好处?我们真的节省了 CPU 时间吗?在下面的示例中,感觉“某些”线程无论如何都会一直处于活动状态(在下面的示例中,主要是来自 methodD 中 CompletableFuture.supplyAsync 的线程),只是碰巧它\xe2\x80\x99s 不一样线程作为接收初始请求的线程。

\n

问题 …

java asynchronous nonblocking grpc completable-future

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

python字符串比较(==)不工作

为什么以下字符串比较不起作用?我有以下代码(我改编它使更简单).我从数据库中检索一个播放器并将其添加到播放器列表中.然后我循环播放器列表并尝试找到它,甚至'字符串是相同的,比较返回false ..

def findPlayer2(self, protocol, playerId):
    cur = self.conn.cursor()
    cur.execute("SELECT playerId, playerName, rating FROM players WHERE playerId LIKE (%s)", [playerId])
    nbResult = cur.rowcount
    result = cur.fetchone()
    cur.close()

    if nbResult > 0:
        player = Player(protocol, str(result[0]), str(result[1]), result[2])
        self.players.append(player)

    for player in self.players:
        id1 = str(player.playerId)
        id2 = str(playerId)
        print type(id1)
        print type(id2)
        print "Comparing '%s' with '%s'" % (id1, id2)

# HERE IS THE COMPARISON

        if id1 == id2:
            print "Equal! Player found!"
            return player
        else:
            print "Not equal :(" …
Run Code Online (Sandbox Code Playgroud)

python string comparison

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

用于字符串的Java中最快的哈希算法

为简单起见,我的问题是:如何尽快散列字符串(大约200个字符).安全性并不重要,但碰撞是一件大事.

注意:经过快速调查,似乎MurmurHash3可能是最好的选择.我愿意接受任何评论,否则说'

首先,我知道还有很多其他类似的问题,但我还没有找到令人信服的答案.

我有一个对象列表,每个对象包含一个大约3k段的列表,保存到数据库中.每隔X个小时,这些段落都会被重新生成,我需要查找是否有任何段落发生了变化,如果是,则只推送那些新段落.

我发现找到差异的最快方式(知道大部分内容都是相同的)是创建MerkleTree,将其保存到数据库中,并迭代MerkleTree以找出差异,而不是比较段落本身.

在我的情况下,这意味着我将每秒创建数万个哈希值,以与数据库中的内容进行比较.因此,我需要一种非常有效的方法来创建这些哈希.我不关心安全性,我只需要确保碰撞的数量仍然非常低.

Java中可用的最佳算法是什么?


在我的例子中,主要对象由Sections组成,Sections由Languages组成,由Paragraph组成.比较策略是:

1)如果对象哈希相同,则停止,否则转到2)

2)循环所有Section,只保留带有不同散列的Section

3)循环这些部分的所有语言,只保留具有不同散列的语言

4)循环所有这些语言的所有段落,如果哈希值不同,则推送新内容.

java hash merkle-tree

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

使用Java 8流反转Map结构

给一个班级

public class MyClass {
    public int langId;
    public int sectionId;
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个映射将LangId映射到具有该LangId的MyClass的所有实例:

Map<Integer, List<MyClass>> mapLangIdToListOfMyClass = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

使用Java 8流,是否有一种简单的方法来使用前一个Map并创建一个新的Map,它将SectionId映射到具有SectionId的MyClass的所有实例:

Map<Integer, List<MyClass>> mapSectionIdToListOfMyClass = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

java

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

Ansible:如果文件存在,则不运行 shell 命令

我想在 Ansible 剧本中执行以下操作:

- name: "Generate variant html report"
  shell: "<my command>"
  with_items: "{{ variants | default([]) }}"
  when: ({{ folderReports }}/{{ item }}).exists == False
Run Code Online (Sandbox Code Playgroud)

在 内部when,我需要一种方法来创建文件路径,并确定它是否存在。我尝试使用“(”“)”来包围我的第一个表达式,但它似乎不起作用:

2016-10-13 16:22:48,130 p=94292 u=s自动化 | 致命:[localhost]:失败!=> {“failed”:true,“msg”:“条件检查'({{folderReports}}/{{item}}).exists == True'失败。错误是:模板化字符串时出现模板错误:意外'/'。字符串:{% if (/opt/diff-test1.diff).exists == True %} True {% else %} False {% endif %}\n\n错误似乎位于 '/ opt/ansible/roles/stats/tasks/main.yml': 第 45 行,第 3 列,但\n可能位于文件中的其他位置,具体取决于确切的语法问题。\n\n有问题的行似乎是:\n\n \n- 名称:\"生成报告\"\n ^ 此处\n"}

ansible

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

使用Guice创建同一类的多个实例

抱歉,这是一个琐碎的问题,我是Guice的新手。假设我有以下课程:

public class MyClass {
     @Inject
     public MyClass(final MyDependency myDependency) {
          this.name = myDependency.getName();
     }

     public String getName() {
          this.name;
     }
}
Run Code Online (Sandbox Code Playgroud)

然后我想在其他地方做:

public class SomeOtherClass {
    public void test() {
        MyClass instanceFoo = injector.getInstance(MyClass.class);
        MyClass instanceBar = injector.getInstance(MyClass.class);

        assertTrue("foo", instanceFoo.getName());
        assertTrue("bar", instanceBar.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

我想有两个“ MyClass”实例,一个实例名为“ foo”,一个实例名为“ bar”(即,每个实例也具有其依赖项的不同实例)。如何将这两个实例添加到我的注射器中,如何使用“ injector.getInstance”检索它们中的每个实例?

我不想为每个可能的依赖关系创建“ MyClass”的子类。

谢谢!

java dependency-injection guice

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