タグ

興味深いとJavaに関するryoasaiのブックマーク (6)

  • if-elseの最適化(フラットなif-else if-elseを、二分木に展開) - ITコンサルの日常

    テキスト ハイパフォーマンスJavaScript 作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型購入: 9人 クリック: 1,176回この商品を含むブログ (34件) を見る お題 4.2.2 if-elseの最適化に載ってるのですが、 if(value == 0) { return hoge + "a"; } else if(value == 1) { return hoge + "b"; } else if(value == 2) { return hoge + "c"; } else if(value == 3) { return hoge + "d"; } else if(value == 4) { return hoge + "e"; } else if(value == 5) { ret

    if-elseの最適化(フラットなif-else if-elseを、二分木に展開) - ITコンサルの日常
  • 「Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート」に触発されて - SHUT THE FUCK UP AND WRITE SOME CODE

    ryoasai さんの「Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート」に触発されたので、 Java の勉強がてら、同様なプログラムを作成してみる。 Step 5 このプログラムには、以下のような処理が繰り返し現れる。 try { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); while(true) { System.out.println("何かを入力しろ"); System.out.print(" [x, x, x, E]>"); String s = reader.readLine(); if (s == null) break; if (s.equals("E")) break; if (s.equals("x")) funcX(); else

    「Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート」に触発されて - SHUT THE FUCK UP AND WRITE SOME CODE
    ryoasai
    ryoasai 2011/02/23
    オリジナルの問題に比べてStep4までのコードは、もともと丁寧に書かれていますし、分量的にリファクタリングの練習としてはちょうど良いサイズかなと思います。これからの工夫が面白いところ。
  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
    ryoasai
    ryoasai 2011/02/23
    「そのため、synchronizedが不要と確信するためには、分岐などをもれなく相当回数通過するなどの条件が達成される必要があるらしい。」
  • 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌

    追記: id:Nagiseさんからエントリいただきました。 というわけで、ややしつこく感じられるかもしれないけど誤りだと思うところはツッコミを入れさせてもらいます。人に恨みがあるとかそういうわけじゃなくて、説に用事があるってところをご理解いただければ幸いです。 こちらも建設的な議論をしたいと思っているので、もちろん、そのつもりです。 中間のクラスが〜という話題は、開放閉鎖原則を破って境界面に変更を加えた場合に話であって、検査例外が開放閉鎖原則を破るわけじゃない。 なるほど。よくわかりました。 目的と手段で分離してみた場合、「開放閉鎖原則」を「検査例外」を使って破っているだけであって「検査例外」自体の存在が「開放閉鎖原則」を破っているわけでない。「開放閉鎖原則」を破るのは「非検査例外」でもできるわけで、直接の因果関係は成立しないということですね。これは、私の論じ方に問題あったようです。ここに

    「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌
  • JavaでActorっぽいものを作ってみる - かとじゅんの技術日誌

    前回 JavaScalaの"アクターのようなもの"を作ろうということだったので、早速 作ってみました。目的は、Actorの概念に触れることで、並行処理プログラミングの勘所を学ぶことなので、その前提で読んでいただければと思います。 リソース共有モデルには限界がある 「オブジェクト指向プログラマが次に読む Scalaで学ぶ関数脳入門」には、複数のスレッド間でリソースを共有する「リソース共有モデル」の限界について触れています。 「リソース共有」モデルを前提としている限り、プログラムの規模が大きくなるに従って、並行処理にまつわる複雑さや問題に対処することが困難になってきます。 これに対して、もしスレッド間で同一リソースを共有しないで、協調処理を行うとしたらどうでしょうか。リソースを共有しなければ、データ不整合やデッドロックなどの、並行処理で問題とされていることを回避できるのです。メッセージパッ

    JavaでActorっぽいものを作ってみる - かとじゅんの技術日誌
    ryoasai
    ryoasai 2011/02/19
    一見無駄なようですが、アクターのイディオムをJavaで実装してみることで、Scalaの仕組みがより深く理解できると思います。
  • 動静同名メソッド - 倭マン's BLOG

    確認 その1 ちょっと Java クラスの確認。 1つの Java クラス(Groovy クラスも同じ)に、名前とシグニチャが同じインスタンス・メソッドと static メソッドを同時に定義するとコンパイル・エラーになります: // Java public class MyPojo { public static void say(){ System.out.println("Hello, STATIC world!"); } public void say(){ System.out.println("Hello, INSTANCE world!"); } } 確認 その2 Java クラス(Groovy クラスも同じ)に static メソッドが定義されているとき // Java public class MyPojo { public static void say(){ Syste

    動静同名メソッド - 倭マン's BLOG
    ryoasai
    ryoasai 2011/02/13
    Groovyの動的なメソッドの実現方法を知っていないと不思議かもしれない。
  • 1