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

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。


4
Listインターフェースは漏れやすい抽象化ですか?
を含む変数がある場合、その変数には、またはなどList、さまざまなタイプのオブジェクトが含まれる可能性があります。a とan の違いはかなり大きいです。メソッドのビッグO動作は大きく異なります。たとえば、をソートしてからバイナリ検索を実行することは完全に問題ありませんが、では意味がありません。ArrayListLinkedListLinkedListArrayListListArrayListLinkedList

4
クラスのすべてのオブジェクトを追跡する
私はオブジェクト指向プログラミングが初めてなので、この問題に遭遇し続けます。(私はJavaでプログラミングしています)このような基本的な問題のように思われるので、私はこれについて尋ねるのに少し消極的でしたが、それに関する情報や質問についてここで見つけることはできません。私が(非常に基本的なレベルで)読んだ教科書は、この問題に触れています: 多くの場合、作成されたクラスのすべてのオブジェクトを追跡して、さまざまな目的でそれらを反復処理する必要があります。彼らは私が現在プログラムを書いているように、多くのオブジェクトは他のオブジェクトからのみ参照されます。つまり、それらすべてを参照する配列やコレクションはありません。 これはOOPの非常に基本的な必要性のように思われるので、これを行うにはかなり制度化された簡単な方法があるはずだと思います。クラスのすべてのオブジェクトの個別のリストを保持することは通常の習慣ですか? 静的配列または静的コレクションについて考えました。コンストラクターを介して、作成されたすべての新しいオブジェクトが追加されます。ただし、コンストラクターは継承されないため、これはサブクラスでは機能しません。 この質問には1つの簡単な答えがないかもしれません。誰かがこの問題について少し教えてくれることを願っています。ここで中心的な知識が不足しているような気がします。

4
春-構成上の混乱?
Springをどこかで読んだところ、設定よりも便利です。しかし、Springの人々は、構成に対して非常に多くの変更を取り入れているため、XML構成または注釈を使用することに本当に混乱しています。 XMLと注釈の使用について、誰でも確実な方法論または経験則を提案してほしい。 SOの例は、私のような多くの初心者が構成について混乱していることを示しています。 リンク-1 私は、機能の背後を把握していないようだ<context:annotation-config>と<context:component-scan>。 私が読んだものから、それらは異なる注釈(@ Required、@ Autowiredなどと@ Component、@ Repository、@ Serviceなど)を処理しているようですが、私が読んだものからは、同じBeanポストプロセッサクラスを登録しています。 さらに私を混乱させるために、annotation-config属性があります<context:component-scan>... リンク2 私はまだコンポーネントスキャンタグを持っています: <context:component-scan base-package="com.mycompany.maventestwebapp" /> しかし、私は別のタグ(同様のタスクを持っているように見える)も持っています。これは次のタグです。 <annotation-driven /> これら2つのタグの違いは何ですか?他の「奇妙な」ことは、前の例(注釈駆動型タグを使用しない)は、Spring MVCテンプレートプロジェクトを使用してSTSによって作成されたプロジェクトと非常に似ているが、注釈駆動型タグを構成から削除した場合です。ファイルは、プロジェクトが実行され、私に次のエラー与えることはありません:HTTPステータス404を- ... Spring 3.2はプロキシ用にcglibを必要としなくなりましたが、下位バージョンはcglibを使用します。SpringSourceブログからの引用 そのようなプロキシを生成するために、Springはcglibと呼ばれるサードパーティのライブラリを使用します。残念ながら、このプロジェクトは現在アクティブではありません。Spring 3.2では、SpringがデフォルトでJavassistを使用する可能性が非常に高いです。 これらは、Springが構成上の混乱であることを示唆するのに十分ですか?
9 java  spring 

4
Perlのプログラミングスタイル
私はJavaで作業しているため、基本的にはコーディング中にOOPパラダイムを使用しています。私はPerlで仕事を始めようとしていて、Perl開発者が従うパラダイムは何だろうと思っていました。wikiでは、多くのパラダイムをサポートしていると述べていますが、スクリプト言語であるため、これを理解しているとは思いません。 だから私の質問は、Javaで慣れ親しんだオブジェクト指向パターンはPerlの慣用句ですか?それとも効果的なPerlを書くためにデザインスタイルに大幅な変更が必要ですか? 注:これはPerlを批判する問題ではありません。私は実際にはPerlで作業する必要があり、現在のプログラミング方法がどのように変わるかを理解したいと思います。

