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

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

java

(自分用) Java Quiz 1

Q1. Java でプログラムされたライブラリで kuromoji とは何か?Q2. kuromoji で文章をトークンに分解するクラスは?Q3. kuromoji でトークンの品詞を返却する Token クラスのメソッドは?Q4. kuromoji でトークンに分解された単語を返却する Token クラスのメソ…

jps: command not found

Docker コンテナで Java をインストールしたが、jps コマンドが使用できなかった。 Dockerfile においてインストールするパッケージに (-devel) を指定すればよい。 ※Docker自体はこの問題に関係ない(変更前: jps つかえない) RUN yum install -y java-1.8.0…

AtCoder ABC162 D - RGB Triplets

atcoder.jp使用言語は”Java (OpenJDK 11.0.6)”です。 この問題では以下の2つの条件を満たさないといけないですが、両方の条件を満たすものを探していると、パフォーマンス要件で合格が難しいようです。condition1つ目の条件を満たす数は、Rの数 × Gの数 × B…

AtCoder Count Triplets

atcoder.jp競技プログラミングはあまり得意ではないですが、たまに挑戦しています。 上の課題については、最初に書いたのが、すべての数字を一つずつチェックする方法です。 以下のようにすぐに書けた(Java)のは良かったですが、for を3重で回しており、処理…

JUnit DataPoint によるテストパラメータ定義

例えば、文字列を引数に取るメソッドをテストするにあたり、色んな文字列でテストしたい場合。 テストする文字列ごとにテストケースを作成するのは大変。 DataPoint を使うことで、それらのパラメータを配列で管理することができ、文字列一つずつを一つのテ…

JUnit Enclosed によるテストケースのグループ化

既に存在しているテストクラスに新しいテストケースを追加するとき、どの位置に入れようか迷うときがあります。 出来れば、後で見たときに分かりやすい位置に入れたいですが、そもそも整理されていなければそれも難しいです。そこで Enclosedを使うことで、…

Java 例外(Exception) テスト

例外(Exception)のテストの書き方でよく知られているもので、Ruleアノテーションを用いた ExpectedException を使う方法があります。 例外のメッセージまで評価してくれるのがいいですね。 public class RuleTest { @Rule public ExpectedException expected…

java.util.stream のソースを読んでみる filter 編

stream については、package java.util.stream; の JavaDoc には以下のように書かれています。 * A sequence of elements supporting sequential and parallel aggregate * operations. 並んでいる要素に対して、直列または並列処理をサポートするみたいなイ…

JGiven のレポート機能を試す(Java, JUnit)

JGiven ではいくつかのレポート機能が用意されているようです。 テキストのレポートを無効にする デフォルトでは、コンソール上にテキストのレポートが表示されます。 Something should happen Given サーバーが止まっている時に When プログラムを実行する…

JGiven をユーザーガイド見ながら試す(Java, JUnit)

JGiven とは 公式サイト から引用するとJGiven は、開発者にフレンドリーで実用的な Java の BDD ツールです。 ドメインエキスパートにとって読みやすいレポートを生成してくれます。 JGiven を使おうとしたきっかけ Java のプロジェクトに関しては、普段 JU…

Java 無名(匿名)クラスを意識して使ってみる

Javaでプログラムの基本は、クラスのインスタンスを生成し、そのインスタンスから目的のメソッドを呼ぶところにあると思いますが、結果的に一度しかインスタンス化されないクラス(オブジェクト)があったり、ある特定のクラスからしか必要とされないインス…

Java8 日時APIがわからない(現在時刻の取得編)

もうすぐ、JDK8(java8)の商用サポート期限が2019年1月で終了するという中、未だに Java8 日時API に混乱させられています。。 ※この手の情報は色んなところに既にまとめられていますし、自分は5年くらい遅れている気がしますが、自分の備忘録のために覚えた…

Apache Spark2.3 ブロードキャスト変数のパフォーマンス

ブロードキャスト変数は、リードオンリーの変数を効率的に各 Executor に送信する仕組みです。Apache Spark2 にて、ブロードキャスト変数のパフォーマンスをローカル環境で確認してみました。 スレッド数は 3 を指定しています。 ※ sparkConf.setMaster("loc…

Spark2 AccumulatorV2

Spark2 で Accumulator を使おうと思ったら、deprecated になっていました。 代わりに AccumulatorV2 を使うようにとのこと。 https://spark.apache.org/docs/2.3.0/api/java/旧 Accumulator と同じように使えるのかと思っていたら、AccumulatorV2 を継承し…

Java インターフェース 実装してみる

前回の記事で、インターフェースのメリットが解った?ところで、実装をしてみます。 blueskyarea.hatenablog.com今回は、データベースからデータを取り出すところに、Dao インターフェースを実装します。 インターフェースの定義 Dao をインターフェースを定…

Java インターフェース メリット わからない

もう何度も実装したことがあるにも関わらず、そのメリットがいまいちピンときていなかったりします。 ネットで検索すると、メリットについて語っている色々な情報が出てきます。 その時は何となく理解できた気になるのですが、しばらくするとまたアレなんだ…

Java シングルトンデザインパターン singleton design pattern

singleton design pattern 実装する機会は今までに何度もあったものの、改めて順序だてて考えてみます。 ”そのクラスのインスタンスは常に1つしか存在しないことを保証する”こと。 実装にあたって、気をつけたい点 1. どのようにして、インスタンス化を行う…

JMockito 一部のメソッドのみをモック化する(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com モック化するクラス public class PointCard { public PointCard() { } public String getMemberName() { return "hoge"; } public long getPoint() { return 1000L; } } テスト対象のクラス public cl…

JMockito 引数に応じて返す値を変化させる(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com テストコード(JUnit) @RunWith(JMockit.class) public class BirthMonthTest { // Without mock @Test public void testGetBirthStoneWithoutMock() { BirthMonth birthMonth = new BirthMonth(2); ass…

JMockito あるメソッドが任意の値を返す(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.comMockito 版の記事と同じクラスをテスト対象にしました。 テストコード(JUnit) import mockit.Expectations; import mockit.Mocked; import mockit.integration.junit4.JMockit; @RunWith(JMockit.class)…

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 一部のメソッドのみをモック化する(Java モック)

ケース 例えば、テストが不可能なメソッド(外部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 引数に応じて返す値を変化させる(Java モック)

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

Mockito あるメソッドが任意の値を返す(Java モック)

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

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

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