InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example
![Java 9's New HTTP/2 and REPL](https://cdn-ak-scissors.b.st-hatena.com/image/square/55b9e37046e826418fdc21b1a3d3b3a038f9cd87/height=288;version=1;width=512/https%3A%2F%2Fres.infoq.com%2Farticles%2FJava9-New-HTTP-2-and-REPL%2Fen%2Fsmallimage%2Fimage_code.jpg)
Python で実装され、その後 Java にも移植されたソートアルゴリズムである TimSort が盛大にバグっていることが発見されました。 このバグがどのようにして発生するのかについては、以下のドキュメントを精査して下さい。 TimSort fails with ArrayIndexOutOfBoundsException on worst case long arraysOpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst caseどんなことが起こるのか#通常の利用では想定しえない場所でArrayIndexOutOfBoundsExceptionが発生します。 例えば、以下のようなスタックトレースになります。 Exception in thread "main" java.l
LMAXという会社はおそらくFX業者で、筆者はLMAXの開発者の講演を、InfoQの動画で何度か見たことがあった。 彼らは非常に特異な集団で、さしずめ「Javaのスピード狂」という感じだ。 印象的なのは、シングルスレッドで仕事を片付けることを強調している点だ。 「Javaならマルチスレッドで並列処理すれば性能が出ると広く思われているが、我々の仕事においてはシングルスレッドが最速だ」というような主張を何度も見た。 ゴールドマンサックスといいLMAXといい、やはり多額の金が動く会社でガチでJavaをやっている連中はカリカリにチューニングするため、技術的には非常に面白い。 彼らがコアのライブラリをOSS化してくれるというのは、金融業界を否定的な目で見る筆者からすると複雑だが、悔しいことに参考になる。 LMAX DisruptorはJavaのライブラリだ。Producer/Consumerパターン
WEB+DB PRESS の Vol.83 で、負荷テストの記事を書いたので是非読んで頂きたい。 2014/10/24 発売ですので、既に購入頂いてる方も多いと思います。 電子書籍版もありますので物理的な媒体に興味がない方は PDF を買って下さい。 WEB+DB PRESS Vol.83@Gihyo Digital Publishing今回の記事における対象読者について#JMeter だ、JMeter を撃滅せよ。 負荷テストスクリプト書くのに GUI なんぞいらないのですよ。 素人騙すんなら、それでいいかも知らんけども、そういう事じゃないでしょう。 GUI なしでも書けますよって、そのヤヴァイ XML を俺に見せるな。 負荷かけてる最中にサーバより先に死んだりするような負荷テストツールを後生大事に使うのをやめて欲しいのです。 今回は、新進気鋭のツールであるところのGatlingを紹介し
参照: http://stackoverflow.com/questions/2348399/why-does-java-net-urls-hashcode-resolve-the-host-to-an-ip 公式ドキュメントによると: public boolean equals(Object obj) … 2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 java.net.URL#equals
JavaでHttp接続を実装する際に、java.netパッケージを使用することになるが、 JakartaCommonsのHttpClientを使用すると、より高機能、簡易に実装が可能。 準備 HttpClientのクラスライブラリをダウンロードし、jarファイルにパスを通しておく。 それと、HttpClientを使用するには以下のクラスライブラリが必要になるため、これらもダウンロードしてパスを通しておく。 ・commons-codec ・commons-logging サンプルを以下に記す import java.io.IOException; import java.io.InputStream; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.common
本ブログの読者の皆様方におかれましては、JavaのArrayListとLinkedListの 実装の違いにより性能に差があることは、当然のように熟知のことと存じあげます。 しかし! 実際にいかほどの差があるのか、それを数値で説明できるという方はどれほどいらっしゃるでしょうか。 いきなり丁寧語の煽りでスタートしました @cero_t です。 そう、今日のテーマはマイクロベンチマークです。 たとえば、 文字列を + で結合すると遅い。 ArrayListの初期化時にはサイズを指定したほうが良い。 ArrayListはループ処理が得意、LinkedListは途中の追加が得意。 など、よくあるパフォーマンスのプラクティスについては既に知っているという方も多いと思うのですが 実際に何倍ぐらいの差なのか(どれぐらいのオーダーの差なのか)を数値で話すことができるという方は、 あまり多くないように思います
Google Cloud Messaging for Android (Google) 「Google Cloud Messaging (GCM)」は、サーバーから端末にプッシュ通知を送信するための仕組みで、「Cloud to Device Messaging (C2DM)」と呼ばれていた技術の後継、iOS端末の「Apple Push Notification Service (APNS)」に相当する技術です。C2DMの時は実装に苦労したものですが、GCMではAPIが整理されるとともに、アプリ側・サーバー側ともにJavaのライブラリが用意され、非常に簡単に使用できるようになりました。 ただサーバー側のライブラリ(gcm-server.jar)をそのまま使うと、手元の環境では全く問題なく通知されるのですが、Google App Engine Java (GAE/J) にデプロイして通知を送信
Maven のセントラルリポジトリやリムーブリポジトリ(※)で提供されていないサードパーティ Jar や俺俺ライブラリを pom.xml 上でどう管理するかという話です。 管理の仕方によって、開発者や管理者(環境構築をするようなアーキテクトっぽい人)の仕事が変わってくると思います。 ※ http://daipresents.com/2009/maven2_internal_repository_webdav/ 方法としては、主に以下の3つがあると思います。 ローカルリポジトリに Jar をインストールする インターナルリポジトリを立てる system スコープを使う 1. ローカルリポジトリに Jar をインストールする Jar ファイルをローカルのリポジトリに手動でインストールする方法。 以下のコマンドを叩くことで、自分のローカルリポジトリに Jar ファイルがインストールされる。 mv
logbackで日次ローテーションをする時のサンプル。 <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> </rollingPolicy> <encode
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く