タグ付けされた質問 「java」

Javaは人気のある高水準プログラミング言語です。言語自体の使用または理解に問題がある場合は、このタグを使用してください。このタグが単独で使用されることはめったになく、[spring]、[spring-boot]、[jakarta-ee]、[android]、[javafx]、[gradle]、および[maven]と組み合わせて使用​​されることがほとんどです。

2
Java 8:Class.getName()が文字列連結チェーンを遅くする
最近、文字列の連結に関する問題に遭遇しました。このベンチマークはそれを要約します: @OutputTimeUnit(TimeUnit.NANOSECONDS) public class BrokenConcatenationBenchmark { @Benchmark public String slow(Data data) { final Class<? extends Data> clazz = data.clazz; return "class " + clazz.getName(); } @Benchmark public String fast(Data data) { final Class<? extends Data> clazz = data.clazz; final String clazzName = clazz.getName(); return "class " + clazzName; } @State(Scope.Thread) …

2
Java:手動で展開されたループは、元のループよりも高速です。どうして?
長さ2の配列に対する次の2つのコードスニペットを考えてみます。 boolean isOK(int i) { for (int j = 0; j < filters.length; ++j) { if (!filters[j].isOK(i)) { return false; } } return true; } そして boolean isOK(int i) { return filters[0].isOK(i) && filters[1].isOK(i); } 十分なウォームアップ後、これら2つのピースのパフォーマンスは同様になるはずだと思います。ここやここなどで 説明されているように、JMHマイクロベンチマークフレームワークを使用してこれをチェックし、2番目のスニペットが10%以上高速であることを確認しました。 質問:Javaが基本的なループ展開技術を使用して最初のスニペットを最適化していないのはなぜですか? 特に、以下について理解したいと思います。 2つのフィルターの場合に最適なコードを簡単に作成できますが、別の数のフィルターの場合でも機能します(単純なビルダーを想像してください) return (filters.length) == 2 ? new FilterChain2(filters) : new FilterChain1(filters)。JITCは同じことを行うことができますか? …

3
JDK 11+およびJavadoc
Exit code: 1 - javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://docs.oracle.com/en/java/javase/11/docs/api/ are in named modules. (他のフォーラムで提案されているように)ソースのバージョンを1.8に変更せずにjavadocを機能させることができた人はいますか?私はJDK v11.0.5を使用していますが、問題はまだ存在しています(JDK 12+でも)。 編集:このエラーはmavenから発生し、maven-javadoc-pluginによってスローされました。設定を行ってもJDK 11+で機能させることができませんでした<source>8</source>。

3
オープンCV顔認識が正確ではありません
私のアプリでは、Open CVを使用して特定の画像で顔認識を実行しようとしています。最初に1つの画像をトレーニングし、その画像をトレーニングした後、その画像で顔認識を実行すると、トレーニングされた顔が正常に認識されます。しかし、同じ人物の別の写真に目を向けると、認識が機能しません。訓練された画像でのみ機能するので、私の質問はどのように修正するのですか? 更新:私がやりたいことは、ユーザーがストレージから人物の画像を選択し、その選択した画像をトレーニングした後、トレーニングした画像の顔に一致するすべての画像をストレージからフェッチすることです これが私の活動クラスです: public class MainActivity extends AppCompatActivity { private Mat rgba,gray; private CascadeClassifier classifier; private MatOfRect faces; private ArrayList<Mat> images; private ArrayList<String> imagesLabels; private Storage local; ImageView mimage; Button prev,next; ArrayList<Integer> imgs; private int label[] = new int[1]; private double predict[] = new double[1]; Integer pos = 0; …

1
Jasper ReportsコンポーネントがJavaFX Swingノードで正しくレンダリングされない
JavaFX 11でJasperレポートを作成するために、動的レポートを使用しています。Swingノード内にレポートを読み込んでいますが、Jasperレポートは、スタックペイン領域をクリックすると表示され、他のすべてのコンポーネントは、それらのコンポーネントの上にカーソルを置いた場合にのみ表示されます。スタックペインをスクロールすると、マウスホバリングで表示されるのではなく、コンポーネントとレポートコンテンツがすぐに読み込まれず、レポートが表示されます。 これはJava 8 のバグであり、解決されたようですが、Java 11でも同じ問題が発生しています。 更新 私は何の応答も得ていないので、クレオパトラの提案に従って、最小限の再現可能なコードを作成しました。これを調べてください。 JavaFxJasperReportsDemo.java package demo; import java.util.ArrayList; import java.util.List; import javax.swing.SwingUtilities; import javafx.application.Application; import javafx.application.Platform; import javafx.embed.swing.SwingNode; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; import net.sf.dynamicreports.jasper.builder.JasperReportBuilder; import net.sf.dynamicreports.report.builder.DynamicReports; import net.sf.dynamicreports.report.builder.column.Columns; import …

1
演算子「+」はオブジェクトと文字列に適用できません
次のコード: void someMethod(Object value) { String suffix = getSuffix(); if (suffix != null) value += suffix; [...] } JDK 8では(-source 1.6を使用して)エラーなしでコンパイルされますが、JDK 6ではエラーメッセージで失敗します。 Operator '+' cannot be applied to java.lang.Object and java.lang.String エラーの内容は理解していますが、これがJDK 8でコンパイルされるのはなぜですか?これはどこかに文書化されていますか?
12 java  java-8  javac  java-6 

4
JPA継承@EntityGraphには、サブクラスのオプションの関連付けが含まれます
次のドメインモデルを前提Answerとして、Valuesとそれぞれのサブ子を含むすべてのをロードし、それをに入れてAnswerDTOJSONに変換したいと思います。私は実用的な解決策を持っていますが、アドホックを使用して取り除く必要があるN + 1の問題に悩まされています@EntityGraph。すべての関連付けが構成されますLAZY。 @Query("SELECT a FROM Answer a") @EntityGraph(attributePaths = {"value"}) public List<Answer> findAll(); アドホック使用@EntityGraph上のRepository方法私は値が上にN + 1を防止するために、プリフェッチされることを保証することができるAnswer->Value関連付けを。私の結果は問題ありませんselectedが、MCValuesの関連付けの遅延読み込みのため、別のN + 1問題があります。 これを使う @EntityGraph(attributePaths = {"value.selected"}) selectedもちろん、フィールドは一部のValueエンティティの一部にすぎないためです。 Unable to locate Attribute with the the given name [selected] on this ManagedType [x.model.Value]; selected値がaの場合にのみ、関連付けをフェッチしようとするようJPAに指示するにはどうすればよいMCValueですか?のようなものが必要ですoptionalAttributePaths。

1
Java Recordパラメータを文書化する方法は?
Java Recordパラメータをどのように文書化するのですか?最終的にコンストラクターのパラメーター、クラスフィールドになるパラメーターについて言及しています。 私は試した: /** * @param name the name of the animal * @param age the age of the animal */ public record Animal(String name, int age) { } しかし、IntelliJ IDEAは@paramsにエラーとしてフラグを立てます。これがどのように機能するかを示すオンラインの例が見つかりませんでした。私が見つけた最も近いディスカッションはhttps://bugs.openjdk.java.net/browse/JDK-8225055です。 私はいくつか見つかったユニット テスト、これは作業しなければならない意味するように思われるJDKでを。おそらくこれはIDEのバグですか? OpenJDK 14 + 36-1461、IDEA 2020.1を使用しています。 念のため、IDEAに対してバグレポートを提出しました。

3
intの剰余演算子によりjava.util.Objects.requireNonNull?
私はいくつかの内部メソッドから可能な限り多くのパフォーマンスを得ようとしています。 Javaコードは次のとおりです。 List<DirectoryTaxonomyWriter> writers = Lists.newArrayList(); private final int taxos = 4; [...] @Override public int getParent(final int globalOrdinal) throws IOException { final int bin = globalOrdinal % this.taxos; final int ordinalInBin = globalOrdinal / this.taxos; return this.writers.get(bin).getParent(ordinalInBin) * this.taxos + bin; //global parent } プロファイラーでjava.util.Objects.requireNonNull、にCPU使用率が1%あるのを見ましたが、それを呼び出すことすらしません。バイトコードを検査するとき、私はこれを見ました: public getParent(I)I throws java/io/IOException …

4
Java 13テキストブロック* WITHOUT *改行
"""デリミタ付きのJava 13マルチラインテキストブロック機能はよく知られています。 ただし、埋め込まれた改行なしで段落全体が必要な場合は、繰り返し必要があります。 つまり、次のコードスニペット: String paragraph = """ aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii """" System.out.println(paragraph); あなたが期待するように、以下を生成します: aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii ...通常、これは非常に便利です。ただし、私の場合、特に大きな段落の場合、これを生成するために必要です。 aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii (....そして、後でテキストフローを扱います。) 三重引用符機能に「改行なし」パラメーターを設定する方法はありますか?

2
割り当てられたタスクの1つが何らかの理由で失敗すると、Javaはexecutorサービスを停止します
いくつかのタスクを同時に、1秒の間隔で1分間実行するある種のサービスが必要です。 タスクの1つが失敗した場合、サービスとそれとともに実行されたすべてのタスクを何らかの問題が発生したことを示すインジケーターで停止します。それ以外の場合は、1分後にすべてがうまくいった場合、サービスはすべて正常に終了したことを示すインジケーターで停止します。 たとえば、私は2つの機能があります: Runnable task1 = ()->{ int num = Math.rand(1,100); if (num < 5){ throw new Exception("something went wrong with this task,terminate"); } } Runnable task2 = ()->{ int num = Math.rand(1,100) return num < 50; } ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2); task1schedule = scheduledExecutorService.scheduleAtFixedRate(task1, 1, 60, TimeUnit.SECONDS); task2schedule = …

2
このJava 8ストリームのcollect()メソッドを理解するにはどうすればよいですか?
私はint配列をListに変換しようとしていましたが、Java 8 Streamを使用するというなじみのないルートを取り、これを思いつきました Arrays.stream(arr).boxed().collect(Collectors.toList()); 私はまだこの行を完全に理解するのにまだ苦労しています、ほとんどの場合、 Collectors.toList()この場合、なぜArrayList<Integer>実装Listインターフェースが返されるのですか?なぜ、LinkedList<Integer>またはListインターフェイスに準拠していない他の総称クラスですか?ここでは、APIリストのセクションでArrayListについて簡単に説明している以外は何も見つかりません。 左のパネルは どういう意味ですか?明らかに、一般的な戻り値の型です(このコードでは)。そして、私はメソッドのジェネリック型引数だと思いますが、それらはどのように指定されていますか?Collectorインターフェースのドキュメントを調べましたが、吸収できませんでした。 Stream.collect()RArrayList<Integer><R, A>

2
サイズが不明なアンバランスなスプリッターを再バランスできますか?
を使用しStreamて、リモートで保存された不明な数のJSONファイルの異種のセットの処理を並列化したいと思います(ファイルの数は事前に不明です)。ファイルのサイズは、ファイルごとに1つのJSONレコードから、他のいくつかのファイルでは最大100,000レコードまでさまざまです。JSONレコードこの場合には、自己完結型のJSONオブジェクトは、ファイル内の1つの行として表現します。 私は本当にこれにストリームを使いたいので、これを実装しましたSpliterator: public abstract class JsonStreamSpliterator<METADATA, RECORD> extends AbstractSpliterator<RECORD> { abstract protected JsonStreamSupport<METADATA> openInputStream(String path); abstract protected RECORD parse(METADATA metadata, Map<String, Object> json); private static final int ADDITIONAL_CHARACTERISTICS = Spliterator.IMMUTABLE | Spliterator.DISTINCT | Spliterator.NONNULL; private static final int MAX_BUFFER = 100; private final Iterator<String> paths; private JsonStreamSupport<METADATA> reader = null; …

4
MNISTでトレーニングされたモデルの数字認識を改善するにはどうすればよいですか?
私は手書きの多桁認識に取り組んでいます JavaOpenCV、前処理とセグメンテーションのためのライブラリ、およびKeras認識のためにMNIST(精度0.98)でトレーニングされたモデルを使用、ます。 認識は、1つの点を除けば、かなりうまく機能しているようです。ネットワークでは、1(番号「1」)を認識できないことがよくあります。セグメンテーションの前処理/不適切な実装が原因で発生したのか、標準のMNISTでトレーニングされたネットワークが、テストケースのように見える一番のものが見当たらないのかわかりません。 以下は、前処理とセグメンテーション後の問題のある数字の様子です。 になり、として分類され4ます。 になり、として分類され7ます。 となり、次のように分類されます4ます。等々... これは、セグメンテーションプロセスを改善することで修正できるものですか?それとも、トレーニングセットを強化することによってですか。 編集:トレーニングセット(データ拡張)を強化することは間違いなく役立ちます。これは既にテストしていますが、正しい前処理の問題はまだ残っています。 私の前処理は、サイズ変更、グレースケールへの変換、2値化、反転、および膨張で構成されています。これがコードです: Mat resized = new Mat(); Imgproc.resize(image, resized, new Size(), 8, 8, Imgproc.INTER_CUBIC); Mat grayscale = new Mat(); Imgproc.cvtColor(resized, grayscale, Imgproc.COLOR_BGR2GRAY); Mat binImg = new Mat(grayscale.size(), CvType.CV_8U); Imgproc.threshold(grayscale, binImg, 0, 255, Imgproc.THRESH_OTSU); Mat inverted = new Mat(); Core.bitwise_not(binImg, inverted); Mat dilated …

1
型パラメーターがメソッドパラメーターよりも強いのはなぜですか
なぜですか public <R, F extends Function<T, R>> Builder<T> withX(F getter, R returnValue) {...} より厳しい public <R> Builder<T> with(Function<T, R> getter, R returnValue) {...} これは、ラムダの戻り値の型がコンパイル時にチェックされない理由のフォローアップです。私は次のwithX()ような方法を使用して見つけました .withX(MyInterface::getLength, "I am not a Long") 必要なコンパイル時エラーを生成します。 タイプBuilderExample.MyInterfaceのgetLength()のタイプは長く、これは記述子の戻りタイプと互換性がありません:文字列 メソッドを使用している間with()はしません。 完全な例: import java.util.function.Function; public class SO58376589 { public static class Builder<T> { public <R, F extends Function<T, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.