Java入門・初心者質問スレ Part.7

■ このスレッドは過去ログ倉庫に格納されています
2018/01/10(水) 11:06:04.02ID:ijSgjgrG
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.6
http://mevius.2ch.net/test/read.cgi/tech/1513783473/
458デフォルトの名無しさん
垢版 |
2018/05/11(金) 23:49:17.69ID:BkhZdaXW
>>452
わかった。じゃあ厳密に答えよう。こうだ。

1 ×
2 ×
3 ○
2018/05/12(土) 00:44:10.56ID:zFimtC1H
>>456です。

>>457
ありがとうございます。

本によると、int.classとか見慣れない表記をしているのですが、
これでもよいのでしょうか?
2018/05/12(土) 10:16:25.78ID:UEBc/Ia0
>>459
>>457がぼけてただけだわ、int.classでよす
https://ideone.com/Xc37lP
461456
垢版 |
2018/05/12(土) 23:06:04.87ID:zFimtC1H
>>460
ありがとうございます。
int.classやlong.classなど、基本型名.classは何型になるのですか?
2018/05/13(日) 20:17:09.11ID:VaYQl2tk
レイアウトについて質問させてください。

(1)
Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
contain.add(new JButton("ボタン2")) ;

(2)
Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
JPanel p = new JPanel() ;
p.add(new JButton("ボタン2")) ;
contain.add(p) ;

(1)ではボタンが二つとも左端に表示されるのですが、(2)は両方とも真ん中になります。
なぜ両方とも左寄せにならないのか悩んでます。これってどうしてですか?
2018/05/13(日) 20:36:34.00ID:ZtGqqYsK
見たことない書き方だな
普通にレイアウト書いたらあかんの?
静的でも動的でもいいけど
464デフォルトの名無しさん
垢版 |
2018/05/13(日) 21:31:40.32ID:v233urWy
>>462
JButtonは、alignmentXのデフォがLEFT_ALIGNMENT
JPanelは、alignmentXのデフォがCENTER_ALIGNMENT

JPanelのalignmentXにLEFT_ALIGNMENTを設定したら
JButtonが左に寄った

BoxLayout内のコンポネントは独立して配置されるわけじゃないみたい
わしにはよくわからん
2018/05/13(日) 23:14:48.90ID:VaYQl2tk
>>464
ありがとうございます。でもそれだとボタン1は左に寄るんですけど、ボタン2はまだ真ん中なんですよね。
でも p を boxlayout.X_ASIS にしたらボタン2も左に寄りました。
でもなぜそうなるのか、何が何だか分からない。

Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
JPanel p = new JPanel() ;
p.setAlignmentX(Component.LEFT_ALIGNMENT);
p.setLayout(new BoxLayout(p,BoxLayout.X_AXIS));
p.add(new JButton("ボタン2")) ;
contain.add(p) ;

あと

p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS));
p.setLayout(new FlowLayout(FlowLayout.RIGHT)) ;
p.setLayout(new FlowLayout(FlowLayout.CENTER)) ;
p.setLayout(new FlowLayout(FlowLayout.LEFT)) ;

とか、あとボタンをさらに加えたり、色々試してみるんですが、よく分からない。
2018/05/15(火) 18:37:33.48ID:IdPDIHX7
正規表現について質問なんですけど、

String str = "会社名( 多久比禮志神社 )、住所 ( 富山県富山市塩689 ) のウェブサイトを探し、そのウェブサイトのURLを入力してください" ;

ここから会社名と住所を取り出したいんですけど、

Pattern pattern1 = Pattern.compile("[(] .* [)]");

これだと

( 多久比禮志神社 )、住所 ( 富山県富山市塩689 )

が取り出されるんですけど、何が悪いんでしょうか?( 多久比禮志神社 )と、( 富山県富山市塩689 ) を別々に取り出したいんです。
2018/05/15(火) 19:13:56.71ID:JYHluoOt
[( ].+?[)]
2018/05/15(火) 19:16:56.51ID:18kCbkVn
>>466
最長一致とかでググれ。

