2022-01-01から1年間の記事一覧

MongoDBのクエリの備忘録 (Element)

準備 使用するMongoDBはこちらと同じ。 MongoDB Shellで接続して、マニュアルと同じテストデータを挿入する。 test> db.inventory.insertMany([ ... { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] }, ... { item: "notebook", qt…

MongoDBのクエリの備忘録 (Array)

準備 使用するMongoDBはこちらと同じ。 MongoDB Shellで接続して、マニュアルと同じテストデータを挿入する。 test> db.inventory.insertMany([ ... { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] }, ... { item: "notebook", qt…

jfrコマンドの備忘録

Memo 準備 JFRファイルのサイズを大きくしたいので、大量のJFRイベントを書き込むデモアプリを用意する。 Main.java import java.time.LocalDateTime; import jdk.jfr.Category; import jdk.jfr.Description; import jdk.jfr.Event; import jdk.jfr.Label; i…

MongoDBのクエリの備忘録 (Comparison, Logical)

準備 Docker ComposeでMongoDBを起動する。 % docker compose up -d compose.yml services: mongo: image: mongo:6.0 restart: always ports: - 27017:27017 environment: MONGO_INITDB_ROOT_USERNAME: user1 MONGO_INITDB_ROOT_PASSWORD: xxxx MongoDB Shel…

JacksonでJSONを別の階層のプロパティにマップする

具体的にはJacksonでMapにデシリアライズできるJSONを、こんなクラスにマップしたいときの備忘録。 { "key1": "value1", "key2": "value2", ... } public class Response { private Map<String, String> map; } Mapに@JsonUnwrappedは使えないので、@JsonAnySetterを使う。シ</string,>…

Javaアプリのメモリリークを調べる

JavaアプリのメモリリークをPrometheusとJDK Flight Recorderを使って調べるときのメモ。 準備 ソースコード メモリリークがあるSpring Bootのデモアプリ。 build.gradle plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency…

Wiresharkで任意のHTTP Headerでフィルターする

Wiresharkで任意のHTTP Headerでフィルターしたいときの備忘録。 HTTPのフィルターが用意されている場合 X-Forwarded-ForヘッダーのようにHTTPのフィルターが用意されている場合は、リファレンスに記載されているFIELD NAMEを指定すればフィルターできる。 H…

Javaのasync-profilerを試す

Javaのasync-profilerを試したときのメモ。 (IntelliJ IDEA Ultimateでも試せるが、今回はツールを直接実行する) 準備 async-profiler ここからasync-profilerをダウンロードする。 実際には、ダウンロードしたファイル含まれているprofiler.shを使う。 検…

GradleでSpring Bootをビルドしたときのjarファイル

Spring Boot 2.5からGradleでビルドすると *.jar と *-plain.jar の2つが生成されるようになったので、これらについてのメモ。 Demo Spring InitializrからGradle Projectを選択してプロジェクトを作成する。(ArtifactなどのProject Metadataはデフォルト…

JavaのSortedSet

JavaのSortedSetについての備忘録。 HashSetなどの通常のSetは要素比較にオブジェクトのequalsを使うが、TreeSetなどのSortedSetは要素比較にcompareTo(またはcompare)を使う。そのため、SortedSetにComparatorを設定している場合は、要素比較の結果がHashSe…

JacksonとLombokの組み合わせ

JacksonとLombokの組み合わせについての備忘録。 ソースコード plugins { id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } dependencies { annotationProcess…