小编r.s*_*r.s的帖子

不区分大小写的字符串作为HashMap键

我想使用不区分大小写的字符串作为HashMap键,原因如下.

  • 在初始化期间,我的程序使用用户定义的String创建HashMap
  • 在处理事件(在我的情况下是网络流量)时,我可能会在不同的情况下收到String但我应该能够<key, value>从HashMap中找到忽略我从流量中收到的情况.

我遵循了这种方法

CaseInsensitiveString.java

    public final class CaseInsensitiveString {
            private String s;

            public CaseInsensitiveString(String s) {
                            if (s == null)
                            throw new NullPointerException();
                            this.s = s;
            }

            public boolean equals(Object o) {
                            return o instanceof CaseInsensitiveString &&
                            ((CaseInsensitiveString)o).s.equalsIgnoreCase(s);
            }

            private volatile int hashCode = 0;

            public int hashCode() {
                            if (hashCode == 0)
                            hashCode = s.toUpperCase().hashCode();

                            return hashCode;
            }

            public String toString() {
                            return s;
            }
    }
Run Code Online (Sandbox Code Playgroud)

LookupCode.java

    node = nodeMap.get(new CaseInsensitiveString(stringFromEvent.toString()));
Run Code Online (Sandbox Code Playgroud)

因此,我正在为每个事件创建一个CaseInsensitiveString的新对象.因此,它可能会影响性能.

有没有其他方法可以解决这个问题?

java dictionary case-insensitive

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

将Oracle时间戳更新为当前日期

我在Oracle db中有一个TIMESTAMP(6)字段.该字段的值以格式显示

DD/MM/YYYY HH:MM:SS.000000000 PM
Run Code Online (Sandbox Code Playgroud)

如何将此值更新为当前时间戳?

[类似问题的链接:] 更新oracle中的日期值

我按照这个链接,但以下查询需要很长时间才能执行.

update table_name set start_time = to_char(to_date(start_time, 'yyyy/mm/dd-hh:mi:ss:ff3'), '2012/10/10-19:30:00:00') where column='Q'
Run Code Online (Sandbox Code Playgroud)

sql oracle timestamp sql-update

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

spring 依赖管理 gradle 插件不下载依赖项

我在 IntelliJ 上使用 spring 依赖管理 gradle 插件。我有一个根模块如下

apply plugin: "io.spring.dependency-management"

dependencyManagement {
    dependencies {
      dependencySet(group: "org.apache.hadoop", version: "2.6.0-cdh5.14.4") {
                entry "hadoop-common"
                entry "hadoop-hdfs"
            }
     }
}
Run Code Online (Sandbox Code Playgroud)

如果我添加

dependency 'org.apache.hadoop:hadoop-tools:2.6.0-mr1-cdh5.14.4' 
Run Code Online (Sandbox Code Playgroud)

或者

dependencySet(group: "org.apache.hadoop", version: "2.6.0-mr1-cdh5.14.4") {
    entry ("hadoop-tools") {
        exclude group: 'ch.qos.logback', module: 'logback-classic'
        exclude group: 'org.slf4j', module: 'slf4j-log4j12'
    }
}
Run Code Online (Sandbox Code Playgroud)

在根模块中,它不会下载hadoop-toolsjar。仅当我在子模块中添加以下内容时,它才会下载此依赖项。

plugins {
    id "com.github.johnrengelman.shadow" version "2.0.4"
}

dependencies {
    compile ("org.apache.hadoop:hadoop-tools:2.6.0-mr1-cdh5.14.4") {
        exclude group: 'ch.qos.logback', module: 'logback-classic'
        exclude group: 'org.slf4j', module: 'slf4j-log4j12'
    }
}
Run Code Online (Sandbox Code Playgroud)

行为为何?

spring dependencies intellij-idea dependency-management gradle

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

避免广播嵌套循环连接

当我使用左连接连接两个数据帧时,如下所示:

df1.join(broadcast(df2), $"id" === $"id1" || $"id2" === $"id3", "left")

如果没有$"id2" === $"id3",它执行得非常快,但是当这两个条件都存在时,它会BroadcastNestedLoopJoin变得非常非常慢。

我有什么想法可以改进这个吗?

join apache-spark

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