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

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

1
Javaアプリケーションを実行しているマルチDockerコンテナーのAWS Elastic Beanstalk環境にメモリを動的に割り当てる方法
無料のエラスティックbeanstalk層から可能な限りのオンスの使用を絞り出したいと思います。 私のバックエンドは、(ktorを使用して)マイクロサービスのセットとして構築されています。正確には5つのマイクロサービスがあります。これらはすべてドッキングされており、マルチDocker イメージ環境で同じ小さなt2.micro(無料)エラスティックBeanstalkインスタンス上ですべて実行しようとしています JavaはJavaなので、最も単純なマイクロサービスでも、Dockerコンテナーごとに約200 MBのRAMをアイドル状態にするのが好きです。 したがって、t2.microは1GBのRAMを提供します。5つのマイクロサービスDockerコンテナーがあり、それぞれに少なくとも200 MBを要求する=本当に近い。 問題は、メモリがほぼ常に100%に激しくホバリングしていることです。 では、どれだけの空きがあり、どれだけ必死に1つのコンテナがメモリを必要としているかに応じて、Dockerコンテナにメモリを動的に割り当てる方法はありますか? 1つのコンテナーが重い負荷をかけている間に、他のコンテナーはほとんどアイドル状態になっているとしたら、RAMを重いタスクを実行しているコンテナーに向け、タスクが終了したら、コンテナーごとの等しいRAM割り当てに戻します。 これを行う方法はありますか?

2
小さなpdfファイルで巨大なBufferdImageが生成される
PDFでOCRを実行しようとしています。コードには2つのステップがあります。 PDFをTIFFファイルに変換 TIFFをテキストに変換する 最初のステップでghost4jを使用し、次に2番目のステップでtess4jを使用しました。マルチスレッドで実行を開始するまではすべてうまくいき、その後奇妙な例外が発生しました。私はここを読みました:https : //sourceforge.net/p/tess4j/discussion/1202293/thread/44cc65c5/そのghost4jはマルチスレッドに適していないので、PDFBoxで動作するように最初のステップを変更しました。 だから今私のコードは次のようになります: PDDocument doc = PDDocument.load(this.bytes); PDFRenderer pdfRenderer = new PDFRenderer(doc); BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "tiff", os); os.flush(); os.close(); bufferedImage.flush(); 800 kbのpdfファイルを使用してこのコードを実行しようとしています。 BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); 500 MBを超えます。このBufferedImageをディスクに保存すると、出力は1 MBのサイズになります...したがって、このコードを8つのスレッドで実行しようとすると、Javaヒープサイズの例外も発生します... ここで何が欠けていますか?1 MBのファイルが500 MBの画像ファイルになるのはなぜですか?DPIで遊んで品質を下げようとしましたが、ファイルはまだ非常に大きいです... PDFをtiffにレンダリングできる他のライブラリはありますか?メモリの問題なしに10スレッドを実行できますか? 再現する手順: Linkedin CEOの履歴書ファイルをこちらからダウンロードしてください-https://gofile.io/?c= TtA7XQ …

1
JavaFX 0x300b:EGLサーフェスを取得できませんでした
組み込み環境(buildroot)のraspaberry pi 3でjavafxサンプルを実行しようとしています。コマンドを実行すると、Xなしで実行したいと思います。 /root/jre-13.0.1/bin/java -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar 次のエラーが表示されます。 cmd : cd '/home/root/NetBeansProjects//JavaFXFXML'; '/root/jre-13.0.1//bin/java' -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar JavaFX launchApplication method: launchMode=LM_JAR Prism pipeline init order: es2 Using Double Precision Marlin Rasterizer Using dirty region optimizations …

