![]() Memo/Javahttps://dexlab.net:443/pukiwiki/index.php?Memo/Java |
Java †
JMX: モニタリング †
wget http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar timeout 5 java -jar cmdline-jmxclient-0.10.3.jar - localhost:8000 | head -n 5 Windows向けバッチファイル †
JVMはDNS解決するとIPアドレスをキャッシュする †JVMのデフォルトでは起動時にDNS解決したIPアドレスを無期限(-1)で使う。 これはAWS ELB等動的にIPアドレスが変わるサービスではトラブルの原因となるため、DNSキャッシュしないか、短めの値を使った方が良い
grep networkaddress.cache.ttl /usr/java/jdk1.8.0_20/jre/lib/security/java.security #networkaddress.cache.ttl=-1
メモリーダンプを取得する †
スレッドダンプ/ヒープダンプを取得する †ログにも出ないようなエラーが発生した時に便利。
jps:javaプロセスだけ表示 †
入門 †Apache Maven †
複数バージョンをalternativesで切り替えて使う †CentOS5.x, 6.xをインストールする時にjavaパッケージをインストールすると、デフォルトのjavaとして"gcj"がインストールされる。 # 追加。複数ファイルで構成されている場合は--slaveオプションも付ける # --install [シンボリックリンク名] [グループ名] [バイナリ本体] [優先度] \ # --slave [シンボリックリンク名] [グループ名] [バイナリ本体] # ※優先度は大きいほど高い alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_31/bin/java 16031 \ --slave /usr/bin/jar java-jar /usr/java/jdk1.6.0_31/bin/jar \ --slave /usr/bin/javac java-javac /usr/java/jdk1.6.0_31/bin/javac \ --slave /usr/bin/javadoc java-javadoc /usr/java/jdk1.6.0_31/bin/javadoc \ --slave /usr/bin/javaws java-javaws /usr/java/jdk1.6.0_31/bin/javaws \ --slave /usr/bin/jcontrol java-jcontrol /usr/java/jdk1.6.0_31/bin/jcontrol # 手動選択 alternatives --config java # 自動選択 alternatives --set java /usr/java/jdk1.6.0_31/bin/java # 削除 # --remove [グループ名] [削除したいバイナリ本体] alternatives --remove java /usr/java/jdk1.6.0_31/bin/java # 現在の設定 alternatives --display java java - ステータスは手動です。 リンクは現在 /usr/java/jdk1.6.0_31/bin/java を指しています。 /usr/java/jdk1.6.0_31/bin/java - 優先項目 30 現在の「最適」バージョンは /usr/java/jdk1.6.0_31/bin/java です。 # 設定情報 ls -l /etc/alternatives/ バージョン確認 †
md5を文字列として取得 †import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; String md5( String str ) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] dat = str.getBytes(); md.update(dat);//dat配列からダイジェストを計算する byte[] digest = md.digest(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < digest.length; i++) { sb.append(String.format("%02x", 0xff & digest[i])); } return sb.toString(); } System.out.printf("md5: %s\n", md5("1234567890")); // => md5: e807f1fcf82d132f9bb018ca6738a19f 配列内を検索する †
import org.apache.commons.lang3.*; String[] string = {"A", "B", "C"}; System.out.println(ArrayUtils.indexOf(string, "A")); // => 0 System.out.println(ArrayUtils.indexOf(string, "X")); // => -1 配列のコピー †デフォルトでは参照扱いなので、配列のコピーをしようと思っても参照コピーになる
変数のダンプ †
キュー構造 †
スタック構造 †
ソースの文字コード †
空きメモリ量を得る †Runtime.getRuntime().freeMemory() Runtime.getRuntime().totalMemory() プリプロセッサを使う †デバック時だけ有効にしたいコード等を使用する事ができる。
チェックサム †
簡単な暗号化 †
16進数ダンプ †「sun.misc.HexDumpEncoder」がある。 byte[] bytes = new byte[100]; for ( int i=0; i<bytes.length; i++ ) bytes[i] = (byte)i; HexDumpEncoder encoder = new HexDumpEncoder(); System.out.println( encoder.encodeBuffer(bytes) ); try { encoder.encodeBuffer( bytes, System.out ); } catch ( IOException ioex ) {} byte型配列への変換サポート †int a = 1000; byte b[]; ByteArrayOutputStream out = new ByteArrayOutputStream(); DataOutputStream dout = new DataOutputStream(out); dout.writeInt(a); // 変数aの内容を書き出す b = out.toByteArray(); // 書き出した結果のbyte配列を取得 dout.close(); out.close(); 負荷テストツールJMeter †
|
|