読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

JMap でヒープダンプを取得する

JDK に付属の JMap というコマンドラインツールで、ヒープメモリ内の情報を出力できる。 参考:jmapユーティリティ 「ダンプ」という言葉に馴染みがなかったので今一度調べたが、要は「その瞬間」の情報をまとめて吐き出す、ということ。JMap は実行中の Jav…

JStat でヒープに関する統計情報を取得する

JDK 付属のコマンドラインツールである JStat を使うと、ヒープに関する統計情報を文字列で取得できる。 リアルタイムにグラフで推移を確認できる JConsole と用途に応じて使い分けると良い。 参考:jstat まずは対象の Java のプロセス ID を jps.exe で調…

JConsole で Java アプリの CPU・メモリ使用状況を確認する

JDK をインストールすると、標準で JConsole というものがついてくる。これを使うと、起動中の Java アプリの CPU やメモリの使用状況をリアルタイムに確認できる。 今回説明する環境は Windows 前提だが、Linux 系でも大差ない。 参考:JConsoleの使用 - Ja…

Java の replace() と replaceAll()、ついでに StringUtils#replaceOnce()

String#replace() は正規表現を使わない。 String#replaceAll() は引数を正規表現として扱う。 /* replace() : 正規表現未使用 */ String src = "hoge?fuga."; String dest = src.replace(".", "-"); // dest => "hoge?fuga." /* replaceAll() : 正規表現で…

static final な List や Map をサクッと宣言しつつ、add() や put() も許さない

Java の final 修飾子は代入を禁止するだけで、インスタンスの内容を変更できなくするわけではない。そのため、リストの内容を追加・変更させないつもりで static final などと打つだけでは、List#add() ができてしまうのだ。 // 要素を変更されたくない Lis…

Key と Value を入れ替えた Map を取得する方法:Java と JavaScript 編

Key と Value を入れ替えた Map (連想配列) を作る方法を調べた。 Java も JavaScript も、PHP でいうところの array_flip() みたいな標準メソッドは存在しなかったので、簡単なやり方を説明する。 参考:array_flip関数:配列のキーと値を入れ替える | 今日…

Java と JavaScript で配列やリストや連想配列 (マップ) に値があるか調べる記法の比較

TL; DR オブジェクトに対して、指定の値が存在すれば true を返してくれるようなメソッド類を調べた。 Object Java JavaScript Array Arrays.AsList(array).contains(value) Array#includes(value)Array#indexOf(value) >= 0 List List#contains(value) - Ke…

Java の import しなくても良い理由がイマイチ分かってなかった

Java を会社の新人研修で勉強した時に疑問に思って、講師に聞いてみたら「確かに不思議ですね、持ち帰り調べてみます」と言われて、後日答えを聞いたのに細かいことを忘れてしまってまた気になってるヤツ。 例えば、以下のようなコード。Mather と Pattern …

PreparedStatement を close しないとカーソルが close されない?:PreparedStatement と ResultSet の関係

前回の続き。 neos21.hatenablog.com Java プログラムで PreparedStatement を使って SQL を発行した時も、Oracle DB 側では内部的にカーソルオブジェクトが生成されていることは分かった。 ではどうして、「ORA-01000 最大オープン・カーソル数を超えました…

PreparedStatement を close しないとカーソルが close されない?:まずは PreparedStatement とカーソルをおさらい

Oracle DB に DBUtils を使う Java プログラムから接続していて、とある処理をさせていたら「ORA-01000 最大オープン・カーソル数を超えました」というエラーが出た。 FAQ - Oracleを使用していると「ORA-01000 最大オープン・カーソル数を超えました」と表…

Java:for 文の構文をもっかい考える

Java における単純な for 文の構文をもっかいおさらいする。言語仕様的にできることを見直して、可能性を把握しておく。 for 文の基本構文 for( 初期化式 (initialization); 条件式 (condition); 継続式(increment/decrement) ) { // 処理 } これが基本構文…

Java:ブレースでローカルブロックが作れる

イマイチ良い単語が出てこなくてタイトルがよくわからない感じ。 「ニホンノエスイー」にありがちな手続き型の Java コードを見てたら珍しいモノを見付けた。 public hogeMethod(String str1, String str2) { // 前処理 { // 1つ目の引数の操作 String str =…

Java・JavaScript でコメントアウトするコードを切り替える小技

どこで見たネタだか忘れたけど、ときどき便利なので紹介。 コード A とコード B のどちらかの行をコメントアウトさせて、2つの行の処理を交互に見ながら開発をしたいような場合に、Java の単一行コメントと複数行コメントの書式を利用してその切り替えを簡単…

Java の List の初期値を1行で設定する方法

Java における List で、変数の宣言時に初期値を一緒に入れる方法がないかな~と思って探してた。 普通に書こうとするとこうなっちゃって鬱陶しいよね。 List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); ちょうどドンズバな Gist があった</string></string>…

Java で特定の文字と文字の間の文字列を取り出す

Java コードで、Oracle の接続文字列 jdbc:oracle:thin:@127.0.0.1:1521:oracle からホスト部分 127.0.0.1 を取得したい。 // 接続先 URL : 実際はこれを引数に受け取るイメージ String str = "jdbc:oracle:thin:@127.0.0.1:1521:oracle"; final String _pre…

フレームワークの都合に引っ張られて DB の型を全て VARCHAR にしたりしない

Struts1 系は、画面とのデータのやり取りには基本的に文字列を使用するため、画面上の入力値を受け取る Form Bean のプロパティは String にしておくことが通例。 例えば、1つのチェックボックスで何かの On/Off を表現するような項目が画面にある場合。 Str…