タグ

Javaに関するlaughingのブックマーク (8)

  • JavaのTimSortがバグってる件について | さにあらず

    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

    JavaのTimSortがバグってる件について | さにあらず
  • http://www.sigemb.jp/ESS/2014/files/IPSJ-ESS2014003-1.pdf

  • newするとJVM内で何が起こるのかという話(後編)

    前編ではnewしたときのバイトコードについて追いましたので、後編ではバイトコード実行による現象=メモリの使い方やデータ構造について追っていきたいと思います。 なお私はSunやIBMのJVMしか扱ったことがないので、他の実装には当てはまらない内容が含まれるかもしれません。ご了承ください。 データはどこに作られるのか 当然メモリに作られます。もう少し厳密に言うと、JavaHeapに作られます。 そもそもJVMはデータをどのように扱うのか? JVM仕様書のRuntime Data Areasの節に、データを扱う6つの領域についての説明があります。 Program Counter Register JVM stacks Heap (Java Heap) Method Area Runtime Constant Pool Native Method Stacks これらの領域のうち、newされたオブ

    newするとJVM内で何が起こるのかという話(後編)
  • 詳解 Java SE 8 第9回 Stream API その5

    前回までの解説で、ストリームの主要なメソッドを解説しました。今まで紹介した6種類のメソッドを使用することで、ストリームを使用する多くの処理を記述できるはずです。今回は、以下に示す中間操作のメソッドについて解説します。 limit distinct skip sorted limitメソッドはストリームの要素数を制限するためのメソッドで、distinctメソッドは重複を排除するためのメソッドとなります。skipメソッドはストリームの先頭から要素をスキップするためのメソッドです。最後のsortedメソッドはその名の通り、ストリームの要素をソートするためのメソッドとなります。順に紹介します。 limit limitメソッドはストリームの要素数を制限するためのメソッドです。引数は制限する要素数となり、引数の型はlongです。 第5回 Stream API その1で、ストリームの生成にiterate

    詳解 Java SE 8 第9回 Stream API その5
  • Java製形態素解析器「Kuromoji」を試してみる

    概要 Javaの比較的新しい形態素解析器、Kuromoji。 lucene-gosenやGomokuのように辞書内包で、jarを落とせばその場で利用でき、Unidicに対応していて、ソースがLuceneのtrunkにコミットされているという、何かと気になる特徴の持ち主。 複数のモードを持っているようで、Searchモードを使うと「日経済新聞」を「日 | 経済 | 新聞」のように検索で利用しやすい形にばらして解析してくれたり、Extendedモードを使うと未知語をuni-gramにしてくれたりもするらしい。 今日はそんなKuromojiさんの導入から簡易な使い方までをさらっと追いかけてみた。 導入 まずは下記ページからダウンロード。今回はkuromoji-0.7.5.tar.gzを利用。 Downloads - atilika/kuromoji https://github.com/at

  • dremel - Project Hosting on Google Code

    Code Archive Skip to content Search Google About Google Privacy Terms

  • MeCabで日本語WordCount on Hadoop - 自然言語処理 on Mac

    HadoopにはWordCountのサンプルがついてきますが、英語テキスト用です。日語を対象にする場合、MeCabを使って単語分割を行いたいところです。 MeCabにはSWIGのJavaバインディングが用意されていて、JNI経由でMeCabの機能を使えるようになります。このときのMeCabのエンコーディングはUTF-8が前提となります。 http://mecab.sourceforge.net/bindings.html このmecab-javaMacPortsを現在登録申請中です。これを使うと、/opt/local/lib/libmecab-java.dylib と /opt/local/share/java/mecab.jar がインストールされることになります。 $ sudo port selfupdate $ sudo port install mecab +utf8 $ su

    MeCabで日本語WordCount on Hadoop - 自然言語処理 on Mac
  • 経験年数2年半のJavaプログラマがちょっと書くよ。

    はてな界隈では、Javaって、あんま人気無いみたいだけど、ちょっと書かせてよ。 SIerでお仕事してると、派遣とか常駐とか言う形で、色んな会社に行って、違う会社の人とお仕事するんだけど、「経験年数n年(n>3)です」っていう人達が、恐ろしく使えなくてびっくりすることがしばしば。 特に、Java 5以降の機能 拡張for構文Enum可変長引数辺りを全く知らなかったり。 って言うか、Javaの極々基的な知識である equals/hashCodeの実装Serializableの実装Iteratorの実装が全く出来ないんだよね…。 そういうのを知らなくても(出来なくても)業務をこなせちゃう(?)のが、Javaの言語特性だとは思わないけど、こういう人達だらけなんだよね…。 PMが新しい人を採用しようとして、ここら辺の知識を割りと厳し目にテストしたら、候補が10人居たのに全滅で、プロジェクトのスター

    経験年数2年半のJavaプログラマがちょっと書くよ。
  • 1