Java以下は無駄に長い駄文です。なんか書いてみたはいいもののうまくまとまらなかった。ごく一部しか表せなかった気がする。これではInputStreamReaderとかがたくさんオブジェクトを連結しないと使えないめんどくささをなぜ許容できるか、しか表せてない... もともとは「 Java における本質的でない記述がどのように大規模開発に役立つのか - kwatchの日記」がらみの話です。文中にいくつか「アクセッサが簡潔に定義できない」「FileReader に文字コードを渡せない」のような例があって、「それらが改善されたら大規模開発になにか不利益があるのかどうか」という具体的な質問があったので私はそこにコメントしときました。私はコメント欄に「不利益なんてないよ」と回答しました。実際のところ、後方互換性が維持され、言語としての統一性が維持されるなら別に不利益なんてあるわけない。あるとしたらマネ
●スレッドセーフ スレッドセーフとは、複数のスレッドが実行されるプログラムにおいて、データの整合性が保障されていることをいう。この場合のデータとは、クラスのフィールドの状態を指す。状態を持たないフィールド( final属性の基本型、final属性のイミュータブルオブジェクト )は更新されないので整合性を気にする必要はない。 staticメソッドとスレッドセーフかどうかは関係ない。 あるメソッドがstaticか非staticかはそのメソッドがスレッドセーフであるかどうかの判断基準にはならない。それらは互いに独立した概念である。 あるメソッドがスレッドセーフかどうかの基準は、以下の基準によっている。 #そのメソッド内で、あるクラスのフィールドの状態を更新しているかどうか もし、そのメソッド内で上記の操作が行われている場合、synchronized 修飾子をつけるべきである。こうすることで、その
Other Languages: 한국어 Русский 简体中文 About Scala school started as a series of lectures at Twitter to prepare experienced engineers to be productive Scala programmers. Scala is a relatively new language, but draws on many familiar concepts. Thus, these lectures assumed the audience knew the concepts and showed how to use them in Scala. We found this an effective way of getting new engineers up to spe
以下の文章は、Martin Fowler の「Inversion of Control Containers and the Dependency Injection pattern」を、かくたにが翻訳したものです。原著者の許可を得て翻訳・公開しています。 翻訳にあたっては、kdmsnr さんにご協力をいただきました。ありがとうございます。公開後の改訂履歴を記事の最後に記述しています。 Java コミュニティでは軽量コンテナが花盛りである。 軽量コンテナは、異なるプロジェクトのコンポーネントをひとまとまりのアプリケーションとして組み立てることを支援する。 このようなコンテナの根底には、コンポーネントの結び付け方についての共通したパターンがある。 そのパターンのコンセプトは「Inversion of Control(制御の反転)」と、まことに包括的な名前で呼ばれている。 本記事では、このパタ
最近,SQL ばかり書いてて久しぶりに Java 書いたら 「Map ってどうやって回すんだっけ??」 という超初歩的な疑問がwwww 拡張 for 文で keySet 回せばいいかなぁと思ったら id:sett-4 に 「entrySet まわした方が早かった筈ですよ」 って言われた. 勝手な想像で,entrySet って Iterable#iterator() の Iterator#next() で return new Map.Entry(key,map.get(key)); 的な事してて逆に遅いんじゃね??って思ったので 調べてみた. とりあえずソース読んでみる そしたら public Set<Map.Entry<K,V>> entrySet() { return entrySet0(); } private Set<Map.Entry<K,V>> entrySet0() { Se
こんにちは。 deadlockさんの方法を参考にサンプルを作ってみました。 でも、複雑でトリッキーになってしまいました。 もっと、シンプルな方法があればいいのですが・・・。 (コンパイルするときは、全角スペースを半角スペースに変換してからにしてください) package hoge.hoge; import java.net.*; import java.io.*; import java.util.regex.*; public class Test { public static void main(String[] args){ Test test = new Test(); Class testClass = test.getClass(); //リソースとして自分自身を探す。これなら、間違いなくあるはず。 URL url = testClass.getResource("Test.
2つの時間 システム時刻 大抵の計算機は、現在時刻として世界協定時(UTC:Coordinated Universal Time)などの時刻を保持して更新しています。これによって、ユーザが認識している「現在時刻」と互換性のある時刻をプログラム内で使用することができます。ただし、UTC時刻と合わせるための仕組みが必要になります。また、計算機は時刻の進みを次節で説明するクロックから算出して更新しているため、定期的にUTC時刻と同期を行なわないと徐々にずれていくことになります。 UTC時刻は、グリニッジ子午線(経度0度)での真夜中を0時0分0秒として1日の時間を表現します。しかし、ユーザの生活している国・地域(ロケール)では、それぞれロケール毎に基準となる子午線(経度)を決めて時刻を表現しています。例えば日本標準時は東経135度を子午線として時刻を表現します。UTC時刻とは9時間(経度15度につ
前書き お馴染み、hello worldのソース。 class Hello { public static void main(String[] args) { System.out.println("hello world"); } } このコードはコンパイルされると、こんなバイトコードになります。 ca fe ba be 00 00 00 32 00 22 07 00 02 01 00 05 48 65 6c 6c 6f 07 00 04 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 0a 00 03 00 09 0c 00 05 00 06 01 00 0f 4c 69 6e 65 4e
Java仕事で各種フレームワークを比較検討したので、比較用に作った参考資料を公開します。ちなみに現在私は、ドワンゴさんの社内システム開発をお手伝いしてまして、その一環で調べたものです。会社資料じゃなく、私の資料ということでブログで公開してよい、むしろしとけ、とのことなので公開しときます。 今回の案件向けにアプリケーションを画面層コンテナ層データアクセス層に分けて、それぞれフレームワークを選ぶのが目的です。コンテナ層はDIコンテナのうちいずれか、データアクセス層はO/Rマッパーを選ぶことになります。 太枠の範囲が選定対象です。よく本に出てくる杓子定規な階層図とは変えてあります。 次のものを比較検討しました。画面層SAStrutsApache Wicket(ほかにもTeedaとかClick Frameworkとかももともとは候補にあったが、調査が追いつかないので二つに絞った)コンテナSeasa
ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ
Programming Languages Google's Python Class This is a complete online introduction to Python programming, including writen materials, lecture videos, and coding exercises. The class is geared for people with a little bit of programming experience, and is used within google to introduce Python. Below are video-taped lectures from Google Video on various technology areas. These videos are great oppo
Java におけるコード進化パターン (Code Evolution Patterns in Java) asato shimotaki <asatohan at gmail.com> 最終更新日 : 2009/6/21 (2004/4/22 より) [...] For twenty years, I spent two or three hours a day looking at pairs of things -- buildings, tiles, stones, windows, carpets, figures, carvings of flowers, paths, seats, funiture, streets, paintings, fountains, doorways, arches, friezes -- comparing them, and asking my
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く