我々の時代における、未解決のプログラミングの問題とは何でしょうか。新しい HTTP クライアントライブラリが絶えず発生するという事実から考えれば、HTTP の呼び出しが挙げられます。一般的に、新しい機能や非同期 API が注目されがちですが、実際の IO の部分、特にパフォーマンスに関してはどうでしょう? どちらかといえば詳細なケース 比較する側面が多すぎるので、総合的なパフォーマンス比較は行いません。私のユースケースは、潜在的に大きなファイルを早いネットワークからダウンロードするという、若干細かい内容です。リモートサーバーからダウンロードする際は、ネットワーク接続がネックになりがちです。では、ローカルネットワークにサーバーがあって、バンド幅が問題で無くなった場合はどうでしょうか? IO vs NIO の関係に変化はあるでしょうか?この点に関しては「NIO の方が遥かに早い」といったものか
I would like to make BIT (Built in tests) to a number of server in my cloud. I need the request to fail on large timeout. How should I do this with java? Trying something like the below does not seem to work. public class TestNodeAliveness { public static NodeStatus nodeBIT(String elasticIP) throws ClientProtocolException, IOException { HttpClient client = new DefaultHttpClient(); client.getParams
最初は誰しもがファッ!?となるんですよねロガーって。 いずれtree-tipsで公開しようと思っている、solrのプロジェクトを今作っています。mavenでjarを管理している訳ですが・・ なんだこのロガーの数は!! commons-logging、log4j、slf4j-api、jcl-over-slf4j、logback-classic・・・・、こいつら一体何が違うんだ!どう使い分けるんだ!そもそも必要なのか!?となりました。 昔はcommons-logging+log4jというのがトレンドだった訳ですが、今はslf4j+logbackがトレンドになり、jdkも1.4から1.7になり、これらトレンドが推移する過程で、いろいろなjarが旧式に依存してしまい、旧式依存を解決するためにアダプタが登場し始め、mavenでjarを収集すると大抵両方入ってしまい、カオスになっているのです。 特にs
今更感のある話題ですが、初心者=僕が、ドハマリして、いろいろ面白い現象に遭遇しました。 内容はいたって基本中の基本のため、仕事でプログラミングしている者としては恥ずかしい限りですが、後に同じようにハマる人がいたときのために、メモを残します。 やろうとしたこと: もともとこんなコードがあって set = new TreeSet(); for (DBの取得結果) { set.add(取得した値); } この後、setをつかって、UIを生成していたのだけど、順番が違うよって指摘を受けた。DBには、よくある、「表示順」のカラムがある。SQLならorder byで取れる。TreeSetの場合はCompatatorを渡せば良い。ということで、こんなHashMapをつくって Map<String, Integer> idToSortOrderMap = new HashMap<String, Integ
HttpComponentsは、昔はCommons HttpClientという名前で配布されていたJavaでHTTPリクエストを行う為のライブラリ。 Cookieを使った通信とかが簡易にできるので、クローラーなどを作る際には重宝する。 HttpComponentsの公式サイトはこちら http://hc.apache.org/ 簡易な通信の例。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.Cli
以下に、プロファイリング対象となるjavaサンプルプログラムとそのプロファイリング結果を示します。 プロファイル結果は適宜省略して記述します。また、文中、赤太文字で記述されている部分は説明のための補足であり、実際のファイルには出力されません。 → サンプルプログラム プロファイリング結果(sites指定): JAVA PROFILE 1.0.1, created Mon Jul 14 08:35:46 2003 Header for -Xhprof ASCII Output Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved. (略) -------- THREAD START (obj=a3fb78, id
Maven2は依存関係を自動解決してくれたりと便利そうなんだけど、jarで作ったプロジェクトの実行方法がよく分からなかったので調べた。mvn packageは依存ライブラリを含まないしマニフェストの自動生成もしてくれないのでした。 あとjavaコマンドの-classpath指定は-jarと併用できないんだってね。というわけで解決策は以下の2つ。assembly-pluginでもできるらしいけど未確認。 mvn exec:javaコマンドで直接実行 単に開発環境で実行するだけならこれが一番簡単。pom.xmlに以下を追記する。 <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>メインクラスをフ
JMeter はJakarta プロジェクト 1 で開発が進められている、パフォーマンス計測用のJavaアプリケーションです。 そのJMeterについて解説していきます。 1 [2012/5/23追記] 2011/12/21にてJakarta Projectは廃止されました。このプロジェクトはApache Projectに移管済みです JMeter INDEX JMeterの基本 1.1. JMeterとは 1.2. インストールと実行 1.3. 簡単なテスト リスナー 2.1. リスナーとは 2.2. リスナーの使用法 2.3. 結果を表で表示 2.4. 統計レポート 2.5. グラフ表示 2.6. その他のリスナー 設定エレメント 3.1. 設定エレメントとは 3.2. HTTPリクエスト初期設定 3.3. HTTP認証マネージャ 3.4. HTTPヘッダマネージャ 3.5. HTTP
世間ではオワコンと揶揄されることも珍しくない Java ですが、Java を初めたばかりのエンジニアがチェック例外と非チェック例外の使い分けについて「ベストプラクティスないの?」と調べたのをまとめてみました。 エントリまとめ どのエントリも Java についての深い洞察と開発の実践現場での生きた経験をもとに書かれていて大変に勉強になりました *1 エントリ中からリンクされているエントリもぜひ一読されることをおすすめします。 検査例外と非検査例外(実行時例外)をどう使い分けるか - Lino Blog Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して Javaのチェック例外はクソ仕様 - やさしいデスマーチ 例外の扱いについて その2 - じゅんいち☆かとうの技術日誌 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤
<Read-Write Lock> (1)ReentrantReadWriteLock Read-Write Lockは「読む処理」と「書く処理」に分けてロックを取ります。 「読む処理」X「書く処理」または「書く処理」X「書く処理」の時にはロックをかけますが 「読む処理」X「読む処理」の時にはロックをかけません。 読み込み処理が多い時または読み込み処理に時間がかかる場合など、一般的な排他制御より効率が期待されます。 java.util.concurrent.locks.ReentrantReadWriteLockクラスを使えば、Read-Write Lockの機能が容易に実現できます。 Read-Write Lockのパターンは lock try { 処理 } finally { unlock } のようにfinally節で必ずロックを開放しなければいけません。 ●Read-Write L
Configuration¶ To enable javasphinx for your existing Sphinx configuration add 'javasphinx' to the list of extensions in your conf.py file. javasphinx can be configured to cross link to external sources of documentation using the javadoc_url_map option, javadoc_url_map = { 'com.netflix.curator' : ('http://netflix.github.com/curator/doc', 'javadoc'), 'org.springframework' : ('http://static.springso
駄目だ。大問題だ。 long t1 = System.currentTimeMillis(); long t2 = System.currentTimeMillis(); System.out.println(t2-t1); 結果はなんとでるか? 99.9%以上の確率で0が表示される。そもそもSystem.currentTimeMillis()は時刻をミリ秒で返す。1行のプログラムを実行するのに1ミリ秒もかかってたら、たかだか1000行分動いただけで1秒かかってしまう。今のコンピュータはそんなに遅くない。 そもそもドキュメントをちゃんと読むと ミリ秒で表される現在の時間を返します。戻り値の時間単位はミリ秒ですが、値の粒度は基本となるオペレーティングシステムによって異なり、単位がより大きくなる場合があります。たとえば、多くのオペレーティングシステムでは、時間を 10 ミリ秒の単位で計測します
kzhirataです。蒸し暑い日が続いていますね。 最近、社内で「継続的デリバリー」の読書会をやっています。 AWSなど簡単・迅速にインフラを調達できる時代になり、デプロイメントパイプラインを早い段階で構築することができる環境が整ったんだなぁと改めて実感します。 デプロイメントパイプラインを作るために欠かせないことの1つが、DBの構成管理です。 以前DBの構成管理をしていなかったために、リリース作業自体に時間がかかったり、リリースバグを出したことのある人も多いのではないでしょうか。(私も経験してます...) 今回は、JavaのDBマイグレーションツールを2つ試してみました。 FlywayとLiquibaseです。すでに、ここにFlywayとLiquibaseの比較記事がありますが、自分の感想を書きます。 1. インストール・環境構築について FlywayとLiquibaseもインストールの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く