Java
Closable Java の Closable インタフェースを実装した具象クラスは、 close() メソッドを定義する必要がある。 Closable を実装した抽象クラスに Writer 、継承したインタフェースには OutputStream があり、これらの抽象 I/O を実装したクラスでは確保した…
というかServletの仕様ですね。 Spring Securityにおけるセッションの有効期限 Spring Securityでは、セッション情報をJava Servletで扱うようなHttpSessionとして扱えます。またセッションに紐づく情報は、クッキーであるHttpCookieオブジェクトとして扱え…
TD;DR Spring Data JPAのRepositoryに@Queryで更新/削除クエリを定義するとき、@Modifingアノテーションを付加します。 @Modifing @Transactional @Query(value = "DELETE FROM PHOTO AS p WHERE p.USER_ID = :userId", nativeQuery = true) public void del…
log4j2 log4j2はJavaのロギングユーティリティであるlog4jの後継です。 厳密にはv1のlog4jがv2担っただけのものですが、プロパティファイルの命名やプロパティの設定方法などが一部新しくなっています。 Log4j – Apache Log4j 2 - Apache Log4j 2 Usage Mave…
Jackson github.com Double-Quote問題 JacksonのObjectMapperでJSON文字列パースしてJavaオブジェクトに変換するとき、フィールド名にダブルクォートがないと怒られてしまいます。 String json = "{user_id: 1, age: 20, item_id: 2, item_name: "hoge"}"; O…
Jackson rennnosukesann.hatenablog.com 配列形式のJSON JSONのrootがオブジェクト形式ではなく配列形式の場合、ObjectMapperによるパースは以前の記事同様TypeReferenceを用いて行うことができます。 rennnosukesann.hatenablog.com rootが配列形式のJSON […
Jackson Jacksonについては以下の記事を参照。 rennnosukesann.hatenablog.com 多様なJSONの構造 前回の記事で、JSONをMapオブジェクトにする記事を書きました。 rennnosukesann.hatenablog.com JacksonではJSONファイルやStringオブジェクトとしてのJSONをJ…
Jackson Jacksonについてはこちら。 rennnosukesann.hatenablog.com JacksonはJavaのライブラリで、JavaオブジェクトをJSON形式にしたり、その逆のこともできます。もちろんJSONファイルへの読み書きも可能です。 JSONをMapオブジェクトに変換する Jacksonで…
Javaのサポートについて OracleのJavaへのサポート体制の変更が波紋を呼んでいます。 qiita.com www.orangeitems.com Oracle JDK 11の有償化 Oracle Java SE サポート・ロードマップ 事の発端は、OracleがJava 11の提供を有償化する声明を出したことでした。 …
JAX-WSとは JAX-WSはJavaのサーバサイドフレームワークであり、JavaクラスとAPIの構造をマッピングする機能を持ちます。 クラスやメソッドに対してアノテーションを付加することで、簡単にマッピングすることができます。 例えば、APIサーバがapi/hoge/getGE…
java.util.Base64 Base64.Encoder (Java Platform SE 8) Java8より、Base64によってバイトデータをエンコードできるBase64クラスが実装されました。 このUtilityクラスを利用することで、Java上で容易にBase64エンコード/デコードが利用できます。 Usage imp…
Jacksonとは github.com JacksonはJavaで使えるJSONライブラリです。 JSON形式の文字列をJavaのオブジェクトに直接マッピングしたり、逆にJavaオブジェクトをJSON文字列に変換できたりします。 HTTPレスポンスをパースしたりオブジェクトをBase64エンコーデ…
Lombokとは Lombokは、Javaクラスにアノテーションを付加するだけでかんたんにGetter,Setterなどのアクセサを設定することができるライブラリです。アクセサを書かなくても良い分 Javaクラス定義を短く書くことができます。 Lombokのダウンロード 実際にはID…
CMS CMS(Concurrent Mark & Sweep)コレクタは、Javaで用いられるガーベジコレクタです。従来の世代別GC方式を採用していますが、Old領域のGC処理をコンカレントGCと呼ばれる手法によって行います。 従来の世代別GC 従来の世代別GCでは、ヒープをNew領域とO…
Javaのガーベジコレクタ 【Java】JVMのヒープメモリ管理の記事では、JVMがどのようなガーベジコレクタアルゴリズムを搭載しているかについて調査・紹介しました。今回はJavaGCアルゴリズムの詳細実装であるG1GC(Garbage First Garbage Collector)について調…
Java8による時刻API 前回の記事では、Java7以前で用いられていた日時APIについて紹介しました。しかし、組み込みのAPIとしてはバグの温床となるような仕様が多く、個人的に使いづらさを感じていました。実際、 一般的な開発者が扱うような日付/時間のユース…
システムと時刻 地球上に存在する多くのシステムやアプリケーションは、「時刻」という概念に依存します。例えばRDBテーブル上のレコードが更新日時を持つ、WebアプリケーションクライアントがHTTPリクエストを投げた時刻サーバに伝えるなど、例を上げればき…
JVMとヒープ オブジェクト指向言語として有名なJavaプログラムがコンパイルされて中間言語としてJVM上で動く時、多くのオブジェクトの生成と破棄が繰り返され、それに伴ってヒープ領域の確保や生成が行われます。そのような激しいメモリアロケーションにも関…
背景 ・単体テストでインナークラスのテストをしたい(テストしやすい設計にすべきかどうかは別として)ときに、インナークラスのコンストラクタがprivateの場合、インスタンス化をリフレクションで行いたい。。。 ・このとき、getDeclaredConstructor()で取…
気になったのでメモメモ。あとこの機能、Java8からのものだと思ってた。 java7実装の文字列switch 文字列switch構文内で分岐するとする。 public static String getSwitchString(String str) { switch (str) { case "a": return "str is a"; case "b": retur…