社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

java

Java ソート条件を動的に指定してみたい

Java8 で書いてます。 静的に指定 // Item("name", "price", "reviewAve", "reviewNum") Item itemA = new Item("itemA", 1000, 3.3f, 100); Item itemB = new Item("itemB", 2000, 4.5f, 20); Item itemC = new Item("itemC", 3000, 4.5f, 10); List<Item> items </item>…

Java 自作クラスを Map のキーにする

Map のキーは、int 型 や String 型で済ませることが多い。 自作クラスを Map のキーにする機会はたぶん今までなかった。 今回たまたま、それをする機会があったのだけど、get する時に果たして Map に格納されているものと等しいキーとして認識してくれるの…

GCログを取得し、GCViewer で見てみる

0. GCViewer のインストール // git clone でダウンロード $ git clone https://github.com/chewiebug/GCViewer.git// git clone した pom.xml と同じディレクトリで $ mvn clean install// target ディレクトリ内にある jar を実行 $ java -jar gcviewer-1.…

ヒープサイズを変えつつ jstat コマンドで GC の様子を見てみる

jstat コマンドで GC の様子を見てみる - 社内se × プログラマ × ビッグデータ ここで使ったプログラムをヒープサイズを変えつつ GC の様子を見てみます。 $ jstat -gcutil -h10 [pid] 1000ケース1: -Xms1024m -Xmx1024m S0 S1 E O M CCS YGC YGCT FGC FGCT …

jstat コマンドで GC の様子を見てみる

