Java入門・初心者質問スレ Part.10
■ このスレッドは過去ログ倉庫に格納されています
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured そもそも大小比較ならcompareToでいいのでは >>749
うわーそれか!!!
最大値最小値があることすっかり忘れてた・・・
ありがとうございます
compareToで数字を比較するのは何となく敬遠してました・・・
(理由は本当に何となく)
比較する数字の桁が同じであれば数字同士でも問題なく比較できるという認識で合ってますかね? 問題ないかどうかはお前が判断することだ
Integer.parseIntならお前の意図どおりに動く根拠はあるのか?
何となくではなく仕様を理解して自分の頭で判断しろ 桁が同じで正の整数なら同等の比較が可能だけど仕様変更に弱いのでおすすめしない
「数字の大小比較をする」という意図の処理なら数値に変換した方が意図も明確になって良い それとvalueOfはオブジェクトを返すメソッドなのでparseLongを使おう String.split(String, int)はintに-1を設定すると空文字も吐いてくれるようになりますが、
ドキュメントにも載ってないし、何でそうなるのか謎です。これってそう言う慣例みたいなのがあるんでしょうか? >>760
0以外なら空文字も吐いてくれると思うよ。
0の場合に末尾の空文字が出力されないことはドキュメントにも書いてある >>763
ありがとうございます!
確かに書いてありました
概略だけ読んでドキュメント読んだ気になってました、ごめんなさい Androidのスマホアプリ作ってみたいんだけどネットで調べると今からはじめるならKotlinがオススメって出てくる
でも書籍なんかは明らかにJavaが充実してる
やっぱりJavaからはじめた方がいいかな?
プログラミングは大学でC言語をそこそこ使っててJavaも少しはやったことあるレベルです 非同期処理での誤動作について質問です。
"Java" 自体とはあまり関係ない質問かもしれません。
---
4コア8スレッドのCPU
コア A、B、C、D
スレッド 1, 2, 3, 4, 5. 6. 7, 8
コア A はスレッド 1, 2 を担当
コア B はスレッド 3, 4 を担当
コア C はスレッド 5, 6 を担当
コア D はスレッド 7, 8 を担当
---
//スレッド1の処理
vlatile int a = 1;
a++;
「スレッド 2以外が a に絶対アクセスしないと仮定」すると、参照整合性は保たれますか?
---
※ 仮定です。Java でスレッドを直接指定してアクセスをブロックするのが無理なことは知っています
※ この質問には過剰な設定ですが、他にも質問があります
※ Java では、通常の方法でスレッドを直接指定できないことは知っています >>766
Java は、チーム作業したときの成果物の品質を保証するために、現在の流行りの言語に比べて相当冗長な言語仕様になっています。
Kotlin やるなら、結局 Java も勉強することにはなると思うけど、書いて試して勉強するなら、Java はやめたほうが良い。 ちなみに、 Kotlin ができれば、Java は普通に読めると思うよ。
この文法って Kotlin でいうところの何?みたいな感じで、同じ JVM 上で動く言語なので、概念的にはほとんど共通してる。
(※ Kotlin は JavaScript とか native compile とかもある)
たまにわからんことあるかもしれんけど、大抵は対応表(チートシート)なり手元に置いておけばすぐわかる。
---
public static void main(String[] args)
こういうの、Java書いてたら、空で覚えて書けるんだけど、書ける意味も価値も今はもうほぼ無い。
こういう無駄な記憶に学習リソースを使わないほうが良い。
勉強は、今なら動画教材が充実してるから、それ使うと良いと思う。
Youtube に Kotlin の良い動画あるかは知らないけど、Udemy ってサイトは知っておくと良いよ(有料だけど質は高い、英語できたほうがいい)。
こういうのはじめに知ってるか知らないかで学習効率が相当変わってくる。 >>767
a++は
1. aの値を取得
2. 取得した値をインクリメント
3. インクリメントされた値をaに格納
の処理が行われるのでその間に別のスレッドが割り込む可能性があって
スレッド1とスレッド2で同じ値を参照する可能性はあると思う >>770
ありがつございます。
a++ が非アトミック操作なのは前提として、
「同じコアの別スレッド」って、スレッドセーフ(特に可視性)を考えた場合どうなるのかなと思いまして。
ハードウェアに詳しくないので、この「同じコアの別スレッド」という表現が正しいのかどうかすらわかってないですが。 >>771
スレッドごとにキャッシュはあるだろうけど
volatileなのでセットされた値の可視性は保証されると思う >>771
同じコアの別スレッド・・・ハイパースレッディング(SMT)のことか
SMTはパイプライン処理によって複数スレッドを同時に処理していくことで並列に見える
けど実際の演算器自体は1つで2つのスレッドが同じ処理を同時におこなうことはできない
だから大丈夫かも(昔は)
最近はSMTも改善されてパイプラインのボトルネックになる箇所の演算器を2つ持つようになっているらしい
1コア2スレッドならともかく2コア4スレッド以上になるとスレッドが同じコアに割り当てられる保証もないので考えてもしょうがないよ >>772
>>773
ありがとうございます
勉強になりました tomcatで動くwebアプリをJava+Jsp+Eclipseで開発してます。
*動作はローカルの画像ファイルをサーバーにアップロードする。
*アップロード完了すると、画面にURLのリンクが表示
*クリックで画像表示
今、下記の現象で困ってます。
*アップロード後、画面でURLリンクをクリックしても、リンクエラー404の表示がされます。
*サーバー(windows)の所定の位置への画像ファイルアップロードは確認。
Eclipseのプロジェクトでリフレッシュすると画面からのURLリンクで表示はできるようになります。
Java側でファイル処理をした後に何かしなくてはいけないのでしょうか?
すみませんが、この解決方法を教えていただけますようお願いいたします。 Software Design 12月号の特集は、Docker, AWS だけど、
AWS の構成図を見ると、典型的なVPC・仮想ネットワーク空間内を、
いくつかのサブネットに分けている
その内、インターネットに公開されているのは、public subnet だけ。
そこには、ロードバランサーがある
ロードバランサーから、private subnet内にある、EC2・仮想マシンへ振り分ける。
このサブネットをDMZ(DeMilitarized Zone=非武装地帯)と呼ぶ。
privateだけど、publicへつながる部分
EC2から、(DMZではない)private subnet内にある、データベースのAurora へつながる
つまりプライベートには、普通のものと、DMZの2種類あるが、
どちらも安全性のため、インターネットにつながっていない VScodeでhello worldまではいったけど、マジで意味がわからんな
スマホアプリ作れたら面白いなと思って軽い気持ちで始めようとしたがもう挫折しそう スマホアプリ作りたいならVSCodeではなくAndroid Studioから始めたほうがいい アップデートでgradleエラーでまくって挫折の未来しかなさそう スマホアプリを作りたい初心者はmacとiPhone買えばよい VSCodeて、エディタとしては大仰だしIDEとしては足りてないしで、Eclipseの方がマシじゃねえかとすら思えるのだが >>784
専用・汎用の対象が違う
あなた、専用=Java用、汎用=他プログラミング言語にも対応って考えてeclipseが汎用って言ってるんでしょ?
この文脈では汎用=純粋なテキストエディタ、専用=プログラミング用エディタ(IDE)だよ
だからeclipseは専用に分類される
俺もプログラミング学びたい人にVSCodeを勧めたりはしないな
プラグインの種類が多くて環境構築で躓きやすい気がする VSCodeとEclipseを比べてるのに"この文脈では"て・・・ つーかVSCodeが「汎用=純粋なテキストエディタ」とは思えんし、どちらにしても両方専用機か両方汎用機にしかならん ほんとにVSCodeとeclipseの違いが分かってないのか IDEはテキストエディタ、コンパイラ、デバッガなど開発に必要な機能を一つのアプリとしてまとめたもの
って感じだけどVSCodeにはそれらの機能があるから軽量なIDEと言っていいのではなかろうか eclipse程度のものをIDEと呼ぶんならVSCodeも十分にIDEだな Eclipseは、リファクタリングの機能とかコード生成の機能とか
型階層の機能とか呼び出し階層の機能とかあって割と高機能な部類だよ
VSCodeどころかVisualStudioでさえEclipseには勝てないよ でも Eclipse はバグだらけで動作も重いのでノーサンクス バグだらけなのは否定しないんだな
暫く使ってないんだけど、プラグインが不安定すぎて本体すら起動しないとかまだあんの? >>796
否定して欲しいのか?どうなんだ否定して欲しいか? あ? ちゃんとお願いできたら聞いてやってもいいけど? どうする? Eclipseを起動できなかったニワカが逆恨みしてるだけじゃねえかwww腹痛いwwwww俺を笑い殺させる気かwwwwwwwwww >>796
あるけどないよ
eclipseはユーザーがプラグインを追加すると不安定になったり起動しなくなったりするのでプラグイン追加は非推奨になったんだ
eclipseのバージョンごとにプラグインリポジトリ(ストア)が別れていて検証済みのプラグインしか使えないし
それさえも推奨されておらずJava用とかC++用とかあらかじめプラグインがバンドルされたパッケージを選択することが推奨されている
ユーザーがプラグインを追加しちゃいけない統合開発環境 これがeclipseなんだよね あとはeclipseではSubversionがまともに動かないとクソすぎてな
俺はIntelliJ IDEAに乗り換えたよ eclipse 以外の開発環境使ってみればすぐ分かるのに、なぜ他を試さないのか IntelliJだってwwwwハゲワロクソニワカじゃねえかwwww >>801
結局の所Ecilpseが一番なんだよねしみじみ そもそもいい歳こいてEclipse使ってる馬鹿って恥ずかしいよね……
あれって自分じゃろくにビルドもできない頭脳弱者のために作られたツールだよね VxWorks、NASAジェット推進研究所(JPL)の新たなミッション「インサイト」で火星へ
https://www.windriver.com/japan/web_magazine/blog/column92.html
VxWorksの開発環境はEclipseだから、Eclipseは宇宙に羽ばたいてるんだよ いつまでやってんだよ
こんなとこで煽り合ってるほうがよっぽど恥ずかしいわ mruby は、人工衛星に載った!
本も出た
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
Apache などのミドルウェアに組み込んで、拡張機能を作る。
ロジック・文字列処理は、C よりも、GC のあるmrubyでやった方が、安全性が高い netbeansが好きだったんだけどapacheに移って方向性が良くわからなくなってしまった 初心者スレで通ぶって煽り合ってる方がよっぽど頭脳弱者()なんじゃないですかね…… その物体は随所で迷惑を掛けまくってる既知外だから触れてはダメ
徹底的に無視 eclipseのjava.2020.06でJDKの15を使いたいんだが、プリファレンスからコンパイラ準拠レベルのプルダウンには1.4までしかない
15は対応してないのだろうか、もしくは追加する方法を知ってたら教えてください springbootでweb画面を開発しています。バリデーションのことで詰まってしまったので質問させてください。
1件の情報を編集する画面を開発しています。入力項目を定義したformクラスに@validatedアノテーションをつけてバリデーションをしようとしています。
ここで問題があるのですが、この画面では商品情報であったりユーザー情報であったりと属性(項目)の異なる情報を編集できるようにしなければいけません。その為submitされるformの項目が一定ではありません。商品であれば商品の商品項目のバリデーション、ユーザーであればユーザー項目のバリデーションをしたいです。
そう言った仕様を満たそうとした場合、@validatedは不向きでしょうか?フレームワークに頼らず地道にバリデーションを実装するしかないのでしょうか? Mavenのプロジェクトに既存のソースをインポートした時に、ビルドできずに入力補完も働かないのですが、どうしたら良いでしょうか? >>335
わかるわコピペでやると補完でバックスラッシュがまた増えてムカつくやつ とりあえず適当なWebサイト作りたいんだけど、javaサーブレットってやつで作った方が無難? 今時新規案件をサーブレットで書く人はいない
どうしてもJavaならSpringか
Railsも落ち目だし、Djangoもいまいち流行らない
PHPが主流か? Ruby on Rails が標準です
Rails 6 の本だけでも、数冊出てる。
他に、Railsガイド・Rails Tutorial もある
それ以外は、あまり使われていない WebサイトならHTML/CSSでいいんじゃないの?
Javaサーブレットだとか他フレームワークを気にするのはWebアプリを作りたくなってから カバレッジツールはともかく、JUnitの存在意義がわかりません。
なんなんですかアレ
自分でmain書いてプログラム流しても一緒じゃない >>823
誰かが想定していた限定された状況では、その誰かが思った通りには動いている
ということを確認することで安心するためのもの それはわかるんだけど
普通にテスト用プログラムでいいじゃない…
提供してくれる機能が少なすぎるよ JUnitに本当に価値がなければ流行らなかったよ
そういう風に言われて世の中のみんながバカなんだろ?ワシだけが真実を理解しとる!と思ったなら自分の見識の狭さや勘違いを疑うべきサイン もう10年も使ってきて思ったことだ
まともに答えやがれ 皆が安心するために必要
自分が安心するだけでいいならmainに書けばいい
ちなみにどちらにしても安心するだけの効果しかほぼないと思ってる あとでバグが出た時に、へんにテスト用プログラムとか使ってると
「テスト用プログラムには問題がない、なぜなら〇〇だから」と
いちいち説明せにゃならんくなるだろうな
それよかJUnitつかって、「テスト仕様的にJUnitでは検出できない問題ですがなにか」で
済む方が楽かと
JUnitでテストできないものは、CI/CDなんかでの自動テストで検出するもの >>828
まともに答えてほしいならまずまともな質問をすることだな
道理だろ
テストにしても対人にしてもGIGOなんだ
自分の中で凝り固まった結論が出ている人には、正しいインプットをしたところで何も伝わらない >>827
それは帰納的推理です
帰納的推理は外れることがあります
日本人は刀を何百年も腰にぶら下げてましたけど
ただの野蛮人でしたよね >>823
外国人は基本的にテストが面倒でやりたくないと思っている。
だからテストをちゃんとやっていると思わせるツールを作った。
テストドライバの半自動生成と、生成されたテストドライバを動かして可視化されたレポートを出力することで、よくわかっていない人を納得させることに成功した。 アメリカ人は自動、オートマティックという言葉が大好きだが、実際はこれで自動なのかという物ばかり。 テストってあくまでも正常確率を上げるためのものだから、リリース速度を上げる必要のある最近の開発ではそこまで重視せずにいいものって考えなのかも ユニットテストを最初から全部書くのは大変だよねー
そこまでやってもバグ出るときは出るし
私はバグが出てからテストコードを書くよ
2度と同じバグを出さない(デグレしない)ことを担保するのにユニットテストは便利
「聖闘士に同じバグは通じない!」 最近メトリクス解析ツールでいいのないですが
なんかどれももはや動かない… Bagという、データを加えることができ、Iterableインターフェイスを実装したクラスがあります。
このクラスをAbcという別のクラス内で使用しています。
Abcには、Abc(Abc a)というAbcクラスのオブジェクトをコピーするコンストラクターがあります。
このとき、Abc内のBagオブジェクトbに蓄えられたデータに対して、iterateしたときに、コピー元とコピー先のオブジェクトで
同じ結果が得られるようにするため、Bag内でどのようなデータ構造を使っているかの情報を使って、Abc(Abc a)というAbcクラスの
コンストラクターのコードを書くことはオブジェクト指向的にOKですか? 実装に依存してもいい状況なら別に構わないと思うが
抽象に依存させたいならCopyableでIterableなものを定義する try-catchで何も終了処理を書かなくても
Closableのcloseメソッドに発生した例外を自動で渡すようにJavaの仕様を変えてください。
トランザクション処理が死ぬほどめんどくさいです。 try-with-resourcesだとダメなの? rollbackのためにexceptionキャッチしないといけない
デフォルトrollbackにしたらcommitのあとrollbackしてすごいログがうっとうしかった 定型的な呼び出しのブロックを関数化して処理をラムダ式で渡したらきれいに書けそうな気がする コミットして良いフラグを立てるかThrowableをキャッチするしかないんじゃないかな
僕ならこうする
https://paiza.io/projects/JVylMfZi1uOk0tJ0S9x6OA 入出力が雑多すぎてラムダが使いにくい
構造体を定義する必要もなくスコープの外に複数の結果を戻せるtry-catchで書きたい 新明快Java入門やれば、どのくらいのレベルにまでなりますか? >>849
ピンキリだと思うぞ。
読むだけで何も理解しないまま終わったつもりになる奴もいれば、自分でコードを書いたり応用したりして本に書いてある以上のことを習得できる人もいる。 ■ このスレッドは過去ログ倉庫に格納されています