2
Java-ユニットテスト中にリソースファイルパスをテストファイルにスワップする方法
いくつかの設定を持つリソースファイルがあります。このファイルから設定をロードするResourceLoaderクラスがあります。このクラスは現在、熱心にインスタンス化されたシングルトンクラスです。このクラスがロードされるとすぐに、ファイル(別のクラスの定数フィールドとして保存されているファイルパス)から設定を読み取ります。これらの設定の一部は、単体テストには適していません。たとえば、このファイルにはスレッドのスリープ時間があり、これは製品コードでは数時間になる場合がありますが、単体テストでは数ミリ秒にしたいと考えています。そのため、値のセットが異なる別のテストリソースファイルがあります。私の質問は、単体テスト中にメインのリソースファイルをこのテストファイルと交換するにはどうすればよいですか?プロジェクトはMavenプロジェクトであり、テストフレームワークとしてtestngを使用しています。これらは私のアプローチの一部です @BeforeSuiteを使用してFilePath定数変数を変更し、テストファイルを指すようにし、@ AfterSuiteを使用して元のファイルを指すようにします。これは機能しているようですが、ResourceLoaderクラスは熱心にインスタンス化されているため、ResourceLoaderクラスがロードされる前に@BeforeSuiteメソッドが常に実行される保証はなく、ファイルパスが変更される前に古いプロパティがロードされる可能性があります。ほとんどのコンパイラーは、必要な場合にのみクラスをロードしますが、これがJava仕様の要件であるかどうかはわかりません。したがって、理論的には、これはすべてのJavaコンパイラで機能するとは限りません。 リソースファイルのパスをコマンドライン引数として渡します。pomのsurefire構成でコマンドライン引数としてテストリソースファイルパスを追加できます。これは少し過剰に見えます。 1.のアプローチを使用して、ResourceLoaderを遅延インスタンス化します。これにより、ResourceLoader.getInstance()。getProperty(..)への最初の呼び出しの前に@BeforeMethodが呼び出された場合、ResourceLoaderが正しいファイルをロードすることが保証されます。これは最初の2つのアプローチよりも優れているようですが、シングルトンクラスを遅延インスタンス化すると、列挙型などの単純なパターンを使用できないため、醜くなります(熱心なインスタンス化の場合のように)。 これは一般的なシナリオのようですが、最も一般的な方法は何ですか?

3
Java関数のパラメーターにオプションのインターフェースが必要ですか?
Java(バージョン8)には2つのインターフェースがあり、非常によく似ています。インターフェイスを変更したり、それらを実装するクラスを変更したりすることはできません。 public interface A { int get(); } public interface B { int get(); int somethingelse(); } 今、私はその実装が両方のインターフェースに(ほぼ)フィットする関数を持っています。私はそれがそのようなことをしたいと思っています: public int foo((A | B) p) { int ret = 0; if (p instanceof B) { ret = p.somthingelse(); } return ret + p.get(); } この関数はプログラムのメインパイプラインにあるため、インスペクションを使用したくありません。良い性能が欲しいです。Javaでこれを行うことは可能ですか? 編集: 簡単な解決策は、コピー/貼り付けしてfoo()、インターフェイスごとに異なる方法で実装することです。しかし、実際foo()には、インターフェースはそれよりもはるかに長く、コードの重複を避けようとしています。
8 java  generics  java-8 