Matcher m1 = Pattern.compile("a.*b").matcher("ababab");
Matcher m2 = Pattern.compile("a.*?b").matcher("ababab");

System.out.println(m1.find() + " " + m1.group());
System.out.println(m2.find() + " " + m2.group());
469デフォルトの名無しさん
垢版 |
2018/05/15(火) 20:52:24.90ID:r6+CqG6i
>>466
こうかねえ

\\((.*?)\\)\\((.*?)\\)
470デフォルトの名無しさん
垢版 |
2018/05/15(火) 20:53:43.49ID:r6+CqG6i
あ、まつがえた
こうだな

\\((.*?)\\).*?\\((.*?)\\)
2018/05/15(火) 20:55:15.80ID:JYHluoOt
俺のレスが見えないのか馬鹿ども
無駄な駄レスをまき散らすなアホ
472デフォルトの名無しさん
垢版 |
2018/05/15(火) 21:36:26.05ID:4HBr8Nk+
\\(([^)]+)\\)
2018/05/15(火) 22:08:48.50ID:JYHluoOt
  ∧∧
 (д´*)
 (⊃⌒*⌒⊂)
  /_ノωヽ_)
2018/05/15(火) 22:09:20.54ID:JYHluoOt
THE 性器表現
2018/05/15(火) 22:20:36.07ID:IdPDIHX7
皆さんほんとに感謝です。最長一致、最短一致は自分で調べていて目にはしていたんですが、解説を読んでもよく分かりませんでした。
こういうコードになりました。

String str = "会社名( 多久比禮志神社 )、住所 ( 富山県富山市塩689 ) のウェブサイトを探し、そのウェブサイトのURLを入力してください" ;
Pattern pattern1 = Pattern.compile("[(].*?[)]");
Matcher m1 = pattern1.matcher(str);
String[] id = new String [2] ;
for (int j = 0 ; j < 2 ; j++) {
  m1.find() ;
  id[j] = m1.group(0);
  System.out.println(id[j]);
}

出力結果

( 多久比禮志神社 )
( 富山県富山市塩689 )
2018/05/15(火) 22:36:23.61ID:JYHluoOt
お前さぁ
俺が一番最初に一番最短のまともな回答書いてやってるのに
なんで意味わからずアスタリスク使った方を選んでんだアホ
これだから馬鹿はイラつくんだよな
説明読んで正規表現もわからんってどんな馬鹿だよ・・
お前はもう二度と書き込むなアホ
477デフォルトの名無しさん
垢版 |
2018/05/15(火) 22:40:19.77ID:4HBr8Nk+
+は邪道でしょ
478デフォルトの名無しさん
垢版 |
2018/05/15(火) 22:40:58.19ID:4HBr8Nk+
>>473
でもアスタリスク使ってるわけだし
2018/05/15(火) 22:54:38.02ID:IdPDIHX7
>>476
申し訳ありません。ところで、あなたの [( ].+?[)] を使うと、

会社名( 多久比禮志神社 )
( 富山県富山市塩689 )

と出力されます。

[(].+?[)]

にすると

( 多久比禮志神社 )
( 富山県富山市塩689 )

になります。なんかまた謎が増えてしまって。
2018/05/15(火) 22:59:41.77ID:JYHluoOt
>あなたの [( ].+?[)] を使うと、

おめーが使ってる最初の括弧が2バイト文字だからそのまま使ってるだけなんだが
舐めてんのかお前?
2018/05/15(火) 23:01:13.76ID:JYHluoOt
あ、半角スペース入ってただけだわすまんな
っつーか揚げ足取って挑発してんのかおまえ?
あ?
2018/05/15(火) 23:09:47.97ID:IdPDIHX7
>>481
でも半角スペースが入ったら、「会社名」が何で含まれるんでしょうか?揚げ足を取りたいわけではなくて、ほんとに分からない。
2018/05/15(火) 23:30:36.21ID:IdPDIHX7
>>481
申し訳ありません。文字列が違ってました。

