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

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

5
プリミティブのJava配列はスタックまたはヒープに格納されていますか?
私はこのような配列宣言を持っています: int a[]; これaがプリミティブint型の配列です。この配列はどこに保存されますか?ヒープまたはスタックに格納されていますか?これはintプリミティブ型であり、すべてのプリミティブ型がヒープに格納されるわけではありません。

15
継承による列挙型の拡張
これは列挙型の概念に反することを私は知っていますが、C#/ Javaで列挙型を拡張することは可能ですか?私は、列挙型に新しい値を追加するという意味だけでなく、既存の列挙型から継承するというオブジェクト指向の意味でも「拡張する」ことを意味します。 Javaではごく最近(Java 5?)しか入手できなかったので、それは不可能だと思います。C#は、クレイジーなことをしたい人にはもっと寛容なようですが、それは何らかの方法で可能かもしれないと思いました。おそらくそれはリフレクションを介してハッキングされる可能性があります(実際にその方法を使用するわけではありません)? 私は特定のメソッドを実装することに必ずしも興味はありません、それが私に起こったときそれは私の好奇心を引き起こしただけです:-)
85 c#  java  .net 

6
Date()からUNIXタイムスタンプを取得する
コンストラクターに値を入力することで、UNIXタイムスタンプをDate()オブジェクトに変換できます。例:私はそれをとして持つことができます。longDate()new Date(1318762128031) しかしその後、どうすればDate()オブジェクトからUNIXタイムスタンプを取り戻すことができますか?
85 java  date 

1
SLF4Jを使用してプレースホルダーを使用して例外とメッセージをログに記録する方法
SLF4Jを使用してエラーメッセージと例外の両方をログに記録する正しいアプローチは何ですか? これを試してみましたが、例外スタックトレースが出力されません。 logger.error("Unable to parse data {}", inputMessage, e); この場合、例外スタックトレースをログアウトするだけでなく{}、データを入力する必要inputMessageがあります。 これを行うために私が見ることができる唯一の方法は、これを行うことです: logger.error("Unable to parse data " + inputMessage, e); これはきれいではありません。
85 java  logging  slf4j 


5
固定サイズのHashMapの最適な容量と負荷率はどれくらいですか?
特定のケースに最適な容量と負荷率を見つけようとしています。その要点はわかったと思いますが、それでも私より知識のある方からの確認はありがたいです。:) HashMapが100個のオブジェクトを含むようにいっぱいになり、ほとんどの時間を100個のオブジェクトを持つことに費やすことがわかっている場合、最適な値は初期容量100と負荷係数1だと思いますか?または、容量101が必要ですか、それとも他に問題がありますか? 編集:わかりました、私は数時間を取っておき、いくつかのテストを行いました。結果は次のとおりです。 不思議なことに、容量、容量+ 1、容量+ 2、容量-1、さらには容量-10でも、まったく同じ結果が得られます。少なくとも容量1と容量10の方が悪い結果になると思います。 (デフォルト値の16を使用するのではなく)初期容量を使用すると、put()が大幅に改善され、最大30%高速になります。 負荷係数1を使用すると、少数のオブジェクトで同等のパフォーマンスが得られ、多数のオブジェクト(> 100000)でパフォーマンスが向上します。ただし、これはオブジェクトの数に比例して改善されるわけではありません。結果に影響を与える追加の要因があると思います。 get()のパフォーマンスは、オブジェクト/容量の数によって少し異なりますが、ケースごとにわずかに異なる場合がありますが、通常、初期容量や負荷率の影響を受けません。 EDIT2:私の側にもいくつかのチャートを追加します。これは、HashMapを初期化して最大容量まで埋めた場合の、負荷率0.75と1の違いを示しています。yスケールはミリ秒単位の時間(小さいほど良い)であり、xスケールはサイズ(オブジェクトの数)です。サイズは直線的に変化するため、必要な時間も直線的に増加します。 だから、私が得たものを見てみましょう。次の2つのグラフは、負荷率の違いを示しています。最初のグラフは、HashMapが容量いっぱいになったときに何が起こるかを示しています。サイズ変更により、負荷率0.75のパフォーマンスが低下します。しかし、それは一貫して悪化しているわけではなく、あらゆる種類のバンプとホップがあります-これにはGCが大きな役割を果たしていると思います。負荷率1.25は1と同じように機能するため、グラフには含まれていません。 このグラフは、サイズ変更により0.75が悪化したことを示しています。HashMapを半分の容量まで満たすと、0.75は悪くはなく、ただ...違います(そして、使用するメモリが少なくなり、反復パフォーマンスが明らかに向上するはずです)。 もう1つお見せしたいことがあります。これは、3つの負荷係数すべてと異なるHashMapサイズのパフォーマンスを取得することです。負荷係数1の1つのスパイクを除いて、わずかな変動で一貫して一定です。それが何であるかを本当に知りたいです(おそらくGCですが、誰が知っていますか)。 そして、興味のある人のためのコードは次のとおりです。 import java.util.HashMap; import java.util.Map; public class HashMapTest { // capacity - numbers high as 10000000 require -mx1536m -ms1536m JVM parameters public static final int CAPACITY = 10000000; public static final int ITERATIONS = 10000; // …
85 java  hashmap 

7
特定のURLのスプリングセキュリティを無効にする方法
ステートレススプリングセキュリティを使用していますが、サインアップの場合、スプリングセキュリティを無効にしたいです。 antMatchers("/api/v1/signup").permitAll(). しかし、それは機能していません、私は以下のエラーが発生しています: message=An Authentication object was not found in the SecurityContext, type=org.springframework.security.authentication.AuthenticationCredentialsNotFoundException これは、スプリングセキュリティフィルターが機能していることを意味すると思います 私のURLの順序は常に「/ api / v1」になります 私の春の設定は @Override protected void configure(HttpSecurity http) throws Exception { http. csrf().disable(). sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS). and(). authorizeRequests(). antMatchers("/api/v1/signup").permitAll(). anyRequest().authenticated(). and(). anonymous().disable(); http.addFilterBefore(new AuthenticationFilter(authenticationManager()), BasicAuthenticationFilter.class); } 私の認証フィルターは @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) …

