約 5,444,908 件
https://w.atwiki.jp/ab3104/pages/15.html
java - * java に関する メモ書きです。。。 * java に関する メモ書きです。。。 o java基本 o Web Frame works o O/R マッピング o DI o アプリケーションサーバ java に関する メモ書きです。。。 注意: 嘘ばかり書いてある可能性があります。 java基本 Web Frame works * wicket * JSF? o VisualWebPack NetBeans5.5-VisualWebpack? または Creator2Update1 に関するメモ O/R マッピング * S2DAO * Hibernate DI * Seaser? * SPRING アプリケーションサーバ * jetty6.1 * tomcat
https://w.atwiki.jp/kurowal/pages/13.html
java関連のブックマーク java覚え書き入出力 条件分岐 キャスト 書式 時刻表示 java関連のブックマーク java Platform, Standard Edition 6 javaの関数を調べれる javaの勉強 現在勉強中のページ EclipseとCVSの連携 Eclipseを用いて開発を行う際のCVS利用方法 java覚え書き 入出力 キーボード入力 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine; ファイル読み込み BufferedReader br = new BufferedReader(new FileReader(new File(fileNameIn))); ファイル書き込み BufferedWriter bw = new BufferedWriter(new FileWriter(new File(fileNameOut))); 書き込みの最後に bw.flush(); bw.close(); をしておくこと。 エラー出力 e.printStackTrace(new PrintWriter(new FileWriter("log.txt"))); 条件分岐 swich文 switch( dayOfWeek ){ case 月 System.out.println("Monday"); break; default System.out.println("そのような曜日はありません"); } キャスト String - int Integer.valueOf(str).intValue(); 継承関係にあるクラスのダウンキャスト(親のオブジェクトを子のクラスにする) if(親の参照変数 instanceof 子のクラス名){ 子のクラス名 参照変数 = (子のクラス名)親の参照変数; } 書式 配列の宣言 データ型[] 配列名 = new データ型名[要素数]; データ型[] 配列名 = {初期値, 初期値, ・・・, 初期値}; インターフェース(インターフェース側) 修飾子 intergace インターフェース名{ 定数の定義 抽象メソッドの定義 } (戻り値 メソッド名(データ型 変数名);//例) インターフェース(実装側) class クラス名 implements インターフェース名{ メソッドのオーバーライド } 抽象クラス(スーパークラス側) abstract class クラス名{ } 抽象メソッド(スーパークラス側) public abstract 戻り値の型 メソッド名(引数リスト); (メソッド定義の後が{}でなく、;になっているので注意) 時刻表示 表示フォーマットの変更 String dateStr = (new SimpleDateFormat("yyyy/MM/dd HH mm ss")).format(new Date());
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/volvicn55/pages/7.html
Java Java JavaJava
https://w.atwiki.jp/funf/pages/6.html
外部リンク NetBeans 開発環境。ノーマル状態だとEclipseより好き。 内部 JAVA 初期設定いろいろ JAVA 参照型変数 JAVA 可変長配列 JAVA ファイル操作 JAVA JUnit JAVA 日付型 JAVA 文字列
https://w.atwiki.jp/gen3/pages/20.html
java javaドキュメンテーションコメント多言語フィルタ 2013-11-23 以下はあまり役に立たないアイデア。javascriptにでも既定の言語を検出して表示するdivを選択するようなコードを書くほうがすっきりする。 javadocを多言語化する方法として、ドキュメントコメントを例えば次のように書いておき、 /** * div lang="ja" これは日本語のコメントです。 * 第二行目から詳細コメントになるのはjavadocの仕様です。 * /div * div lang="en" This is a English comment. * The second line and belows are details, because of javadoc specification. * /div */ void Dummy() {} これを処理するdocletで例えば -sellang ja とすれば void Dummy() これは日本語のコメントです。 第二行目から詳細コメントになるのはjavadocの仕様です。 となり -sellang en,ja とすれば void Dummy() This is a English comment. The second line and belows are details, because of javadoc specification. これは日本語のコメントです。第二行目から詳細コメントになるのはjavadocの仕様です。 となるようなカスタムdocletが比較的簡単に作れる気がする。 docletの処理内容は、単に div lang=xx のブロックを選択したり並べ替えたりするだけで、あとは標準のjavadocの処理に任せればよい。 まあ、@xxxみたいなタグもあるので span lang="ja" みたいなのも処理できたほうがいいのかな。 というわけで書いてみたらわりと目処が付いたみたいなので、そのうち公開予定。 javaドキュメンテーションコメント多言語フィルタ javaでMP3ファイルのID3タグを読む JavaでID3タグを見る件に関しては、Java ID3 Tag Libraryが老舗らしい。 ファイルオブジェクトを引数としてコンストラクタを呼べば、 取得したオブジェクトからID3の中身の曲名とかアルバムタイトルとかを各種getメソッドで取得できるらしい。設定も出来る模様。日本語環境で扱う場合は文字エンコードに注意しなければならないこともある様子だが。 java.util.logging.Loggerの設定がgetConnectionで書き換わるバグ...ではなかった 以下は System.setProperty("hsqldb.reconfig_logging", "false"); とすればよい、とHSQLDBのヘルプフォーラムで回答をもらった。以下は同様にはまるかもしれないヒトのために整理しながら残しておく。 getConnectionの後に、java.util.Loggerのメッセージが出なくなるとかで悩んだ。 以下、再現可能なコード。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; /** * 最小構成。新規のパス(URL)を与えて新たにDBを作成すると、Connectionの後のLOGが出ない。 * @author usr1 */ public class LogTest { private static final Logger LOG = Logger.getLogger("TEST"); public static void main(String[] args) { LOG.setLevel(Level.ALL); Connection c = null; try { LOG.info("getConnection前"); System.out.println(LOG.getParent().getHandlers()[0].getFormatter().getClass().getName()); c = DriverManager.getConnection("jdbc hsqldb file //" + args[0] + ";shutdown=true;", "SA", ""); System.out.println(LOG.getParent().getHandlers()[0].getFormatter().getClass().getName()); LOG.setLevel(Level.ALL); LOG.info("getConnection後"); c.close(); } catch (SQLException e) { } } } 上記のコードにて、DBのパスを書き換えた直後の実行(つまり新たなDBを作成して接続する場合)では、以下のようにログメッセージ「getConnection後」が出力されない。Loggerのフォーマッタやハンドラが書き換わってしまっている。 (1回目) C \ java -jar LoggerTest.jar c \test\test99 11 23, 2013 1 00 29 午後 newpackage.LogTest main 情報 getConnection前 java.util.logging.SimpleFormatter org.hsqldb.lib.BasicTextJdkLogFormatter (2回目) C \ java -jar LoggerTest.jar c \test\test99 11 23, 2013 1 00 44 午後 newpackage.LogTest main 情報 getConnection前 java.util.logging.SimpleFormatter java.util.logging.SimpleFormatter 11 23, 2013 1 00 46 午後 newpackage.LogTest main 情報 getConnection後 上のように常に二回目以後が大丈夫ならまだいいのだが、これとは違うもっと大きなコードの中では二回目以後も出力されずに困る。 Logger.getGlobal().setLevel(Level.INFO) も試したが効果は無い。 ネットを検索するとJava SE 7 の logger にはバグがあるそうだが、それとの関係は不明。 NetBeansのデバッグモードで見るとLOG.manager.propsは正常なら9個の配列で、 LOG.manager.props[3] "java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter" とコンソールへの出力が標準のフォーマッタに設定されている。 これが新規のパスにgetConnectionした後だと、 java.util.logging.ConsoleHandler.formatter = org.hsqldb.lib.BasicTextJdkLogFormatter という結果になり、DriverManagerがログの設定を書き換えたまま戻していないようである。 HSQLDBのヘルプフォーラムで質問すると速攻で System.setProperty("hsqldb.reconfig_logging", "false"); で解決すると回答をもらった。HSQLDBは2,3のシステムプロパティを使っているとのこと。
https://w.atwiki.jp/n-3104/pages/11.html
とりあえず、Java関係のページ。 以下について、ちょっとずつ記述する予定。 専用ページを設けているコンテンツ WebアプリSpring Seaser Wicket Servlet Ajax DAOiBATIS Hibernate jPersist その他JUnit Eclipse HTMLParser Swing ある日付から日付までの定型処理 メール送信 パッケージ名 前からちょっとしたプログラムを書く際のパッケージ名をどうするか悩んでいたが、パッケージ名を登録できるサイトがあったので、登録してみた。 http //www.java-conf.gr.jp/wg_bof/package/
https://w.atwiki.jp/kimikage/pages/14.html
Java ■IDE Eclipse Standard/SDK Version Kepler Service Release 1 Build id 20130919-0819 http //www.eclipse.org/のダウンロードページから入手 ■Java JRE7 http //java.sun.com/javase/ja/6/download.htmlから入手 メモ eclipse操作メモ フレームを表示する レイアウトマネージャ ボタンクリック パネルに描画 スレッド SQL Serverに接続 enum abstractのわっさ~が嫌いな時 Java generic JSPメモ jsp javaコードを挿入 jsp request jsp session jsp ページ転送 jsp マスタページ的な何か jsp MessageDigest jsp string.format jsp Comparable(比較インタフェース)
https://w.atwiki.jp/thiroyoshi/pages/47.html
senでwiki辞書を使う 以下で紹介されてる方法でできるらしい http //d.hatena.ne.jp/nodchip/20090309/1236615706 形態素解析 これまで、形態素解析にcabochaを使ってたわけですが、javaでMecabを実装したとかいうのがあったみたいで…。 http //ultimania.org/sen/ つーかYahoo!がそういうのしてくれるAPIを公開していたらしい。アンテナは大きく広げておかないといかんもんだなぁ… http //developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html 下のサイトはサンプル公開してる。 http //www.nilab.info/zurazure2/001036.html 形態素解析の辞書 ChasenとMecabの辞書として使えるものだそうな。公開されてる精度がよすぎてびっくり。 http //www.tokuteicorpus.jp/dist/ Java使う人にはとてもよい http //nextindex.jp/java/ Stringの文字エンコーディング 普通にプログラムするには大して問題にならないファイル名の文字コード。 webでデータ公開するとかなるとなんかこれをよくミスる。 で、見つけたよさげなサイト。参考に http //hp.vector.co.jp/authors/VA017148/java/encoding.html デーモンスレッド 使えれば使う 参考URL http //memolet.blog22.fc2.com/blog-entry-792.html GC overhead limit exceeded 調べてみたら、ガベージコレクションに時間かかりすぎやから止まった、ってことらしい。 ガベージコレクション自体はメモリの自動解放とかしてくれるけど、メモリ使用量が多いとかでスワップが多くなったりすると処理がかかるみたいだ。 で、その時間がかかりすぎるとエラー吐いて止まるってのが上のメッセージらしい。 解決にはメモリをしっかり確保すればいいってのは当たり前だが、どうしても頻発する場合などには実行時の引数に以下のものを加えるといい。 -XX -UseGCOverheadLimit 参考URL http //confluence.atlassian.co.jp/display/DOC/Fix+Out+of+Memory+errors+by+Increasing+Available+Memory#FixOutofMemoryerrorsbyIncreasingAvailableMemory-OutOfMemoryError%3AGCoverheadlimitexceeded http //ameblo.jp/f-o-p/entry-10537149611.html MySQLと連携 javaのコードからMySQLを使う場合に、JDBCドライバが必要になる。 これはMySQLのサイトからダウンロードができる。 Javaとの連携なので、downloadの中の「Connector/J」をダウンロードする。 ダウンロードしたファイルを解凍すると、いろいろ入っているが、その中にjarがある。 名前は、「mysql-connector-java-5.0.8-bin.jar」だ。 これのクラスパスを通せば、あとはjavaのファイルの中で適切なコマンドを使っていけばいい。 参考URL http //mountainbigroad.jp/fc5/mysql_java.html MySQLからの日本語が文字化け まだいろいろ試していないもののメモ。 文字化けなので文字コードに問題があることは明白。 この場合にするべきは、各所での文字コードの設定。 「MySQLのデフォルト設定」 「javaコード内でのurl指定時」 くらいだが、これでも文字化けする場合があるのだ。 これはMySQLのバージョンを下げればいいこともあるらしい。 この問題があるのは、4.1.7でらしい。これをバージョンダウンすれば解消されるとさ。 またちょっとしたコードの書き換えでもいけるらしい。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); みたまんま、コード変換するみたいだ。これを取得した値に対して行ってやると解消されるとか。 でも、バージョンを下げるとこんなもんは必要ないみたい。 参考URL http //oshiete.goo.ne.jp/qa/1118005.html javaをコマンドラインで サーバーなどでjavaを動かすために覚えた。 しかし、コマンドを詳しく覚えているはずもなく… パスを通す .bashrcにjarファイルのパスをかたっぱしから通すように指定。 これぐらい重くもなんともないだろ! 実際に使ってるスクリプトは以下 jars=`ls /home/hiroyoshi/system/jar` for jar in ${jars[@]} do export CLASSPATH=$CLASSPATH /home/hiroyoshi/system/jar/$jar done やってることは簡単で、jarのファイル名を配列で全部とってきて、それにパスを当てはめてexportしてるだけ。 これでディレクトリjarにjarを追加するだけで、ログインするときに毎回読み込んでくれる。 もうパスを通す必要はない!便利! コンパイル 使ったのは実際には以下のコマンド javac -sourcepath XX/src -d XX/bin/ XX/src*/*.java XXはディレクトリ名(プロジェクト名とか) javac javaのコンパイルコマンド -sourcepath ソースファイルの場所指定オプション -d クラスファイルの出力場所指定オプション これで、srcに保存されいるパッケージでまとめられているjavaソースファイルをきちんとコンパイルできる。 また、このコンパイル時にbin内にパッケージも作られる。 ただし、srcとbinは事前に作っておく必要があるのは言うまでもない。 実行 ちょっと泥臭い方法になってしまったというか、メモるほどの事ではないが一応。 java -Xmx1g main/Main これをbinで行う。ほんとはプロジェクトのホームで実行したかったけど仕方ない…。 ファイルなどを生成するのでも、プログラム内でディレクトリ指定すればbin内には作らなくて済むので。 RSSリーダー 研究でブログを扱っているので作ってみたところのメモ。 ほとんどコピペやけど、プログラムってそんなもん。 使ってるライブラリ ROME:本プログラムのキモ。RSSを扱うためのメソッドが揃ってるみたい。 基本はこのROMEで処理します。依存とかの関係で ROME-Fetcher JDOM も必要です。JDOMはxmlを扱うライブラリで、これがないとROMEは動かない。 それぞれのライブラリはバイナリをダウンロードする。 JDOMは圧縮形式でダウンロードでき、解凍するとディレクトリができる。 この中からjdom.jarを見つけ出す。 サンプル public class RSSReader { @SuppressWarnings("unchecked") public static void main(String[] args) { //rdfでもxmlでもOK String url = "http //blog.livedoor.com/xml/article_ranking.rdf"; try { URL feedUrl = new URL(url); SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedUrl.openStream())); ArrayList SyndEntry entries = (ArrayList SyndEntry ) feed.getEntries(); System.out.println("Blog Title:" + feed.getTitle()); System.out.println("======================="); Iterator SyndEntry it = entries.iterator(); SyndEntry entry; while(it.hasNext()){ entry = it.next(); System.out.println("Title:" + entry.getTitle()); System.out.println("Date:" + entry.getPublishedDate()); System.out.println("Link:" + entry.getLink()); System.out.println("URI:" + entry.getUri()); System.out.println("Description:" + entry.getDescription().getValue()); System.out.println("---------------------"); } System.out.println("size = " + entries.size()); } catch (FeedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 参考URL スマートネットワーク開発ブログ JavaでRSSのパースをしてくれるライブラリ ROME 正規表現 すごく便利な正規表現。でもすごくわかりにくい正規表現。 そんな正規表現のメモ。 (特にJavaで使えるというものです) 全角記号 [^ぁ-んァ-ヴ一-龠0-90-9a-zA-Zー〜、] 総当たりではあるが、使えるのでよし。 意味は「ひらがなとかカタカナとか以外」 半角記号 \p{Punct} javaのAPIで定義されているものそのまま。 ただし、使うときにはこれをこのまま書くだけだと、「エスケープシーケンスは…」と怒られるので、こいつをエスケープしてやる。 つまり、 line = line.replaceAll("\\p{Punct}",""); ってすると、line内の半角記号は一掃される。 半角カタカナ [。-゚+] そのまま文字コードにのっとったもの。つまり、意味は ー。「」、・ヲァィゥェォャュョッタアイウエオカキクケコサシスセソミチツテトナニヌネノハヒフヘホマムメモヤユヨラリルレロワン゙゚ です。 また、正規表現の[a-z]のような「-」(ハイフン)の範囲表現はASCIIコードに準じたものをなっている。(参考URL参照) 例えば、コード表によると「!」から「/」を続けて範囲指定([!-/])できるが、「?」までする([!-?])と数字も選択されてしまう。 参考URL フジハラボ:Javaで入力チェックに使える正規表現まとめ ASCII文字コード
https://w.atwiki.jp/oribe/pages/7.html
java関連ページ javaの学習に関して javaの勉強でお勧めだと思う方法は、まずjdkをPCに入れ、その後 eclipseを入れ、eclipseで練習するのがいいと思う。 最初は取りあえずHello Worldからはじまって入門レベルをおさえたら デザインパターンを勉強する。そこまでいったら後は何をやるかによると思う。 WEB開発ならTomcatの勉強とかしたりstrutsやseasar、springを勉強するもよし。 by hiroki Ajaxの開発をするならgooglipseがよかった。 APIが限られてるけどjavaで記述して結構簡単につくれちゃう。 by hiroki リリースされましたね。まだ触ってないけど;https //jdk6.dev.java.net/ -- javaSE6 mustang (2006-12-15 15 52 41) 名前 コメント