タグ

javaに関するshase_labのブックマーク (57)

  • javaのジェネリックスでTとEの違いが良く分かりません。 - OKWAVE

    「T」「E」などの型パラメータ名は、コンピュータにとっては何であっても違いは有りません。変数名などと同様です。(もちろん「for」などの予約語は使えませんが。) 動作さえすれば良いのであれば、「HOGE」などでもかまいません。 例) public <HOGE> HOGE name(HOGE h) { ・・・・・ } ですが、「HOGE」などでは書いた人の意図が分からず、プログラムが理解しづらくなります。 ですので、(未来の自分も含めた)そのプログラムを読む人が分かりやすいようなものにするのが定石です。 標準ライブラリで例を挙げると、下記の様になっています。 ・ java.util.Collection<E> の場合は要素(Element)の型を指定するので「E」 ・ java.util.Map<K,V> の場合はキー(Key)と値(Value)の型を指定するので「K」「V」 標準ライブラリ

    javaのジェネリックスでTとEの違いが良く分かりません。 - OKWAVE
  • Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して

    Generics(総称型)のプログラミングはJava言語(バージョン5以降)で最も習得が困難な文法*1の一つです。私自身、時々どうやって文法エラーを修正すべきか悩むこともあるくらいで、実際かなり複雑です。Genericsの導入は賛否両論なので、実際Javaに導入したのは間違いだったという議論もある一方で、静的な型安全性を重視するプログラマーもいます。 好き嫌いはともかくとして、Javaプログラマーとしては、一度きちんとGenericsの正しい使い方(=使い勝手のよい総称型やメソッドの正しい定義方法)について勉強しておいてもよいと思います。 Java Generics and Collections: Speed Up the Java Development Process 作者: Maurice Naftalin,Philip Wadler出版社/メーカー: O'Reilly Media

    Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して
  • 多バイト文字の変換とかいわゆる文字化けとその対処に関する自分用のまとめ - Bouldering & Com.

    webアプリはいろいろ関わってきてるはずなのに、このあたりの話を全然理解してなかったことに愕然とする。 普通のひとには常識なんだろうけど、今回調べたことで体得できたよ。 追記 少し理解が進んだので追記。 TomcatのGETパラメータのデフォルトの挙動 iso-8859-1とみなしてURLエンコードしてくれる。また、GETパラメータには、HttpServletRequest#setCharacterEncodingは適用されない。 URIEncoding URI文字列に多バイト文字があった場合にどの文字コードとみなしてURLエンコードするかを設定する。パラメータに限らず、URIのファイル名とかもこれに則る。 useBodyEncodingForURI これをtrueにすると、GETパラメータであっても、HttpServletRequest#setCharacterEncodingを適用させ

    多バイト文字の変換とかいわゆる文字化けとその対処に関する自分用のまとめ - Bouldering & Com.
  • ドメイン駆動設計 | システム設計日記

    テスト駆動開発 和田卓人(t-wada)さんによる『テスト駆動開発』の新訳版が出版されました。 オブジェクト指向でソフトウェアを開発するのであれば、このとマーチンファウラーの『リファクタリング』は必読書だと思います。この古典ともいえる『テスト駆動開発』が和田さんの手によって新訳版として復刊されたことは、ほんとうにすばらしいことです。 このが出版された経緯と、和田さんはじめ関係者の方々のご努力については、和田さんの、このブログをぜひ読んでいただければと思います。 新訳版『テスト駆動開発』が出ます 新訳は、単に原著が日語で読めるようになっただけではありません。和田さんの手によって、原著にはない新たな価値が付け加えらました。 一つは、サンプルコードの工夫です。 できるだけ省略はしない変更箇所を目立つようにした各章末にその時点での全コードを記載する これらの工夫により、に書かれた内容が、

  • List#subListの罠 - mtoyoshi開発メモ

    String#subStringって結構メジャーなメソッドだと思うんですけど、List#subListって知名度どれくらいかなー。subStringの感覚で使ったら痛い目あうよー・・・ってそんなことどれだけの人が知ってるんだよ!!というお話です。 このシンプルなプログラムの実行結果がどうなるか予想できるだろうか。 List<String> list = new ArrayList<String>(); list.add("dog"); list.add("cat"); List<String> list1 = list.subList(0,1); // dog List<String> list2 = list.subList(1,2); // cat list1.add("pig"); System.out.println(list); System.out.println(list1)

    List#subListの罠 - mtoyoshi開発メモ
  • Java WebアプリでもわかりやすいURLを! - Url Rewrite Filterの使い心地

    WebアプリケーションではURLのわかりやすさも重要とされている。たとえば http://www.example.com/diary/diary.cgi?year=2007&month=05&day=12 というURLよりも http://www.example.com/diary/2007/05/12 というURLのほうがユーザにとってもわかりやすいし、検索エンジンにもクロールされやすいといわれている。 Apacheでは後者のURLへのリクエストを、サーバ内で前者のURLに書き換えて処理を行うための"mod_rewrite"というモジュールが存在する。mod_rewriteを使えば既存のWebアプリケーションに大きな修正を加えずに、後者のようなアクセシビリティの高いURLを提供することができる。また、サーバ上でWebサイトのフォルダ構成を変更した場合などもmod_rewriteを使用する

  • 続 Struts 2入門一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    続 Struts 2入門一覧
  • 作りながら学ぶJavaアプリケーションフレームワーク一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    作りながら学ぶJavaアプリケーションフレームワーク一覧
  • FreeMarker | 株式会社エイチ・オー・エス

    パッケージJava製品開発担当の大です。こんにちは。毎日暑いですね。 前回に引き続き、FreeMarker Template Language(以下 FTL)について書きます。 今回は、名前空間と変数のスコープに関するお話です。

    FreeMarker | 株式会社エイチ・オー・エス
  • Protocol Buffers - m-namikiの日記

    Protocol BuffersはGoogleが開発したシリアライズフォーマットです。次案件で利用することになりそうなので、勉強を兼ねてメモを残しておきます。 ダウンロードとビルド こちら からパッケージをダウンロードしました。今回ダウンロードしたのは「protobuf-2.4.1.zip」と「protoc-2.4.1-win32.zip」です。Win32の方にはJavaライブラリのビルドに利用する「protoc.exe」が含まれています。C++の環境がある場合は自分でビルドできるので不要ですが、そんな環境はないのでダウンロードしました。 なお、ここではC:\javaで「protobuf-2.4.1.zip」と「protoc-2.4.1-win32.zip」を展開します。 win32の方を展開したら「protoc.exe」が存在するディレクトリを環境変数のPathに追加しておきます。(ここ

    Protocol Buffers - m-namikiの日記
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • jstatコマンドがうまく動かないのだが - 銀の鍵 (The Silver Key)

    [root@server ~]# jstat -gcnew `/sbin/pidof java` 30772 not found [root@server ~]# [root@server ~]# ps -ef|grep java tomcat   30772     1  0  2011 ?        02:01:40 /usr/local/java/bin/java -Djava.endorsed.dirs=/path/to/tomcat/common/endorsed -classpath /usr/local/java/lib/tools.jar:/path/to/tomcat/bin/bootstrap.jar:/path/to/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/path/to/tomcat

  • TeasOne Coffee » Blog Archive » TOMCATの監視

  • ジェネリクスの基礎と応用 JJUG CCC 2012 Fall

    1. ジェネリクスの基礎と応用 Twetter : @nagise はてな : Nagise 所属  (株) Abby  java-ja  北陸エンジニアグループ 2. ジェネリクスのスコープ メソッドの中でのみ有効なジェネリクス public static <T> void hoge(T t) { … } インスタンスの中でのみ有効なジェネリク ス class Hoge<T> { Tt; ... }

    ジェネリクスの基礎と応用 JJUG CCC 2012 Fall
  • 現在時刻を取得する方法 - 地平線に行く

    現在時刻のミリ秒を取得するのに、こういうやり方を何度か見ました・・・。 Date date = new Date(); long now = date.getTime(); Calendar calendar = new GregorianCalendar(); long now = calendar.getTimeInMillis(); 日付の取得なら Date や Calendar を使いますが、ミリ秒の取得だけなら わざわざオブジェクトを生成する必要はありません。 特に、カレンダーの生成は重い(Date より 30倍遅い!)ので、やめた方がいいです。 long now = System.currentTimeMillis(); これで大丈夫です。 Date や Calendar のコンストラクタ内でもこのメソッドを呼んでいます。 ちなみに、データベースに使うタイムスタンプ型の生成も

    現在時刻を取得する方法 - 地平線に行く
  • JavaのBooleanクラスの==比較

    JavaはObject同士を==で比較した際の戻り値がちょっと厄介です。 よくあるのが、Stringを==比較した場合に、同じ文字列が入ってるのに結果がtrueになったりfalseになったりするというものです。 では、BooleanのObjectを==で比較した場合は、どんな感じの結果になるのでしょう。 コード内で使っているBoolean.TRUEというのは、Booleanが持っているpublic static finalでtrueなBooleanオブジェクトです。 /** Boolean Objectをいろいろ比較してみる */ Boolean b; // new Booleanすると、新しいObjectが生成される // なので、==比較の結果はfalseになる b = new Boolean(true); System.out.println( b == Boolean.TRUE )

  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクション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型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Singleton(シングルトン)

    イントロダクション オブジェクトを生成するnewは非常に負荷のかかる処理ですので、使いまわしが効くオブジェクトを毎回newするのはパフォーマンス上問題です。 たとえば、後述のファクトリメソッドパターンで取り上げるファクトリは毎回newする必要がないため、初めに生成したオブジェクトを再利用すぺきです。 また、データベースのコネクションプール数を制限したい場合、データベースアクセスオブジェクトの生成数を制限する必要があります。 このようにオブジェクトの生成数を制限したいときは、シングルトンパターンの出番です。 このパターンを使えば、オブジェクトを外部から直接生成させることを防ぐことができ、クラス自体に同時に生成できるオブジェクトの数を管理する機能を持たせることができます。 パターン解説 シングルトンパターンの特徴は、シングルトンクラスのオブジェクト生成を、シングルトンクラス自身が提供するオブジ

  • Spring におけるアノテーションと設定ファイルの使い分け - SpEL, util:properties, AOP - なんとなくな Developer のメモ

    Spring ではアプリケーションの構成(Bean 定義)を設定するための方法がいくつか用意されており、どれを使えばよいのか悩ましいところですが、個人的には以下のような使い分けが良さそうだと考えています。 DBの接続設定等のパラメータ系はプロパティファイルに記述 Bean定義はアノテーションを使ってコードに記述 コンポーネントのスキャン、AOP、プロパティファイルの読み込み等のセッティング系は XML ファイルに記述 というわけで、以下のような環境を使って MongoDB を使うサンプルを書いてみました。 Maven 3.0.2 Spring 3.0.5 MongoDB 1.7.5 サンプルのソースは http://github.com/fits/try_samples/tree/master/blog/20110205/ パラメータ系 MongoDB の接続設定をプロパティファイルに記述

    Spring におけるアノテーションと設定ファイルの使い分け - SpEL, util:properties, AOP - なんとなくな Developer のメモ
  • Struts 2入門(4)~インターセプターという仕組み~

    前回と前々回では、主にバリデーション処理を解説しました。そのなかで、Struts 2でのバリデーション処理は、Actionメソッドが呼び出される前に自動的に実行されると説明しました。 じつは、自動的に実行される処理こそがインターセプターで、バリデーションもインターセプターの一つなのです。 インターセプターとは アメリカンフットボールの用語に、「インターセプト」があります。パスしたボールが守備側に横取りされることをいうのですが、Struts 2のインターセプターも、アメフトと同じようなイメージです。Actionメソッドが呼び出される前に、複数のインターセプターが割り込み、制御を横取りして実行されます。 図中の、ActionProxy、ActionInvocation、Resultは、Struts 2の核となるオブジェクトです。Servletコンテナからのリクエストがあると、(図ではActio

    Struts 2入門(4)~インターセプターという仕組み~