Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで4

4.1.2 配列を初期化する

(1)宣言時に内容が決まっていない → newで要素数のみ指定する
   int array = new int[10];

(2)宣言時に内容が決まっている → 値の一覧を列挙する
   int array = { 1, 2, 3, 4, 5 };

(3)宣言後に内容が決まる、もしくは引数として利用する
   array = new int[] { 1, 2, 3, 4, 5 };

4.1.4 配列のサイズを変更する

  • Java5.0 System.arraycopy
  • Java6.0 Arrays.copyOf

コラム Comparatorか,Comparableか?

  • Comparableによるソート → そのクラス自身の最も自然な並び方によるデフォルトソートとして利用する
  • Comparatorによるソート → 業務的に必要な並び方によるソートとして利用する

4.1.6 可変長引数でメソッドを定義する

  • 引数に配列を指定する場合は可変長引数で記述ができるため呼び出し側で new する必要がなくなる

4.2.2 代表的なコレクションと使い分けの基準

4.3.1 Listインターフェースの基本

4.3.4 Listをソートする

  • Listをソートするためには java.util.Collectionsクラスのsortメソッドを利用します

4.3.5 Listを検索する

  • Listを検索するためには java.util.CollectionsクラスのbinarySearchメソッドを利用します
  • binarySearchメソッドを実行する前に対象のListがソートされてなくてはいけません

4.3.6 Listのイテレーション

  • イテレータには要素を削除するメソッドが用意されており、繰り返し処理をしながら、コレクションから要素を削除できます

4.3.8 Listの実装クラスをどう使い分けるか

  • 配列の途中で要素の追加や削除をおこなうことが多い → LinkedList
  • for文などを使った全体的な繰り返し処理が多い → ArrayList
  • 複数スレッドから同時にアクセスする → CopyOnWriteArrayList

4.4.1 Mapを作成する

4.4.4 Mapの実装クラスをどう使い分けるか

  • キーの大小を意識した部分集合を取り扱う場合 → TreeMap
  • 要素の順序を保持する必要がある場合 → LinkedHashMap
  • 複数スレッドから同時にアクセスする場合 → ConcurrentHashMap
  • その他の場合 → HashMap

kameyatakefumi.hatenablog.com
kameyatakefumi.hatenablog.com

ニンジャスレイヤー (11) ~フィスト・フィルド・ウィズ・リグレット・アンド・オハギ~

ニンジャスレイヤー (11) ~フィスト・フィルド・ウィズ・リグレット・アンド・オハギ~ (角川コミックス・エース)

ニンジャスレイヤー (11) ~フィスト・フィルド・ウィズ・リグレット・アンド・オハギ~ (角川コミックス・エース)

シリアスな巻だな。

ストーリー的にはありきたりな感じなんだけど嫌いじゃない。
人間の心の弱さに焦点があたっている貴重な話に見える。

なんか 銃夢 に近い内容だと思った。

後半は1部?のラストバトルが開始したって所なのかな。

ナンシーさんとニンジャスレイヤーの関係がいまいちわかりづらい。
過去の巻で何回か共戦してるけどね。
コミック化が時系列じゃないのと、内容的に省かれている?コミック化していない?のが、やっぱり効いてて「わからん」ってのが先にくるな。

アガタさん 37歳 なのか。
幸あらんことを願う。

kameyatakefumi.hatenablog.com
kameyatakefumi.hatenablog.com

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで1~3

2.4.1 クラスと変数はキャメルケースで,定数はスネークケースで

  • クラス名 → 大文字始まりのキャメルケース(パスカルケース)
  • 変数   → 小文字始まりのキャメルケース
  • 定数   → すべて大文字で、単語をアンダースコアで区切るスネークケース

2.4.4 「不吉な匂い」がする名前に気をつける

  • XxxInfo
  • XxxData
  • XxxManager

3.1.2 プリミティブ型

// Java7以降
long amount = 123_456_789L;
System.out.println(amount); // 123456789

