- 1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:52:10 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド115【歓迎】 pc11.2ch.net/test/read.cgi/tech/1210529127/ 次スレは>>990あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
- 862 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:36:42 ]
- >>859
「よく解らないので(知らないものは)採用できない」と言われたことあるぜw
- 863 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:05:58 ]
- むしろ定数自体が邪悪
- 864 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:31:43 ]
- うちもインターフェイスかな・・
Static importとか使う?
- 865 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:36:35 ]
- >>864
import java.util.*; のような表記は全然OKだけど、static import は使わない。
- 866 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:05:38 ]
- 個人のサンデープログラマは気ままにEnumのみ
- 867 名前:デフォルトの名無しさん [2008/07/05(土) 22:35:05 ]
- 質問です。
画像ビューワみたいなのを作ってます。 画像を JScrollPane の中央に表示させたいんですけど、 ウィンドウのサイズをいじると左上に移動してしまいます。 これをなくしたいのですが。。。以下ソースコード(1/2) package test; import java.awt.*; import java.awt.image.*; import javax.swing.*; import javax.swing.event.*; public class JSTest extends JFrame implements ChangeListener{ private JScrollPane sp; private MyCanvas mc; public JSTest(){ mc = new MyCanvas(); sp = new JScrollPane(mc); getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); getContentPane().add(sp); JSlider js = new JSlider(20, 300, 100); js.addChangeListener(this); getContentPane().add(js); pack(); setVisible(true); } public void stateChanged(ChangeEvent e){ int newScale = ((JSlider)e.getSource()).getValue(); mc.setScale(newScale); // サイズに合わせて位置を調整 sp.getViewport().setViewPosition(new Point(newScale - 100, newScale - 100)); repaint(); } public static void main(String[] args){ new JSTest();}
- 868 名前:デフォルトの名無しさん [2008/07/05(土) 22:37:33 ]
- class MyCanvas extends JComponent{
private int scale = 100; private Image img; private Dimension size; public MyCanvas(){ int[] pixelData = new int[240 * 240]; for(int i = 0; i < pixelData.length; i++) pixelData[i] = (255 << 24) | (int)(Math.random()*256*256*256); MemoryImageSource mis = new MemoryImageSource(240, 240, ColorModel.getRGBdefault(), pixelData, 0, 240); img = createImage(mis); size = new Dimension(240, 240); } public int getWidth(){ return size.width * scale / 100;} public int getHeight(){ return size.height * scale / 100;} public void setScale(int scale){ this.scale = scale; } public void paintComponent(Graphics g){ g.drawImage(img, 0, 0, getWidth(), getHeight(), null); } } } ソースコード終わり。getWidth()とかオーバーロードしてるのがまずいんですかねぇ。。
- 869 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:16:22 ]
- >>867
スクロールペインで全体の一部を表示する為の機能なので、通常の使い方ではないのでは? 真ん中に表示だと、こんな感じ。 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/333.java
- 870 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 04:07:52 ]
- >>869
ごめんなさい スクロールできてなかった。 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/334.java
- 871 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:28:52 ]
- JPanelにBufferedImageをadd出来た気がする
- 872 名前:867 [2008/07/06(日) 09:50:38 ]
- >>869,870
うおお。なるほど! paintComponent のほうで調節するんですね。。 これなら使えそうです。ありがとうございました。
- 873 名前:デフォルトの名無しさん [2008/07/06(日) 10:32:07 ]
- 質問です。
今、Java で大量に同時に画像を読み込むプログラムを書いてるのですが、 -Xmx オプションで 1GB くらい確保しても、OutOfMemoryError がでてしまいます。 Windows には物理メモリが足りなくなったときに HDD をメモリに見立てた 仮想メモリというものがあると思いますが、これを Java で使うことはできない んでしょうか?
- 874 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 10:42:40 ]
- それで足りないならば設計を疑えよ
どっかに大きなボトルネックあるだろ、常考 おおかた全部配列とか馬鹿食いのオンメモリなんだろうが
- 875 名前:873 [2008/07/06(日) 10:48:34 ]
- >>874
そうです。画像データは全部配列です。。。 int[] pixelData = new int[2000 * 2000]; みたいな画像データを20〜50くらいメモリに持ってます。 同時に表示することもあります。 表示するサイズは小さいサムネイルサイズなので、 それだけ残して、元データは HDD に保存してもいいんですけど、 VM が物理メモリを勝手に使ってくれるというのは 結局同じようなことなのかと思ったので質問しました。 VM が全部解決してくれたら、プログラマは楽だなぁと。。
- 876 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 10:55:28 ]
- 画像のクラスを使わないであえて配列でしてるのか・・
- 877 名前:873 [2008/07/06(日) 10:57:48 ]
- >>876
あえてというか、画像クラスの使い方がわかってません orz 32bit グレースケール 32bit x 3 の RGB 画像 これを保持できる画像クラスがあればそれで代用したいですが。
- 878 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 11:12:03 ]
- 配列はなるべく連続した領域をメモリに確保しようとするから効率は最悪
そもそも、bmpみたいな形式でオンメモリに持っている時点でアウト 素直にImageクラスなり使え、不満になったら自作するか拡張しろ
- 879 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 11:15:04 ]
- むしろ画像を使おうとしてどうして配列を思いついたほうがすごいな
ググってもImageとかBufferedImageとかしか出ないと思うんだが
- 880 名前:873 [2008/07/06(日) 11:17:48 ]
- >>878
なるほど、効率が最悪なんですね。。。 ただ、高速化のために配列のデータを C++ で書いた DLL に渡して ゴリゴリ画像処理もしたりしてるので、難しいかもしれません。。 まぁ、最初から明示的にメモリを解放できる C++ で作った ほうがよかったかもしれませんね。。。
- 881 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:14:41 ]
- >>873
DLL使っているならば最初からC++で書けよ なんでJava使うのか意味わからね 言語の選択方法から学んだほうがいいぞ
- 882 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:18:58 ]
- サムネイルを表示した後も、プログラム内でくわえ込んでいるようなこと書いてるから、
C++で書いても同じことでは?
- 883 名前:デフォルトの名無しさん [2008/07/06(日) 12:26:10 ]
- >>873
OS が仮想化してようがなんだろうが、VM に最大 1GB だと言えばそれしか使えないだろ。 なんだったら 100GB でも 100TB でも要求してやれば? 結局やることをやらにゃならんことが分かるだろw
- 884 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:35:22 ]
- 結論:Javaは糞
- 885 名前:873 [2008/07/06(日) 12:38:19 ]
- 周囲にプログラマーが居ないので勉強になります。助かります。m(_ _)m
>>881 もっともな意見です。ただ、 ・Java での画像処理関連の資産を使いたかった ・開発当初は高速化の必要性がなかった ・開発当初は VC++ を持ってなかった(笑 という感じで、こうなってます。 あとやっぱり開発環境は Eclipse が好きなので、、 >>882 そうなんですけど、使わなくなった画像とかを gc がちゃんと 回収してくれてないような気がして。。 しっかり解放してないからかもしれませんが。。 >>883 -Xmx で 5000M とか指定すると VM が起動しないのですが。。 それとも何かやりかたがあるのでしょうか
- 886 名前:デフォルトの名無しさん [2008/07/06(日) 12:54:38 ]
- >>885
>-Xmx で 5000M とか指定すると VM が起動しないのですが。。 すまん、回りくどかったか。 「仮想化さえされてれば*無限に*メモリがつかえる」と勘違いしてるように見えたので 「無限に取って見れ」と言いたかったのだ。 5000M 指定で VM が起動できない理由は自分で調査してもらうとして、仮にそれで動いても 「大量に同時に画像を読み込むプログラム」に足りてるかどうか分からない。 結局いつかは Out of Memory になる可能性があるだろう。 gc の回収が間に合わないかもしれないしな。 それなら結局どこかでメモリ使用量を抑える(ファイルベースで動くとか)様にせにゃならん。 これでどうかな?
- 887 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:01:08 ]
- >>875
おまい、ちょっとは消費メモリ見積れ。 4(intのサイズ) * 2000 * 2000 = 約16MB、それが50個あったら800MB、 その配列以外にもいろいろリソース使ってるはず(サムネイル生成とか) だから、そりゃ1GBじゃ足りなくなるだろう。 GCは、使ってない領域を解放するだけで、使ってる領域をどうにかして くれるわけじゃないぞ。
- 888 名前:873 [2008/07/06(日) 13:06:25 ]
- >>886
なるほど。わかりました。 >それなら結局どこかでメモリ使用量を抑える(ファイルベースで動くとか)様にせにゃならん。 これをJVMが勝手にやってくれると助かるなぁと思ったんですよね。 C/C++ に比べて Java はメモリスペースを意識しなくてプログラミングできるのが 利点だと思っていますので。。。(勘違いでしたらすいません。)
- 889 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:11:20 ]
- >>885
> 使わなくなった画像とかを gc がちゃんと回収してくれてないような気がして お前が使わないつもりでも、「どこか」からたどれるルートがあれば、それは「使われてる」と見なされる。 例えば、 static int[] img = new int[2000 * 2000]; なんて書いてあったら、img に null を入れん限り永遠に解放されない。
- 890 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:13:48 ]
- >>888
勘違い。free/deleteを自動的にやってくれるだけ。
- 891 名前:873 [2008/07/06(日) 13:27:17 ]
- うーん、なるほど。
Javaでは、ポインタが無かったり、GCがあったり、明示的に解放できなかったり するんで、JVMが「メモリのことは忘れてくれ」って言ってくれてるんだと拡大解釈していました。 ソフトの設計のほうを見直すことにします。 ただ、画像をファイルに保存して、配列を解放するようにしても gc が追いつかずにOutOfMemoryが出ることはありそうですが。。。 ありがとうございました。
- 892 名前:デフォルトの名無しさん [2008/07/06(日) 13:29:24 ]
- 言い切ってしまえば、VM にメモリ仮想化は無い。
(世の中全部の VM を知ってるわけじゃないから「ある」と言われたらそれまでだがw) だから、自分でしろ。
- 893 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:40:01 ]
- VMってマジで物理メモリでしかやりくりできないの?
Windowsに乗ってるアプリとは思えない仕様だね
- 894 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:41:49 ]
- >>891
VM規定に反してなければOutOfMemoryError出す前にGCが未使用メモリを回収してるはず。 強参照しっぱなしなのに「解放してるはず」と思い込んでる事は、かなり頻繁にある。
- 895 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:57:58 ]
- >>893
それはおまえの読み違いだ。
- 896 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:07:10 ]
- JPAでOneToManyのMany側を絞り込み検索した状態で
One側を得るようなJPQLはどのように書けばよいのでしょうか。 例えば従業員の作業日誌の直近5日分を 全ての従業員分取得するといったケースです。
- 897 名前:896 mailto:sage [2008/07/06(日) 14:18:27 ]
- あ、ORMスレがあったのでそちらに移動します。
こちらはクローズでお願いします。
- 898 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 18:07:40 ]
- JToolBarのボタンにつくフォーカスの四角い枠の表示ってどうやったら操作出来るでしょうか?
- 899 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 18:37:24 ]
- しつこくすみません。
どなたか>>618を教えていただけないでしょうか?
- 900 名前:898 mailto:sage [2008/07/06(日) 18:37:56 ]
- すいません自己解決しました。
- 901 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 19:01:14 ]
- >>899
設定しなおせば?
- 902 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 19:18:10 ]
- >>901
いえ、設定し直すもなにも、methodをPOSTに設定しrequestPropertyを設定するまではいいのですがその後コンテンツを取得する際、 内部的にrequestMethodを初期化(あるいは再設定?)するらしく、設定できないのです。
- 903 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:00:52 ]
- >>902
「その後」と言うが良く分からない。 こんな風なGETやPOSTじゃないの? ttp://www.hpc.cs.ehime-u.ac.jp/~aman/java/http/
- 904 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:35:29 ]
- 1.POSTでログイン時の情報を送る。
2.サーバーからSet-Cookieなどの返答がある。 3.GETでページデータを取得。 POSTに設定後各種プロパティを設定し、getInputStream()をした時点で内部で上の1〜3を行うようで、 1の接続ではMessageHeaderに設定したプロパティがそのまま使われるので大丈夫なのですが、3で再び接続する際勝手に各プロパティを設定されてしまいます。 説明が分かりにくくて申し訳ありません。
- 905 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:52:43 ]
- 1.リクエストプロパティの設定
2.サーバーからレスポンスを得る 3.InputStreamなどでデータを読む 一回の接続でこれを行うので、ほかにも処理をしたい場合は再度1〜3を繰り返す。 それともリダイレクトの事なのだろうか?
- 906 名前:デフォルトの名無しさん [2008/07/06(日) 21:06:56 ]
- >>899
そのコードをアプしてくれ。
- 907 名前:デフォルトの名無しさん [2008/07/06(日) 21:20:46 ]
- >>904
1 → 2 と 3 は別だろ。 1 の POST に関する処理は 2 で終わってる。 1 のために作った HttpURLConnection に対しての getInputStream と、 3 の GET と勘違いしてないか?
- 908 名前:デフォルトの名無しさん [2008/07/06(日) 21:32:57 ]
- ちなみにPOSTで送られてくるクッキーはGET時に自分で設定しないと
送られないのは分かっているか?
- 909 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 21:45:37 ]
- >>905
その通りでした。確かにリダイレクト時にリクエストプロパティが再設定されてしまうようですが、今回はそれが原因ではありませんでした。 クッキーについては、CookieManagerにCookiePolicyとしてとりあえずCookiePolicy.ACCEPT_ALLを設定し、一応その情報が送られていることをパケットキャプチャで確認しておりましたが、そのクッキーがいくつか欠けていたようです。 サーバーからSet-Cookieとして送られてきていて、全て受け入れるようにしているにも関わらず一部しかクッキーが設定されていないのが現在の疑問です。 まだしばらく検証してみます。 いろいろな方がわざわざ解決しようとしていただいたのに、お気持ちを踏みにじるようなことになってしまってすみません。
- 910 名前:デフォルトの名無しさん [2008/07/06(日) 22:08:01 ]
- ava.util.Map.Entryってどういう意味があるの?
どういうときに使うかを教えてください。
- 911 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:15:57 ]
- それはKeyとValueのペアを表すオブジェクト。
基本的にはMapの内部で使われるだけで、あんまり意識しなくていい。 意識する時はKeyとValue両方の値をイテレートする時くらいかな。 keySetのイテレートからgetで値を取り出す手法より速いからね。
- 912 名前:デフォルトの名無しさん [2008/07/06(日) 23:37:02 ]
- >>899
これ、何に使うのかが気になる。
- 913 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:46:04 ]
- テストの自動化とか、日次処理とか用途はいろいろ考えられるね。
- 914 名前:デフォルトの名無しさん [2008/07/06(日) 23:46:32 ]
- すみません、質問です。
現在JavaからMS-DOSのバッチファイルを呼び出して処理したいと思っています。 Runtime.exec()を使用して呼び出し・処理自体は成功しているのですが バッチ内部からの返り値をJava側で取得する事はできないのでしょうか?
- 915 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 23:46:56 ]
- >>912
fx取引でもするつもりなんじゃね
- 916 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:01:37 ]
- Process#exitValueじゃね?
- 917 名前:デフォルトの名無しさん [2008/07/07(月) 00:32:32 ]
- >>916
Exitvalueで値は帰ってくるのですが、常に0となってしまいます。 バッチ内では明示的に1を返しているのですが・・・ 何かやり方がまずいのでしょうか・・・。
- 918 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:39:47 ]
- >常に0となってしまいます。
バッチの呼び出しに成功してるから0なんじゃね? ここらへんwinとlinuxで実装違った気がする。 linuxで同じこと試せる?
- 919 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:52:14 ]
- バッチって
cmd /c batch.bat って呼び出すんだっけ?
- 920 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:52:20 ]
- >>918
>linuxで同じこと試せる? 今のところLinuxの環境がないですね・・・ 会社の方にあったかもしれないので探してみます。 >バッチの呼び出しに成功してるから0なんじゃね? ExitValueとは、バッチでの処理で返した値というより バッチを動かすプロセス自体の成否結果を取得する、というイメージでしょうか?
- 921 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:55:53 ]
- もしexitValueでの解決が難しいようなら、ステータス(に相当するモノ)を
echoして、Processの出力を読むことで代替できるかもしれない。 敗北感ありまくりだけど。
- 922 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:56:56 ]
- public static void main(String[] args) {
// TODO Auto-generated method stub Runtime rt = Runtime.getRuntime(); try{ Process p = rt.exec("hoge.bat"); p.waitFor(); System.out.println(p.exitValue()); }catch(Exception ex){ ex.printStackTrace(); } } hoge.bat中身は、 exit 1 のみ。 当方の環境は、windows これで 1 って表示されるよ。
- 923 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 01:10:51 ]
- >>921
アドバイスありがとうございます。 解決が難しい場合はやってみたいと思います。 >>922 サンプルまでつけて頂きありがとうございます。 やはりExitValueでバッチの返り値自体を取得できるのですね・・・ 当方もWindowsなのですが、なにか環境の問題なのかもしれませんねorz もう一度全体的に問題がないか見直してみます。
- 924 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 01:21:42 ]
- www.velocityreviews.com/forums/t132971-exit-code-of-a-batch-using-exit-b.html
自分のとこでやったら0だったけど、Windows 2003 (Server?)では期待通りに 動いたとかいう古い投稿記事。
- 925 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 01:25:18 ]
- >>923
batの内容とソースうp
- 926 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 06:18:24 ]
- >>904
Cookieを決めるのはSet-Cookieだけではなくて、javascriptにも命令文が有った筈。
- 927 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 09:14:22 ]
- >>912
特にこれといって今のところは使う予定はありません。 単純に便利なクラスだなぁ〜、といろいろ試してました。 >>926 他のブラウザで実行した場合の全てのクッキーがSet-Cookieで送られ、実際に設定されたクッキーもそれらであったため、それはないと思います。
- 928 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 11:44:51 ]
- Set-Cookieはサーバーサイドcookieでjsのはクライアントサイドcookieな。
- 929 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 12:14:20 ]
- そんなネタに釣られ熊
- 930 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:33:31 ]
- すみませんが質問、というか相談です。
アノテーションとその応用について、参考になるリンクや書籍をご紹介いただ けないでしょうか?書籍は和書だとありがたいですが、なければ英語でも。 【コラム】ライトニングJava (26) アノテーション(1) - Javaの大きな変貌、アノテーションの導入 journal.mycom.co.jp/column/java/026/ この連載を読んで興味を持ったのですが、どのような応用が考えられるのか、 あまり参考になる情報を見つけられませんでした。
- 931 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:06:00 ]
- すごいアホな質問で申し訳ありませんが、JUnitの3までは
TestAAAA#testBBBをTestSuite に追加するには TestSuite suite = new TestSuite(); suite.addTest(new TestAAAA("testBBB")); とかって出来ましたよね? JUnit4はどう指定したらいいのでしょうか。
- 932 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:14:31 ]
- >>909
CookieManagerって期限判定がおかしくない?
- 933 名前:デフォルトの名無しさん [2008/07/07(月) 15:31:35 ]
- >>931
www.google.co.jp/search?num=30&hl=ja&q=junit4+testsuite&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
- 934 名前:931 mailto:sage [2008/07/07(月) 16:51:55 ]
- いろいろ見てみたんですけど、基本的に
TestSuite suite = new TestSuite(); suite.addTest(new TestSuite(TestAAAA.class)); というやり方しか見つからない気がするのです。 これだと#testBBB()だけでなく、TestAAAAに記述された全テストメソッドが 実行されますよね? 4からはTestAAAAがtestCaseを継承していない以上、3までのTestCase(String name) コンストラクタが使えないのは判るのですが代替方法が判りません。
- 935 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:03:20 ]
- >>932
Locale.setDefault(Locale.ENGLISH); とすると期限を判定してくれることが分かった。 日本語ロケールでは、日付が読めないらしい。
- 936 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 20:09:24 ]
- 質問させていただきます。
JavaとMysqlをつかって200万ほどのデータを扱っているのですが、そのデータは一週間ごとに毎回不特定の数が増えて txt形式で送られてきます。これをデータベースに入れるときに、増えた行だけを新たに更新という形でMysqlを操作したいのですが、 たとえばデータが 2,600,000行→2,600,100行になったときに100行だけ追加したいのです。 プログラミングは初心者で、現在はテーブルのデータ全消し→一からファイル読み込み という流れで30秒ほどかかります。 他にスムーズに行く方法があるのでしょうか? 質問が良くわからなかったら申し訳ありません。
- 937 名前:デフォルトの名無しさん [2008/07/07(月) 20:19:01 ]
- >>936
Javaに関係する前の段階な気がするが。 その増えた分を既存分と区別することができるフィールドがあれば、 それを見て例えの100件を取り出してテーブルに入れればいいわけだ。 そしてその区別することが出来るフィールドが在るのか無いのかは 936しか分からんだろ。
- 938 名前:デフォルトの名無しさん [2008/07/07(月) 20:19:09 ]
- すみません、フリーでお薦めJava開発ツールを教えてください
- 939 名前:404 [2008/07/07(月) 20:21:09 ]
- フリーなんだから使ってみりゃいいだろにw
- 940 名前:936 mailto:sage [2008/07/07(月) 20:29:16 ]
- >>937
確かにそうでした・・・Javaとは直接関係ないですね; フィールドは日付と、あとは売り上げなどの数値だけです。 table(day date,data1 double,data2 double); といった感じです。ファイルの日付が(08-97-07のような感じです)○日〜読み取るということが出来るのでしょうか? あぁ・・Javaじゃ無くなってしまってますね。。 すいません鬱陶しかったら無視してくださって結構です。
- 941 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 20:57:02 ]
- こんばんわ。
JAVA言語とは直接関係のない話になるのですが、 レンタルサーバでJAVAが使えるところって、どこも結構値が張りますよね。 お仕事とか教育機関で使ってる方は別にして、趣味のレベルでJAVAを使ってる人は、どこで活用してるんでしょうか。 自宅サーバとか、単独アプリケーションあたりは思い付いたのですが、 何か人とは違う面白い使い方してますっていうのがあったら紹介してもらえますか? よろしくお願いします。
- 942 名前:937 [2008/07/07(月) 21:09:44 ]
- >>936
前回受け取ったデータから増えた分というのが売上日で判断付く (「今MySqlに入っている売上日より後のものが追加分」等)のなら、 取り込み時に SELECT MAX(売上日) FROM 売上 とかやって、 その送られてきたtxtから一件ずつ読んでその条件に当たる分だけ追加。 200何十万件分をチェックするのにどれくらいかかるかはやってみるのが一番か。 一番いいのは、追加分だけtxtで送ってもらうことかw
- 943 名前:936 mailto:sage [2008/07/07(月) 21:30:28 ]
- >>937
なるほど! つまりそのSELECT MAX(day) from データベースで最終更新の日時をもらって その日時以降の日付があればデータベースに入れるということですね。 Javaだとwhileとif,scannerを使えばできそうですね。 ありがとうございました。すれ違いのようなので試行錯誤してみます。
- 944 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 22:42:47 ]
- Strutsで質問なんですが、
ValidatorFormを直接継承したフォームだとvalidateできるのですが、 ValidatorFormの孫?になると、動作しなくなってしまいました。 (間の親は、ValidatorFormを継承しただけの抽象クラスです) d.hatena.ne.jp/uronim1/20060218/1140246457 ↑これと多分現象は同じですが、attribute属性は指定してないです。 勿論、form-beanの名前もconfigに書いたものと一致しています。 ソースを追っていったら、FormSetオブジェクトがnullで、 Validatorがうまく生成されていないようでした。 ちなみに、JDKは1.5.0_13、APサーバはweblogic9.2です。 原因や疑わしい箇所の検討がつく方、よろしくお願いしますm(_ _)m
- 945 名前:944 mailto:sage [2008/07/07(月) 22:43:35 ]
- すいません、追記です。
Strutsは1.2.8です。
- 946 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 22:48:05 ]
- LinkedList <String>a = new LinkedList<String>();
a.add("abc"); LinkedList <LinkedList<String>>b = new LinkedList<LinkedList<String>>(); b=a; a.add("def"); System.out.println(b); これでabcと出力したいのですが、abc defと出力されてしまいます。 これをb=a;の後にaに編集を与えたとしても、bに変更を与えないようにするにはどのようにすればいいのでしょうか?
- 947 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 22:49:32 ]
- >>946間違えました
LinkedList <String>a = new LinkedList<String>(); a.add("abc"); LinkedList <LinkedList<String>>b = new LinkedList<LinkedList<String>>(); b.add(a); a.add("def"); System.out.println(b); これでabcと出力したいのですが、abc defと出力されてしまいます。 これをb.add(a);の後にaに編集を与えたとしても、bに変更を与えないようにするにはどのようにすればいいのでしょうか?
- 948 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 22:59:56 ]
- >>947
プログラムは書いたようにしか動かない。 質問するなら、 まず、何のつもりか、したいことの方を詳しく述べた方が良い。
- 949 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:22:47 ]
- >>948
すいません説明が足りませんでした bのリストにはaが編集される度にその状態を保存しておきたいと思っています。 それで状況によってアンドゥのような処理でbのリストに保存してある状態をaに戻したいということです。 その1 a = {abc,edf,123} b.add(a); その2では456をaddしてaは以下のような状態になる a={abc,edf,123,456} b.add(a); その3ではaをソートして以下のような状態になる a={123,456,abc,edf} b.add(a); その2に戻したくなったのでbのリストに保存されているその2の状態をaに持ってくる a = b.getLast(); b.removeLast(); a={abc,edf,123,456} その1に戻したくなったのでbのリストに保存されているその1の状態をaに持ってくる a = b.getLast(); b.removeLast(); a = {abc,edf,123} ということを実現したいと思っています。
- 950 名前:デフォルトの名無しさん [2008/07/07(月) 23:29:45 ]
- >>949
b.add(a)の時にaのコピーを作ってbにaddする。
- 951 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 23:36:53 ]
- >>950
なるほど! 早速試してみようと思います ありがとうございました
- 952 名前:デフォルトの名無しさん [2008/07/08(火) 00:28:45 ]
- 先生、もうどうしていいか分かりません。
open-ejbでEJB3.0の実装をしようと思ってます。 トランザクション管理をコンテナ管理からBEAN管理 に替えたいのですが、どうやって指定したらいいか 分かりません。 EJB2.0のように、デプロイメント記述子を書くしか ないのでしょうか。
- 953 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 01:28:58 ]
- >>949
効率を考えると操作履歴を残す方が良くないか? e.g. 1. Aを追加 2. インデックスnを削除 :
- 954 名前:デフォルトの名無しさん [2008/07/08(火) 07:25:47 ]
- 質問です。
あるクラスで他のクラスのインスタンスを生成した時に、そのインスタンスの中で生成元クラスの フィールドやメソッドにアクセスしたい場合はどうすればよいのでしょうか? 具体的には、以下のように、 描画パネルのクラスでGUIを記述したクラスのボタンやテキストエリアにアクセスしたいのです。 public class Window() extends JFrame{ private MyPanel p = new Panel(); private JButton b = new JButton("button"); Container container = this.getContentPane(); container.add( p, BorderLayout.CENTER ); } public class MyPanel() extends JPanel{ public void paintComponent(Graphics g){ (描画処理) } public void method1(){ b.setText("change text"); //ここでボタンbにアクセスしたい } } かなり端折って書いてます、初心者なもので記述のおかしいところとかあるかもしれませんが よろしくお願いします。
- 955 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 07:54:38 ]
- class Hogehoge {
static MyPanel myPanel_p = null; static JButton b = null; public class Window extends JFrame{ Window () {} // コンストラクタ myPanel_p = new Panel(); b = new JButton("button"); Container container = this.getContentPane(); container.add( p, BorderLayout.CENTER ); } public class MyPanel extends JPanel{ MyPanel () {} // コンストラクタ public void paintComponent(Graphics g){ (描画処理) } } public void method1(){ b.setText("change text"); //ここでボタンbにアクセスしたい } } クラスの書き方が変だから直した。
- 956 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 07:56:02 ]
- PanelのほうにButtonのインスタンスを持たせておいてそれ使ってアクセス
- 957 名前:デフォルトの名無しさん [2008/07/08(火) 09:55:03 ]
- CDでJAVA(JDK1.5.0)のソースを配るのですが、非公開にしたい場合はどうしたらよろしいのでしょうか?
JAVAを初めて1ヶ月弱色々なゲームができるようになりましたのでそろそろ同人ゲームを作りたいです。
- 958 名前:957訂正 [2008/07/08(火) 09:56:39 ]
- CDでJAVA(JDK1.5.0)のソースを配るのですが、ソースを非公開にしたい場合はどうしたらよろしいのでしょうか?(CDでプログラムを起動だけしたい)
JAVAを初めて1ヶ月弱で色々なゲームができるようになりましたのでそろそろ同人ゲームを作りたいです。
- 959 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 09:58:25 ]
- >>958
ソースを配るのにソースを非公開にする?配るのはclassファイルとかjarとかじゃないの?
- 960 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:12:22 ]
- リストに入れたオブジェクトのフィールドを変えると
リストの中のオブジェクトのフィールドもかわってしまいますか? 言い換えるとリストの中のオブジェクトは参照しているだけですか?
- 961 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:21:31 ]
- >>958
>>959の言う通り、意味が判らないけど、 パスワード付きzipで固めるとか、そういう事でいいのかな。 Javaの問題ではない様な気がする。
- 962 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:21:45 ]
- フィールドでオブジェクトを初期化するのと(例えば A a=new A();)
コンストラクタで初期化するのとは何が違うんですか?
|

|