我有一个包含 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) 我使用 pgadmin 连接到 heroku postgres 数据库并创建了一个包含两个简单列的简单表:
\nid - bigint identity \nname - text\nRun Code Online (Sandbox Code Playgroud)\n和简单的两行:
\nid name\n1 name1\n2 name2\nRun Code Online (Sandbox Code Playgroud)\n当我执行命令时
\nheroku pg:pull DATABASE_URL mylocaldb1234 --app nameless-dusk-05113\nRun Code Online (Sandbox Code Playgroud)\n我收到错误:
\npg_restore: error: unrecognized data block type (0) while searching archive\n ! pg_restore errored with 1\nRun Code Online (Sandbox Code Playgroud)\n我检查了 postgres 本地和远程版本,它们是相同的。\n本地版本:
\npsql --version\npsql (PostgreSQL) 12.5\n\npg_restore --version\npg_restore (PostgreSQL) 12.5\nRun Code Online (Sandbox Code Playgroud)\n远程版本:
\nheroku 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) 此代码将给出 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) 我有 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 ×3
collections ×1
heroku ×1
heroku-ci ×1
java-8 ×1
java-stream ×1
jmh ×1
linked-list ×1
postgresql ×1
pull ×1
set ×1
treeset ×1