3.1.3 ラッパークラス

  • プリミティブ型からラッパークラスへの変換は、valueOfメソッドを使う
  • プリミティブ型intの初期値は 0 、ラッパー型Integerの初期値は null
  • ファイルや通信から値を読み込む場合は Integer 推奨
  • 数値計算には int 推奨

3.2.7 インタフェース

  • Java8より、処理内容を定義するdefaultメソッドが追加された
  • 定数を定義することができる
  • メソッドの public abstract は省略可能
  • 定数の public static final は省略可能

3.2.8 匿名クラス

public interface TaskHandler {
    boolean handle(Task task);
}
public class AnonymousClassSample {
    public static void main(String... args) {
        TaskHandler taskHandler = new TaskHandler() {
            public boolean handle(Task task) {
                // taskに関する処理
            }
        };
        Task myTask = new Task();
        taskHandler.handle(myTask);
    }
}

3.3.1 instanceof演算子

3.3.2 オブジェクトの等価性

  • hashCodeメソッドによるハッシュ値には、次の性質があります
    • 同じオブジェクトのハッシュ値は、必ず同一となる
    • ハッシュ値が異なる場合には、異なるオブジェクトである
    • 異なるオブジェクトでもハッシュ値が同じになることがある
  • 高速にオブジェクトの等価判定ができる
  • Objects.hash メソッド
  • toStringメソッド
  • Apache Commons の Commons Lang ライブラリ
@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}

kameyatakefumi.hatenablog.com

GlassFish JDBC Connection Pool の作成、接続確認、JDBC Resources に設定

GlassFish 4.1.1 ではブラウザ上から JDBC Connection Pool の作成を行おうとするとエラーが発生する。
なのでコマンドから作成、接続確認を行い、JDBC Resources に設定する。

前提条件

  • Windows Server 2012 R1
  • GlassFish Server Open Source Edition 4.1.1 (build 1)
  • GlassFishのインストール先は C:\Program Files 直下
  • adminのパスワードを記載したファイル passwords.txt は C:\Program Files\glassfish4\bin に配置
  • Oracle Database が対象

手順

Set-Location "C:\Program Files\glassfish4\bin"

# 作成
.\asadmin --user admin --passwordfile .\passwords.txt create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property user={ユーザ名}:password={パスワード}:url="jdbc\:oracle\:thin\:@{マシン名}\:1521\:{サービス名}" {コネクションプール名}

# 接続確認
.\asadmin --user admin --passwordfile .\passwords.txt ping-connection-pool {コネクションプール名}

# JDBC Resources に設定
.\asadmin --user admin --passwordfile .\passwords.txt set "domain.resources.jdbc-resource.{JDBC Resources JNDI名}.pool-name={コネクションプール名}"

GlassFish JDBC Connection Pool の設定値を取得する

ログインして確認するのが面倒なので取得するようにした。

前提条件

  • Windows Server 2012 R1
  • GlassFish Server Open Source Edition 4.1.1 (build 1)
  • GlassFishのインストール先は C:\Program Files 直下
  • adminのパスワードを記載したファイルは C:\Program Files\glassfish4\bin に配置
  • ファイルを選択し右クリック → PowerShell で実行

get_jdbc-connection-pool.ps1

Set-Location "C:\Program Files\glassfish4\bin"

$results = .\asadmin --user admin --passwordfile .\passwords.txt get "domain.resources.jdbc-connection-pool.{コネクションプール名}.property.*"

$user, $password, $url

foreach ($result in $results) {

    if (-1 -ne $result.indexOf("domain.resources.jdbc-connection-pool.{コネクションプール名}.property.user")) {
        $user = $result.split("=")[1]
    }
    if (-1 -ne $result.indexOf("domain.resources.jdbc-connection-pool.{コネクションプール名}.property.password")) {
        $password = $result.split("=")[1]
    }
    if (-1 -ne $result.indexOf("domain.resources.jdbc-connection-pool.{コネクションプール名}.property.url")) {
        $url = $result.split("=")[1]
    }
}

Write-Output ("ユーザ名 :" + $user)
Write-Output ("パスワード:" + $password)
Write-Output ("接続先  :" + $url)

passwords.txt

AS_ADMIN_PASSWORD={adminのパスワード}