1 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:48:24 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド111【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1200151522/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
577 名前:デフォルトの名無しさん [2008/02/21(木) 15:47:43 ] tomcat5のJDBCレルム機構に対して、サーブレット内からプログラマが任意のタイミングでユーザ認証を済ませる方法を探しています。 contextA/auth/AuthServlet contextA/noauth/NoAuthServlet web.xmlで/auth/*を認証ゾーンとして指定。 NoAuthServlet内から、プログラマーが自前でユーザIDとパスワードを使って/auth/*ゾーンの認証を済ませたいのですが どうすればできるでしょうか? 認証を済ませる=HttpServletRequest#getUserPrincipal() != nullという意味です。
578 名前:デフォルトの名無しさん [2008/02/21(木) 16:00:26 ] 質問です。 初心者丸出しの質問ですみません。 同じパッケージ内のクラスを使うにはどうしたらいいのでしょうか? よろしければご教授お願いします。
579 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:15:59 ] >>578 それらのパッケージ名とクラス名は何でしょう? それと、何を何処までやって出来なかったのか。
580 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:37:00 ] >>578 ところでマルチポストって知ってる?
581 名前:デフォルトの名無しさん [2008/02/21(木) 17:15:41 ] 質問です。 正三角形の中点を中心に1回転させるにはどうすればいいですか? マルチスレッドとアフィン変換を利用して回転させたいんですが、角度を細くするほど誤差?で変形してしまいます。今のとこ30゜ぐらいが限界です! 下手文ですみません
582 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:03:50 ] 独学でjavaを勉強してるのですが、データベースとの連携の手段が色々あり過ぎてどれを使えばいいのか分かりません。 JDBC、EJB、Hibernate、これらはどういう関係にあるんでしょうか? 例えばEJBを実装すればJDBCやHibernateは要らないのでしょうか? 自分が調べた限りでは、 実際の開発ではEJBが普通だが、小規模な開発ではHibernateを使い、もっと単純なものならJDBCで済ます って印象なんですがこんな感じで当たってますか?
583 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:07:28 ] 当たってね
584 名前:デフォルトの名無しさん [2008/02/21(木) 18:26:46 ] abstract class Test { abstract void calc(int i); void printNum(int i) { System.out.println(i); } } class ExTest extends Test { void calc(int i) { int j=i*i; printNum(j); class ExTest2 extends Test { void calc(int i) { int j=i+i; printNum(j); public class sample46x { public static void main(String[] args) { int i =5; int j; Test[] ex_test = new Test[2]; ex_test[0]=new ExTest(); ex_test[1]=new ExTest2(); for(j=0; j<2; j++); ex_test[j].calc(i); これなんですけどコンパイルはできるんですけど、実行するとこんなの出ます。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at sample46x.main(sample46x.java:28) どこが原因なんでしょうか?
585 名前:デフォルトの名無しさん [2008/02/21(木) 18:36:37 ] }は省略してあります
586 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:38:24 ] >>584 >for(j=0; j<2; j++); これだな
587 名前:デフォルトの名無しさん [2008/02/21(木) 18:51:20 ] ありがと!気づかなかった!集中せねば!!! 渇っ!
588 名前:デフォルトの名無しさん [2008/02/21(木) 19:23:00 ] EJBから同じホスト内のbatをたたきたいんですが、 どういう方法があるでしょうか。
589 名前:デフォルトの名無しさん [2008/02/21(木) 19:24:44 ] RMIの使い方について詳しく教えてください
590 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:30:03 ] >>588 java.lang.Runtime#exec >>589 java.sun.com/javase/ja/6/docs/ja/platform/rmi/spec/rmiTOC.html
591 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:33:26 ] >>590 Runtime#execはEJBからは使えないはず
592 名前:デフォルトの名無しさん [2008/02/21(木) 19:40:43 ] >591 なんで?使えるよ、ふつーに
593 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:52:38 ] >>582 DB関連のAPIが林立しているのは、APIの進化変遷の跡。 最初から使い分けを意図して作られた物じゃない。 初期のEJBは詰め込みすぎで設計がクソで生産性が低いので、 小さくない規模の開発でも、Hibernateなどの他のマッピングフレームワークは使ってたよ。
594 名前:デフォルトの名無しさん [2008/02/21(木) 21:38:57 ] 質問させてください。 FileInputStream fis = new FileInputStream(file); FileChannel srcChannel = fis.getChannel(); // 一つのデータは 2 byte (16 bit) ByteBuffer buffer = ByteBuffer.allocateDirect(length * 16); buffer.order(ByteOrder.LITTLE_ENDIAN); // 読み込み srcChannel.read(buffer); srcChannel.close(); fis.close(); buffer.clear(); int ch1, ch2; for(int i = 0; i < 1000; i++){ ch1 = buffer.get() & 0xff; ch2 = buffer.get() & 0xff; data[i] = (ch1 | (ch2 << 8)) & 0xffff; } buffer.clear(); int[] data という配列に バイナリファイル中の符号なし short を読み込みたいのですが、 getShort() をつかったら、符号ありで読まれてしまったので、上のようなコード でやっています。 処理が遅い(無駄計算が多い)気がするのですが、もっと良い方法はありますでしょうか
595 名前:デフォルトの名無しさん [2008/02/21(木) 22:10:42 ] "แอมเพอร์แซนด์" 上記のような文字列が部分的に含まれているファイルを SQLに入れる作業をしているのですが、 これを読み込むとunrecognized tokenエラーが出ます このような文字の扱いはどのようにすればよいでしょうか
596 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:12:11 ] >>594 data[i] = buffer.getShort() & 0xffff でダメかね?
597 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:33:16 ] >>595 ファイル読み込むときのエンコーディング正しく指定してる?
598 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:33:39 ] JAVAとC#どっちがリバースエンジニアリングに強い? どっちも変わらない?
599 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:46:14 ] そんな高度なことできるやつがそんな質問するとは思えないのだが
600 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:47:40 ] 強いってのはやりやすいって意味か? それともやられにくいって意味か? 基本的にJavaはネイティブにしない限りソースへ復元は簡単な方 C#はどんだけネイティブ系使っているか次第
601 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:53:41 ] 逆コンパイルはどっちも超簡単でほぼ完璧だよ
602 名前:582 mailto:sage [2008/02/21(木) 23:00:01 ] >>593 ありがとうございます。 色んなベンダから別々に色んな技術が生まれてカオスな状態という感じでしょうか デフォになってるものも無いようなので自分で色々試してみます。
603 名前:594 [2008/02/21(木) 23:02:25 ] >>596 ああ、なるほどー。と思って実装してみたら、逆に少し遅くなりました。(データは正しく読めてました) 以下のようなコードを書いてベンチマークしても、やっぱり遅くなってましたorz public class ReadTest { public static final int length = 3800 * 2600; public static int[] data = new int[length]; public static ByteBuffer buffer; public static void main(String[] args){ try{ buffer = ByteBuffer.allocateDirect(length * 16); buffer.order(ByteOrder.LITTLE_ENDIAN); for(int i = 0; i < 20; i++){ read1(); read2(); read2(); read1(); System.out.print(".");} long t = System.currentTimeMillis(); for(int i = 0; i < 10; i++){ read1(); } System.out.println("\r\n" + (System.currentTimeMillis() - t) + " ms"); t = System.currentTimeMillis(); for(int i = 0; i < 10; i++){ read2(); } System.out.println((System.currentTimeMillis() - t) + " ms"); } catch (Exception e){} } public static void read1() throws Exception{ FileInputStream fis = new FileInputStream(new File("hoge")); FileChannel srcChannel = fis.getChannel(); for(int i = 0; i < 4; i++) fis.read(); // ヘッダ buffer.rewind(); srcChannel.read(buffer); srcChannel.close(); fis.close(); // 読み込み buffer.clear(); for(int i = 0; i < length; i++){ data[i++] = buffer.getShort() & 0xffff;} } /* read2 は読み込み部分が古いほう(省略) */ うーん、不思議ですねえ。 getShort() は遅いんでしょうか。。。 でかい画像を大量に処理していて、読み込みが25%くらい閉めているので、短くしたい・・
604 名前:594 [2008/02/21(木) 23:04:31 ] 最終行の data[i++] は data[i] のミスです
605 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:05:21 ] >>600 やられにくいって意味でとらえてください >>601 そうですか、使いやすくて良い言語だけど自分が作ったソフトが逆コンパイル されるのは困るな 企業で開発するときは何か対策しているのでしょうか?
606 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:17:50 ] なんで困るんだ?
607 名前:デフォルトの名無しさん [2008/02/21(木) 23:28:14 ] >>597 ありがとうございます UTF-8で読み込んでいます System.out.println("แอมเพอร์แซนด์"); これでエラーになるのはなんででしょうか
608 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:29:10 ] แอมเพอร์แซนด に一致する情報は見つかりませんでした。
609 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:57:00 ] こんばんは。 CDを管理するプログラムを作っているのですが、mainクラスとCDクラスがあります。 管理する数は、5つでその分のCDインスタンスをつくり、価格と名前のを入力しコレクションで管理すると言うプログラムです。(重複可で名前でソートさせます) このプログラムを作ってみたのですが、Collections.sort(list);としたのですが、下線のびっくりマークのエラーが出てしまいます。 内容は、『型の安全性:型Collectionの総称メソッドsort(List<T>の未検査の呼び出しsort(List)がありました』と表示されてしまいます。 このようなエラー表示にはどのような対処をしたら良いのでしょうか? アドバイスお願いします。
610 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:59:26 ] >>609 -source 1.4 をコンパイルオプションに付ける
611 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:01:32 ] ああ、IDE使ってるのか JDKレベルを1.4にする
612 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:06:39 ] >>609 です。 Eclipse 3.1を使ってます。5.0から1.4にするという感じでよいのでしょうか? コンパイルオプションの変え方がわからないので調べてみます。
613 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:42:51 ] >>612 JDK5以降で言語仕様に入れられたジェネリクスというものに関わるエラー。 「java ジェネリクス」で調べてみて。 eclipseならリファクタリング機能の中に、 ジェネリクスを使用していないソースを使用するように変更してくれる機能もあるけど、 とりあえず、ジェネリクスを理解してからにしたほうがいい。
614 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:45:18 ] >>612 です。 アドバイス、ありがとうございます。 ひとまず、1.4に変更したところちゃんと動作しました。ジェネリクスの勉強もしてみます。
615 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:30:47 ] java覚えて女性関係のメリットになったことってありますか? 真剣な質問です また、女性関係に強い言語は何でしょうか?
616 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:04:39 ] つまんね 他でやれ
617 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 03:18:36 ] Javaの勉強をしている初心者なのですが 今コードを書くためのエディタを探しています。 よいエディタを紹介していただけませんか?
618 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:53:51 ] vivi
619 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 09:05:49 ] >>605 Javaと.NETどちらとも、逆コンパイラはある。 どっちも中間言語を使うタイプなので、逆コンパイラを作りやすいらしい。 そしてその対策として、obfuscator(難読化ツール)がどちらにもある。 単に、シンボル名(クラス名、メソッド名、変数名)をランダムな文字列に 置き換えて、逆コンパイラが出力したソースを読みにくくする、 ってだけだけど。
620 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:00:34 ] ジェネリクスについての質問が多いのは 初心者には難しいので入門書の段階では取り扱わないからか それとも基本1.4で5.0要素は申し訳程度にしか書いてない本が 未だに主流だからか
621 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:21:52 ] 直観的でなくて罠が多いからな
622 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:27:58 ] www.xlsoft.com/jp/products/jet/index.html このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか? もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが
623 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:38:09 ] >>620 俺のとこでは依頼される仕事も未だに1.4全盛なんだよなー。他の会社の人に聞いてもそうだという。5.0に移行するのはいつになることやら。。
624 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:43:56 ] >>622 Javaをネイティブ化したいだけならGCJもあるよ 速くなるとは限らないが Javaが見た感じ重いのはSwingとかライブラリのせいもあるから…
625 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:48:02 ] 165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0 お前らに朗報 pc11.2ch.net/tech/ この板の適当なスレに www.xlsoft.com/jp/products/jet/index.html このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか? もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが と書き込んだらデブスがデブゲバうpするってよお
626 名前:デフォルトの名無しさん [2008/02/22(金) 11:50:08 ] 170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0 お前らに朗報 pc11.2ch.net/tech/ この板の適当なスレに www.xlsoft.com/jp/products/jet/index.html このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか? もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ 腐って死ぬぞ??
627 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:37:40 ] ジェネリクスを使うだけなら難しいか? Foo[] と ArrayList<Foo> が初心者的には理解しやすくなると思うんだけど 単なる入門書の怠慢だと思う
628 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:03:27 ] 始めるんだけど、どの本がオススメですか?
629 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:01:06 ] 初心者で失礼します。どう修正していいかわかりません。宜しくお願いします。 import java.util.Scanner; public class tes { public static void main(String[] args) { char stuname; Scanner kb = new Scanner(System.in); stuname = getStuN("Please enter the student name: ", kb); } //get studnt name public static char getStuN(String str, Scanner kb) { System.out.print(str); char sname = kb.nextLine(); System.out.print(sname); return sname; } } --------- tes.java:15: 互換性のない型 検出値 : java.lang.String 期待値 : char char sname = kb.nextLine(); ^
630 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:08:50 ] >>629 ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Scanner.html nextLine の戻り値型は String です。 よって sname の型宣言を String にして、それ以降の記述を適切に修正してください。
631 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:26:12 ] >>630 できました! ありがとうございましたm(_ _)m
632 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 15:42:51 ] 625 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/22(金) 11:48:02 165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0 お前らに朗報 pc11.2ch.net/tech/ この板の適当なスレに www.xlsoft.com/jp/products/jet/index.html このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか? もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが と書き込んだらデブスがデブゲバうpするってよお 626 名前:デフォルトの名無しさん[] 投稿日:2008/02/22(金) 11:50:08 170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0 お前らに朗報 pc11.2ch.net/tech/ この板の適当なスレに www.xlsoft.com/jp/products/jet/index.html このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか? もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ 腐って死ぬぞ??
633 名前:デフォルトの名無しさん [2008/02/22(金) 18:03:04 ] JAVAからpostgresSQLを操作するプログラムを作成しております。 JAVAからpostgresのでーたをバックアップする方法を知りたいのですが、 JDBCを利用して、postgreSQLのpg_dumpを操作する方法はあるのでしょうか。 また、pg_dump以外にも、JDBCにてデータのバックアップを出来る方法があれば、 ご教授お願いいたします。
634 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:19:27 ] >>633 DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・ それですべて復元できるかわからないけど Runtime#execでpg_dump呼び出す方が簡単な気がする
635 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:33:59 ] >>634 >DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・ それは遅そうだw >Runtime#execでpg_dump呼び出す方が簡単な気がする わしもそう思う。 何かの操作が必要だったら、シェルかバッチの中でJavaプログラムで操作したのちに バックアップを走らせた方が効率が良さそうだが。
636 名前:633 [2008/02/22(金) 18:44:15 ] 634,635 どうもありがとうございます。 早速、試してみます。
637 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:07:30 ] 今どきJDBCなんて使う必要あるの?
638 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 21:32:33 ] 教えてください。 環境:Oracle JDBC PreparedStatementとResultSetを使用し、 SELECTを実行しています。 通常問題ないのですが、バインド変数(?)が11個以上あるSQLを実行した場合、 かつ、レコードのヒット件数が11件以上を超えている場合、 11件目のデータ取得時に「配列の範囲」を超えた、という例外が発生します。 バインド変数はsetStringで1から順に設定し、 設定内容についても問題ないです。 ※デバッガで確認済み SQL自身は問題なく、SQLExceptionが発生しているわけでもありません。 何か回避策はあるのでしょうか?
639 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:03:15 ] まずスタックトレースを貼れ。その話し振りだと単なるバグの可能性が素敵連
640 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:09:44 ] Cで言うところの構造体の代わりにクラスを使っています。 内部変数はInt型が2つ、Boolean型が1つの小さなクラスです。 クラスの2次元配列として2000x2000のインスタンスを生成するコードを書いたら インスタンスを生成する箇所(以下)で for(int j=0;j<2000;j++){ for(int i=0;i<2000;i++){ box[i][j] = new Box(); } } java.lang.OutOfMemoryError: Java heap space というエラーが出てしまいました。 メモリの使い方が下手なんだと思うのですが、 よい対処法が思いつきません。 何か手はあるでしょうか?
641 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:32:58 ] >>640 簡単に計算。integer型として。 4byte * 2 * 2000 * 2000 => 32byte * k * k => 32Mbyte boolean型はどれだけ食うのか分からないが、さらに4-16Mbyte ということで、先の値を目安にし、ヒープを明示的に確保します。 以下ページから java のページ、-Xmx や -Xms オプションを参照のこと。 ttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/tools.html 他の方法もあるとは思いますが、安易な解決法として。
642 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:23:53 ] >>641 ありがとうございます。 そういうやり方もありそうですが、 もう少しコードの書き方について考えてみます。
643 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:24:12 ] tomcatは内部でjspをコンパイルするためにjdkを使っていると聞いたのですが tomcatをインストールする場面ではjdkではなくjreのパスを指定しますよね その後もtomcatの設定でjdkの場所を教えたつもりは無いのですが jspをちゃんとコンパイルしてくれてるみたいです。 tomcatはどうやってjdkを認識してるんでしょうか?
644 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:47:22 ] >>644 JSPのコンパイル用にIBMのJDK積むようになった。 昔はJDKの指定が必須だった。4までだったっけ?
645 名前:643 mailto:sage [2008/02/23(土) 00:52:46 ] >>644 なるほど〜そういうことだったんですね。 モヤモヤしてたのがスッキリしました。 ありがとうございました。
646 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:17:56 ] >>640 Int型というのは存在しない Booleanの代わりにbooleanを使ったらどうか?
647 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:40:02 ] >>640 試してみた Sun JRE 1.6.0_04 Box[2000][2000] の場合 107MB int[2000][2000][2] + boolean[2000][2000] の場合 110 MB
648 名前:デフォルトの名無しさん [2008/02/23(土) 03:59:50 ] new って複数のスレッドから同時に実行できるんですか?
649 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:06:06 ] >>648 意味が分からん どういう状況を想定しているのか擬似コードでもいいからシンプルな例で示せ
650 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:06:21 ] >>647 まあなんですか、[2000][2000][2] ではなく、[2][2000][2000] をお勧めします。 ついでに用途が合えば boolean[][] ではなく、java.util.BitSet を。
651 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:10:57 ] >>648 コンストラクタはスレッドセーフかって意味なら答えは一般的にはノー
652 名前:648 mailto:sage [2008/02/23(土) 04:16:48 ] 作ったプログラムのどうも動作が遅くて、スレッドダンプをみてみたらほとんどのスレッドが コンストラクタ java.lang.AbstractStringBuilder.AbstractStringBuilder(int capacity)内の value = new char[capacity]; ↑のところでブロックしてたので、非同期でnewは呼べないのかなと思ったんですが ひょっとするとcapacityが大きいときだけ同期呼び出しだったりします?
653 名前:648 mailto:sage [2008/02/23(土) 04:18:31 ] >>651 つまり非同期には呼ばれないってことですね。
654 名前:デフォルトの名無しさん [2008/02/23(土) 04:40:17 ] hou
655 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:46:29 ] >>652 ヒープに配列を生成する過程でロックされてそうだ。 仮に非同期に実行できたとしても体感時間は変わらないと思う。 仮にヒープの拡張に時間が掛かってるなら、 最初からヒープを必要な分大きくしておけば少しは早くなる。 あとは初期にやたら時間が掛かるなら、確保するサイズを小さくして、 最大確保を遅延させるのはどうか。 確保するたびに前のゴミが出るのと時間が掛かるけど。
656 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:57:09 ] >>652 確保するサイズが大きいとスレッドごとのプールから取れなくなるから同期が必要になる というかそんな大きなStringBuilderをそんな頻繁に確保するってことがまずい気がする GC起きまくってないか?一度 -verbose:gc で見てみ 確保したのを使いまわすと改善するんじゃないかな
657 名前:お [2008/02/23(土) 11:14:43 ] j2dk1.4.2を使っているのですが、 javacが使えず、環境変数の設定をすると、一度できたんですが、 2回目からできなくなりました。 しかも変数の設定を変えていたので元のがどんなのだったかがわかりません…。 環境変数の、Pathを教えて下さい。
658 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:16:24 ] >>657 >>1
659 名前:お [2008/02/23(土) 11:29:59 ] 読んでもよくわかりません。どなたかー
660 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:51:13 ] >>659 本当に読んだか?具体的にどの手順がわからないんだ java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html#path
661 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:00:48 ] >>655 >>656 なるほど!スレッドごとのプールから取れなくなるからってことですか。 このStringBuffer自体はデバッグのための文字列だったのでここの部分を取り払ったら ロック争奪がなくなってスムーズに動きました。 ありがとうございました!
662 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:05:43 ] >>647 >>650 いろいろありがとうございます Intのうち一つはflagで3種類の値しかとらないのでboolean2つで頑張って もう一つのIntをshort型にするとだいぶ減りそうな気がしました。 後で実装してみようと思います boolean2つのところはBitSet?を使えばいいのですかね。。 後でjavadoc読んでみます。
663 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:05:39 ] 下記の構造でメインクラスtestから、VelocityのgetTemplateをコールしたところ、エラーが出ました。 test.jar +-dir1 +-test.class +-templ.properties これで、 > java -jar test.jar と実行すると ResourceManager : unable to find resource 'templ.properties' in any resource loader. というエラーが出ています。 test.jarのおかれているディレクトリにtempl.propertiesがあるか?を探しているようで、 test.jarの中を探していないみたいです。 Main-Class:はdir1.testと指定してあるのでmainはコールできてます。 なにか指定し忘れてることあるんでしょうか。。。お願いします。
664 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:25:09 ] BufferedImageのディープコピーの仕方を教えてください
665 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:30:43 ] もう1回BufferedImageを作れ
666 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:04:50 ] Javaの初心者にExceptionのことを教えたいのですが、 J2SEのクラスの、Exceptionをthrowするメソッドで、 一番基本的で分かりやすいものって何だと思いますか? コンストラクタじゃない普通のメソッドでお願いします。
667 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:11:09 ] ぬるぽ
668 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:11:27 ] NumberFormatException
669 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:19:51 ] いや、Exception自体じゃなく、 Exceptionをスローするメソッドです。 例えば、FileOutputStream#write(byte[] b)とか。
670 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:24:40 ] >>666 // Exception 自体は throw も catch もするな。を教える 実行時例外なら、Integer.parseInt(String) で NumberFormat 普通のヤツは意図的に起こすだけなら ClassNotFound とか IO とか NumberFormat は良い例ではないのよね。 実行時例外の割りに、catchされるように組み込まれてるし。 まあ、別に無理に教える必要は無いんじゃないかな それよりも知らないメソッドは API doc で調べるように仕込むべし。
671 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:38:36 ] ありがとうございます。 実行時例外じゃなくて、 IOExceptionとか、メソッド呼び出すと絶対try catchしないといけないヤツです。
672 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:42:38 ] new FileInputStream ファイルがなければFileNotFoundExceptionを投げる
673 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:45:47 ] って、コンストラクタはだめなのか じゃあ Socket#connect 接続できなければ IOException
674 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:55:35 ] コンストラクタでないわかりやすいもの・・・ ImageIO#read(File) とか?
675 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:50:51 ] Stream系のIOExceptionじゃね? try-catch-finally と合わせて覚えるのがセオリーかと
676 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:40:42 ] みなさんありがとうございます。 finnalyも合わせて、Stream系で説明してみようと思います。
677 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:55:38 ] IOException もいいが ParserConfigurationException も捨てがたい