7
Java同期ブロックとCollections.synchronizedMap
次のコードは、の呼び出しを正しく同期するように設定されていsynchronizedMapますか? public class MyClass { private static Map<String, List<String>> synchronizedMap = Collections.synchronizedMap(new HashMap<String, List<String>>()); public void doWork(String key) { List<String> values = null; while ((values = synchronizedMap.remove(key)) != null) { //do something with values } } public static void addToMap(String key, String value) { synchronized (synchronizedMap) { if (synchronizedMap.containsKey(key)) { …

4
JUnitテストクラスのlog4jはどこで構成しますか?
私が書いた最後のJUnitテストケースを見て、クラスコンストラクター内でlog4jのBasicConfigurator.configure()メソッドを呼び出しました。これは、Eclipseの「runasJUnittestcase」コマンドからその単一のクラスを実行する場合に問題なく機能しました。しかし、私はそれが間違っていることに気づきました。メインのテストスイートがこれらすべてのクラスを1つのプロセスから実行していると確信しているため、log4j構成はどこかで行われるはずです。 ただし、テストケースを単独で実行する必要がある場合もあります。その場合は、log4jを構成する必要があります。テストケースがスタンドアロンで実行されるときに実行されるが、テストケースがより大きなスイートの一部として実行されるときに実行されないように、構成呼び出しをどこに配置する必要がありますか?
85 java  logging  junit  log4j 

2
H2とHSQLDBのどちらが優れていますか?[閉まっている]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 HSQLDB2.0はまもなくリリースされます。私の知る限り、ほとんどのユーザーはHSQLDBよりもH2を好むので、H2よりもパフォーマンスが優れているのではないかと思います。HSQLDB2.0のMVCCサポートに興味があります。H2のMVCCはまだ実験段階であることがわかりました。サポート/ドキュメント化、並行性、パフォーマンスに関して、どちらが優れていますか?

12
Javaでソートされた配列リスト
私はこれに対する迅速な答えを見つけることができないことに困惑しています。私は基本的に、java.util.Listインターフェイスを実装するが、そのメンバーをソートされた順序で格納するJavaのデータ構造を探しています。ノーマルArrayListを使用Collections.sort()して使用できることは知っていますが、リストからメンバーを追加したり、頻繁に取得したりするシナリオがあり、メンバーを取得するたびに並べ替える必要はありません。新しいものが追加されました。JDKやサードパーティのライブラリに存在するようなものを誰かに教えてもらえますか? 編集:データ構造は重複を保持する必要があります。 回答の要約:私はこれらすべてが非常に興味深く、多くのことを学びました。特にAioobeは、上記の要件(主に、重複をサポートするソートされたjava.util.List実装)を達成しようとする彼の忍耐力について言及する価値があります。私は彼の答えを私が尋ねたものに対して最も正確であり、私が尋ねたものが正確に私が必要としたものでなかったとしても、私が探していたものの意味を刺激するものとして最も考えました。 私が求めたものの問題は、リストインターフェイス自体とインターフェイスのオプションメソッドの概念にあります。javadocを引用するには: このインターフェイスのユーザーは、リストのどこに各要素を挿入するかを正確に制御できます。 ソートされたリストへの挿入では、挿入ポイントを正確に制御することはできません。次に、いくつかのメソッドをどのように処理するかを考える必要があります。テイクadd例えば: public boolean add(Object o) Appends the specified element to the end of this list (optional operation). これで、1)コントラクトを破り、addのソートされたバージョンを実装する2)addリストの最後に要素を追加し、ソートされた順序を破るという不快な状況に置かれます3)add(オプションとして)スローして除外しますUnsupportedOperationExceptionソート順に項目を追加する別の方法を実現します。 オプション3がおそらく最良ですが、使用できないaddメソッドと、インターフェイスにない別のsortedAddメソッドがあるのは不快だと思います。 その他の関連ソリューション(順不同): java.util.PriorityQueueは、おそらく私が要求したものよりも必要なものに最も近いものです。私の場合、キューはオブジェクトのコレクションの最も正確な定義ではありませんが、機能的には必要なすべてを実行します。 net.sourceforge.nite.util.SortedList。ただし、この実装は、add(Object obj)メソッドに並べ替えを実装することでListインターフェイスの契約を破り、奇妙なことに、の効果のないメソッドがありadd(int index, Object obj)ます。一般的なコンセンサスはthrow new UnsupportedOperationException()、このシナリオではより良い選択かもしれないことを示唆しています。 GuavaのTreeMultiSet重複をサポートするセットの実装 ca.odell.glazedlists.SortedList このクラスには、javadocに警告があります。Warning: This class breaks the contract required by List

