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

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

2
WeakHashMapを使用しているにもかかわらずOutOfMemoryException
を呼び出さない場合System.gc()、システムはOutOfMemoryExceptionをスローします。なぜSystem.gc()明示的に呼び出す必要があるのか​​わかりません。JVMはgc()それ自体を呼び出す必要がありますよね?お知らせ下さい。 以下は私のテストコードです: public static void main(String[] args) throws InterruptedException { WeakHashMap<String, int[]> hm = new WeakHashMap<>(); int i = 0; while(true) { Thread.sleep(1000); i++; String key = new String(new Integer(i).toString()); System.out.println(String.format("add new element %d", i)); hm.put(key, new int[1024 * 10000]); key = null; //System.gc(); } } 以下のように追加-XX:+PrintGCDetailsして、GC情報を印刷します。ご覧のとおり、実際には、JVMは完全なGC実行を試みますが失敗します。私はまだその理由を知りません。System.gc();行をコメント解除すると、結果がポジティブになるのは非常に奇妙です。 add new element …

2
プリミティブ型に関するコードの重複を回避するにはどうすればよいですか?
バックグラウンド ビット入力ストリームは、バイトの配列に支えられています。そのバイト配列からさまざまな強制プリミティブ配列に読み取るメソッドがいくつかあります。 問題 コードが重複しています。Javaはプリミティブ型のジェネリックを欠いているので、おそらく繰り返しは避けられません。 コード 反復的なコードは、次の方法で明らかになります。 @Override public long readBytes(final byte[] out, final int offset, final int count, final int bits) { final int total = offset + count; assert out != null; assert total <= out.length; final long startPosition = position(); for (int i = offset; i < total; …

3
JMSメッセージリスナーの呼び出しに失敗しました。原因:識別子に無効なJMS識別子文字「-」が含まれています:「x-request-id」
JMSとキュー(Azureキュー)を初めて使用しています。Rubiサーバーがデータを書き込み、Javaがそれをキューから読み取り、さらに実行するキューを作成する必要があります。このプロセスは私のマシンでローカルに正常に動作しています。キューにデータを書き込むRESTエンドポイントを作成しました。データがキューに書き込まれると、リスナーがデータを引き継ぎ、読み取って実行します。Azureにデプロイすると、キューで開始できないログでエラーが表示されます。 Setup of JMS message listener invoker failed for destination 'queue' - trying to recover. Cause: Identifier contains invalid JMS identifier character '-': 'x-request-id' Zipkinは、分散トレースシステムとしてAzureサーバーにも存在しますx-request-id。これは、問題を引き起こしているZipkinに関連していると思います。Googleで問題を検索しましたが、なぜ起こっているのか理解できませんでした。 詳細なエラーメッセージは次のとおりです。 [36mc.m.s.l.NextGenRequestLoggingFilter [0;39m [2m:[0;39m Before request [uri=/services/deal-service/api/v2/deals/ack;headers= [x-request-id:"2d8d86d7-4fbf-9db6-8e95-28813f21a85c", x-envoy-internal:"true", x-b3-parentspanid:"a209cdc649b0b890", content- length:"575", x-forwarded-proto:"http", postman-token:"ad074595- 76a5-474b-9711-7e071b12b3b0", x-b3-sampled:"1", x-forwarded- for:"10.244.2.1", accept:"*/*", authorization: "some-token-YJc4tg--34jPRziJNSACqNQ", x-b3- traceid:"6b40ff22781be67ba209cdc649b0b890", x-b3- spanid:"702684ddb62cfe6b", …

1
ViewModel状態でのViewPager2 / Tabsの問題
私はMVVMパターンに従っています。つまり、フラグメントごとにViewModelがあります。 ViewPager2を使用して2つのタブを追加しました。 私のアダプターは次のようになります: @Override public Fragment createFragment(int position) { switch (position) { case 0: return new MergedItemsFragment(); case 1: return new ValidatedMergedItemsFragment(); } return new MergedItemsFragment(); } タブは機能しています。ただし、MergedItemsFragmentのViewModelの動作がおかしいことに気付きました。タブを追加する前に、次のようにFragmentに移動しました。 NavHostFragment.findNavController(this).navigate(R.id.action_roomFragment_to_itemsFragment); 私がそのフラグメントを残しNavHostFragment.findNavController(this).popBackStack()、後でそのフラグメントに戻ったとき、新しい空のViewModelを取得します。これは意図されたものです。 新しいアプローチで私はナビゲートしていreturn new MergedItemsFragment()ます。そのフラグメントを離れると、後で戻ってきて、古いデータを含む ViewModelを取得しています。ユーザーが別のフラグメントで別のデータを選択したため、古いデータは関係なくなったため、これは問題です。 アップデート#1 同じprintステートメントが複数回呼び出されるため、彼は実際にはすべての古いFragmentをメモリに保持していることに気付きました。それが呼ばれる回数は、私が去ってその画面に戻る回数とともに増加します。したがって、10回離れて戻り、デバイスを回転させると、実際には1行が10回実行されます。ViewModelsで動作するように、ナビゲーションコンポーネントでTabs / ViewPagersを実装する方法を推測しますか? アップデート#2 私は私のViewModelsを次のように設定しました: viewModel = new ViewModelProvider(this, providerFactory).get(MergedItemViewModel.class) 私は同じ結果を得ます: viewModel = ViewModelProviders.of(this).get(MergedItemViewModel.class); フラグメント自体にViewModelをバインドします。したがって、thisフラグメントです。

1
removeIf実装の詳細
で理解できない小さな実装の詳細な質問がありArrayList::removeIfます。最初にいくつかの前提条件がないと、単純にそれを置くことができないと思います。 そのため:とは異なり、実装は基本的にバルク です。例は物事を非常に理解しやすくするはずです。私がこのリストを持っているとしましょう:removeArrayList::remove List<Integer> list = new ArrayList<>(); // 2, 4, 6, 5, 5 list.add(2); list.add(4); list.add(6); list.add(5); list.add(5); そして、私は偶数であるすべての要素を削除したいと思います。私はそれをできた: Iterator<Integer> iter = list.iterator(); while (iter.hasNext()) { int elem = iter.next(); if (elem % 2 == 0) { iter.remove(); } } または: list.removeIf(x -> x % 2 == 0); 結果は同じですが、実装は大きく異なります。はのiteratorビューなので、ArrayListを呼び出すたびremoveに、基になるものArrayListを「良好」な状態にする必要があります。つまり、内部配列は実際に変更されます。この場合も、の呼び出しごとにremove、System::arrayCopy内部で呼び出しが行われます。 …
9 java  java-8  iterator 

2
Javaで書き直されたJavaScript関数は異なる結果をもたらします
私がJavaで書き直そうとしているこのJavascript関数があります: function normalizeHash(encondindRound2) { if (encondindRound2 < 0) { encondindRound2 = (encondindRound2 & 0x7fffffff) + 0x80000000; } return encondindRound2 % 1E6; } 私のJava適応: public long normalizeHash(long encondindRound2) { if (encondindRound2 < 0) { encondindRound2 = (((int) encondindRound2) & 0x7fffffff) + 0x80000000; } return (((int) encondindRound2) % 1_000_000); } 渡すと-1954896768、Javascriptバージョンが返され70528、Javaが返されます-896768。理由はわかりません。違いは、ifの条件内で開始しているようだ:Javascriptの機能であれば後にencodingRound2 = …

5
基本的なスプリングブートアプリが機能せず、表示:プロセスxxxxからのライブデータを更新できませんでした
春ブーツの初心者です。新しいプロジェクトを初期化して実行しようとしましたが、正常に動作しません。これを春のブートアプリケーションとして実行すると、実行が開始されます。下のコンパイラ/ステータスバーには、処理と再試行が表示されます。それは10回まで行き、次のエラーを投げます: プロセスxxxxからのライブデータの更新に失敗しました 詳細はこちら TanmayTestApplication.java package com.example.tanmay_test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TanmayTestApplication { public static void main(String[] args) { SpringApplication.run(TanmayTestApplication.class, args); } } DemoControler.java package com.example.cntr; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class DemoControler { @RequestMapping(path = "/index") public String index() { return "By Tanmay!"; } } pom.xml …

2
Synology Scheduler .sh javaコマンドが見つかりません
jarファイルを実行するだけのタスクであるbashスクリプトがあります。 sms.sh java -jar /volume1/homes/jar/smssender.jar Synology NASを使用して、タスクを設定しました。 bashスクリプトを実行するコマンドを追加します。ログ出力を追加します。 新しいタスクを実行しています。 ログをチェックして、次のエラーを確認します。 /volume1/homes/jar/sms.sh:1行目:java:コマンドが見つかりません Javaバージョン/インストールの確認: shスクリプトの実行を手動で確認する(動作中): これと同じ奇妙なケースを持つ誰か?回避策/アイデアはありますか? 私は試した NASを再起動する Java8パッケージのアンインストール/インストール しかし、どれもうまくいきませんでした。
9 java  bash  synology 

3
Javaストリーム:複数の範囲でフィルター
リソースをフィルタリングし、フィールドに基づいて一部の要素を除外しようとしています。除外するには、セット(除外する必要があるIDを含む)とリスト(除外する必要があるIDの複数の範囲を含む)があります。以下のロジックを作成しましたが、2番目のフィルターロジックに満足できません。Java 8でそれを実行できるより良い方法はありますか?範囲を含める場合も同じようにする必要があります。 Set<String> extensionsToExclude = new HashSet<>(Arrays.asList("20","25","60","900")); List<String> rangesToExclude = new ArrayList<>(Arrays.asList("1-10","20-25","50-70","1000-1000000")); return directoryRecords.stream() .filter((directoryRecord) -> !extensionsToExclude.contains(directoryRecord.getExtensionNumber())) .filter((directoryRecord -> { Boolean include = true; for(String s : rangesToExclude) { String [] rangeArray = s.split("-"); Integer extension = Integer.parseInt(directoryRecord.getExtensionNumber()); if(extension <= Integer.parseInt(rangeArray[0]) && extension >= Integer.parseInt(rangeArray[1])) { include = false; } …

2
WebViewがsnapshot()の準備ができるのはいつですか?
JavaFXのドキュメント状態WebView時に準備ができているWorker.State.SUCCEEDEDに達しているしばらくの間(すなわち待たない限り、しかしAnimation、Transition、PauseTransition、など)を、空白のページが表示されます。 これは、キャプチャの準備ができているWebView内で発生するイベントがあることを示唆していますが、それは何ですか? あります7,000以上のコードスニペットは、GitHubの上でその使用SwingFXUtils.fromFXImageが、それらのほとんどがどちらかに無関係と思われるWebView、インタラクティブ(ヒトマスクは競合状態)であるか、(100ミリ秒から2,000msまでの任意の場所)任意のトランジションを使用しています。 私はもう試した: の寸法changed(...)内からリッスンしますWebView(高さと幅のプロパティDoublePropertyはObservableValue、これらのものを監視できます) 🚫実行できません。場合によっては、値がペイントルーチンとは別に変化して、部分的なコンテンツになることがあります。 runLater(...)FXアプリケーションスレッドで何でもすべてを盲目的に伝える。 techniques多くの手法でこれを使用していますが、私自身の単体テスト(および他の開発者からの素晴らしいフィードバック)は、イベントがすでに正しいスレッドにあることが多く、この呼び出しは冗長であることを説明しています。私が考えることができる最高のものは、それがいくつかのために働くキューイングを通しての遅延のちょうど十分な追加です。 DOMリスナー/トリガーまたはJavaScriptリスナー/トリガーを WebView SUCCEEDED空白のキャプチャにもかかわらず、が呼び出されると、JavaScriptとDOMの両方が正しく読み込まれているようです。DOM / JavaScriptリスナーは役に立たないようです。 AnimationまたはTransitionを使用して、メインFXスレッドをブロックせずに効果的に「スリープ」します。 ⚠️このアプローチは機能し、遅延が十分に長い場合、ユニットテストの最大100%を生み出すことができますが、遷移時間は、私たちが推測していて設計が悪い将来の瞬間のようです。パフォーマンスの高いアプリケーションやミッションクリティカルなアプリケーションの場合、これはプログラマーにスピードと信頼性のどちらかをトレードオフすることを強制します。 いつ電話するのがいいWebView.snapshot(...)ですか? 使用法: SnapshotRaceCondition.initialize(); BufferedImage bufferedImage = SnapshotRaceCondition.capture("<html style='background-color: red;'><h1>TEST</h1></html>"); /** * Notes: * - The color is to observe the otherwise non-obvious cropping that occurs * with some techniques, such as `setPrefWidth`, `autosize`, etc. * …

2
EnumMapがJavaのSortedMapではないのはなぜですか?
EnumMap<K extends Enum<K>, V> Javadocでも確認できるように、Javaでは関連する列挙型の定義によって明確に順序付けられています。 列挙型マップは、キーの自然な順序(列挙型定数が宣言されている順序)で維持されます。これは、コレクションビュー(によって返されるイテレータに反映されkeySet()、entrySet()およびvalues())。 必要なのは、SortedMapキータイプとして列挙型を使用することです。headMap()またはのようなメソッドを使用したいがfirstKey()、EnumMapsの追加されたcpu + memoryパフォーマンスから利益を得たい。TreeMapここであまりにも多くのオーバーヘッドのように聞こえます。 質問:これは実装で見落とされただけでしたか、それとも(から派生したAbstractMap)怠惰EnumMapでしたSortedMapか、それともなぜではないのですか?

1
リフレクションでJIT最適化を打ち破る
並行性の高いシングルトンクラスのユニットテストをいじるとき、次の奇妙な動作に遭遇しました(JDK 1.8.0_162でテスト済み)。 private static class SingletonClass { static final SingletonClass INSTANCE = new SingletonClass(0); final int value; static SingletonClass getInstance() { return INSTANCE; } SingletonClass(int value) { this.value = value; } } public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { System.out.println(SingletonClass.getInstance().value); // 0 // Change the instance to a …

4
List of Employees with Java streamから、特定の日付の前後の従業員を取得します。
参加日が異なるs がListありEmployeeます。ストリームを使用してリストから参加する特定の日付の前後に従業員を取得したい。 私は次のコードを試しました、 List<Employee> employeeListAfter = employeeList.stream() .filter(e -> e.joiningDate.isAfter(specificDate)) .collect(Collectors.toList()); List<Employee> employeeListBefore = employeeList.stream() .filter(e -> e.joiningDate.isBefore(specificDate)) .collect(Collectors.toList()); class Employee{ int id; String name; LocalDate joiningDate; } これを単一のストリームで行う方法はありますか?

5
リクエストアイテムごとに複数のスレッドを作成する方法
注文レベルでマルチスレッドを使用して以下のコードを処理しようとしています。 List<String> orders = Arrays.asList("order1", "order2", "order3", "order4", "order1"); 現在の順次実行: orders.stream().forEach(order -> { rules.forEach(rule -> { finalList.add(beanMapper.getBean(rule) .applyRule(createTemplate.apply(getMetaData.apply(rule), command), order)); }); }); 私は使ってみました: orders.parallelStream().forEach(order -> {}} // code snippet. しかし、rules.forEach(rule-> {}}の順序を変更しています。 例: 入力: List<String> orders = Arrays.asList("order1", "order2", "order3", "order4", "order1"); List<String> rules = Arrays.asList("rule1", "rule2", "rule3"); 期待される出力: order1 with …

1
MIUI 10ではサービスを開始できません-Xiaomi Redmi Note
私のアプリにはサービスとアクティビティがあります。サービスから、次のコードでアクティビティが呼び出されます。 Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); フラグがなくても、通常、アクティビティウィンドウは正しいレイアウトで表示されます。ただし、Android 7を搭載したXiaomi Redmi Note 4では、アクティビティレイアウトは表示されません。logcatには次の行しか表示されません。 I /タイムライン:タイムライン:Activity_launch_request時間:281438674インテント:インテント{flg = 0x30000000 cmp = com.test.app / .MainActivity} これはAndroid 7(API 24)の問題ではないと思います。Android7を搭載した別のデバイスでは、サービスがアクティビティを正常に開始できるためです。たぶん、MIUIはサービスの活動の開始を妨げています。 マニフェストでのアクティビティの定義方法を変更してみました。また、いくつかの異なるフラグを試してみました。テストがすべて失敗しました。活動を始めることができませんでした。最悪の問題は、ログにエラー/例外がないことです。 これに関するアイデアはありますか?
9 java  android  miui 

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