IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
忘年会シーズンで肝臓への負担を極力避けている@masudaKです。今回はJavaアプリケーションの運用のポイントに関して、書いてみたいと思います。 このエントリはJava Advent Calendar 2012の22日目のエントリです。 Javaアプリケーションの運用ポイントとは 昨今ではLLのほうが敷居が低く、開発スピードも早いということからか、PHPやRubyなどのLLによるWebアプリケーションが多くリリースされているかと思います。 しかしながら、TwitterがJVMベースの開発にシフトしたように、より深いレベルで実装を行おうとした際にLL以外の実装も一つの選択肢として残っているのは間違いないでしょう。 そのようななかで自分が最もよく触れているJavaでのアプリケーションの運用ポイントについて述べてみたいと思います。 ここでいう「運用」とは、サービスをリリースしたのち、サービスへ
<IT技術の処方箋:クラスパスはどこに通るのか?本当に理解しておこう> コマンドラインからクラスパスを実行した場合、 どこにクラスパスが通るのか? そういう話をきっちりしておきましょう。 例えば、 c:\tmpには、以下の二つのファイルがあって、 Sample.class mysql-connector-java-5.1.7-bin.jar(mysqlのドライバ) Sampleを実行するためには、 mysql-connector-java-5.1.7-bin.jarファイルが必要 (つまり、クラスパスを通す必要があったとします) そういう関係だったとしましょう。 よくやってしまう間違いが二つあります。 ●一つ目の間違い C:\tmp>java -classpath . Sample java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
この記事は、http://d.hatena.ne.jp/higayasuo/20090612/1244772658 の「Ctrl+1とCtrl+Spaceうんぬん」の話にインスパイアされて書いた。Eclipse可愛いよ。Eclipse。 記事長いから、さくっと読み飛ばして、アニメーションgifがあるところから読んでも十分訳にたつと思う。 あと、新人さんとかに写経させるのもいいかも。というか、半分ぐらいうちの新人に勉強のためと思って書いたから。で、実際に写経させて役にたった。 Java は Eclipse などの IDE も含めて言語というか、環境というか…だと僕は思ってる。Commons, Maven なども含めたい(まぁ、そのあたりは、CPANも含めてperlだろ。とか、これは否定する人だらけだろうけど、Rails=rubyということを言う人もいるよね)。 少なくとも僕は、Eclipse
jstack というツールがある。このツールは、現在実行中の Java プロセスのスレッドの状態を取得出来るツールだ。 思ったように性能が出ない時やデッドロックっぽい現象が発生した際はこのツールを使ってスレッドの状態を取得、つまりスレッドダンプを得て、そこから解決の糸口を探す。 今回のサンプルコードは下記コード。 少し長いが、Thread1 と Thread2 クラスはほぼ同一だ。違うのは、リソースをロックする順序。Thread1 クラスは resource1, resource2 の順にロックするが、Thread2 クラスは resource2, resource1 の順にロックする。つまり、これら2つのクラスを同時に実行するとデッドロックを起こす。 public class DeadLockTest { public static Object resource1 = new Obje
yachinco.net Buy this domain. 2020 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy
この前、ふと Object クラスの JavaDoc を見ていたら、こんな記述がありました。 できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。 Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle この「できるかぎり」って、どのぐらいなんでしょうか。 オブジェクト数に比例して、衝突していました。 さくっとコードを書いてみました*1。 結果は以下のグラフの通りです。 (一定数(横軸)のオブジェクトを生成し、ハッシュコードの衝突割合(縦軸)を調べました) オブジェクトが増えれば増えるほど、衝突確率が高まっていきます。 オブジェクトが100万個だと衝突確率は 1.46% でしたが、5,000万個だと 47
HttpClientでリトライ処理を行う場合通常は、「org.apache.commons.httpclient.DefaultHttpMethodRetryHandler」を使う。このDefaultHttpMethodRetryHandlerはリクエスト中にIOExceptionが発生した場合に、リトライ対応がされる。 このとき、DefaultHttpMethodRetryHandlerでは失敗したら直ぐにアクセスが行われるので短い間隔でアクセスすることになる。負荷を分散させるために、待ち状態を作りアクセスする場合は以下のようにするといい。 HttpClient client = new HttpClient(); //リクエストの作成(5回リトライ) GetMethod method = new GetMethod(url); DefaultHttpMethodRetryHandler
ひさびさにHttpClientを使うことになったので、ユーザガイドのチュートリアルをもとにまとめる。 原文サイト ・Jakarta Commons HttpClient Tutorial ちなみに上の原文サイトでは、HttpClient3.0を元に解説している。 Getting Ready HttpClientの依存関係はdependenciesに書いてある。 commons-codecとcommons-loggingが必要。 Concepts 一般的なHttpClientの使い方は以下のステップになる。 HttpClientのインスタンスを作成する。 メソッドにあわせた(ここではGetメソッド)インスタンスを作成する。接続するURLはメソッドのコンストラクタに与える メソッドを実行する レスポンスを読み込む コネクションを開放する レスポンスを処理する HttpClientの接続を開放す
Chromeのページ内検索ライクに結果が表示できる「Glance」プラグインがとても良く、「何で標準じゃないんだ!」と思うくらいだったので、紹介します。 標準から置き換えてしまうのがおすすめです。インストール方法・置き換え方法付き。 また、インクリメンタルサーチを知らない人も、インクリメンタルサーチはとても基本的なテキスト内の移動手段なので、これを機に使い始めることをおすすめします。 目次 1. インクリメンタルサーチとは2. Eclipse標準のインクリメンタルサーチが貧弱3. Glanceの特徴1:他のヒット位置が表示される4. Glanceの特徴2:ヒット位置がスクロールバーに表示される5. Glanceのその他の特徴5.1. 現在のヒット数が表示される5.2. 拡張検索5.3. 検索履歴5.4. 設定ができる5.5. 実はダイアログなどでも使える6. Glanceのインストール方法
Introduction This document provides an overview of how to use HttpClient safely from within a multi-threaded environment. It is broken down into the following main sections: MultiThreadedHttpConnectionManager Connection Release Please see the MultiThreadedExample for a concrete example. MultiThreadedHttpConnectionManager The main reason for using multiple theads in HttpClient is to allow the execu
HTTPClient をマルチスレッド環境で使う際の注意点が以下にある。 HttpClient - Threading http://hc.apache.org/httpclient-3.x/threading.html ポイントは MultiThreadedHttpConnectionManager を使うことにある。 http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.html その他、パフォーマンス一般については以下に記述がある。 HttpClient - HttpClient Performance Optimization Guide http://hc.apache.org/httpclient-3.x/perfo
Introduction By default HttpClient is configured to provide maximum reliability and standards compliance rather than raw performance. There are several configuration options and optimization techniques which can significantly improve the performance of HttpClient. This document outlines various techniques to achieve maximum HttpClient performance. Reuse the HttpClient instance Generally it is reco
MavenはAntに代わるビルドシステムですが、 Antとは異なった設計思想になっている為 最初に使い始めるまでが大変です。 とりあえず、このページではMavenのインストールから 簡単なサンプルプロジェクトのビルドまでを説明します。 インストール まず、Mavenのサイトからバイナリをダウンロードします。 Mavenのソースはここからはダウンロードできません。 CVS経由で行う必要がありますが、通常のMavenユーザならば その必要も無いはずです。 インストールといっても、適当な場所に解凍するだけです。 ここでは、その場所を $MAVEN_HOME とします。 次に、$MAVEN_HOME/bin にパスを通します。 Linuxならば % export PATH=$PATH:$MAVEN_HOME/bin とします。 MavenはJavaで作成されているので 実行にはJavaが必要です。
C言語やPerlのfork&execのように、プロセスを同時に実行したり、同期を取るために待ち合わせる処理を行ってみましょう。 Java言語では、マルチスレッド機能が言語に含まれるため、比較的きれいにプログラムできます。 Javaの場合、2スレッドの同期と、3スレッド以上の同期で、処理が異なります。 マルチスレッドプログラミングも参照してください。 2スレッドの同期 2つのスレッド間の同期は、joinメソッドを使って、より簡単に実現できます。 子スレッドを起動し並行処理を行い、親スレッドが子スレッドの終了を待って、次の処理を行うプログラムを作成してみます。 処理内容は、Hello World!を表示するだけですが、スレッド名も表示するようにしています。 各スレッドの処理の流れは、以下のようになります。 親スレッドは、joinメソッドで、子スレッドが終了するまで待ちます。 親スレッド 子スレ
概要 例題として、配列priceに設定された課税前の価格を一つづつ抜き出し変数workAreaに代入し、workAreaに代入された価格に消費税を課税する処理を行います。課税前の価格を抜き出しworkAreaに代入する処理をpricePutメソッドにて、workAreaに代入された価格に課税する処理をpriceGetメソッドにて行います。 この処理を行う上でスレッドの実行順序を制御せずに実行した場合は、スレッドの実行順序はJavaの動作するシステムのスケジュール機能に依存するため、必ずしもpricePutメソッドとpriceGetメソッドが交互に実行されるとは限りません。その場合、実行結果は以下のようになる場合があります。 課税後価格は105.0円です。 課税後価格は210.0円です。 # pricePutで新しい価格が設定される前に 課税後価格は210.0円です。 # priceGetが
今回は定期実行に便利なタイマーです。 ストップウォッチを例題にTimer処理のポイントを3つ、紹介します。 マルチスレッド処理について TimerやTimerTaskはcancelメソッド実行後は再利用できない Androidの描画手順(UI Threadを使うシングルスレッドモデル) Androidでもjava.util.Timerが利用可能です。 ご存じの通り、Timerは新しいタスク(スレッド/Thread)を作成して、指定した遅延時間がたつと実行されます。 AndroidでTimerを使う際は、とくにスレッド処理について意識する必要があります。 経験上、タイマーを使う際は処理のついでに描画を更新したいときが多いのですが、Activityの描画ロジックがシングルスレッド前提で設計されているためです。 最初に1.スレッドについて紹介します。次に、ストップウォッチを例に2.タイマー処理を
以前HttpClientのタイムアウトについて書いたのですが、ちょっと不十分だと思ったので補足です。 HttpConnectionManagerParams params = new HttpConnectionManagerParams(); params.setConnectionTimeout(3000); // タイムアウトmsec HttpConnectionManager manager = new SimpleHttpConnectionManager(); manager.setParams(params); HttpClient client = new HttpClient(manager); GetMethod method = new GetMethod(url); client.executeMethod(method); だと、Connectionの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く