10
JDBCでDATETIME値0000-00-0000:00:00を処理する
やろうとすると例外が発生します(以下を参照) resultset.getString("add_date"); DATETIME値0000-00-0000:00:00(DATETIMEの準NULL値)を含むMySQLデータベースへのJDBC接続の場合、値を文字列としてではなく文字列として取得しようとしていますが、オブジェクト。 私はこれを回避しました SELECT CAST(add_date AS CHAR) as add_date これは機能しますが、ばかげているようです...これを行うためのより良い方法はありますか? 私のポイントは、生のDATETIME文字列が必要なので、そのまま自分で解析できるということです。 注:ここで0000が登場します:( http://dev.mysql.com/doc/refman/5.0/en/datetime.htmlから) 不正なDATETIME、DATE、またはTIMESTAMP値は、適切なタイプの「ゼロ」値( '0000-00-00 00:00:00'または '0000-00-00')に変換されます。 特定の例外はこれです: SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. SQLState: S1009 VendorError: 0 java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at …
85 java  sql  date  jdbc 

12
あるArrayListの内容を別のArrayListにコピーするにはどうすればよいですか?
いくつかのデータ構造があり、1つを一時的なものとして使用し、もう1つを一時的ではないものとして使用したいと思います。 ArrayList<Object> myObject = new ArrayList<Object>(); ArrayList<Object> myTempObject = new ArrayList<Object>(); //fill myTempObject here .... //make myObject contain the same values as myTempObject myObject = myTempObject; //free up memory by clearing myTempObject myTempObject.clear(); もちろん、これに関する問題は、myObject実際にはを指しているだけなmyTempObjectので、一度myTempObjectクリアされると、もクリアされmyObjectます。 JavamyTempObjectをmyObject使用して値を保持するにはどうすればよいですか?

13
Javaプログラムの実行速度を計る方法
Javaプログラムの実行時間をどのように計りますか?これを行うためにどのクラスを使用すべきかわかりません。 私はちょっと次のようなものを探しています: // Some timer starts here for (int i = 0; i < length; i++) { // Do something } // End timer here System.out.println("Total execution time: " + totalExecutionTime);
85 java 

13
java:あるタイプから別のタイプへの変数の動的キャストを行うにはどうすればよいですか?
Java変数の動的キャストを実行したいのですが、キャストタイプは別の変数に格納されています。 これは通常のキャストです: String a = (String) 5; これは私が欲しいものです: String theType = 'String'; String a = (theType) 5; これは可能ですか?もしそうなら、どのように?ありがとう! 更新 HashMap受け取ったものをクラスに入力しようとしています。 これはコンストラクターです: public ConnectParams(HashMap<String,Object> obj) { for (Map.Entry<String, Object> entry : obj.entrySet()) { try { Field f = this.getClass().getField(entry.getKey()); f.set(this, entry.getValue()); /* <= CASTING PROBLEM */ } catch (NoSuchFieldException ex) { …

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