Java

Oracle vs Googleのやつ

http://qiita.com/TakahikoKawasaki/items/037320792092bb5a1f62 単純に疑問に思ったことなど。 Androidの非互換性 従来Javaと非互換な実装で、従来Javaのエコシステムが破壊されてんの?私が知らないだけで、今時のJavaライブラリは#ifdefみたいに、VM実装…

numberOfLeadingZeros

ref:http://d.hatena.ne.jp/kaiseh/20081114/1226665036 それ、なんて Integer#numberOfLeadingZeros ? ドキュメントをみると、コメントに出てくる「Hacker's Delight」(邦題:ハッカーのたのしみ)をもとに実装しているらしい。

equals

equals について補足。Java ではインスタンスの比較に == か equals を用いるわけだけど、どちらもデフォルトでは参照の同値性、つまり同一性を比較する。すなわち、"a" == "a" は常に false を返す。また、new Object().equals(new Object()) も、常に fals…

Sleep/Apache Velocity

ref:http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0803b.html#D20080317-5 Sleep に Apache Velocity ですね。 Sleep は Perl と Objective-C の影響を受けた文法だとか。よく知らないけど、それなりに有名ではないかと。 Apache Velocity はありてい…

ローカル変数の型 #4

まだ続くのか? 変数宣言の変更コストについて話をしているんじゃないです。変数の型を抽象型で指定すれば実装クラスを変更してもよいことが明確になりますが、型を具象クラスで指定すればその利点がなくなることを問題にしています。これはローカル変数に限…

ArrayList と LinkedList

どうでもいいけど。 速度よりもメモリ効率が優先したくなったら ArrayList より LinkedList のほうがメモリ効率が良いなんてことは多分ない。 STL の vector と list なら list のほうが効率が良いこともあるかもしれないけど。 なぜかはちょっと考えてみる…

ローカル変数の型 #3

微妙なことかもしれませんが、ローカル変数を抽象型で宣言する利点があります。 例えば、 List<String> list = new ArraysList<String>(); 以下色々な処理として、プログラムを書いていけば、速度よりもメモリ効率が優先したくなったら List<String> list = new LinkedList<String>(); 以下色</string></string></string></string>…

ローカル変数の型 #2

ref:http://d.hatena.ne.jp/kwatch/20080309/1205022466 メソッド内で直接クラス名を指定して new しているのに、型の抽象/具象で結合の疎蜜を論じるのは無意味ではないかと思う。 実のところをいうと、メソッド内で生成したローカル変数をわざわざダウンキ…

Java と巨大メモリ/ファイル

Java の配列の要素数、インデックスは int じゃないとだめなので、最大で 2^31-1 個の配列しか取れない。これってそろそろ深刻な問題になっているような気がするのであるが、あんまり聞かないなぁ。一応、Bug Database にはのっているけど、Vote が少ないし…

ArrayList vs Vector (vs LinkedList)

そういえばこの間、Vector と ArrayList のパフォーマンスがどうのという話が出たので、Japex を使って計測してみた。 ref:http://odz.sakura.ne.jp/benchmark/list/ add はあんまり変わらないけど、get は Vector のほうが4倍遅い。まぁ、排他制御のせいだ…

ローカル変数の型

ref:http://cappuccino.jp/keisuken/logbook/20080304.html#p01 ref:http://d.hatena.ne.jp/lethevert/20080305/p2 ref:http://cappuccino.jp/keisuken/logbook/20080307.html#p03 メソッドの引数は戻り値はともかく、ローカル変数はわざわざ抽象的な型で宣…

素数表

ref:http://www.algo.ics.tut.ac.jp/~yusuke_abe/html/2008-02-19.html#2008-02-19-1 Project Euler をやっている人は素数関係の部分をライブラリ化するに違いないと思う今日この頃ですが、エラトステネスの篩だろ、常識的普通に考えて。 % time java Prime …

Genericsとcast

ref:http://d.hatena.ne.jp/morchin/20080221/p1 あぁ、書き方が悪っかったですね。cast が入るのはメソッドを呼ぶ側であって、実装側ではないです。 例えばこんなの。 public class Foo { public static void main(String[] args) throws Exception { Metho…

Problem 160

Hadoop はドキュメントが少なすぎ。ソフトウェア自体は良くできているっぽいのにもったいない。 まぁ、ということで、Project Euler の Problem 160 を解くプログラムでも。マジックナンバー多すぎだけど気にしない。まぁ、examples の PiEstimater でも読ん…

Generics と template

