サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
kensir0u.hatenadiary.org
この前ケント・ベックさんの実装パターンという本を読んだんだけども。 ソースはコミュニケーションをとるように記述する必要があると述べていた。 その中で、○○Implのネーミングはひどいと言っている。 たしかに実装クラスとインターフェースで区別を付けたいというのはわかる。 ○○Implだと実装クラスが複数ある場合は区別できないのも困る。 それのサブクラスを作って拡張するときにはなんと命名するのだろう? ○○ImplExtとでも、○○ImplSubとでも付けるのだろうか? 考えてみるといろいろ疑問に感じてきた。 そこでJavaのパッケージはどうなんだろうと思って調べてみた。自分の経験からJavaパッケージに○○Implって付いてるのはあまり見たことないので・・・無いのではないかなと思ったけども。 結論から言うと20クラスが○○Implだったり○○ImplFactoryとか命名されていた。(※イン
JSR315:Servlet3.0のPublic Reviewがでています。 Servlet3.0ではプラガブルWeb.xmlや Annotational Servlet マッピングが導入されます。 そこでアノテーションでのServletの設定方法を調べてみました。 Servlet3.0で導入されるアノテーションは以下の4つの アノテーションです。 import javax.servlet.annotation.WebServlet; //1. import javax.servlet.annotation.ServletFilter; //2. import javax.servlet.annotation.WebServletContextListener; //3. import javax.servlet.annotation.InitParam; //4. 1.サーブレットに付加
下記の様にするとjava.lang.StackOverflowErrorが発生する。 Map m = new HashMap(); m.put(m, "1"); //←この瞬間、この”m”は終了した。 //エラー m.put("", "1"); //これもエラー m.remove(m); //これもエラー m.containsKey("1"); これがHashtableだと起きない。 Map m = new Hashtable(); m.put(m, "1"); m.put("", "1"); m.remove(m); m.containsKey("1"); たとえば、あるプログラムにおいて内部的にHashMapを使ってるとする。 それを取得して、取得したHashMapにそのHashMap自身を格納してやるだけでそのプログラムを終わらせる事ができます。・・・・なんてことは意味ないし危険なの
Switchを使うと以下の二つの命令のどちらかがコンパイラによって生成される。 lookupswitch - switch文のcase式の値が不連続である場合値を探しながらジャンプ先を探す。 tableswitch - switch文のcase式の値が連続である場合キー値をindexとしジャンプ先アドレスを値とする配列を作り高速にジャンプする。 つまり、特に問題がないかぎり、値を連続で定義するほうが、高速化できそうだ。 全然関係ないけども、下記の書き方はコンパイル可能。 int l = 1 ; l |=l ;
プログラマーはコンパイラに頼っている。 要件定義書や設計書等のドキュメントはコンパイルエラーでの指摘がない。 そこんとこ、自戒すべきだ。
http://d.hatena.ne.jp/higayasuo/20090612/1244772658 http://d.hatena.ne.jp/Nagise/20090616/1245156879 結局、刀と薙刀みたいな関係なんではないかと思う。 どっちも斬るという機能を有する。薙刀の場合は刀身に棒を備え付けた結果、遠くの敵も斬ることができる。 でも、どっちが使いやすいかという話になると結局、使ってる立場の意見はいつも自分の使ってる武器、高じて自分の流派が最高と考えるもんなんだよなぁ・・ ほかにもこんな例え ライフル銃より拳銃のほうが機動性は高いけども、長距離での狙撃には向かない。 けれども拳銃に高性能照準スコープをオプションで付けるから狙撃でのデメリットを解消できる。けれど、高性能照準スコープの使い方という学習コストは発生する。 で、ここからが本題。 学習・鍛錬に費やした時間はその人
情報源はこちら。 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5351 http://sunsolve.sun.com/search/document.do?assetkey=1-66-245246-1 http://www.unicode.org/versions/corrigendum1.html 問題は、Unicodeに準拠していないバイト配列でも中途半端に処理しているのが原因みたい。 対象はJRE6 update 10 以前のバージョン 検証したのは異なるバイト配列をUTF-8デコードした結果が同じ値となってしまうケース。 Sample Aが正常ケースでSample Bは異常ケースなんだけども、結果が同じとなった。 まぁJREを最新に更新すれば問題は解消されるみたい。 public class UTF8 { publ
昨年末にApache POIのOffice2007対応版のベータ4版が出たのでためしてみた。 ・旧バージョンとの比較(EXCELの場合) Apache POI 3.2系=HSSF(〜Excel2003) Apache POI 3.5系=HSSF(〜Excel2003)+XSSF(Excel2007) 3.5系ではHSSFとXSSFをまとめるスーパーインターフェースができてる。 パッケージ的には「SS」 H”SS”F⇒SS X”SS”F⇒SS の部分を取ったんだろう。 以下、スーパーインターフェース org.apache.poi.ss.usermodel.Cell org.apache.poi.ss.usermodel.Row org.apache.poi.ss.usermodel.Sheet org.apache.poi.ss.usermodel.Workbook で、xlsxとxlsを統
アムダールの法則によると 速度向上比=人数/{並列できる仕事+人数×(1−並列できる仕事)} となり、 1.仮に並列できる仕事を5割とし、10人で作業をする場合に 速度向上比=10/{0.5+10(1−0.5)} ≒1.82倍 約180%増し 2.これを20人にしてみよう 速度向上比=20/{0.5+20(1−0.5)} ≒1.90倍 約190%増し 結果からすると速度は人数が増えても大して変わらない。 さらにいうと2.は遊んでいる人が増えている。 人月計算するときに、よく人と期間の因子をもって見積もる人がいるけども それだけじゃかならず、実際の期間よりも短く見積もったり、実際よりも少ない人数を見積もったりする。 チームで仕事をするというのならばこれをみんなに教えてあげよう。 ※理論上では並列できる仕事が10割だったら人数×仕事=速度向上 比だけども、並列できる仕事、つまり他者と関連がない
JDK7のJavaDoc発見 どんな機能が入っているかあとで見てみよう。 コレ⇒http://download.java.net/jdk7/docs/ と、思ったら中身の充実度が・・・・orz Java7でG1ガベージコレクションが実装された。 Java6までのは YOUNGGCとOLDGC の2段だったんだけども、 YONUGGCでは停止はなしでOLDGCで2度の処理のためにすべての機能を停止している。 それで長い待ち時間が発生していた。 Java7のG1GCでは YOUNGGCで1度機能停止、 OLDGCで1度機能停止ってことで停止タイミングを分散している。 これで、停止時間が安定的になり映像とかはより滑らかになると思う。 あとメモリ領域をJava6まではOLDとYOUNGに物理的に分割していたけども Java7では同じ領域に存在しているみたい。ってことでより大きなメモリ を確保できる
このページを最初にブックマークしてみませんか?
『kensir0uのしくみ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く