"2. 会社名( 多久比禮志神社 )、住所 ( 富山県富山市塩689 ) のウェブサイトを探・・・”でした。最初の「2」の後にスペースが入ってました。
重ねて謝罪します。ほんとに申し訳ありませんでした。
2018/05/15(火) 23:43:31.90ID:1bAdW6Zs
会社名や住所に()が含まれるときここに出た正規表現じゃ全部駄目
再帰的パターン使え
485デフォルトの名無しさん
垢版 |
2018/05/16(水) 01:40:48.31ID:Ncn1UiZB
だめだけど、そういう仕様にしなければいけないという指定はない。
2018/05/16(水) 04:29:15.58ID:OVunt3L8
* は、0回以上
+ は、0回以上
? は、0 か1回

{m} は、m回
{m,} は、m回以上
{,n} は、n回以下
{m,n} は、m回以上、n回以下

上は最長一致 (greedy)。
最短一致にするには、? を付ける (reluctant)

*?, +?, ??, {m,}?, {,n}?, {m,n}?

例えば、<div>あ</div> で、

<.*> なら最長一致で、<div>あ</div>
<.*?> なら最短一致で、<div>
487486
垢版 |
2018/05/16(水) 04:37:57.06ID:OVunt3L8
>>486
修正

>+ は、0回以上
+ は、1回以上
488486
垢版 |
2018/05/16(水) 04:58:36.97ID:OVunt3L8
修正

本当は最短一致なら、<[^>]*>