8
過去のIfステートメント配列、ループ…さて、何ですか
私がこの壁にぶつかったとき、私は1年以上前にプログラミングをあきらめました。基本的なAndroidアプリケーションを作成したいので、このトピックを再考します。しかし、私の限られた知識では不十分だと思います。 これが私の問題です。 私はいくつかの本を読んだり、C#/ Javaでビデオチュートリアルを見たり、例に従って、本を完成させたりしました。結局、彼らはいつも次に何をすべきかについて私を困惑させているようです。 つまり、基本的な "hello world"アプリケーションからifや配列までを教えてくれるので、コーディングの世界に出て、何かを作成する方法を知っているように思われます。 ここで何か不足していますか?これらはすべてのプログラムの構成要素であることは知っていますが、私が読んだ本は次に何をすべきかを実際に示すことはありません。 私が仮定する簡単な答えは「コーディングを開始する」ことですが、どこに?たとえば、「He​​ad First Java」を読みました。その部分まで、彼らはあなたがあなたが学んだすべてを取り、犬のレースゲームを作成することをあなたに言っていました... 「チートしないで、提供されたソースコードを見てみてください。これでこれを実行できるようになるはずです」_正確な引用ではありませんが、基本的にはそうです...... 30分前は、配列を作成する方法を説明しているだけでしたが、理論なしに、実際に動作するゲームを作成するつもりですか? 私がこれを尋ねる理由は、これが少なくともコーディングを開始するために知っているはずのすべてであると恐れているからです。 アドバイスありがとうございます

5
「プログラミングエラー」の例外-アプローチは適切ですか?
私は現在、例外の使用方法を改善しようとしていますが、プログラミングエラーを示す例外(たとえば、誰かが引数としてnullを渡した、またはオブジェクトが破棄された後にメソッドを呼び出した)と、呼び出し側の障害ではない操作(I / O例外など)。 これらの2種類の例外はどのように異なる方法で処理する必要がありますか?エラー例外を明示的に文書化する必要があると思いますか、または関連する前提条件を文書化するだけで十分ですか?また、明らかな場合(たとえば、ObjectDisposedException破棄されたオブジェクトでメソッドを呼び出す場合)、前提条件またはエラー例外のドキュメントを省略できますか?
9 java  c#  c++  exceptions 

1
「汎用システム」とはJava SE Embeddedの意味を教えてください。
OracleのWebサイトでは、Java SE Embedded ライセンスについて次のように述べています。 開発は無料ですが、汎用システム以外に展開する場合はロイヤリティが必要です ここで「汎用システム」とはどういう意味ですか? 全国にセンサーネットワークがあります。インストールした各ボックスには、環境からデータを取得し、シリアルポートでARMベースの組み込みボードにデータを送信するマイクロコントローラーベースのボードがあります。このボードシステムには、JMSを使用してデータを読み取り、中央サーバーに送信するJavaプロセスがあります。これは汎用システムに分類されますか? すみません、こちらでお願いします。私たちはイランにいます、ここに尋ねるオラクルオフィスはありません。

1
Javaでオブジェクト/配列を割り当てるときにオーバーヘッドが発生するのはなぜですか?
Javaで配列が占めるバイト数は?これは64ビットマシンであり、配列にN個の要素があると仮定します。したがって、これらの要素はすべて、異なるタイプの配列に対して2 * N、4 * N、または8 * Nバイトを占めることになります。 また、Courseraでの講義では、N要素配列では2 * N + 24、4 * N + 24、または8 * N + 24バイトを占有し、24バイトはオーバーヘッドと呼ばれますが、オーバーヘッドがなぜであるかは説明されていません必要。 また、オブジェクトには16バイトのオーバーヘッドがあります。 これらのオーバーヘッドは正確には何ですか?これらの24/16バイトは何で構成されていますか? また、これらのオーバーヘッドはJavaにのみ存在しますか?C、C ++、Pythonはどうですか?
9 java  memory 

