小编Ric*_*rdo的帖子

Neo4j - Cypher vs Gremlin查询语言

我开始使用REST API使用Neo4j进行开发.我看到有两个选项可用于执行复杂查询 - Cypher(Neo4j的查询语言)和Gremlin(通用图形查询/遍历语言).

这就是我想知道的 - 有没有任何查询或操作可以通过使用Gremlin完成,而不能用Cypher完成?或相反亦然?

Cypher对我来说似乎比Gremlin要清楚得多,而且一般来说Neo4j中的人似乎都会选择Cypher.但是 - 如果Cypher与Gremlin相比有限 - 我真的很想提前知道.

neo4j graph-databases cypher gremlin

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

在UPDATE语句中会发生什么,在FROM/JOIN子句中没有提到更新的表?

我打算UPDATE在SQL Server数据库表上运行以下语句:

UPDATE TABLE_A
SET COL_1=B.COL_1
FROM TABLE_A A
INNER JOIN TABLE_B B
   ON A.KEY_1=B.KEY_1
WHERE B.COL_2 IS NOT NULL
  AND A.COL_1=91216599
Run Code Online (Sandbox Code Playgroud)

错误地,我改为运行以下语句:

UPDATE TABLE_A
SET COL_1=B.COL_1
FROM TABLE_A_COPY A
INNER JOIN TABLE_B B
   ON A.KEY_1=B.KEY_1
WHERE B.COL_2 is not NULL
  AND A.COL_1=91216599
Run Code Online (Sandbox Code Playgroud)

请注意,在第二个语句(错误的一个)中,FROM子句指定表TABLE_A_COPY而不是TABLE_A.两个表具有完全相同的模式(即,相同的列)和相同的数据(在任何UPDATE执行之前,即).

双方TABLE_ATABLE_A_COPY拥有约100万条记录和更新影响约500000条记录.第二个语句(错误的语句)运行了几个小时并且在第一个语句(正确的语句)运行40秒并且成功时失败.

显然,这两个语句在语法上都是正确的,但我不确定我究竟要求SQL Server对第一个语句做什么.

我的问题是:

  1. SQL Server在第二个语句中尝试做什么?随着我的错误,我没有从指定记录之间的联动TABLE_ATABLE_A_COPY,所以被它试图做两者之间的CROSS JOIN,然后更新每个记录TABLE_A一个极大倍?

  2. 如果要问的问题不是太宽泛,那么UPDATE在这些语句中有什么是有效的方案,其中FROM/JOIN条款中没有提到正在更新的表.为什么有人这样做?为什么SQL Server甚至会允许这样做?


我确实试图寻找我的问题的答案,但谷歌似乎认为我在问UPDATE …

t-sql sql-server sql-update

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

在java中构建电路模型

我最近正在接受Java Developer的职位面试.我接到了一个任务:想一个用Java表示电路(如下图所示)的好方法.

图片为http://oi40.tinypic.com/nnr4wj.jpgg

电路是逻辑门XOR,AND,OR等的组合.每个门有两个输入端口和一个输出端口.每个输出连接到另一个门的输入,该门一直连接到更高的门(如图所示).使系统简单,不允许循环(尽管现实生活中的电路可以使用它们).我被要求考虑使用以下指南在Java中表示此模型的好方法:

  1. 我得到一个电路和一个值列表,应该提供给它的输入.
  2. 我需要创建一个模型来表示Java中的电路,即我需要定义类和可用于表示电路的API.
  3. 根据输入值和门的连接方式,我需要计算所代表的电路将产生的输出.
  4. 我需要考虑一种表示电路板的方法,使用抽象类或接口,并展示对模型的理解(如果需要使用模式设计).

我选择将系统设计成一棵树,面试官告诉我这是一个不错的选择.然后我构建这些类:

节点

public class gate_node {
    gate_node right_c,left_c;
    Oprtator op;
    int value;
    int right_v,left_v;
    public gate_node(gate_node right,gate_node left,Oprtator op){
        this.left_c=left;
        this.right_c=right;
        this.op=op;
        right_v=left_v=0;
    }

}
Run Code Online (Sandbox Code Playgroud)

public class tree {
    gate_node head;

    tree(gate_node head) {
        this.head = head;
    }

    void go_right() {
        head = head.right_c;
    }

    void go_left() {
        head = head.left_c;
    }

    static int arr[] = { 0, 0, 1, 0 };
    static int counter=0;

    static int compute(gate_node head) {

        if …
Run Code Online (Sandbox Code Playgroud)

java algorithm design-patterns representation

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

为什么 DROP TABLE 在 SELECT INTO 之前似乎没有生效?

下面的 tSQL 查询令我困惑:

select 1 as FIELD into #TEMP
drop table #TEMP
select 1 as FIELD into #TEMP
Run Code Online (Sandbox Code Playgroud)

当我从 SQL Server Management Studio 会话窗口运行它时(按F5整个查询,作为一个组),我收到以下错误:

消息 2714,级别 16,状态 1,第 3 行
数据库中已经有一个名为“#TEMP”的对象。

请注意,#TEMP在执行查询之前表不存在。

我认为代码不应该产生任何错误,因为第 2 行正在删除临时表。但是就好像在执行第 3 行时 drop 没有生效。

我的问题:

  1. 为什么会发生错误?
  2. 如何修复查询以使其按预期执行?

附注。上面的查询是我的真实世界查询的简化,它显示了相同的症状。

PS2。不管这是否是一种合理的编程实践(正如 Sean 在他的评论中暗示的那样),这种意外行为促使我寻找有关如何解析这些查询的信息,希望这些知识对我将来有所帮助。

t-sql sql-server sql-server-2012

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

如何在knitr中调整代码块行间距?

当您使用knitr将r-markdown文件呈现为HTML或pdf时,输出文档中的代码块对我来说看起来像是过多的行间距.当我想输出summary()的结果时,这会将通常简洁的输出转换成太长的东西.

这是一个比较:

控制台和编织线间距的比较

我看了看,我找不到调整knitr行间距的方法.

当然我可以使用xtable来格式化summary()输出,但它只想输出输出的"表格"部分,而不包括R ^ 2等.

有没有办法调整knitr的行间距,使其更紧凑?

r rstudio knitr

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