先頭が< で、> 以外の文字が、0以上あって、末尾が>
2018/05/16(水) 22:17:26.76ID:RliGnokV
なんで \\( と書かずに [(] と書く?
まあこの場合同じ事だけどさ。
2018/05/17(木) 00:43:44.49ID:yxB+aPaP
まだ前の人の質問が完結してないみたいですが、質問させて頂いていいでしょうか?

JUnitというツールを使いこなせれば、アサーションは覚えなくても問題無い
でしょうか?
2018/05/17(木) 04:45:13.62ID:tkjoiiDy
お前の頭に問題がある
2018/05/17(木) 10:22:35.65ID:CDjWE0Pi
これはよい炎上学習法
2018/05/18(金) 16:58:29.13ID:syGPQ258
boolean hoge1=false,hoge2=false;
if(hoge1 == true && hoge2 == true){}

こうやって書くともっとシンプルにって言われるんだけども、
どうやってシンプルに書くのでしょう?
if(hoge1 && hoge2 ){}
だと、両方falseでも条件を満たしますよね?
2018/05/18(金) 17:17:48.97ID:q0eVLi5m
>>491
>>492
意味分からんレスするなよ…
2018/05/18(金) 18:26:18.59ID:8ItvNdb4
>493
ヒント:入門書読み直し
496デフォルトの名無しさん
垢版 |
2018/05/18(金) 18:58:41.99ID:fM2r+Hus
>>493
やってみな
2018/05/18(金) 19:32:25.01ID:L1Y1ZEs3
>>493
頭悪い上に自分で試そうともしない
生きている価値のない究極の人間のクズ
2018/05/18(金) 19:36:55.94ID:KNJkfM12
>>493
https://ideone.com/oYN4oj
2018/05/18(金) 19:50:24.03ID:xP2z7JCS
System.out.println(true && true) ;
System.out.println(false && false);
System.out.println(true && false);

true
false
false
2018/05/18(金) 19:55:26.49ID:KNJkfM12
>>499
それは質問>>493の答えになっていない
501デフォルトの名無しさん
垢版 |
2018/05/18(金) 20:54:08.79ID:vSzWWhuT
なってると思うけどなあ
むしろQZの方が・・・
2018/05/19(土) 02:01:38.66ID:XScpv1fe
大規模開発用言語のHaxe なんて、
if の条件文は厳格で、Bool しか書けない

Bool以外の変数、a について、
if ( a )
は、コンパイルエラー

if ( a != null )
null でも、わざわざ比較する

if ( a == 1 )
if ( a = 1 )
こういう書き間違いを防ぐため
503デフォルトの名無しさん
垢版 |
2018/05/19(土) 07:20:54.81ID:b7x1I7X/
>>502
Javaもそうだよ。比較的新しい言語ってだいたいそうなってない?
2018/05/19(土) 09:05:01.70ID:yOmhUNnm
>>503
スクリプト言語はそうでもないよ
505デフォルトの名無しさん
垢版 |
2018/05/19(土) 09:39:45.34ID:b7x1I7X/
あー。スクリプトはそうか。
2018/05/19(土) 10:00:26.93ID:P9NZnjfr
>>497
それをワザワザ教えてあげる貴方いい人だ
俺も色んなカス見てきたけど
if (b == true)これ書く奴はまず頭も悪いし
プログラマとしてのセンスも皆無だと思う
現場を混沌に導く癌でしかない

>>501
俺もそう思った
Qちゃん今回はチョッとズレてたね残念
2018/05/19(土) 10:28:05.93ID:sq/G7sle
>>506
好みの問題だから君が言ってるのは
ワガママだと思うけどなあ
自分の価値観が絶対だと思ってるんでしょ
友達いなさそう
508デフォルトの名無しさん
垢版 |
2018/05/19(土) 11:39:44.12ID:BQeAYIRL
いゆしかし if (b == true) は人に何かがおかしいと感じさせるには十分
509デフォルトの名無しさん
垢版 |
2018/05/19(土) 11:52:24.95ID:zEl3eNvL
>>508
!bは分かりづらいからb == falseと書くことがあり
一貫性を持たせるために
b == true
b == false
と書きましょうとなることもある
可読性の話です
510デフォルトの名無しさん
垢版 |
2018/05/19(土) 11:55:25.27ID:zEl3eNvL
代替を「だいがえ」と言うようなものかな
おかしいけどわかりやすいっしょ
2018/05/19(土) 12:06:04.01ID:4IULO87O
あのなぁ
くだらないネタでいつまでもくだらないレスの応酬やめろボケカス低能ども
512デフォルトの名無しさん
垢版 |
2018/05/19(土) 12:08:35.09ID:zEl3eNvL
>>511
b == true
これありですよね?
513デフォルトの名無しさん
垢版 |
2018/05/19(土) 12:55:36.37ID:0KRdo9xC
【そこまで言って委員会】 津川「改憲、死ぬ覚悟ある?」 <ねーのかよw>  安倍「そんなwww」
http://rosie.5ch.net/test/read.cgi/liveplus/1526696087/l50
2018/05/19(土) 13:26:42.96ID:NVNSjmKt
>>501
詳しく
515デフォルトの名無しさん
垢版 |
2018/05/19(土) 14:46:06.80ID:zEl3eNvL
>>514
詳しく言うとQZのコードは論理的に破綻してるよねってこと
516デフォルトの名無しさん
垢版 |
2018/05/19(土) 15:21:18.38ID:sMDzLR8Y
>>509
いやそれそもそも分かり辛くないから
517デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:01:59.23ID:zEl3eNvL
>>516
俺は困ってないからみたいな
分かりづらいと思う人が存在してることを受け入れるんだよ

お前は自分が良ければそれでいい
他人のことなんか知ったことじゃない
俺様こそが世界の全てだと思ってるクッパ野郎だろうけど
世の中にはクリボーもパックンフラワーも居るんだよ
518デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:03:14.01ID:zEl3eNvL
ニンテンドーは世界の広さと多様性を教えてくれるとても素敵な企業だよね
519デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:05:12.48ID:s0GlRA3+
>>517
分かりづらくない、いやむしろ分かりやすい、と感じ始めたところ辺りが初心者の終わりの始まり。
520デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:09:55.41ID:zEl3eNvL
>>519
> 終わりの始まり
このフレーズ、30年前俺が中学の時一番最初に思いついた
著作権は俺にあるから、別に自由に使ってくれていいけど
最初に思いついたのは俺だからそこんとこ忘れないでくれ
521デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:13:18.78ID:zEl3eNvL
FF13でヴァニラが使ってたときは恥ずかしくて枕に顔埋めたよね
それ俺のだから〜(///ω///)みたいな
俺が30年前中二病全開のときに思いついたフレーズだからみたいな
よくよく考えれば売上の何%か俺に入ってもいいよねこれ
522デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:17:55.80ID:zEl3eNvL
>>519
あどうも、終わりの始まりさんこんにちわ
ドゥモ♪\( ̄ー ̄|電柱| ̄ー ̄)/ドゥモ♪
523デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:19:15.09ID:zEl3eNvL
          ____
       / \  /\  キリッ
.     / (ー)  (ー)\   終わりの始まり
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー'´   /
    ノ            \
  /´               ヽ
524デフォルトの名無しさん
垢版 |
2018/05/19(土) 16:20:02.61ID:zEl3eNvL
久々に使ってもらえて嬉しかったからついつい失敬失敬
525デフォルトの名無しさん
垢版 |
2018/05/19(土) 17:11:27.14ID:s0GlRA3+
やはり if (b == true) なんて書くやつは何かがおかしいな。
2018/05/19(土) 17:13:12.24ID:ttKcchMI
自分は if (a && b) と書かれたコードを見たら、5秒か10秒くらい考える口だわ。
527デフォルトの名無しさん
垢版 |
2018/05/19(土) 17:27:23.55ID:zEl3eNvL
if (終わりの始まり) {
 >>525
}
528デフォルトの名無しさん
垢版 |
2018/05/19(土) 17:28:07.17ID:s0GlRA3+
ま、ifで条件式書かずに直接booleanの変数だけ使うのはあまりないけどな。
何らかの理由で複数回同じ比較をする必要があったりして、無駄だから比較結果を変数に入れといて実際に比較する代わりにそれ使うようにするとかな。
あとはメソッドの戻り値がbooleanで成功がtrue、エラーがfalseの時にifでそのまんま分岐させるとか。
529デフォルトの名無しさん
垢版 |
2018/05/19(土) 17:28:11.70ID:zEl3eNvL
ごめん、俺今日これから終わりの始まりだから
2018/05/20(日) 14:03:28.07ID:JyKbNFIa
>>520
https://ja.wikiquote.org/wiki/%E3%82%A6%E3%82%A3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%B3%E3%83%BB%E3%83%81%E3%83%A3%E3%83%BC%E3%83%81%E3%83%AB
「今は終わりではない。これは終わりの始まりですらない。しかしあるいは、始まりの終わりかもしれない。」
"Now this is not the end. It is not even the beginning of the end. But it is, perhaps, the end of the beginning."

>>520
貴様は「始まる前に終わっていた」
531デフォルトの名無しさん
垢版 |
2018/05/20(日) 15:47:53.02ID:2vtHNIEh
>>530
あ、俺チャーチルの生まれ変わりかも
2018/05/21(月) 19:28:59.75ID:HQk+rkwS
public class A(){
int x;
int y;
/*(略)*/
}

みたいなクラスAがあったとして
クラスBにフィールドxを利用するメソッドをつくりたい場合

public class B(){
public void func(int ax){
/*(略)*/
}
/*(略)*/
}

とするのと

public class B(){
public void func(A a){
//a.xのみ利用
/*(略)*/
}
/*(略)*/
}

とするのではどちらが良い書き方でしょうか?
2018/05/21(月) 20:07:56.78ID:kCIhHpfP
クラスBのフィールドxを使いたいなら前者だし
クラスBのフィールドxに入っている値を使いたいなら後者

設計と考え方次第
2018/05/21(月) 20:08:48.56ID:kCIhHpfP
ああ、逆だ
値を取り出すべき人はだれかって話
535デフォルトの名無しさん
垢版 |
2018/05/21(月) 20:31:33.87ID:M7fGJX8z
>>532
将来的にクラスAの他の変数にもアクセスするように拡張するなら後者かな。

しかしB側のメソッドに値を渡す度に必ずAのインスタンスが必要になるわけで、それで効率悪くなるとかメモリ食い過ぎになるようなら前者かな。
2018/05/21(月) 21:35:10.02ID:ZEeSzoyV
x の出自がどこかが重要かどうかだね。
537532
垢版 |
2018/05/21(月) 21:55:30.28ID:HQk+rkwS
レスありがとうございます
任意の値放り込んで動作テストしやすい前者のほう好んで使ってたけど
後者のほうが良く見かける気がしたので聞いてみたんですが
思考停止でどっちってものでもないんですね
2018/05/22(火) 03:37:47.30ID:ePdBI50U
staticでもない限りフィールドを参照する場合は必ず
そのフィールドを持つクラスのインスタンスが存在するんだから
ほとんどの場合において思考停止で後者だよアホ
ここの回答者はアホしかおらんからお前みたいなのがよく騙される
2018/05/22(火) 09:04:18.49ID:nTol+9j5
こうしてimport地獄に足を踏み入れるのであった
2018/05/22(火) 11:33:37.24ID:+V0ARxgv
どんどん機能追加しているうちに多次元配列や変数が増えたからか若干カクカクになってきたんだけど
例えば if (0==0) { みたいに変数のスコープ狭くしたら多少は軽くなるんでしょうか
541デフォルトの名無しさん
垢版 |
2018/05/22(火) 12:16:48.73ID:s7oQSYg1
スコープ狭くしたらメモリ確保と解放が多くなるから遅くなるのでは?
ま、実際は最適化されるからあまり遅くならんかも知れないが。
542デフォルトの名無しさん
垢版 |
2018/05/22(火) 17:27:26.05ID:E5c/uhrq
一つリストを使ったアンドロイドのソースがあって
以下サイトのコードを(main.activityの名前は適当に変えて)そこから呼び出すように実装したいんだけど
どこにどう書けばいいの?
http://olee46.hatenablog.com/entry/2017/06/07/053010

呼び出したい画面のjavaソースの中に何かを書けばいいと思うんだけど、
参考書みてもぐぐってもわからん
2018/05/22(火) 18:06:36.51ID:ePdBI50U
ヒント:質問するときは日本語で
544デフォルトの名無しさん
垢版 |
2018/05/22(火) 18:39:07.10ID:jJOm7blD
>>542
AndroidはAndroidスレへ
2018/05/23(水) 00:32:58.76ID:ZUx8CcqZ
coberturaをダウンロードしたのですが、.gzというファイル形式だったので
展開する必要があるみたいです。
何かおすすめの無償の解凍用ソフトがあったら教えて頂きたいのですが、
どんな感じでしょうか?
2018/05/23(水) 00:44:41.94ID:0Sl9hrHV
>>545
tar.gz でしょ? 昔からUNIX系OSでよく使われていた方式で、 tar で複数のファイルをまとめたものを gzip 圧縮したやつだ。
Windows で中身を取り出したい場合でもだいたいの zip 展開できるソフトならできると思う。
俺が使ってるのはこれ。7zipだが、tar.gz 等もできる。
https://www.7-zip.org/
その他、Linux等のUNIX系OSなら tar xfz でファイル指定すると展開できるよ。(WSL上のLinux環境やCygwinでも同じ)
547545
垢版 |
2018/05/23(水) 01:00:34.46ID:ZUx8CcqZ
>>546
返信ありがとうございます。

7zipのサイト見たのですが、ちょっと気になったのが、LGPLという記述があった
ことです。
LGPLだと、規約により自分の作成したコードを公開しないといけなくなるらしい
のですが、その辺は問題無いのでしょうか?
548デフォルトの名無しさん
垢版 |
2018/05/23(水) 01:24:55.85ID:0Sl9hrHV
>>547
使うだけなら関係ない。7zipのライブラリ等を使うプログラムを自分で作って公開する場合に関係する。
LGPLの概要はこんな感じ。必ずしも自作部分のソースを公開する必要はない。
http://easylabo.com/2015/04/rapid-prototyping/9048/
2018/05/23(水) 01:36:07.73ID:ZUx8CcqZ
>>548
しつこくて恐縮ですが、念のためにお聞きすると、
LGPLの影響は7zip内のソースコードやクラスライブラリを自分の著作物に
利用する場合にのみ影響してくる、ということでいいんですよね?
550デフォルトの名無しさん
垢版 |
2018/05/23(水) 03:56:11.01ID:0Sl9hrHV
>>549
そう。その通り。
2018/05/23(水) 08:55:06.92ID:McbJvmIi
7-Zip は、普通の無料アプリ。
インストールしたら、右クリックメニューから解凍できる、って言うだけ

この著作物を、君が無断で配布しなければ良いだけ。
そもそも、他人の著作物を無駄配布できないのは、常識だろ

>>541
メモリ確保と解放は、多くならない

例えば、スタックメモリ、1,000番地まで使っていて、
40バイトのオブジェクトを作ったら、1,040番地まで使っていることになる

各オブジェクトの生成・解放の手間は、毎回掛かるので、
それを嫌がる人は、スタックよりもヒープを使うけど、
ヒープはスコープが広いから、よくバグる

でも、メモリ確保と解放は、小さいサイズ毎にはやらない。
数MB毎とか、まとめて確保しているはず

メモリプールのような感じ
552デフォルトの名無しさん
垢版 |
2018/05/23(水) 09:23:52.25ID:VrgE/TCp
>>551
メモリのOSへの要求はライブラリでまとめて多目に要求するのが普通だとは思うが、それでもその中で確保と解放の処理が必要になるためその分の負荷は掛かる。
553551
垢版 |
2018/05/23(水) 11:13:18.92ID:McbJvmIi
たぶん、ファイルのバッファ・キャッシュと同じ理屈だろ

1バイトずつ千回書き込んでも、バッファにためておいて、
たまったタイミングで、1KB の1回の書き込みに変えてしまう

だから、そんなに小さいサイズ毎に、OSには要求しないと思う

何MB か、Java内部のメモリプールでやり繰りしておいて、
そのサイズで足らなくなったタイミングで、OSに新たなメモリを催促する感じ

数バイト毎に、OSのAPIを呼ぶと、
その度に、コンテキストスイッチが起こって、とんでもなく遅くなるはず

なるべく、OSのAPIを呼ばないように、VM 内でやり繰りする最適化が、
Java, JS, Ruby など、各VMの腕の見せ所
2018/05/23(水) 11:25:36.16ID:ZUx8CcqZ
>>550
>>551
ありがとうございました。
555デフォルトの名無しさん
垢版 |
2018/05/23(水) 11:29:10.14ID:VrgE/TCp
そう。そんなのはC言語のmalloc()でもやっている。
しかしメモリが足りていてもmalloc()が呼ばれれば要求された分のメモリを呼ばれた側に返すために管理用のポインタを書き換えたりする処理が必要になる。
それは微々たるものではあるが何万回も呼ばれたりすれば人間でも感じられるぐらいの遅さにはなるかも知れない。
同じようなプログラムが何千もマルチタスクで動けばそのマシン全体の付加を高めて遅くなるかも知れない。
2018/05/23(水) 20:04:39.19ID:VpAiMH2g
>>554
糖質35歳か
2018/05/24(木) 20:04:52.40ID:46gnIEx5
>>556
糖質じゃねーよ
■ このスレッドは過去ログ倉庫に格納されています