小编Ale*_*nov的帖子

为什么从 LinkedList 的末尾获取值比从开始要慢得多?

我有一个包含 1,000,000 个项目的 LinkedList。我首先在索引 100,000 和索引 900,000 处测量了一个项目的检索。在这两种情况下,LinkedList 都经过 100,000 次操作才能获得所需的索引。那么为什么从最后检索比从开始检索慢这么多呢?使用 JMH 进行的测量。

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 10)
@Measurement(iterations = 10)
public class ComparationGet {

    static int val1 = 100_000;
    static int val2 = 500_000;
    static int val3 = 900_000;

    @Benchmark
    public void testGet1LinkedListFromStart(Blackhole blackhole, MyState state) {
        MyDigit res1 = state.linkedList.get(val1);
        blackhole.consume(res1);
    }

    @Benchmark
    public void testGet2LinkedListFromEnd(Blackhole blackhole, MyState state) {
        MyDigit res1 = state.linkedList.get(val3);
        blackhole.consume(res3);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

from start:
ComparationGet.testGet1LinkedListFromStart  avgt   10  0,457 ± 0,207  ms/op

from …
Run Code Online (Sandbox Code Playgroud)

java linked-list jmh

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

Heroku 将 postgres 数据库拉至本地失败,数据块类型无法识别 (0)

我使用 pgadmin 连接到 heroku postgres 数据库并创建了一个包含两个简单列的简单表:

\n
id - bigint identity \nname - text\n
Run Code Online (Sandbox Code Playgroud)\n

和简单的两行:

\n
id   name\n1    name1\n2    name2\n
Run Code Online (Sandbox Code Playgroud)\n

当我执行命令时

\n
heroku pg:pull DATABASE_URL mylocaldb1234 --app nameless-dusk-05113\n
Run Code Online (Sandbox Code Playgroud)\n

我收到错误:

\n
pg_restore: error: unrecognized data block type (0) while searching archive\n !    pg_restore errored with 1\n
Run Code Online (Sandbox Code Playgroud)\n

我检查了 postgres 本地和远程版本,它们是相同的。\n本地版本:

\n
psql --version\npsql (PostgreSQL) 12.5\n\npg_restore --version\npg_restore (PostgreSQL) 12.5\n
Run Code Online (Sandbox Code Playgroud)\n

远程版本:

\n
heroku pg:info\n=== DATABASE_URL\nPlan:                  Hobby-dev\nStatus:                Available\nConnections:           5/20\nPG Version:            12.5\nCreated:               2021-01-07 07:29 UTC\nData Size:             8.2 MB\nTables:                1\nRows:                  2/10000 (In …
Run Code Online (Sandbox Code Playgroud)

postgresql pull heroku heroku-ci

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

为什么 Stream.mapToInt 不处理 NullPointerExceptions?

此代码将给出 NullPointerException。mapToInt (map) 方法不是应该处理 NPE 吗?

List<Integer> list = Arrays.asList(null, null);
OptionalDouble op = list.stream()
    .mapToInt(val->val)
    .average();
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception java-8 java-stream

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

在 Set 中查找元素的最有效方法

我有 Person 类:

public class Person implements Comparable<Person> {
    private int id;
    @Override
    public int hashCode() {
        return id;
    }

    @Override
    public boolean equals(Object obj) {
        Person other = (Person) obj;
        return id == other.id;
    }

    @Override
    public int compareTo(Person o) {
        return Integer.compare(id, o.id);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有人员 TreeSet。我需要findPersonById(int id)在 TreeSet 中实现方法。

我是这样做的:

public Person find(int id) {
    List<Person> personList = new ArrayList(idTreeSet);
    Person pattern = new Person(id);
    int index = Collections.binarySearch(personList, pattern);
    return index < 0 ? …
Run Code Online (Sandbox Code Playgroud)

java collections set treeset

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