4
TDDを簡単に実行できるようにゼロから設計された新しい言語はどのように見えますか
いくつかの最も一般的な言語(Java、C#、Javaなど)では、コードを完全にTDDしたいときに、その言語と対立しているように見えることがあります。 たとえば、JavaとC#では、クラスの依存関係をモックする必要があり、ほとんどのモックフレームワークでは、クラスではなくインターフェイスをモックすることをお勧めします。これは、多くの場合、単一の実装で多くのインターフェースがあることを意味します(この影響は、TDDにより多数の小さいクラスを作成するよう強制されるため、さらに顕著になります)。具象クラスを適切にモックできるようにするソリューションは、コンパイラーを変更したり、クラスローダーをオーバーライドしたりするなど、かなり厄介です。 それで、TDDに最適になるようにゼロから設計された言語はどのようになりますか?(インターフェイスをコンストラクタに渡すのではなく)依存関係を記述する何らかの言語レベルの方法で、明示的に行うことなくクラスのインターフェイスを分離できるのでしょうか?

4
メモリ使用量の分析:JavaとC ++は無視できるか?
Javaで記述された整数オブジェクトのメモリ使用量は、C ++で記述された整数オブジェクトのメモリ使用量とどのように比較されますか?違いは無視できますか?変わりはない?大きな違いは?言語に関係なくintはintであるため、同じだと思います(?) 私がこれを尋ねた理由は、プログラムのメモリ要件がプログラマーが特定の問題を解決するのをいつ妨げるかを知ることの重要性について読んでいたからです。 私を魅了したのは、単一のJavaオブジェクトを作成するために必要なメモリの量です。たとえば、整数オブジェクトを考えてみましょう。私が間違っているが、Java整数オブジェクトが24バイトのメモリを必要とする場合は修正してください。 intインスタンス変数用に4バイト 16バイトのオーバーヘッド(オブジェクトのクラス、ガベージコレクション情報、同期情報への参照) 4バイトのパディング 別の例として、Java配列(オブジェクトとして実装されている)には48バイト以上が必要です。 24バイトのヘッダー情報 16バイトのオブジェクトオーバーヘッド 長さは4バイト パディング用に4バイト さらに、値を格納するために必要なメモリ これらのメモリ使用量は、C ++で記述された同じコードとどのように比較されますか? 以前は自分が書いたC ++およびJavaプログラムのメモリ使用量について気づいていませんでしたが、アルゴリズムについて学び始めた今、コンピューターのリソースに対する理解が深まっています。

2
CDNはどのようにしてDDoS攻撃からフェイルオーバーサイトを保護しますか?
私は、おそらく最終的にGoogle App Engine(GAE)にデプロイされるJava Webアプリの設計プロセスにいます。GAEの良い点は、恐ろしいDDoS攻撃からアプリを強化することを本当に心配する必要がないことです。「請求上限」を指定するだけで、トラフィックがこの上限(DDoSまたはそれ以外)に達すると、GAEアプリをシャットダウンします。言い換えると、GAEは、アプリを実行し続ける余裕がなくなるまで、基本的に任意の量にスケーリングされます。 したがって、私は、この請求の上限に達し、GAEがアプリをシャットダウンした場合、WebアプリドメインのDNS設定が別の非GAE IPアドレスに「フェイルオーバー」するような不測の事態を計画しています。一部の初期の調査では、CloudFlareなどの特定のCDNがこの正確な状況に対応するサービスを提供していることが示されています。基本的に、私はDNS設定を保持するだけで、フェイルオーバー手順を自動化するために使用できるAPIを提供します。したがって、GAEアプリの請求上限が99%になっていることを検出した場合、このCloudFlare APIにアクセスできます。CloudFlareは、DNS設定を動的に変更して、GAEサーバーから他のIPアドレスを指すようにします。 私の最初の不測の事態は、おそらくGoDaddyまたはRackspaceによって他の場所でホストされているWebアプリケーションの「読み取り専用」(静的コンテンツのみ)バージョンにフェイルオーバーすることです。 しかし、それから突然私に気づきました。DDoS攻撃がドメイン名をターゲットにしている場合、GAE IPアドレスから(たとえば)GoDaddy IPアドレスにロールオーバーするとどのような違いがありますか?要するに、フェイルオーバーはDDoS攻撃者が私のバックアップ/ GoDaddyサイトをダウンさせること以外は何もしません! 言い換えると、DDoS攻撃者は、GAEによってホストされている私のWebアプリへの攻撃を調整しますwww.blah-whatever.com。これは、実際にはIPアドレス100.2.3.4です。これにより、トラフィックが課金上限の98%に急上昇し、カスタムモニターが100.2.3.4から105.2.3.4へのCloudFlareフェイルオーバーをトリガーします。DDoS攻撃者は気にしません!彼らはまだ攻撃を仕掛けていwww.blah-whatever.comます!DDoS攻撃が続いています! だから私は尋ねます:CloudFlareのようなCDNはどのような保護を提供するので-別のDNSにフェールオーバーする必要があるときに-同じ、継続的なDDoS攻撃の危険にさらされませんか?そのような保護が存在する場合、フェイルオーバーサイトに課されている技術的な制限(読み取り専用など)はありますか?そうでない場合、彼らは何が良いのですか?前もって感謝します!

9
フローチャートの代わりに疑似コードをいつ使用しますか?
私はプログラミングのさまざまな技法を使っている学生で、疑似コードとフローチャートに出くわしました。これらは両方とも、実際にプログラミングする前に問題を検討するために使用されることを知っていますが、これについていくつか質問があります。 いつ計画を立てるために疑似コードを使用し、いつフローチャートを使用しますか?または、実際にプログラミングする前に両方を行う方が良いでしょう。それは私の次のプロジェクトなので、特に、JAVAの小さなアーケードゲームに適しています。 疑似コードがフローチャートではなく実際のコードに非常に似ていることに気づきました。本質的にプログラムに疑似コードをコピー/貼り付けするので、これは疑似コーディングをより良くしますか(もちろん、言語に合わせて変更する必要があります。その部分は理解しています)。 プログラミング中にこれらの両方を使用することは現実的ですか?特に前述の同じゲーム。ありがとう。

2
JavaBean仕様のアクセサメソッドがJava開発の標準になったのはなぜですか。
JavaBeansの仕様は、 JavaBeanのように記述する Java Beanは、ビルダーツールで視覚的に操作できる再利用可能なソフトウェアコンポーネントです。 記述されたコード行の大部分はビルダーツールで視覚的に操作されることとは何の関係もないように見えるので、なぜJavaBean仕様がオブジェクト指向コードを記述する「方法」であるのでしょうか。 これは伝統的にJavaでオブジェクト指向のコードを記述する方法ではないため、ビルダーだけでなく、コード全体でFluent Interfacesを優先して、従来のゲッター/セッターを放棄したいと思います。
9 java  history 

5
OOP:クラスベースのデザインがインターフェイスベースのデザインよりも優れている状況にはどのようなものがありますか?
JDOMのウェブサイトを読んでいました 。 JDOM APIがインターフェイスではなく具象クラスで定義されているのはなぜですか? Jason Hunterは、JDOMのインターフェースベースのAPIに対する引数を要約しています。 インターフェースではすべてがファクトリーになり、要素を追加するだけでなく新しいドキュメントに「インポート」する必要があり、長期的なシリアル化などの機能は保証されず、リストは続きます。 実際にインターフェースから始めました。いくつかの同僚へのリリース前のレビュー中に、具体的なクラスを試すべきフィードバックを受け取りました。私たちはそうしました、そしてデザインはそれのためにはるかに優れていました。 私は初心者デザイナーです。私が今までについて聞いたことがすべてのアドバイスをさに対して助言具象クラスを使用した設計を使用しました。 特定の場所で適切なクラスを使用している場合があります。デザインで具象クラスを使用しても問題ない、一般的なクラスの問題はありますか?

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