3
Optional.orElseが匿名型でコンパイルされない
私はOptionalと匿名クラスを使用して奇妙な問題に遭遇しました: public class Foo { interface Bar { } void doesNotCompile() { Optional.of(new Bar() { }).orElse(new Bar() { }); } void doesNotCompile2() { final Bar bar = new Bar() { }; Optional.of(new Bar() { }).orElse(bar); } void compiles1() { final Bar bar = new Bar() { }; Optional.of(bar).orElse(new Bar() { …

2
RX vs Theads vs Executorsのマルチヘッドのパフォーマンス
Kotlinでバックエンドアプリケーションを作成しています。 速度を上げるために、私は現在、サーバーのRxKotlinを使用して、データベース呼び出しやAPI呼び出しなどのIOタスクの並列実行を行っています。コードは通常、次のようになります。 val singleResult1 = Single.fromCallable{ database.get(....) }.io() val singleResult2 = Single.fromCallable{ database.update(....) }.io() Single.zip(singleResult1, singleResult2){ result1: Result1, result2: Result2 -> .... } .flatMap{ //other RX calls } .subscribeOn(Schedulers.io()) .observeOn(Schedulers.computation()) .blockingGet() ただし、実際には複数のイベント(単一のイベント)では機能しないため、Rxは少し乱雑な感じになり、ボイラープレートの束を追加するだけです(null値を返したい場合や、スタックトレースをめちゃくちゃにする可能性がある場合にも複雑になります) ) Executors代わりに、Rxを削除して並列処理に使用(またはスレッド)することを考えています。ここで考慮すべきパフォーマンスの考慮事項はありますか? 私が考えている例: fun <T> waitAll(tasks: List<Callable<T>>, threadCount: Int = -1): List<T> { val threads = if (threadCount …

2
Runtime.getRuntimeを使用してAndroidでシェルコマンドを実行する
私はデバイス管理アプリに取り組んでいます(製造元によって署名されています)。私はそれを使用して、以下のAndroid 9のadb shellコマンドを使用して他のアプリをインストールします:- cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293 そして私はこのようにそれを渡しているだけです- String command = "cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293" Runtime.getRuntime().exec(command); しかし、「cat unknown option S」というエラーが表示されます。 同じコマンドをadbシェルから実行すると、まったく問題なく動作します。私が何を間違っているのかわからないので、助けを借りてください。 編集1:-私は以下のようなコマンドを実行してみました:- String[] commandInstall = { "/system/bin/sh", "-c", "cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293" }; Process process = Runtime.getRuntime().exec(commandInstall); しかし、今私はエラーを受け取ります:- ava.lang.SecurityException: Reverse mode …
8 java  android  shell  adb 

2
メソッドパラメーターからのJava 8ラムダ可変変数キャプチャ?
私はjdk81212-b04、Eclipse 4.13で実行されているUbuntu LinuxでAdoptOpenJDK を使用しています。Swingにはラムダ内にラムダを作成するメソッドがあります。おそらく両方とも別々のスレッドで呼び出されます。これは次のようになります(疑似コード): private SwingAction createAction(final Data payload) { System.out.println(System.identityHashCode(payload)); return new SwingAction(() -> { System.out.println(System.identityHashCode(payload)); //do stuff //show an "are you sure?" modal dialog and get a response //show a file selection dialog //when the dialog completes, create a worker and show a status: showStatusDialogWithWorker(() -> new SwingWorker() …
8 java  lambda  closures 

1
Kafkaは、グローバルストアを追加するためのユースケースをストリーミングします
kafkaストリームでトポロジを定義するときに、グローバルステートストアを追加できます。ソーストピックとが必要になりますProcessorSupplier。プロセッサーはレコードを受け取り、それらをストアに追加する前に理論的に変換できます。ただし、復元の場合、レコードはソーストピック(変更ログ)からグローバル状態ストアに直接挿入され、プロセッサで行われる最終的な変換はスキップされます。 +-------------+ +-------------+ +---------------+ | | | | | global | |source topic -------------> processor +--------------> state | |(changelog) | | | | store | +-------------+ +-------------+ +---------------+ | ^ | | +---------------------------------------------------------+ record directly inserted during restoration StreamsBuilder#addGlobalStore(StoreBuilder storeBuilder、String topic、Consumed consumer、ProcessorSupplier stateUpdateSupplier)グローバルStateStoreをトポロジに追加します。 ドキュメントに従って 注:変換されたレコードをグローバルステートストアに挿入するためにプロセッサを使用しないでください。このストアは、ソーストピックを変更ログとして使用し、復元時にソースから直接レコードを挿入します。このProcessorNodeは、StateStoreを最新の状態に保つために使用する必要があります。 並行して、主要なバグが現在カフカバグトラッカーで開かれています。ドキュメントに記載されている内容を正確に説明するトピックから状態を復元する場合、addGlobalStoreで提供されるKAFKA-7663カスタムプロセッサは使用されませんが、受け入れられたバグのようです。 KAFKA-7663が本当にバグかどうか疑問に思っています。ドキュメントによると、このように設計されているようです。その場合、ユースケースを理解するのに苦労します。 誰かがこの低レベルAPIの主な使用例を説明できますか?私が考えることができる唯一のことは、たとえばプロセッサでいくつかのログ操作を行うなどの副作用を処理することです。 おまけの質問:ソーストピックがグローバルストアの変更ログとして機能する場合、保存期間が切れたためにトピックからレコードが削除されると、グローバルステートストアから削除されますか?または、変更ログからストアを完全に復元した後にのみ、ストアで削除が行われますか?

1
スクリーンショットロボットがDebianで黒い画面しかキャプチャしない
java.awt.RobotLinuxでOpenJDK 11 を使用して画面キャプチャーを作成しています。Linuxでの結果は完全に黒い画像です。同じコードがUbuntuとWindowsで機能します(もちろん別のファイルパスを使用します)。 どんな手掛かり? public void captureScreen() throws AWTException { Robot robot = new Robot(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()); BufferedImage screen = robot.createScreenCapture(new Rectangle(getDefaultToolkit().getScreenSize())); try { ImageIO.write(screen, "jpg", new File("/tmp/screenshot.jpg")); } catch (IOException e) { e.printStackTrace(); } } 更新: この問題の原因は、OpenJDKとWaylandの組み合わせにあります。Oracle JDK / JRE(13.0.1)では、すべてが正常に動作します。

6
インデックス/範囲でループを強化したJava 8
Javaの拡張forループでインデックス/範囲を指定することは可能ですか? 例えば私はリストを持っています: List<String> list; そして、0ではなくインデックス1からforループを実行したいと思います。 for(String s : list(start from index 1)) またはインデックス5まで for(String s : list(end at index 5)) 従来のforループを使用したり、拡張forループ内にカウンターを保持したりできることはわかっていますが、Javaまたはapacheコレクションにすぐに使えるものがあるのか​​知りたいのですが?

5
Java Androidセキュリティ例外
私のアプリでは、ユーザーは写真を撮ったり、アプリに写真を追加したりすることができます。保存した画像をアプリがImageViewに表示しようとすると、java.lang.SecurityExceptionのクラッシュレポートが表示されます エラーが発生する行は holder.imageV.setImageURI(uriParsed); 私は自分のデバイスまたはシミュレーターで自分でエラーを再現することができませんでした。それらはすべて画像をうまく表示します。 私が使用している完全なコードは JoinProjectPicture projectPicture = mProjects.get(position); Project current = projectPicture.getProject(); Picture picture = projectPicture.getPicture(); holder.projectName.setText(current.getProjectName() + "(" + current.getWidth() + "x" + current.getHeight() + ")"); holder.projectStatusTV.setText(current.getStatus()); if(picture != null) { String pictureName = picture.getPictureName(); Uri uriParsed = Uri.parse(pictureName); if(uriParsed != null) { Log.d("URIParsed", "Project: " + current.getProjectName() …
8 java  android 

2
動的ルート要素JAXB?
サードパーティのシステムと統合しようとしていますが、オブジェクトのタイプによっては、返されるXMLドキュメントのルート要素が変化します。マーシャリング/アンマーシャリングにJAXBライブラリを使用しています。 Root1: <?xml version="1.0" encoding="UTF-8"?> <root1 id='1'> <MOBILE>9831138683</MOBILE> <A>1</A> <B>2</B> </root1> Root2: <?xml version="1.0" encoding="UTF-8"?> <root2 id='3'> <MOBILE>9831138683</MOBILE> <specific-attr1>1</specific-attr1> <specific-attr2>2</specific-attr2> </root2> 私はそれらを汎用オブジェクトにマッピングするさまざまなXMLをすべて使用しています。 @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "ROW") public class Row { @XmlAttribute private int id; @XmlElement(name = "MOBILE") private int mobileNo; @XmlMixed @XmlAnyElement @XmlJavaTypeAdapter(MyMapAdapter.class) private Map<String, String> otherElements; } そして、不明な値をマップに変換するためのアダプター: import …
8 java  xml  xsd  jaxb  marshalling 

3
UPIハイパーリンク支払いで指定されたURLで応答を取得する方法
私はのようなUPIハイパーリンクを介して支払いをしようとしています upi://pay?pa=abc@upi&pn=payeeName&tr=1234&tn=Pay%20to%20payeeName&am=1&mam=1&cu=INR&url=https://test.com/payment/orderId=123456 SMS経由で上記のリンクを送信しています リンクをクリックすると、オプションとしてUPIアプリケーションリストが表示されます BHIMアプリを選択しました(他のアプリケーションも試しました) その後、支払いが完了しました。これまでは問題なく動作しました。 UPI支払いが行われた後、https://test.com/payment/orderId=12345への「コールバック」リクエストを処理するSpringコントローラーは呼び出されません。 では、JavaでUPIハイパーリンク支払いの応答を正しく取得するにはどうすればよいですか? 編集: これはコントローラーメソッドです。の@GetMapping代わりにも試してみました@PostMapping。 @PostMapping("/payment") public ModelAndView credPayment(HttpServletRequest request) { String key = request.getParameter("orderId"); String txnId = request.getParameter("txnId"); String responseCode = request.getParameter("responseCode"); String approvalRefNo = request.getParameter("ApprovalRefNo"); String status = request.getParameter("Status"); String txnRef = request.getParameter("txnRef"); System.out.println("Parameter Names"); while (request.getParameterNames().hasMoreElements()) { System.out.println(request.getParameterNames().nextElement()); } System.out.println("Header Names"); while …
8 java  spring 

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