ref:http://d.hatena.ne.jp/morchin/20080220#p1 Generics で Duck type は無理です。 基本的には kinaba さんが書かれている通りで。 Dのテンプレートは、仕組み的には C++ のそれと全く同じです。引数の違う実体は全部別のインスタンスとして、コンパイル…

local class

いまさら Java のブロックローカルなクラスは無名でなくてもいいことを知った。おおよそ 10 年もつかっているのに! public class Foo { public static void main(String[] args) { Int[] ints = new Int[] { func(1), func2(2), func3(3) }; for (int i = 0…

Java で pipeline

ref:Java BlockingQueueで遊ぶ:パイプラインごっこ - 檜山正幸のキマイラ飼育記 Java での Pipeline 実装としては commons-pipeline というのがあって結構いいんだけど、なかなか Sandbox からあがってこないんだよなぁ。

interface の method の modifier

ref:interfaceのメソッドって - mono-hateの日記 そいや、public つけるのは推奨されないんだっけ?私はつけているなぁ。えーと、Java Language Specification でも見てみるか。 Every method declaration in the body of an interface is implicitly public…

Java脳

そういえば、というか。 話をよーく聞いてみると、クラスとオブジェクトの区別がついていなかったり、継承と集約(とコンポジション)の区別がついていなかったりして、「もっと多態性を活かしたクラス設計にしなさい」と言うと、「多態性ってなんですか?」と…

Proxy を使ってオブジェクトをコピー可能にする

昨日のネタに関して少し思いついたことを。 配列には使えないけど、インターフェースを宣言している場合には java.lang.reflect.Proxy を使えば Dynamic Proxy を生成できる。そうすると動的に copy メソッドを追加される。 public interface Copyable<E> { E c</e>…

Java Web Start

Java Web Start って知名度低いのね。J2SE 1.4 の頃から Sun の JRE には同梱されているのになぁ。Sun の JRE がインストールされている Windows なら「フォルダオプション」->「ファイルの種類」で .jnlp に Java Web Start Launcher が関連付けられている…

配列の clone は getMethod では取得できない

ref:予定は未定Blog版 - 配列のclone へぇ、配列の clone メソッドは getMethod では取得できないんだ。初めて知った。配列の特殊扱いっぷりがわかって面白い。 で、実は clone は Object に protected メソッドとして定義されているからそもそも毎回 getMet…

SSH

ref:http://d.hatena.ne.jp/habuakihiro/20070925#1190701456 まじで? ためしに Google で検索してみると上位に出てくるのは軒並みアジア圏の言語で書かれたページばっかりだけど。AltaVista でも同じく。 むぅ、前提無しに使って意味が通じるほど市民権を…

Commons とかライブラリとか

ref:http://cappuccino.jp/keisuken/logbook/20070903.html#p02 ref:http://arton.no-ip.info/diary/20070903.html#p01 Java の標準のライブラリは妙にプリミティブな上に、なにかユーティリティ的なクラスがあまり用意されていないというのもあって、Common…

Throwable を catch して null チェックを省く

ref:lethevert is a programmer - Ruby: えっと・・・これはネタですか? まつもとさんのまつもとさんの紹介しているコードがあれすぎる、というのは同意なんですけど。 String readData(File file, String default_value) { BufferedReader in = null; try …

nullable

それなんて Maybe、 とか思った。 いや、Haskell では String か Nothing、な型は Maybe String で表せるのである。で、パターンマッチしないと String として扱えないという仕組み。

JDBC と Collection API

ref:http://d.hatena.ne.jp/bleis-tift/20070808/1186564456 ref:http://d.hatena.ne.jp/bleis-tift/20070808/1186558404 JDBC でのクエリの結果は Collection で返してくれというのは分からないでもないけども、クエリの結果を Collection にしてしまうとそ…

定数との比較 #2

昨日の話の補足。 なんとなく、PMD や Checkstyle ではどうなるんだろう、と思ったので Eclipse Plugin で確認してみた。 PMD strigValue.equals("hoge") だと "Position literals first in String comparisons."(文字列の比較ではリテラルを最初に置け) と …

定数との比較 #3

Javaであって、英語ではないのだから、英語だと思って読み下して違和感が・・・なんてナンセンスじゃない?プログラミング言語を英語に似せたいのなら、COBOLを使うべきだと思います。 まぁ、もっともなんですけど、あれはあくまで比喩で、主語(メッセージレ…

定数との比較

正直、 if (stringValue.equals("hoge")) と if ("hoge".equals(stringValue)) に気持ち悪さの差違はないと(個人的には)思う。 まーた、あれな話題で局所的に盛り上がっている。面白い。 さて、普通に英文に書き下したとして、 if x equals 10 then ... と…