Skip to content

Instantly share code, notes, and snippets.

View apangin's full-sized avatar

Andrei Pangin apangin

View GitHub Profile
import java.io.Serializable;
import java.util.concurrent.atomic.LongAdder;
public class ReaderThread extends Thread {
private static final LongAdder ops = new LongAdder();
interface Reader extends Serializable {
boolean advanceTo(int docId);
}
package bench;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import org.openjdk.jmh.annotations.Benchmark;
import java.util.HashMap;
public class JwtToken {
import sun.misc.Unsafe;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
package bench;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import java.util.Arrays;
import java.util.concurrent.ThreadLocalRandom;
@apangin
apangin / MapBench.java
Created July 29, 2021 16:27
ConcurrentHashMap vs. HashMap performance
package bench;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import java.util.HashMap;
import java.util.Map;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
// See https://twitter.com/tagir_valeev/status/1402089474805354499
public class StringBuilderHash {
import java.util.ArrayList;
import java.util.concurrent.locks.LockSupport;
import java.util.stream.StreamSupport;
public class ParallelStream {
public static int[] process(Iterable<Integer> iterable) {
return StreamSupport.stream(iterable.spliterator(), true)
.mapToInt(i -> {
LockSupport.parkNanos(1_000_000);
@apangin
apangin / VMFlags.java
Created January 27, 2021 23:23
Read and modify non-manageable JVM flags in runtime: macOS version
import sun.misc.Unsafe;
import javax.management.ObjectName;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Field;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
@apangin
apangin / LogSafepoints.java
Last active January 15, 2021 19:34
Java safepoint event listener
import one.log.event.ILoggingEvent;
import one.log.event.OperationLogEvent;
import one.log.stat.StatCollector;
import one.log.stat.Statistics;
import one.nio.mgt.DiagnosticCommand;
import one.nio.os.BatchThread;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.Matcher;
@apangin
apangin / vmoption.c
Created January 15, 2021 11:23
Change non-manageable JVM option in runtime
#include <jvmti.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
JNIEXPORT jint JNICALL
Agent_OnAttach(JavaVM* vm, char* options, void* reserved) {
if (options != NULL) {
int* addr = (int*)strtol(options, NULL, 0);
printf("vmoption [%p] = %d\n", addr, *addr); fflush(stdout);