1 名前:デフォルトの名無しさん [2008/03/01(土) 18:16:51 ] プログラミング言語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質問・相談スレッド112【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1202467704/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
610 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:30:16 ] POI(HSSF)で大量のデータ(10万件のレコード)をExcelファイル出力しようとした場合に OutOfMemoryErrorの発生を回避するには 複数のファイルに分割して出力する以外に方法はないんでしょうか?
611 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:30:18 ] 済みません、できませんでした。 メソッドの使い方がさっぱりわからなくて・・・。 class pbtActionListener implements ActionListener { public void actionPerformed(ActionEvent i) { } } この中にテーブルを印刷する機能を入れるにはどうすればいいでしょうか 本来なら時間を掛けて勉強するべきでしょうが 時間がないのもう少し詳しく教えてください。お願いします。
612 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:33:02 ] >>610 今時の Excel は XML で読めるんだから XML で出せば?
613 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 04:46:13 ] >>611 時間がないならcsvでファイルに吐いてExcelで印刷しろ
614 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 07:01:24 ] ほれ tableどっかから拾ってきてパラメータ適当にいじれ try { Printable printable = table.getPrintable(JTable.PrintMode.FIT_WIDTH, new MessageFormat("タイトル"), new MessageFormat("Page - {0}")); PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(printable); PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); attr.add(OrientationRequested.LANDSCAPE); attr.add(new MediaPrintableArea(5.1f, 5.1f, 199.8f, 286.8f, MediaPrintableArea.MM)); boolean printAccepted = job.printDialog(attr); if (printAccepted) { job.print(attr); } } catch (HeadlessException e1) { e1.printStackTrace(); catch (PrinterException e1) { e1.printStackTrace(); } 宿題スレかここは…
615 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 08:32:53 ] >>610 Excelで扱える行数の最大は、65536まで。 POI使おうがCOM使おうがどのみち無理。
616 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 09:12:20 ] Excel2007
617 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 09:22:55 ] >>612 なるほど、XMLは考慮していませんでした 調べてみます >>613 CSVも、やはり複数ファイルに分割しないとデータを扱いきれないので・・・ >>615 HSSFであれば1ファイルに複数シートを含めたExcel形式で出力できるので、 HSSFで何とかできないかと思いまして ありがとうございました
618 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 09:31:26 ] 10万件のレコードが出力されたExcelファイルを誰がどんな目的で使うのかが不思議。
619 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:05:18 ] 業務から伝票データ集計を流してもらって、まとめて経営戦略用の資料とかにするとかかな。 あとアンケートデータの集計なんてのもあるしね。 それらの資料を元に今後の会社の行く末を。。。なわけだw
620 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:47:40 ] 開けないのにどうやって使うのって話では? 開けたとしても人間には解析できないけどなw
621 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:03:36 ] 取り込み形式が Excel のシステムにつなげるとか。 あと Excel にさえしてくればあとは中の人間が VBA で何とでもするからという所も多い。
622 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 13:25:58 ] >>614 ありがとうございます。おかげでなんとかなりました。
623 名前:デフォルトの名無しさん [2008/03/22(土) 02:54:05 ] 複数シートに分ければ出来るよ HSSFSheetのドキュメント参照
624 名前:デフォルトの名無しさん [2008/03/22(土) 12:18:28 ] 【提携/JAVA】マイクロソフト、Javaを使ったWindowsアプリ開発でEclipse財団と協力へ[03/21] news24.2ch.net/test/read.cgi/bizplus/1206155464/
625 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:36:40 ] 特定のインタフェースを実装しているものを、動的に一覧する手段はあるでしょうか? もちろん、クラスローダにローディングされているもので構いません。 Eclipse の検索で実装が探せますが、あれはソースを解析しているのでしょうか。
626 名前:デフォルトの名無しさん [2008/03/22(土) 13:30:25 ] インターフェイスについて参照して、 実装について参照してはいけないと本に書いてありました。 なぜですか?
627 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:38:41 ] >>626 後から実装を取り替えたくなったときに、参照している側まで修正しなければならなくなるから。
628 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 14:57:37 ] >>455 のおかげで行きつけのイラストロジックが起動できた。 ありがとう >>455 。
629 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 15:21:30 ] >>626-627 >>625 の答えとしてであれば、その点は了解しています(いるつもりです...) 行いたいことは、例えばあるコンバートを掛ける時に、公開インタフェースに 従って実装したユーザ任意の処理を、なるべく簡易な方法で追加させたいのです。 例になってしまいますが 標準語 ------> 関西弁 ------> 翻訳結果 と言った変換をするアプリケーションにおいて、公開インタフェースとして String translate(String sentence) を公開し、これをユーザが実装すれば(例えば博多弁を追加) 標準語 ------> 関西弁 -------> 関西弁 + 博多弁 ------> 翻訳結果 といったことを可能にしたい、と言った感じです。 この追加した処理のデプロイ方法として、「公開インタフェースを実装したクラ スを含む jar を ** に置くだけで OK」といった様に行わせたいために、>>625 のような要望となった次第です。FQCN さえ貰えれば済む話ではありますが、で きれば簡易化させたいといった状況です。
630 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 15:31:29 ] 私も、1.6.0_05 アップデータをアンインストールして、 WinXP + Firefox3b4 + JRE1.6.0_03 で動いたよ。ありがとう 455。 >>629 // 其の二つはそれらで完結するレスかと。 プラグインなら、ファイル検索+カスタムクラスローダーで できるかも…やったことないから適当ですが。
631 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 15:32:28 ] 日本語-->英語+フランス語-->翻訳結果っっっw
632 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 15:43:47 ] PrivateKey や PublicKey ってシリアライズして保存しておけばいいの? getEncoded() で何やらバイナリが取れるみたいだけど、これが何なのか分からん orz
633 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:01:22 ] >>585 >>589 > キーワードだけ覚えて披露する それは>>582 自身だ。 ポーリングを実装する必要を無くす仕組みではなく、 ポーリングをしなくて良い仕組みでしょ。 あるいは、ポーリングの意味ちゃんとわかってないんじゃない? Comet使った場合定期的に問い合わせなんかしないでしょ?
634 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:05:37 ] キューにイベント入ってこなければ定期的な問い合わせになるが。 Comet の仕組み分かってないのか。
635 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:08:53 ] >>536 > RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、 > 逆の場合も使えるのか確証が持てません。 WebサービスとRMIサービスは別なので、それぞれサーバの役割を持つプロセスは異なります。 その例だと Webサーバプロセス = RMIクライアント Webクライアントプロセス = RMIサーバ なので、「(RMI)クライアント側からのトリガーで(RMI)サーバーへ返す」 と読み替えれば別にその紹介サイトの説明で問題はないでしょう。
636 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:10:17 ] 定期的な問い合わせではないな、定期的な再接続。 ポーリングはキューの確認終わったらすぐにリターンするが、それを一定の待機時間を維持するようにしただけ。 それをポーリングの揚げ足取りましたよ、と言いたいだけ?
637 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:10:20 ] >>634 で、その定期的な問い合わせは Cometフレームワークとやらが実現してるって言ってるの?
638 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:11:06 ] >>632 保存したいのならお好きなように。getEncoded()のものを保存しておけ ば、Java以外のプラットフォームでも読めるかもしれない。
639 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:22:35 ] >>637 おまえ、ブラウザの裏で Comet が独自の通信プロトコルでも使ってイベントやり取りしてると思ってるなら HTTP のお勉強からやり直したほうがいいぞ。
640 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:10:16 ] >>629 使ったことないけど、これなんかどう? java.sun.com/javase/ja/6/docs/ja/api/java/util/ServiceLoader.html
641 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:14:39 ] >>629 jarをZipInputStreamに食わせて.classファイルの一覧を出させて、 URLClassLoaderで見つかったクラスを全部ロードさせてみて、 希望のインタフェイスを実装してるかひとつずつ調べる という力技もないこともない
642 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:22:40 ] URL.getContent(); を使ってコンテンツをダウンロードすると コンテンツが 「あなたがお使いのブラウザは、Cookieをブロックする設定になっています。」 となっちゃう サイトに対して、 プログラム側がCookieを「受け入れ」て、 アクセスできるようにするには具体的にどうするんでしょうか? HttpURLConnection が自動的にCookie受け入れ処理をやってくれるとかいうのですが.... HttpURLConnection.openConnection(); HttpURLConnection.getInputStream() ; とかやっても URL.getContent(); の時と変わりません。
643 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:32:08 ] >>642 java.net.CookieHandlerとかjava.net.CookieManagerあたりを使うんじゃないかなたぶん
644 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:33:25 ] エスパーするとそのリクエストを出す前にどこかから Cookie の発行を受けていなければならない。 ブラウザで正常に動かしたのと同じ URL の順序で getContent() してみれ。
645 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:44:36 ] IPアドレスの正規表現ってどうしたらいい "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$" これだと、300.192.144.109のようなIPアドレスもマッチしてしまう
646 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:08:08 ] Cookieの処理を実装する。Cookieを保持するクラスはあるからさ。
647 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:24:00 ] うぉ。Cookieはリクエストプロパティにベタに書き込んでたわ。 HttpURLConnection.setRequestProperty("Cookie", "なんたら");
648 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:33:18 ] >>645 1オクテットだけなら [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5] かな。 全部出来てから、あとでより正確にするってことで、 目的のプログラムが出来るまではとりあえずは数字でマッチさせて、 マッチ後int変換して範囲比較したほうが楽かも。 用途によっては java.net.InetAddress.getByName() に食わせて例外を捕まえるという方法も。
649 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:40:34 ] "((([12][0-9]{1,2})|([1-9][0-9]{1,2}))\\.){3,3}(([12][0-9]{1,2})|([1-9][0-9]{1,2}))" 通ったよ
650 名前:649 mailto:sage [2008/03/22(土) 21:42:54 ] 失敗2番目と4番目の{1,2}は要らない。
651 名前:649 mailto:sage [2008/03/22(土) 21:47:00 ] 一桁が無かった。
652 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:56:12 ] コードを少しずつ改変して行くに当たって、 それぞれにバージョンを付けて残しておこうと思ったら、 プロジェクトごとコピーして残しておけばいいんですか? もっといい方法があるんですか? Eclipseを使っています。コードを書くのは自分一人です。
653 名前:649 mailto:sage [2008/03/22(土) 21:57:47 ] "((([12][0-9]{1,2})|([1-9]{0,1}[0-9]))\\.){3,3}(([12][0-9]{1,2})|([1-9]{0,1}[0-9]))"
654 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:03:06 ] それ 299 が通る。 25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?
655 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:05:24 ] >>645 正規表現に拘る部分なのか(まぁ何も言うまい >>652 豪華にいくなら、バージョン管理システム。subversion とか cvs とか LocalHistory でもそこそこ残ってる(条件は知らない
656 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:38:14 ] subversionは別に豪華じゃないんじゃない?file://でいけるし。
657 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 01:10:38 ] >>655 バージョン管理システムは別に豪華じゃない。 Mercurialとかならサーバのセットアップすら不要。
658 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 02:01:57 ] 信者くせー
659 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 05:36:43 ] AES でサポートされているはずの 192bit, 256bit のキー指定すると例外になるのは何で? サポートされてないの? Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at Main.main(Main.java:101)
660 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:27:26 ] >>659 違いそうだけど、輸出制限版とかいう話?
661 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:54:20 ] 普通に Sun からダウンロードした奴だけど規制版じゃないよね。 Blowfish も 128bit より上は同じ例外なんだけど。
662 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:01:43 ] java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/crypto/CryptoSpec.html#AppC やっぱ輸出制限であってるかも。 制限解除したポリシーファイルだけダウンロードできるけど、 そもそも日本はダウンロードOKな国なのか??
663 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:20:33 ] >>662 ascii24.com/news/i/topi/article/2000/07/19/610269-000.html 2000年で撤廃されてるらしいから、日本ならダウンロードOK。
664 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:37:07 ] java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/crypto/CryptoSpec.html#ExemptApps > 関係があるのは、作成するアプリケーションが、政府により暗号化制限の課された国に > 輸出される可能性があり、アプリケーションをその制限に適合させる必要がある場合だけです。 とあるので制限は解除されているものかと思ったら、128bit で制限かかるあたりからしてこれみたいですね orz 解除の試行錯誤でもしてみるか orz
665 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:43:15 ] SUNから解除用ファイルダウンロードしてファイル1個置き換えるだけだよ。
666 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:45:59 ] java.sun.com/javase/ja/6/download.html の下の方の その他のダウンロード Java Cryptography Extension (JCE) 無制限強度の管轄ポリシーファイル 6 てやつ。
667 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:08:47 ] どうもご丁寧にありがとうございます m(_ _)m ちなみに対照鍵暗号のアルゴリズム的な強さの現状ってこんな感じで良いんですかね。 AES ≒ Blowfish >> トリプルDES > [解読可能の壁] > DES
668 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:02:41 ] SwingでWindowsのLook&Feelを用いたとき Windowsのネイティブな部品のように 「コピー」「貼り付け」などのメニューが自動で表示されるようにはできないでしょうか? AWTを用いればWindowsの部品として自動で表示されるようですが、 Swingの場合、自分でそれらの処理を実装しなければならないのでしょうか?
669 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:07:03 ] はい
670 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:43:04 ] Swingならハンドラ実装するだけ
671 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:07:16 ] 今までGUIの終了時処理はWindowListenerを登録して行っていたのですが終了時処理であれば RuntimeのaddShutdownHook() の方が適切なのでしょうか? 一般的なGUIアプリケーションでの終了時処理でこの方法を用いているものを見かけたことがなかったので、何か理由があるのかと思い質問させていただきました。
672 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:42:30 ] >>667 AES > Blowfish > トリプルDES ぐらいかなあ ・トリプルDESはDESの強化版なので実績という観点からは評価が高いが、 さすがにいいかげん古い。あと低速 ・一般にブロック長が大きいほうが強度もより高くなるので AES(ブロック長128ビット)はBlowfish(ブロック長64ビット)より強いはず 実際、最近考案された暗号はどれも128ビット以上のブロック長を採用している (Blowfishの設計者が新しく考案したTwofishもブロック長128ビット)
673 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:55:05 ] 繰り返しの構文について質問なのですが、 rubyのredoの役割を果たすものってjavaには無いのでしょうか?
674 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:04:12 ] >>673 ない。Java は break と continue だけ。
675 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:07:24 ] break => break next => continue retry = なし redo = なし かな。
676 名前:634 mailto:sage [2008/03/23(日) 23:08:36 ] >>674 ありがとうございます。 スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。
677 名前:634 mailto:sage [2008/03/23(日) 23:09:18 ] >>675 さんもありがとうございます。
678 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:21:22 ] >>671 javaw and shutdown hooks (referring to #4302814) ttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4486580
679 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:11:04 ] >676 そうか? redo とか retry とかRubyでも偶にしか使わんし、他の言語を見てもある言語は少ないかと。
680 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:22:23 ] >>676 >スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。 なんか解釈が間違っている気がする
681 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:26:17 ] Ruby厨ってやつだろ
682 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:45:54 ] FileInputStreamからFileChannelを取得し、そのFileChannelでmap()を実行すると、ストリームやチャネルをクローズしても元ファイル(FileInputStreamのソース)を削除できません。 原因はMappedByteBufferによって使用中になってしまうからという単純なものなのですが、解決策が FileInputStream fis = new FileInputStream(input); FileChannel fc = fis.getChannel(); ByteBuffer buf = fc.map(); .... buf = null; System.gc(); input.delete(); これくらいしか思いつきませんでした。 何かいい方法はないでしょうか?
683 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 01:13:37 ] >>676 retry や redo と同等の処理を記述することはそれほど難しくないから、 「出来ない」というのは語弊がある。
684 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 02:09:59 ] やさしいJavaを読み終わり基礎中の基礎?の構文を覚え 今結城浩氏のデザパタの本を読んでいるのですが、実務経験が無いため それらのパターンをどの様な時に使えばいいか想像がつきません。 Struts等を使ったシステム開発業務に興味があるのですが、 Web系ではどのようなパターンが使われているのでしょうか? 重ねて質問ですが、最初はどのようなパターンから覚えていけば良いでしょうか? よろしくお願いいたします。
685 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 02:29:20 ] 畳の上の水練という言葉があってだな
686 名前:684 mailto:sage [2008/03/24(月) 02:43:57 ] >>685 分かってはいるつもりでしたが・・・ デザパタの存在自体が面白くて、どうしても勉強したかったのです。 何かツールでも作りながら地道に覚えていきます。
687 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 03:00:42 ] Vector vec = new Vector(); System.out.println("----追加----"); String obj1 = new String("Hello World!"); StringBuffer obj2 = new StringBuffer("こんにちは、世界!"); vec.addElement(obj1); 上記をコンパイルすると最後の行でコンパイルエラーが発生します。 jdk5.0を使っているのですが、何を行えば正常にコンパイルできますか?
688 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 03:13:14 ] うちでは 注:Hoge.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 と警告が出るだけでコンパイルされるんだが。 単にコンパイル警告をなくしたいなら javac -source 1.4 オプションを付ける。 もし>>687 のコードが教科書どおりならその教科書は古い。 VectorのようなコレクションはJDK1.5以降Generics対応なので、 Vector<String> vec = new Vector<String>(); のように型を明示して使うのが基本。というかVector自体(ry
689 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 03:26:34 ] 古い。
690 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 08:01:33 ] >>682 FileChannel の JavaDoc にも GC されるまでマッピングは有効って書かれているから おそらくそれくらいしか方法は無い。 なんでこういう仕様なのか、俺も問いただしたい気持ちでいっぱいだ。
691 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 09:13:02 ] >>690 やはりそうでしたか。 破棄してくれる手段を一つくらい提供してくれてもよさそうですけどね。 諦めてgcすることにします。
692 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 09:40:50 ] 解っているとは思うが、System.gc()を実行してもGCされるわけじゃないぞ
693 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:01:06 ] サーバプログラム書いてるんですけど、 inetdとかスーパーサーバからの起動だとプロセス毎にフォークしちゃうから 嫌で、そのへんをスレッドでやりたいんですけど、 その時ってどうやって起動すればいいんでしょうか? 普通にシェルからjavaをバックグラウンドで起動しちゃうとなんか思わぬ影響がでちゃうとか書籍にかいてありました。
694 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:11:00 ] 「嫌で」「なんかでちゃう」 そんなとこなら諦めれ
695 名前:693 mailto:sage [2008/03/24(月) 10:23:28 ] >>694 inetdからサーバを呼び出すと、 1クライアントに対してforkとexecを実行するのでCPU時間が増大してしまいます。 それを防ぐために1クライアントに1スレッドを割り当てたいと考えています。 しかし書籍を調べましても起動時にどうすれば良いのか分かりません。 もしよろしければご教授願えませんでしょうか?
696 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:26:40 ] サーバでJavaのプロセスを起動し、Socket通信汁
697 名前:693 mailto:sage [2008/03/24(月) 10:32:54 ] >>696 そのプログラムは書いたのですが、 単に端末からバックグラウンドでプログラムを起動しただけでは、 開始した端末セッションからプロセスを切り離せません。 ではどうすればプロセスを切り離して起動できるのでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:44:13 ] nohup じゃだめなの?
699 名前:693 mailto:sage [2008/03/24(月) 11:04:20 ] >>698 勉強不足でnohupを知りませんでした。 それでやります!ありがとうございました!
700 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:38:55 ] そもそもクライアント毎にサーバープロセスを起動するのがナンセンスかと
701 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:59:15 ] でもタスクをキューにためてそれを逐次処理するのは遅いのでは?
702 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 12:02:46 ] いやきっとクライアント毎に起動するのはスレッドでしょ。 inetdみたいなデーモンをコンソールから起動すると、端末から切り離せない、 って悩んでただけで。 最終的には、inetd自身のように、/etc/init.d/に起動スクリプト置いてほげほげ、 ってするのが正しい姿なんだろうけど。
703 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 12:07:14 ] そうですよね。 でもサーバが落ちた時に自動起動しないのが難点なくらいで、 他に困るようなことが思いつかなかったので、nohupでもいいかなって思いました。
704 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 12:55:12 ] >>701 マルチスレッドで処理しろよw
705 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:09:28 ] ArrayList<Integer>って型に入ってるデータをソートしたいんだけど どういうやり方が良いんでしょう? 今はArrays.sort()にtoArrayでObject[]にしたものと Comparatorを実装したクラスのオブジェクトを渡しています ほかに良い方法があれば教えてください
706 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:12:19 ] Collections.sort()
707 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:12:29 ] つCollections.sort
708 名前:705 mailto:sage [2008/03/24(月) 17:17:03 ] >>706-707 あ、やっぱりそれ用のがあったのですね ありがとうございました
709 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:47:39 ] >>697 $ ./hogehoge > stdout.log 2>stderr.log < /dev/null & とかやればシェルから切り離せるけど、そういうことを言ってるわけ? バックグランドプロセスがあるとシェルが閉じれないのは シェルが用意した stdin, stdout, stderr を持っているからで、 それを別に用意すればOKなんだけど。
710 名前:デフォルトの名無しさん [2008/03/24(月) 22:37:59 ] とても初歩的な質問でお恥ずかしいのですが、 自分の出した答えに自信がないため、質問させていただきます。 int型の変数を2byteの配列に格納(その後取り出し)したいのですが、 ビット演算の理解がつたないため、下記のようなやり方しか思いつきませんでした。 正しいやり方をご存知の方がおりましたら、 教えていただきたく、よろしくお願いいたします。 byte[] data = new data[2]; int num = 128; //格納 data[0] = (byte)(num >> 7); data[1] = (byte)((num << 25) >> 25); //取り出し num = data[0] << 7; num += data[1];