文字連結
すでにご存知の方が多いでしょうし、何をいまさらって感じだとおもいますが、 Javaでの文字列(String)の連結の性能について、 以前、ちょこっとテストをやったので結果をのっけたいとおもいます。 1. +演算子を使うケース 2. String.concat()をつかうケース 3. StringBuffer.append()を使うケース の3パターンを計測してみました。 計測方法は、4byteの文字列 "fuga" を30000回連結しまくるだけのプログラムで 実行時間を比べるだけのシンプルなものです。 FullGCは起きないようheapの調整は実施しましたが、 +演算子、String.concat()では、YoungGCは避けられませんでした。 蛇足ですが、jreのバージョンは、以下のとおりです。 。。。。。
| $ java -version java version "1.6.0" v1.5.8f. Copyright 2001 Pavel Kouznetsov. Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing) |
| ケース | Wrap Time:Client VM | Wrap Time: Server VM | |
| 1 | +演算子 | 21641 ms | 14078 ms |
| 2 | String.concat() | 5890 ms | 4200 ms |
| 3 | StringBuffer.append() | 16 ms | 31 ms |
Posted at 02:58午前 3 21, 2007 by ryoya in Java |
google webmaster tool
遅ればせながら google webmaster tool を使ってみました。 僕の管理してるサイトは、今のところそれほど高い頻度でクロールされているわけではなく、 今のところ更新頻度が比較的高いサイトなんですが、 3日~7日に1回くらいクロールしてもらうくらいで、 最新のクロールの日付も現在のところ 2007/03/08 です。 sitemap.xmlの登録もやったんですが、なかなか見にきてはくれません。 まだopenして1ヶ月程度なので まだこなれていないのか、 webmaster toolから見ても、<「現在、データを表示できません。」が多くて、 満喫するには至っておりませんが、それでもいくつか面白い点があったので書いてみます。 「クエリに関する情報」では、どういうキーワードで自分のサイトに来てくれてるかが見れますが、 これは今のところ想定内のキーワードしか見えないのと、ログ解析 Webalizer からもこれは見れるので、 それほど特徴的な感じはしませんでした。 「ページ分析」では、共通する単語っていうコーナーのサイトのコンテンツには、 特にサイトを作るときに意図していなかったキーワードが上位にきていたり、 外部からのサイトへのリンク は、どういう言葉で外から自分のサイトにリンクが張られてるかが見えて、 ちょっとおもしろいです。 ログ解析のReferrersではリンク元のURLはわかるんですが、どういうアンカーで張られてるかは見えないので、 どんな風な文言でリンクされてるかが見れるのは興味深いです。 引き続き使っていくので、面白いことがあったら、また書きたいとおもいます。
Posted at 12:42午後 3 16, 2007 by ryoya in search |
java.lang.ClassNotFoundException: org.apache.naming.factory.MailSessionFactor
最近、ちょこっと困ったことです。
tomcat 5.5.20 にて、struts 上のフォームから、
javamail を送信するプログラムを書いていたんですが、
tomcatの Resourceから javax.mail.Sessionを取得するときにExceptionが発生してしまいました。
javax.naming.NamingException: Could not create resource factory instance
[Root exception is java.lang.ClassNotFoundException: org.apache.naming.factory.MailSessionFactory]
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:132)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
....
at javax.naming.InitialContext.lookup(InitialContext.java:392)
...
ほいでもって、MailSessionFactory が無いっていうので、
バグかなあ と 5.5.23 (最新)に入れ替えましたが、、、、ダメでした。
まさかとおもうけど、無いっていってるから無いのかと、、、、
jar tvf $CATALINA_HOME/common/lib/naming-factory.jar |grep -i fact
0 Mon Mar 05 08:25:08 JST 2007 org/apache/naming/factory/
6001 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/BeanFactory.class
1122 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/Constants.class
2938 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/EjbFactory.class
1804 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/OpenEjbFactory.class
2458 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/ResourceEnvFactory.class
3213 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/ResourceFactory.class
1650 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/ResourceLinkFactory.class
2458 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/factory/TransactionFactory.class
1520 Mon Mar 05 08:25:06 JST 2007 org/apache/naming/java/javaURLContextFactory.class
やっぱ無い。
じゃあ、足せばいいのかと、、、
googleにて、検索したら、、、そのまんまのがご本山にありました。。。。。。
http://issues.apache.org/bugzilla/show_bug.cgi?id=40668
もうバグ登録されてるし、ネタにもなんないけど、まあせっかくなので、
Patch for missing libraries from Tomcat 5.5.20 distibution
から zip ファイルダウンロードして、
naming-factory.jar を作業ディレクトリにて jar xvf で展開、
おんなじとこに zipを展開
jar cMvf $CATALINA_HOME/common/lib/naming-factory.jar .
で試してみたら、ちゃんとできました。
あー、オチがない。ごめんなさい。
Posted at 02:25午後 3 14, 2007 by ryoya in Java |
AppFuse
一回書いてからしばらく放置してしまいました。。。。 あっという間に年の瀬で、個人的に恒例の戎神社へ初詣のことなぞ考えてみたりしてました。 主題を決めて書くほどのこともなかったので、最近Javaな感じのことに時間を割いてるので、 それから書いてみようかと。 ここのとこ、AppFuse 1.6.1 と格闘してみたりしてましたが、 そうこうしている間にAppFuse 1.7 がreleaseされていました。(T-T) http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse DBにOracle/jdk 1.5.0 でフレームワーク自体は元気に稼動中。 このまま冬休みに突入して瞬く間に忘れてしまいそうだから、時間ができたらTipsとかを書いてみるのもいいかも。 appgenで生成したりしたので、SQLはほとんど書かずに一通りのデータアクセスができて、 画面まで生成してくれちゃったりして、なんだか書いてるとJava書いてるような風味がないです。 いきあたりばったりで、DAO書いちゃったり、ActionServletにテキトーにmethod追加してるので、 今ひとつうまみを感じられてませんが、、、、、、、びう の部分はかなり簡単でいいかも。 DAOのまわりは、Oracleのチューニングなぞを仕事ですることが多いので、 ついついてっとりばやい方向、「PreparedStatement に直接 SQLで書く」をしたくなって、 hibernateのうまみも引き出せてないみたいです、、、、微妙なジレンマがちょっと。 でも、せっかくやってるので、もう少しがんばってみようかと。。
Posted at 12:57午前 12 29, 2004 by ryoya in Java | Comments[0]
starting point ..NullPointerException:
/*
* now debugging my notion....
*/
try{
Person ryoya = humanbeings.oneOf(WORLD_POPULATION);
SunBlogger sb_ryoya = (SunBlogger)ryoya;
sb_ryoya.init();
Blog blog = sb_ryoya.writeBlog(12/10/2004);
blog.read();
}catch(NullPointerException ne){
System.err.println("I'm sorry for my blog is null.");
}catch(NonSenseException nse){
System.err.println("I'm sorry for nonsense. " + nse );
}catch(Exception e){
e.printStackTrace();
}
Posted at 02:16午前 12 10, 2004 by ryoya in General |