何も特別なことはしていません。最近あまり使うことがなかったので。 サンプル用プログラム 一応、何らかのJavaプロセスを起動する必要があったので、単に1000万要素のList と Map を延々と作り続けるプログラムを用意。 public class GcTest { private stat…

Mockito 一部のメソッドのみをモック化する

ケース 例えば、テストが不可能なメソッド(外部API接続している)のみをモック化して、その他のメソッドはそのまま動作させたい場合など。 方法 Mockito の @Spy を使うと良いらしいです。 @Mock では、全てのメソッドがモック化される。 @Spy では、一部の…

Mockito 取得したオブジェクトのメソッドの戻り値をモックする

@Test public void testGetMemberInfoWithNestedObjectMock() { Member member = mock(Member.class, RETURNS_DEEP_STUBS); // 1 when(member.getPointCard().getPoint()).thenReturn(3000L); // 2 assertThat(member.getPointCard().getPoint(), is(3000L))…

Mockito 引数に応じて返す値を変化させる

テスト(モック)対象のクラス 誕生月のクラス。 誕生石を返却するメソッドも持っているが、誕生石を保持するためのクラス変数はない。 誕生月を引数にしているが、必ず null が返却されるようになっている。 public class BirthMonth { private int month; …

Mockito あるメソッドが任意の値を返す

何も特別なことはありません。最近、色んなモックライブラリを混同してしまっているので、復習を込めて確認しています。 テスト(モック)対象のクラス 仮に以下のようなクラス(Member)があった場合、getPointCard() の返り値(PointCard オブジェクト)を任意…

JVM はどのようにプログラムを実行しているのか

Runtime Data Area に取り込まれたバイトコードは、Execution Engine と呼ばれるシステムで実行されているようです。 バイトコードを読み込み、少しずつ実行していきます。Execution Engine も複数の仕組みで構成されています。 Execution Engine 1. Interpr…

JVM はどのようにデータを保持しているのか

Runtime Data Area と呼ばれる場所に保持されるようになっている。 そこは保持するデータの種類によって、大きく5つに分類されている。 Runtime Data Area 1. Method Area 全ての class データが保持される。 static 変数もここに保持される。 1 つの JVM …

JVM は どうやって class ファイルをロードしているのか

JVM クラッシュの調査をしていると、そもそも JVM の動作についてあまり知らなかったことに気づく。 大まかには、コンパイルによって生成された class ファイルを JVM が取り込んで、解析して、実行する。その class ファイルを取り込むところを Class Loade…

Jackson の JsonSetter は便利なのか試してみる

普段は JSON の取り扱いには GSON を使っていて、特に不便は感じていませんが 今回はお試しで Jackson を使ってみました。概要 JsonSetter は JSON の読み込み時に使います。 読み取るJSONに、エンティティのフィールドがすべて含まれていなくても読み込んで…

Java の puzzle ?

twitter でこんな問題が流れてきました。 public static main(String[] args) { int[] array[][] = { null, {{1, 2, 3, 4, 5}}, new int[3][], {{6, 7, 8, 9. 10, 11}, {12, 13, 14, 15}, {16, 17, 18, 19}} }; // ここに array に含まれている 18 を標準出…

WireMock で IllegalArgumentException(request + " does not have a getUri or getHttpURI method")

WireMock は簡単にREST API のモックが作れるのでとても便利です。 その WireMock を実装中に、表題のエラーに出くわしました。 IllegalArgumentException(request + " does not have a getUri or getHttpURI method") WireMock のソースファイルを見てみる…

Java と kotlin で android の MainActivity

以下、どちらも Android Studio で自動的に生成されたクラスになります。 Java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi…

Java challenge Optional

なにが出力されるのか? public static void main(String[] args){ List<String> list = Arrays.asList("X", "Zero", "Sigma", "Willy"); Optional<String> op = list.stream().findFirst(); Optional<String> op2 = list.stream().filter(e -> e.equals("Signa")).findAny(); System</string></string></string>…

Java challenge methodReference

なにが出力される? public static void main(String[] args) { List<String> castlevania = new ArrayList<>(); castlevania.add("Dracula"); castlevania.add("Alucard"); castlevania.add("Trevor"); List<String> castlevaniaResult = new ArrayList<>(); Consumer<String> c1 = </string></string></string>…

Java challenge MethodReference

なにが出力される? public static void main(String[] args) { List<Homer> homers = new ArrayList<>(); homers.add(new Homer()); homers.add(new Homer()); homers.add(new Homer()); homers.removeIf(e -> e.talk.equals("D'oh")); homers.forEach(System.out:</homer>…

Java challenge thread with lamda

何が出力されるのか? public static void main(String[] args) throws InterruptedException { Runnable r = () -> { for(int i = 0; i <= 10000; i++) { System.out.println(i); } System.out.println("Running!"); }; Thread thread = new Thread(r); thr…

Java challenge ListRemoveIf

何が出力されるのか? public class ListRemoveIf { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(22); list.add(23); list.add(10); list.add(12); list.add(13); list.add(0); list.removeIf(e -> e == new Integer</integer>…

Java challenge Interface

問題:何が出力されるのか? public class BigBangTheory { public static void main(String[] args) { Scientist scientist = new Sheldon() { search() { System.out.println("This is my new spot!"); } }; scientist.search(); } interface Scientist { …

Java challenge Integer

問題:何が出力されるのか? Integer number1 = 5; Integer number2 = 5; Integer number3 = 128; Integer number4 = 128; // True or False ? System.out.println(number1 == number2); System.out.println(number3 == number4); 考え False, False が出力…

マルチスレッドプログラミング - Runnable interface の実装

前の記事では、Thread class を継承する方法を試しました。 マルチスレッドプログラミング - Thread class の継承 - 社内se × プログラマ × ビッグデータ今回は、Runnable interface を実装することで、マルチスレッドを実現していきます。 こんな感じで作成…

ダイレクトバッファについて調べる機会

きっかけは、Apache spark でアプリケーション動かしていた時に、java.lang.OutOfMemoryError: Direct buffer memory に出くわしたこと。 ダイレクトバッファのこともよく理解せずに、spark プログラミングするのは申し訳ない気持ちになったので。。 ダイレ…

Java challenge どこに違和感を感じればよかったのかが分からない

以下のコード、コンパイル通ると思いますか?っていうもんだい。 public class PolymorphismChallenge { public static void main(String[] args) { System.out.println(new Chris().getCharacter().getSimpleName()); } abstract static class STARSSoldier…

Mockito のチュートリアル記事を読んだ感想

これです。 www.discoversdk.com実際のところ、Mockito って Maven のリポジトリを見ても、12/31/2014以降は新しいバージョンが出ていないくらい完成された?フレームワークなのかもしれない。 ただ、この記事は 5/25/2017 に更新されたのもので、個人的にそ…

Java challenge cloneable

Java challenge 既出のコードです。 出力結果を考えてみます。 ソースコード public class CloneableChallenge { public static void main(String[] args) throws CloneNotSupportedException { Human human17 = new Human("cells"); Human human18 = (Human…

Java 例外処理における 11 個の誤り

Java の例外処理における tips を見つけたんですが、自分にはとても分かりやすかったので、感想と共に書き残しておこうと思います。11 Mistakes Java Developers make when Using Exceptions https://www.linkedin.com/pulse/11-mistakes-java-developers-ma…

maven Dependency trees が便利

Maven の便利な機能の一つとして、ライブラリの依存性を確認できるものがあります。あるプロジェクトの中で色んなライブラリを活用していると、そのライブラリ間の依存性が問題になり、プログラムが正常に動作しない場合があったりします。ライブラリAとライ…