レッドハット企業Linux5をインストールすることによって、ステップすすんでください

レッドハット企業Linux5をインストールすることによって、ステップすすんでください

レッドハット企業Linux5をインストールすることによって、ステップすすんでください

#2インストールレッドハット企業Linux5

この付録は直接的です。 レッドハット企業Linux5サーバーをコンピュータにインストールすることは、グラフィカルなおよびテキスト・ベースのインストール方法を使って必要なステップを説明します。 両方は、アナコンダとして知られているレッドハットプログラムにより制御されます。 私はこのセクションで記述的なコメントを最小に保持しました; 詳細については、2章を読んでください。 グラフィカルなおよびテキストモードのために、私は、NFSと分担するリモートのインストールサーバーからインストールしていると仮定します。 RHELをインストールする時に入手可能なオプションのかなりの数がある間、私はより一般的な設備を説明します。 もしオプションのうちの約いくつかを学びたいならば、インストールによって実験に自身でします。 実のところ、2章の運動は、コンピュータの上におよび試験の間にRHEL設備ですることができる種々の物を学ぶことを手助けするようにデザインされます。 もしレッドハット企業Linux5クライアントを任命するならば、ステップは同じです; しかし、見るものは少し違います。

グラフィカルなインストール

レッドハット企業Linux5をコンピュータにインストールするためには、以下の処置を取ってください:

1. レッドハット企業Linux5インストールプログラムを蹴るために使用するメディアを選び、挿入してください。 それは、同じディレクトリから、最初のレッドハット企業Linux5cd、最初のインストールCDの/イメージディレクトリからのboot.isoファイルから作成されたブートCD、またはdiskboot.imgファイルから作成されたブートUSBキーであるかもしれません。

2. システムのパワー。 適切なキーを押してください。一般に ここに示されたブートメニューにアクセスするESC、F12、またはDEL 。 もしブートメニューが入手可能ではないならば、その時、選ばれたメディアからブートに直接使うことができるコンピュータBIOSでのブート連続を調整する必要があります。 最初のインストールCDまたはUSBドライブから蹴るために、コンピュータのBIOSをセットしてください。 詳細はPCのため変わります。 再立ち上げする前にBIOSが変化を保存することを確かめてください。

3. ブートを見る時のタイプlinux askmethod: プロンプト。

#3グラフィカルなインストール

4. 言語を選び、OKを選んでください。

#4インストールレッドハット企業Linux5、一歩一歩

5. キーボードを選び、OKを選んでください。

6. NFSインストール方法を設定し、OKを選んでください。

#5グラフィカルなインストール

7. 示されるようにネットワークを設定し始めてください。 もしネットワークにDHCPサーバーをコースで持ち、それが最も簡単な?unlessであり、試験の間に静的なアドレッシングを可能にするように命じられるならば。 このインストールのために、IPv4とIPv6アドレッシングをDHCPにできなくしてください。 もしIPv6-有能のDHCPサーバーまたはルータを持っていないならば、完全に提出しているIPv6を使用不可にしてください。 OKを選んでください。 もしDHCPを可能にするならば、次のステップを省略してください。

8. ネットワークのための静的なアドレス情報を追加してください。 既存のネットワークと関連したIPアドレス、ゲートウェイ、およびネームサーバ(DNS)アドレスを使ってください。 OKを選んでください。

#6 インストールレッドハット企業Linux5、一歩一歩

9. 接続情報をインストールサーバーに追加してください。 もしローカルなネットワークのためのDNSサーバーを持っていないならば、IPアドレスをNFSサーバー名に代用できるでしょう。 OKを選んでください。

10. 接続作品を仮定することによって、最初のインストールスクリーンを見ます。 クリック次。

#7 グラフィカルなインストール

11. すでに言語とキーボードを選んでいました。従って、もし実際、レッドハット企業Linux5(再構築配布のうちの1つと対比されるような)を実行しているならば、次のステップは、 示される 次であるように、購入されるまたは試験的な登録と関連したインストール数を入力することです。 登録によりパッケージグループと宝庫のカスタムのセットが設定されます。 もしインストール数を持っていないならば、スキップ入力インストール数ラジオボタンを選んでください。 OKをクリックしてください。およびもしインストール数を入力しなかったならば、警告を与えられます。 続くように、スキップをクリックしてください。

12. インストールプログラムは既存の設備を検索します。 もし見つけられるならば、見つけられなかった既存のinstallation.Ifの上でアップグレードするか、またはインストールするために促されて、スクリーンがここに示されるのを見ません; もしドライブがフォーマットなしならば、警告を得ます。 さもなければ、次のステップに飛んでください。 インストールレッドハット企業サーバーを選び、次に、続くようにクリックしてください。

13. アナコンダが、最適化されたパーティションコンフィギュレーションを設定することを可能にすることができます

自由なスペースに基づき、メモリーおよび入手可能なハードディスクスペース(に基づきます

除去partitions)またはそれとしてコンフィギュレーションをカスタマイズすることを選んだ後に

#8インストールレッドハット企業Linux5、一歩一歩

示される 次です。 このインストールのためには、レビューと修正仕切りレイアウトを選んでください。 もしネットワークを取り付けさせて iSCSI(TCP/IPプロトコル)を経て通信するために設定されるストレージ(NAS) ならば、高度ストレージコンフィギュレーションをクリックしてください。 ここのそのストレージとの通信も設定できます。 もしそれが、したいものであるならば、追加iSCSI目標を選び、追加ドライブをクリックしてください。 これは設定iSCSIパラメータウィンドウを開きます。そこにIPアドレスとiSCSIイニシエータ名を入力します。 しかし、それは現在のレッドハット試験の範囲を越えてあります。 前のスクリーンに戻るために、取消しをクリックし、それから、次にクリックしてください。

14. もしそこが現存していて インストールされたハードディスクのパーティション ならば、取り除き、言われて パーティション たいと確認するチャンスを得ます(このステップは最終的ではありません)。 もし別のオペレーティングシステムによってデュアルブートを設定しているならば、パーティションを削除しないでください! 代わりに、作成Aカスタムレイアウトをクリックしなさい 後ろであり、選んでください。 しかし、レッドハット試験はLinux試験です。従って、私は、試験の間にデュアルブートコンフィギュレーションが、特にマイクロソフトWindowsのためありそうにないと信じます。 これらのオプションが示される 次です。 適切なので、はい、またはいいえ選んでください。

#9グラフィカルなインストール

15. 今や、示されるようにディスクドルイド僧のパーティションを検査し、変更してください。 また作成し、それから、2章において議論されるようにRAIDとLVMパーティションを設定できます。 どのような要求された変化でも起こし、それから、次にクリックしてください。

#10インストールレッドハット企業Linux5、一歩一歩

16. いったんパーティションを設定したら、ブートローダの上で設定してください。 もし選ぶならば、ブートローダー全然インストールされてはならない パーティション魔法やマイクロソフトのNTLDRなどのサードパーティブートローダを使う必要があります。 ブートローダーパスワードまたは設定高度ブートローダーオプションをセットアップしたくない限り、次にクリックしてください。

17. ネットワークとの接続を設定してください。 それは、ステップ8およびことによると 9 入力する設定を反映するはずです。 もしDHCPサーバーが、ホスト名(または、DHCPサーバーを持っていません)を割り当ててほしくないならば、ここに示されるようにそれを手動で割り当てることができるでしょう。 次に、前進するためにクリックしてください。

#11グラフィカルなインストール

18. タイムゾーンをシステムに課してください。 もしこのコンピュータに別のオペレーティングシステムを持っていないならば、システム時計使用UTCオプションをアクティブにしておいてください。 そして、次にクリックしてください。

#12インストールレッドハット企業Linux5、一歩一歩

19. タイプ入力し、システムのためのルートパスワードを確認してください。 これのために試験のどのような手順にでも慎重に従ってください; それを、したことを見るために試験を等級づける人に容易にしたい。 はい、失われた根パスワードはリセットできるけれども、もし試験を等級づける人が、各自の手順を無視したと気付くならば、何が20のbeを望んでいますか? クリック次。

20. 入手可能な2つのパッケージカスタマイズスクリーンがあります。 誰もが、 スクリーンが示される 次なのを見ます。 (選択はレッドハット企業Linux5クライアントのために少し違います。) デフォルトが入手可能なオプションを選ぶことを認めることができて、および/または、選んでください。現在カスタマイズします。 それは、特定のインストールとコンフィギュレーション試験における要件に基づくので、通常、謙虚に(私は今や オプション カスタマイズを選びました)カスタマイズするのに最も良い。 クリック次。 (もし現在カスタマイズを選ばないならば、次のステップを省略してください。)

#13グラフィカルなインストール

21. 選択のパッケージグループを選んでください。 これは特定の試験のインストールとコンフィギュレーションセクションの要件に対応するべきです。 クリック次。

#14インストールレッドハット企業Linux5、一歩一歩

22. いったん選択のパッケージグループを選んだら、インストールプロセスを始める前に帰る1つの最後のチャンスを得ます。 次に、もしhappywith 選択 であるか、または変化を起こすために、後ろにクリックするならばクリックしてください。

23. RHELの前のバージョンと関連したいくつかのコンフィギュレーションオプションは、もうインストールプロセスの一部ではありません。 これらのオプションのうちのいくつかが、2章において説明された1番目ブートプロセスの一部です。 普通、1番目ブートスクリーンはじめてを見ます あなた システムを再立ち上げする 。 実際のインストールプロセスを始める用意ができている時には、次にクリックしてください。 ハードウェアとネットワーク接続に依存し、それには数分以上かかるかもしれません。

24. 次のスクリーンは、設備を完成するために、あなたを祝います。 次のステップは、RHELにコンピュータを再立ち上げすることです。 クリック再立ち上げ。

#15テキストインストール

もしコンピュータのBIOSメニューを修正する必要があったならば、未来にそれがハードディスクから蹴るように、それを復元してください。 再立ち上げする前にBIOSが変化を保存することを確かめてください。 レッドハット企業Linux5をテキストモードのコンピュータにインストールするテキストインストール 以下の処置を取る :

1. レッドハット企業Linux5インストールプログラムを蹴るために使用するメディアを選び、挿入してください。 それは、同じディレクトリから、最初のレッドハット企業Linux5cd、最初のインストールCDの/イメージディレクトリからのboot.isoファイルから作成されたブートCD、またはdiskboot.imgファイルから作成されたブートUSBキーであるかもしれません。

#16インストールレッドハット企業Linux5、一歩一歩

2. システムのパワー。 ブートメニューに右、一般ににアクセスするために、適切なキーを押してください ESC、F12、またはDEL.

3. もしブートメニューが入手可能ではないならば、その時、yourselectedされたメディアからブートに直接使うことができるコンピュータBIOSでのブート連続を調整する必要があります。 最初のインストールCDまたはUSBドライブから蹴るために、コンピュータのBIOSをセットしてください。 詳細はPCのため変わります。 再立ち上げする前にBIOSが変化を保存することを確かめてください。

4. プロンプトを見る時には、テキストaskmethodをタイプしてください。

5. 言語を選び、OKを選んでください。

#17 テキストインストール

6. キーボードを選び、OKを選んでください。

#18インストールレッドハット企業 Linux5、一歩一歩

7. NFS設備をセットアップし、OKを選んでください。

8. ネットワークを設定し始めてください。 もしネットワークにDHCPサーバーをコースで持ち、それが最も簡単な?unlessであり、試験の間に静的なアドレッシングを可能にするように命じられるならば。 このインストールのために、DHCPとIPv6アドレッシングを使用不可にしてください。 OKを選んでください。 もしDHCPを可能にするならば、ステップ8を省略してください。

#19テキストインストール

9. ネットワークのための静的なアドレス情報を追加してください。 既存のネットワークと関連したIP、ゲートウェイ、およびネームサーバ(DNS)アドレスを使ってください。 OKを選んでください。

10. 示されるように接続情報をインストールサーバーに追加してください。 もしローカルなネットワークのためのDNSサーバーを持っていないならば、IPアドレスをNFSサーバー名に代用できるでしょう。 OKを選んでください。

#20インストールレッドハット企業Linux5、一歩一歩

11. 接続作品を仮定することによって、あなたをレッドハット企業Linuxサーバーに歓迎して最初のテキストモードインストールスクリーンを見ます。 OKを選んでください。

12. すでに言語とキーボードを選んでいたので 実際、レッドハット企業Linux5(再構築配布のうちの1つと対比されるような)を実行し、 示される 次であるように、購入されるまたは試験的な登録と関連したインストール数を入力できる 。 もしインストール数を持っていないならば、スキップ入力インストール数オプションを選んでください。 登録によりパッケージグループと宝庫のカスタムのセットが設定されます。 OKを選んでください。

#21テキストインストール

もしインストール数を入力しなかったならば、警告を与えられます。 続くように、スキップを選んでください。

13. インストールプログラムは現在既存の設備を検索します。 もし見つけられるならば、既存のインストールの上でアップグレードするか、またはインストールするために促されます。 もしこのスクリーンを見るならば、再設置システムを選び、続くように、OKを選んでください。 さもなければ、これらのオプションを見さえせず、次のステップに持って行かれます。 アナコンダが、自由なスペースに基づいてシステムのRAMおよび入手可能なハードディスクスペース(に基づいて、最適化された設備を設定することを可能にすることができます

#22インストールレッドハット企業Linux5、一歩一歩

除去パーティション)の後で。 これは、2章において説明された!..defaultレイアウト!..オプションと一致しています。 代わりに、 示される 次であるようにコンフィギュレーションをカスタマイズすることを選ぶことができます。 OKを選んでください。

14. もし!..defaultレイアウト!..オプションのうちの1つが選ばれたならば、既存のハードディスクパーティションに変化を確認するように頼まれます。 このセクションのためには、はい選んでください。

15. 概説したいかどうかにかかわらず促されることおよび修正仕切りレイアウト。 この付録のためにはい選んでください。 もしそこで存在するならば
インストールされたハードディスク、あなたのパーティションは、これらのパーティションを取り除く機会を与えられます。 もし別のオペレーティングシステムによってデュアルブートを設定しているならば、パーティションを削除しないでください! しかし、試験において、Linuxによって働いているでしょう。従って、私は、デュアルブートコンフィギュレーションが、特にマイクロソフト Windowsのためありそうにないと信じます。

#23テキストインストール

示されるようにディスクドルイド僧のパーティションを検査し、変更できるので。 また作成し、それから、RAIDパーティションを設定できます。 しかし、テキストモード設備は、すでに既存のボリュームグループがない限り、論理的な巻を作成することを可能にしません; テキストモードは新しいボリュームグループの作成をサポートしません。 OKを選んでください。

#24インストールレッドハット企業 Linux5、一歩一歩

16. いったんパーティションを設定したら、ブートローダを選んでください。 もしブートローダーを全然選ばないならば、パーティション魔法やマイクロソフトのNTLDRなどのサードパーティブートローダを使う必要があります。 OKを選んでください。

17. デフォルトGRUBブートローダによって付くと仮定することによって、特別なオプションをカーネルに手渡すことができます。 もしセキュリティ強化Linuxが必要ではないならば、 示される 次であるようにselinux=0を追加するでしょう。 OKを選んでください。

#25 テキストインストール

18. パスワードによってGRUBも設定できます。 OKを選んでください。

19. もし複数のオペレーティングシステムがこのコンピュータにインストールされるならば、 示される 次であるようにデフォルトオペレーティングシステムとラベルを設定できるでしょう。 入力を選び、編集をクリックしてください。 これは、GRUBメニューにおいて見るものを変更することを可能にする編集ブートラベルウィンドウを開きます。

#26インストールレッドハット企業Linux5、一歩一歩

20. 最後に、ブートローダをMBRまたはRHEL/ブートパーティションの最初のセクタにインストールすることを選ぶことができます。 OKを選んでください。

21. 示される 次であるようにネットワークとの接続を設定してください。 それは、ステップ7と8に入力する設定を反映するはずです。 もしDHCPサーバーが、ホスト名(または、DHCPサーバーを持っていません)を割り当ててほしくないならば、それを手動で割り当てることができるでしょう。 OKを選んでください。

#27テキストインストール

22. 静的なコンフィギュレーションを設定したと仮定することによって、ゲートウェイとDNS(ネームサーバ)IPアドレス情報を設定できるスクリーンを見ます。 この情報を埋めて、OKを選んでください。

23. 示されるように選択のホスト名も追加できます。 もし複数のネットワークアダプタを持っているならば、必要なのと同じくらいしばしばステップ18に戻ります。 OKを選んでください。

#28 インストールレッドハット企業Linux5、一歩一歩

24. 次に、タイムゾーンをシステムに課してください。 もしこのコンピュータに他のオペレーティングシステムを持っていないならば、システム時計使用UTCオプションをアクティブにしておいてください。

25. 今や、中のタイプおよびこのシステムのためのルートパスワードを確認します。 これのために試験のどのような手順にでも慎重に従ってください; それを、したことを見るために試験を等級づける人に容易にしたい。 OKを選んでください。

#29テキストインストール

26. 入手可能な2つのパッケージカスタマイズスクリーンがあります。 誰もが、 スクリーンが示される 次なのを見ます。 デフォルトが入手可能なオプションを選ぶことおよび/またはカスタマイズソフトウェア選択を選ぶことを認めることができます。 それは、特定のインストールとコンフィギュレーション試験における要件に基づくので、通常、謙虚に(私はカスタマイズソフトウェア選択オプションを選びました)カスタマイズするのに最も良い。 OKを選んでください。

27. 選択のパッケージグループを選んでください。 選択は特定の試験のインストールとコンフィギュレーションセクションの要件に対応するべきです。 OKを選んでください。

#30インストールレッドハット企業Linux5、一歩一歩

28. いったん選択のパッケージグループを選んだら、インストールプロセスを始める前に帰る1つの最後のチャンスを得ます。 インストールプロセスを始めるために、OKを選んでください。

29. いったんインストールプロセスが始まったら、スクリーンはインストールの進歩を示します。

#31テキストインストール

RHEL の前のバージョンと関連したいくつかのコンフィギュレーションオプションは、もうインストールプロセスの一部ではありません。 これらのオプションのうちのいくつかが、2章において説明された1番目ブートプロセスの一部です。 普通、1番目ブートプロセスを見ます システムを再立ち上げするはじめてだけ 。

30. 完全なスクリーンが出現する時には、インストールがだいたい完全であると知るでしょう。 RHELにコンピュータを再立ち上げするために、再立ち上げを選んでください。

31. もしコンピュータのBIOSメニューを修正する必要があったならば、未来にそれがハードディスクから蹴るように、それを復元してください。 再立ち上げする前にBIOSが変化を保存することを確かめてください。

by 데이터수집 | 2010/03/30 10:22 | ETC

Installing Red Hat Enterprise Linux 5,Step by Step

Installing Red Hat Enterprise Linux 5,Step by Step

#2 Installing Red Hat Enterprise Linux 5

This appendix is straightforward. It illustrates the steps required to install Red Hat Enterprise Linux 5 Server on your computer, using graphical and text-based installation methods. Both are governed by the Red Hat program known as Anaconda. I've kept descriptive comments in this section to a minimum; for more information, read Chapter 2. For both graphical and text modes, I'll assume that you're installing from a remote installation server, shared with NFS. While there are a substantial number of options available when you install RHEL, I illustrate a more generic installation. If you want to learn about some of the options, you'll have to experiment with the installation yourself. In fact, the exercises in Chapter 2 are designed to help you learn the different things you can do with an RHEL installation, on your computer and during the exam. If you're installing Red Hat Enterprise Linux 5 Client, the steps are the same; however, what you see is slightly different.

Graphical Installation

To install Red Hat Enterprise Linux 5 on your computer, take the following steps:

1. Select and insert the media that you'll use to boot the Red Hat Enterprise Linux 5 installation program. It can be the first Red Hat Enterprise Linux 5 CD, a boot CD created from the boot.iso file from the /images directory of the first installation CD, or a boot USB key created from the diskboot.img file from the same directory.

2. Power on your system. Press the appropriate key, typically ESC, F12, or DEL, to access the boot menu shown here. If a boot menu isn't available, you'll need to adjust the boot sequence in the computer BIOS, which you can then use to boot directly from your selected media. Set your computer's BIOS to boot from the first installation CD or USB drive. Details vary by PC. Make sure your BIOS saves your changes before you reboot.

3. Type linux askmethod when you see the boot: prompt.

#3 Graphical Installation

4. Choose a language and select OK.

#4 Installing Red Hat Enterprise Linux 5, Step by Step

5. Select a keyboard and select OK.

6. Set up an NFS installation method and select OK.

#5 Graphical Installation

7. Start configuring your network, as shown. If you have a DHCP server on your network, that is simplest?unless, of course, you're told to enable static addressing during your exam. For this installation, disable DHCP for both IPv4 and IPv6 addressing. If you don't have an IPv6-capable DHCP server or router, disable IPv6 addressing completely. Select OK. If you enable DHCP, skip the next step.

8. Add static address information for your network. Use the IP Address, Gateway, and Name Server (DNS) addresses associated with your existing network. Select OK.

#6 Installing Red Hat Enterprise Linux 5, Step by Step

9. Add connection information to the installation server. If you don't have a DNS server for the local network, you can substitute the IP address for the NFS server name. Select OK.

10. Assuming your connection works, you'll see the first installation screen. Click Next.

#7 Graphical Installation

11. You've already selected a language and keyboard, so the next step, if you're actually running Red Hat Enterprise Linux 5 (as opposed to one of the rebuild distributions), is to enter an installation number associated with your purchased or trial subscription, as shown next. The subscription configures a custom set of package groups and repositories. If you don't have an installation number, select the Skip Entering Installation Number radio button. Click OK, and If you did not enter an installation number, you'll be given a warning. Click Skip to continue.

12. The installation program searches for existing installations. If found, you're prompted to either upgrade or install over the existing installation.If not found, you won't see the screen shown here; if the drive is unformatted, you'll get a warning. Otherwise, skip to the next step. Select Install Red Hat Enterprise Server and click Next to continue.

13. You can allow Anaconda to configure an optimized partition configuration

    based on your memory and available hard disk space (based on free space

    after removing partitions), or choose to customize the configuration, as

#8 Installing Red Hat Enterprise Linux 5, Step by Step

shown next. For the purpose of this installation, select Review And Modify Partitioning Layout. If you have network attached storage (NAS) that is configured to communicate via iSCSI (a TCP/IP protocol), click Advanced Storage Configuration. You can also configure communication with that storage here. If that's what you want to do, select Add iSCSI target, and click Add Drive. This opens a Configure iSCSI Parameters window, where you'd enter the IP address and iSCSI Initiator Name. But that's beyond the scope of the current Red Hat exams. Click Cancel to return to the previous screen, and then click Next.

14. If there are existing partitions on the installed hard drives, you'll get the chance to confirm that you want to remove said partitions (this step isn't final). If you're configuring a dual-boot with another operating system, don't delete the partitions! Instead, click Back and select Create A Custom Layout. However, the Red Hat exams are Linux exams, so I believe a dual-boot configuration, especially with Microsoft Windows, is unlikely during the exam. These options are shown next. Choose Yes or No, as appropriate.

#9 Graphical Installation

15. Now inspect and change partitions in Disk Druid, as shown. You can also create and then configure RAID and LVM partitions, as discussed in Chapter 2. Make any desired changes, and then click Next.

#10 Installing Red Hat Enterprise Linux 5, Step by Step

16. Once you've configured your partitions, set up a boot loader. If you select No Boot Loader Will Be Installed, you'll need to use a third-party boot loader such as Partition Magic or Microsoft's NTLDR. Unless you want to set up a Boot Loader Password or Configure Advanced Boot Loader Options, click Next.

17. Configure your connection to the network. It should reflect the settings you input in steps 8 and possibly 9. If you don't want the DHCP server to assign a hostname (or you don't have a DHCP server), you can assign it manually, as shown here. Click Next to move on.

#11 Graphical Installation

18. Set the time zone for your system. If you don't have another operating system on this computer, keep the System Clock Uses UTC option active. Then click Next.

#12 Installing Red Hat Enterprise Linux 5, Step by Step

19. Type in and confirm the root password for your system. Follow any instructions on your exam carefully for this; you want to make it easy for the person grading your exam to see what you've done. Yes, lost root passwords can be reset, but what will your score be if the person grading your exam finds that you ignored his or her instructions? Click Next.

20. There are two package customization screens available. Everyone sees the screen shown next. (The choices are slightly different for Red Hat Enterprise Linux 5 Client.) You can accept the defaults, select available options, and/or select Customize Now. It's usually best to customize modestly (I've selected the Customize Now option), based on the requirements on your particular Installation and Configuration exam. Click Next. (If you don't select Customize Now, skip the next step.)

#13 Graphical Installation

21. Select the package groups of your choice. This should conform to the requirements of the Installation and Configuration section of your particular exam. Click Next.

#14 Installing Red Hat Enterprise Linux 5, Step by Step

22. Once you've selected the package groups of your choice, you get one last chance to go back before starting the installation process. Click Next if you're happywith your choices, or click Back to make changes.

23. Some configuration options associated with previous versions of RHEL are no longer part of the installation process. Some of these options are part of the First Boot process described in Chapter 2. Normally, you'll see the First Boot screens only the first time you reboot a system. Click Next when you're ready to start the actual installation process. Depending on hardware and network connections, it may take a few minutes, or more.

24. The next screen congratulates you for completing the installation. The next step is to reboot your computer into RHEL. Click Reboot.

#15 Text Installation

If you had to modify your computer's BIOS menu, change it back so it boots from the hard drive in the future. Make sure your BIOS saves your changes before you reboot. Text Installation To install Red Hat Enterprise Linux 5 on your computer in text mode, take the following steps:

1. Select and insert the media that you'll use to boot the Red Hat Enterprise Linux 5 installation program. It can be the first Red Hat Enterprise Linux 5 CD, a boot CD created from the boot.iso file from the /images directory of the first installation CD, or a boot USB key created from the diskboot.img file from the same directory.

#16 Installing Red Hat Enterprise Linux 5, Step by Step

2. Power on your system. Press the appropriate key to access the boot menu to the right, typically ESC, F12,or DEL.

3. If a boot menu isn't available, you'll need to adjust the boot sequence in the computer BIOS, which you can then use to boot directly from yourselected media. Set your computer's BIOS to boot from the first installation CD or USB drive. Details vary by PC. Make sure your BIOS saves your changes before you reboot.

4. Type text askmethod when you see the prompt.

5. Choose a language and select OK.

#17 Text Installation

6. Select a keyboard and select OK.

#18 Installing Red Hat Enterprise Linux 5, Step by Step

7. Set up an NFS installation and select OK.

8. Start configuring your network. If you have a DHCP server on your network, that is simplest?unless, of course, you're told to enable static addressing during your exam. For this installation, disable DHCP and IPv6 addressing. Select OK. If you enable DHCP, skip step 8.

#19 Text Installation

 9. Add static address information for your network. Use IP, Gateway, and Name Server (DNS) addresses associated with your existing network. Select OK.

10. Add connection information to the installation server, as shown. If you don't have a DNS server for your local network, you can substitute the IP address for the NFS server name. Select OK.

#20 Installing Red Hat Enterprise Linux 5, Step by Step

11. Assuming your connection works, you'll see the first text-mode installation screen, welcoming you to Red Hat Enterprise Linux Server. Select OK.

12. Since you've already selected a language and keyboard, if you're actually running Red Hat Enterprise Linux 5 (as opposed to one of the rebuild distributions), you can enter an Installation Number associated with your purchased or trial subscription, as shown next. If you don't have an installation number, select the Skip Entering Installation Number option. The subscription configures a custom set of package groups and repositories. Select OK.

#21 Text Installation

If you did not enter an installation number, you'll be given a warning. Select Skip to continue.

13. The installation program now searches for existing installations. If found, you're prompted to either upgrade or install over the existing installation. If you see this screen, select Reinstall System and select OK to continue. Otherwise, you won't even see these options and are taken to the next step. You can allow Anaconda to configure an optimized installation based on your system's RAM and available hard disk space (based on free space

#22 Installing Red Hat Enterprise Linux 5, Step by Step

after removing partitions). This corresponds to the !°default layout!± options described in Chapter 2. Alternatively, you can choose to customize the configuration, as shown next. Select OK.

14. If one of the !°default layout!± options was selected, you'll be asked to confirm the changes to existing hard drive partitions. For the purpose of this section, select Yes.

15. You're prompted whether you want to Review And Modify Partitioning Layout. Select Yes for the purpose of this appendix. If there are existing
partitions on the installed hard drives, you'll be given the opportunity to remove these partitions. If you're configuring a dual-boot with another operating system, don't delete the partitions! However, on the exam, you'll be working with Linux, so I believe a dual-boot configuration, especially with Microsoft Windows, is unlikely.

#23 Text Installation

Now you can inspect and change partitions in Disk Druid, as shown. You can also create and then configure RAID partitions. However, text-mode installations do not allow you to create logical volumes unless there's already an existing volume group; text mode does not support the creation of a new volume group. Select OK.

#24 Installing Red Hat Enterprise Linux 5, Step by Step

16. Once you've configured your partitions, choose a boot loader. If you select No Boot Loader, you'll need to use a third-party boot loader such as Partition Magic or Microsoft's NTLDR. Select OK.

17. Assuming you stick with the default GRUB boot loader, you can pass special options to the kernel. If you don't need Security Enhanced Linux, you might add selinux=0 as shown next. Select OK.

#25 Text Installation

18. You can also configure GRUB with a password. Select OK.

19. If more than one operating system is installed on this computer, you can configure the default operating system and labels, as shown next. Select an entry and click Edit. This opens the Edit Boot Label window that allows you to change what you see in the GRUB menu.

#26 Installing Red Hat Enterprise Linux 5, Step by Step

20. Finally, you can choose to install the boot loader on the MBR or on the first sector of the RHEL /boot partition. Select OK.

21. Configure your connection to the network, as shown next. It should reflect the settings you input in steps 7 and 8. If you don't want the DHCP server to assign a hostname (or you don't have a DHCP server), you can assign it manually. Select OK.

#27 Text Installation

22. Assuming you've set up a static configuration, you'll see a screen where you can set up Gateway and DNS (name server) IP address information. Fill in this information and select OK.

23. You can also add the hostname of your choice, as shown. If you have more than one network adapter, you'll return to step 18 as often as needed. Select OK.

#28 Installing Red Hat Enterprise Linux 5, Step by Step

24. Next, set the time zone for your system. If you don't have other operating systems on this computer, keep the System Clock Uses UTC option active.

25. Now type in and confirm a root password for this system. Follow any instructions on your exam carefully for this; you want to make it easy for the person grading your exam to see what you've done. Select OK.

#29 Text Installation

26. There are two package customization screens available. Everyone sees the screen shown next. You can accept the defaults, select available options, and/or select Customize Software Selection. It's usually best to customize modestly (I've selected the Customize Software Selection option), based on the requirements on your particular Installation and Configuration exam. Select OK.

27. Select the package groups of your choice. Your selections should conform to the requirements of the Installation and Configuration section of your particular exam. Select OK.

#30 Installing Red Hat Enterprise Linux 5, Step by Step

28. Once you've selected the package groups of your choice, you get one last chance to go back before starting the installation process. Select OK to start the installation process.

29. Once your installation process starts, a screen will show the progress of the installation.

#31 Text Installation

Some configuration options associated with previous versions of RHEL are no longer part of the installation process. Some of these options are part of the First Boot process described in Chapter 2. Normally, you'll see the First Boot process only the first time you reboot a system.

30. When the Complete screen appears, you'll know that installation is just about complete. Select Reboot to reboot your computer into RHEL.

31. If you had to modify your computer's BIOS menu, change it back so it boots from the hard drive in the future. Make sure your BIOS saves your changes before you reboot.

by 데이터수집 | 2010/03/30 10:17 | ETC

[JAVA] this / Static / final

1. 클래스 자기 자신을 참조하는 객체 this

 

this라는 예약어는 일반적으로 클래스 내부에서 자기 자신의 클래스를 지칭하는 객체로 이용된다. 이미 자바클래스에서 생성자를 다르는 부분에 this() 메서드를 사용해 본 경험이 있을 것이다. 그곳에 사용된 this() 메서드는엄밀한 의미에서는 예약어 this의 변칙적인 적용이라고 할 수 있다. 그렇다면 여기에서는 this가 직접 스스로의 객체를 자칭하는 경우를 살펴보자.

 

package test;

public class Ex10 {
 private int x;
 private int y;
 public Ex10(){
  x = 0;
  y = 0;
 }
 public Ex10(int a, int b){
  x = a;
  y = b;
 }
 public void disp(){
  System.out.println("x = " + x + " ,y =" +y);
 }
 public static void main(String [] arsg){
  Ex10 rd = new Ex10(100, 200);
  rd.disp();
 }
}

츌력결과

x = 100 ,y =200

이와 같은 예제가 있다고 가정했을 때 컴파일하여 실행해 보면 결과값으로다음과 같이 나온다. 물론 자극히 당여한 결과이지만 여기에서는 main() 메서드를 조금만 변경시켜 보자.

 

public static void main(String [] ar){

     Ex01 rd = new Ex01(100,200);

     Ex01 rd = new Ex01(100,200);

     rd.disp();

     rd.disp();

}

 

이럴 경우 rd.disp()와 rd1.disp()는 각각 무엇을 출력시킬까? 혹시 당연히 rd.disp()는 100과200을 출력시키고, rd1.disp()sms 50과 60을 출력시키지 않냐고 따질 것이다. 맞는 이야기이다. 그런데 왜 그것이당연하단 말이가? 원리를 따지고 보면 결코 다연하지 않다. 생각해보자.

 

Ex01 rd = new Ex01(100,200);

 

위와 같은 경우에 메모리 상태는 다음과 같다.

 

 

다음으로 rd1을 선언해 보자.

 

Ex01 rd1 = new Ex01(50,60);

 

이렇게 하나를 더 선언했을때 메모리는 어떻게 바뀔까?

 

일단 메모리 상으로 봐서는 rd와 rd1이 확연하게 구분된다. rd는 10억 번지상의 x,y를 나타내고 rd1은 11억번지상의 x,y를 나타낸다. 그렇다면 이제 각 객체를 통해 disp() 메서드를 호출해 보자. 어떤 일이 일어날까?

 

rd.disp();

 

일단 이것을 살펴보면 rd 객체를 통해 disp() 메서드를 호출하라는 똣이다. 그러면 rd 객체를 발생시킨

클래스인 Ex01 클래스에서 disp() 메서드를 찾는 작입이 우선일 것이다. 다음으로 disp() 메서드를 실행시켜야 한다.

 

public void disp(){

     System.out.println("x = " + x + ", y = " + y);

}

 

"이게 뮈가 이상하지한가?"  하는 독자들도 있을 것이다. 생각해 보라. disp() 메서드의 내용부에는 분명히 x 와 y 를 출력하라고 되어 있지, 10억 번지나 11억 번지의 x,y를 출력하라고 되어 있지 않다.

메모리에는 분명히 10억 번지에도 x,y가 있고 11억 번지에도 x,y가 있다. 그러면 우리의 JVM은 무엇을 기준으로정확히 해당 주소 번지의 내용들을 출력해 낼까? 이제 조금은 궁금해질 것이다. (궁금해야만 한다!) 이것은 원리는 의외로간단하다. 모든 객체지향 언어는 이런 방법으로 객체에 접근한다.

모든 객체지향 언어는 이런 방법으로 객체에 접근한다. 지금부터 이야기를 잘 듣자. 우선 기억해야 할 것들이 있다. 만일 여러분들이 다음과 같은 호출 문구를 보았다고 하자.

 

객체. 메서드(매개_변수들);

 

그러면 다음과 같이 두 가지를 생각하고 실행시켜야 한다.

 

1. 해당 객체를 발생시킨 클래스 내부에서 메서드를 찾는다.

2. 그 메서드가 static 메서드가 아니라면 0번째 매개 변수에게 객체를 대입한다.

 

무슨 말인지 이해가 되지 않을 것이다. 기본적으로 알아야 할 것은 클래스 내부에 있는 멤버 메서드 static 메서드를제외하고 모두 0번째 매개 변수를 가진다는 것이다. 0번쩨 매개 변수라는 것은 모든 매개 변수보다 우선한다는 뜻이다. 그리고 클래스 내부에 있는 멤버 필드는 static 필드를 제외하고는 모두 this 객체의 접근이 생략되어 있다.

 

형식 - 0번째 매개변수

 

자기_클래스명 this

 

그리고 각 멤버 필드에 대한 this 객체의 접근은 다음과 같이 한다.

 

형식- 모든 멤버 필드의 접근 객체

 

this.Field

 

이것들을 종합해서 예를 들면 다음과 같다. ( 일단 static에 대한 것은 그냥 보고 지나치자)

 

class A{

  private int x;

  private static int y;

  public void aaa(){

       x = 10;

       y = 20;

  }

  public void bbb(int x, int y){

      x = x;

      y = y;

  }

  public static void ccc(int z){

      //System.out.println("x = " + x); //Compile Error 발생

     System.out.println("y = " + y);

   }

}

 

이 경우 aaa와 bbb는 0번째 매개 변수를 내부적으로 가진다. 그러나 ccc는 static 메서드이기 떄문에 0번째 매개 변수를 가지지 않는다.  0번째 매개 변수와 this 객체를 통한 접근을 표시하면 다음과 같다.

 

class A{

  private int x;

  private static int y;

  public void aaa(){

       this.x = 10;

       A.y = 20;

  }

  public void bbb(int x, int y){

      this.x = x;

      A.y = y;

  }

  public static void ccc(int z){

      //System.out.println("x = " + this.x); //Compile Error 발생

     System.out.println("y = " + A.y);

   }

}

 

"정말 그럴까? 하고 직접 0번째 매개 변수 부분을 적어 보면 당연히 컴파일 에러가 발생한다. 방금 전에도 이야기했듯이이미 내부적으로 가지고 있기 떄문에 사용자가 임의로 사용 할 수 있는 개념이 아니다.  그러나 this 객체 부분은 적어도된다. 그렇다면 이제 0번째 매개 변수를 어떻게 하자는 것일까? rd.disp()를 통해 설명해 보자. disp()를 위의규칙에 맞추어 작성하면 다음과 같다.

 

public void disp(Ex01_this){

   System.out.print("x = " + this.x + y = " + this.y);

}

 

이제 위의 두 가지 귝칙을 차례대로 따라 해 볼 차례이다. 첫 번째로 rd 의 객체를 발생시킨 클래스가 Ex01이므로 그클래스 내부에 disp(); 메서드를 찾는다.( 다시 한번 강조하지만 이렇게 0번째 매개 변수를 적어 두면 컴파일 에러가발생한다. 'this.' 은 적어도 된다.) 그럼 두 번째 찾은 메서드 disp()가 static이 아니기 때문에 disp의0번쨰 매개 변수인 this에게 객체인 rd를 대입한다. 대입해 보면 어떻게 되는가? 지금 rd의 값은 앞에서 메모리로살펴보았을 떄 10억이라는 숫자였다. 그것을 this에 대입하라는 뜻이다. 그러면 이제 this는 10억이라는 주소를 나타내게되었다.

 

System.out.println("x =" + this.x + "y = " +this.y);

 

this가 10억이라면 위의 문구는 다음과 같은 내용이 된다.

 

System.out.println("x = " + 10억 번지의 x + ",y = " + 10억 번지의 y);

 

무슨 의미인지 이해가 되는가? JVM은 이러한 방식으로 메모리 상의 각각의 객체에 해당하는 필드를 정확하게 뽑아낼 수 있다. 저자가 실제 오프라인 수업에서 이 부분에 대한 설명을 할 때 두 번 이상을 하고 있다. 왜냐하면 대부분 한 번에 이해를 못하기 때문이다. 여러분도 한 번에 이해되지 않는다면 다시 읽고 또 읽어서 이해를 꼭 하기 바란다.

 

이러한 용도로 사용되는 this 객체는 생략할 수도 있기 떄문에 여태껏 사용하지 않았다. 단지 생성자에서 또 다른 생성자를 호출하기 위한 용도로만 사용했다. 그러나 다음과 같은경우라면 반드시 사용해야 한다.

 

class A{

  pirvate int x;

    public void seetting(int x){  

       x = x;

   {

    public void disp(){

     System.out.println("x = " + x);

   }

   public static void main(String [] ar){

     A ap = new A();

     ap.setting(100);

     ap.disp();

     }

}

 

결과

x = 0

 

이렇게 된 이유를 다음 부분에서 찾을 수 있다.

 

public void setting(int x){

   x = x;

}

 

여기서 x = x 라는 부분이 문제이다. 실제로 매개 변수로 사용되는 변수명과 멤버로 사용되는 필듬여이 동일할 경우에는 반드시 두 개 구분해 주어야 한다. 그서을 구분하는 기준이 바로 자기 자신의 멤버 필드임을 표시하는 this 객체이다. 따라서 위의 문구가 정확한 실행이 되기를 원다면 다음과 같이 해야 한다.

 

public void setting(int x){

    this.x = x;

}

 

이렇게 고쳐서 수행을 해야 한다. 이렇게 this라는 객체를 반드시 사용해야만 하는 경우도 있다. 그러나 대부분의 결우에서는 생략 할 수 있다. 그러나 이 책에서는 습관적으로 this 객체를 사용하도록 하겠다.

 

2. 공용 변수를 위한 static 지정 예약어

이번에는 static 이라는 예약어를 살펴보자. static의 기본 개념이 '공유'라는 것이다. 일단 쓰데 없는 이야기를 먼저 해보자.

 

어떤 프로그래머가 은행에서 통장을 발급하고 관리하는 클래스를 만들려고 한다. 그 클래스는 통장을 발급 받는 사람의 이름과 저축한 돈 그리고 이율을 관리하는 필드만을 가지고 있다.

 

class JBank{

  private String name;

  private double don;

  private float iyul;

}

 

이 클래스를 가지고 1990년부터 이 은행은 서비스를 시작했다. 우선 1990년도에 통장을 개설한 사람들은 기본적으로 연5%의 이율을 적용받았다. 대표로 aaa라는 사람의 자료를 메모리에 등제해보자. 이 사람은 1000원 저축했다.

 

JBank jb = new JBank ("aaa", 1000.0, 0,05f);

대표로 한사람 표시했다만 시중 은행이라면 적어도 그해에 몇 천 혹은 몇 만 명의 고객 유지햇을 것이다. 여하튼 이제 시간이5년 흘렀다 . 나라의 경기가 좋아지고 은행도 흑자 경영을 계속했다. 그래서 이제부터는 은행에서 통장을 개설하는 사람들 모두에게이율로 7%를 적용시켜 주겠다고 한다. 대표로 한 명만 또 메모리에 등재해 보자.

 

JBank jb1 = new JBank ("bbb", 800.0, 0,07f);

이렇게 되었을때 여러분들은 어떤 생각이 드는가? 이미 1990년도에 통장을 개설한 사람들은 오히려 그 은행에 많이 기여를햇을에도 불구하고 이율은 1995년도에 새로 통장을 개설한 사람들 보다 못하다. 아마도 이치에 밝은 사람들이라면 1990년도에만든 통장을 해약하고 1995년도에 통장을 개설한 사람들 보다 못하다. 아마도 이치에 밝은 사람들이라면 1990년도에 만든통장을 해약하고 1995년도에 통장을 새로 개설할 것이다. 은행에서도 물론 이런 사시을 알고 있다. 그래서 그런 불상사(?)를막기위해서 1990년도에 통장을 만든 모든 사람들의 iyul 공간의 값을 0.07f로 바꾸려 한다. 그런데 지금 눈앞에 보이는것은 대표 한 명이지만 실제로는 천 명이 될지 만명이 도리지는 아무도 모른다. 그렇다면 그렇게 많은 공간을 일일 다 수정을 할것인가? 너무 힘들다. 그래서 자바에서는 static이라는 예약어를 만들어서 JBank라는 클래스로 만들어진 모든 객체가 공유할수 있는 공간을 만들게 되었다.(사실 자바에서 처음 만든것은 아니다.)

 

이제 클래스를 다시 고쳐 보면 다음과 같다.

 

class JBank{

  private String name;

  private double don;

  private static float iyul;

}

이것은 메모리상에서도 조금 다르게 표현된다. 쓸데 없는 이야기라고 했지만 실제 static을 이해하기 우해서 이것보다 더확실한 방법은 없는 것 같다. 여하튼 이런 공유의 개념이 static이다. 이러한 static은 멤버 필드와 메서드 그리고클래스 앞에서 지정 예약어로 사용될 수 있다.

 

2. static 필드

하나의 클래스로 생성된 모든 객체가 공유하는 공유 공간

 

형식 - static 멤버 필드

 

접근_제한자 stiatic 자료형 (클래스형) 필드명 [= 값];

 

형식 - static  멤버 필드의 초기화

 

static {

   초기화 내용부;

    .......

}

 

여기에 표시한 형식과 초기화를 하는 방밥은 암기해야만 한다. 일반 멤버는 생성자에서 초기화를 하지만 static은static 블록 내부에서 초기화를 한다. 왜냐하면 static의 멤버는 공유하는 개념으로 어떠한 객체도 생겨 있지 않더라도메모리에 그 값이 할당되어 있어야 하기 때문이다. 따라서 static 블록은 main() 메서드보다도 먼저 실행되는 블록이다.사실 자바의 로컬 애플리케이션의 실행 순서는 여러분

알고 있는 것과 조금 다르다.

 

응용 프로그램 실행 순서

1.staitc{....}

2.main() 메서드 실행

3.finalize() 메서드 실행

 

실제로는 이렇게 실행된다. 여기서 finalize() 메서드는 생소할 것이다. 이것은 모든 작업이 완료되고 프로세서가종료된 후에 메모리들을 해체할 때 사용되는 공간인데 일반적으로 많이 사용되고 있지 않다. 대부분은 자바의 Garbage 컬렉션에의해 메모리가 헤제되기 떄문에 특별한 일이 있지않은 한 사용되지 않는다. 일단 초기화를 넣어 클래스를 작성해보자.

 

class A{

  private int x;

  private static int y;

  static{

     y = 100;

  }

  public A(){

     x = 2000;

  }

}

 

이렇개 초기화한다는 것을 기억하자. 물론 static 초기화 블록을 사용하지 않고 바로 값을 할당해도 별로 문제될 것은 없다.

 

private static int y = 100;

 

이렇게 사용하는 static 필드로는 BufferedReader가 대표적이다. 왜냐하면 이거은 값을 입력받기 위한 객체로모든 객체마다 따라 관리할 필요성이 없기 떄문에이다. BufferedReader를 transient static으로 선언하는것이 더 효과적이지 않느냐라고 하는데 그것에 대해서는 개인적인 판단에 맡긴다. 아마 여러분들은 이번 라운드의 마지막 부분에서transient에 대한 설명을 들을 수 있을 것이다.

다음으로 static 필드도 역시 클래스의 멤버이다. 그러나 이 필드는 this라는 객체를 사용하지 않는다. 사용할 수없는 것은 아니지만 일반적으로 this 객체는 네 것과 내 것을 구분하기 위해 사용하는 개념인데, static은 개념 자체가우리 모두의 것 혹은 공유하고 있는 것이기 떄문에 this로 표현하지 않고 클래스명으로 바로 접근하는 경우가 대부분이다.this 개념을 설명할 때 예제애서 잠시 보고 지나쳐 온 부분이 있었다. 여하튼 여기에서 다시 설명하겠다.

 

class A{

   private int x;

   private static int y;

   public A(Int x, int y){

       this.x = x;

       this.y = y;

   }

   public void setXY(int x, int y){

       this.x = x;

       this.y = y;

   }

   public void disp(){

       System.out.println("x = " + this.x);

       System.out.println("y = " + this.y);

   }

}

 

이 예에서 매개 변수와 멤버 필드명이 동일하기 때문에 이를 구분하기 위해 this 객체를 사용했다. 물론 이것은 컴파일도잘되고 실행도 잘된다. (실행시킬 main() 메서드만 있다면) 그러나 여기에서 y라는 멤버는 static으로 지정된 필드이다.그렇다면 여기에서 이것보다 더 정확한 의미의 표현은 this가 아니라 A라는 클래스형이다.

 

class A {
 private int x;
 private static int y;
 public A(int x, int y){
  this.x = x;
  A.y = y;
 }
 public void setXY(int x , int y){
  this.x = x;
  A.y = y;
 }
 public void disp(){
  System.out.println("x = " + this.x);
  System.out.println("Y = " + A.y);
  
 }
}

이것은클래스 내부에서뿐만 아니라 클래스 외부에서도 그대로 적용되는 개념이다.

 

class A {
 public int x = 10;
 public static int y = 20;
}
public class B{
 public static void main(String[]ar){
  System.out.println("x = " + A.x );// 컴파일 에러
  System.out.println("y = " + A.y); // 컴파일 성공
  A ap = new A();
  System.out.println("x = " + ap.x);// 컴파일 성공
  System.out.println("y = " + ap.y);// 컴파일 성공
  A bp = new A();
  A.y = 50;
  System.out.println("ap.y = " + ap.y);//ap.y = 50
  System.out.println("bp.y = " + bp.y);//bp.y = 50
  ap.y = 100;
  System.out.println("ap.y = " + ap.y);//ap.y = 100
  System.out.println("bp.y = " + bp.y); //bp.y = 100
 }
}

 

예와 주서을 살펴보면 알겠지만 공유한다는 것은 그값을 동일하게 가진다는 것이다. 여기에 어떠한 객체가 더 발생되어도 A라는클래스의 객체라면 y의 값은 ap,bp의 y와 동일한 값이 될 것이다. static은 멤버 필드라기 보다 클래스 필드라고이야기하는 것이 옳지 않을까?

 

2.static 메서드

static 메서드는 staic 필드의 값을 처리하기 위한 메서드로 앞서 밝혔듯이 0번째 매개 변수인 this를 가지고있지 않다. 이것이 의미하는 바는 일반 멤버 필드는 절대 static 메서드 내부에서 사용할 수 없다는 이야기가 된다.마찬가지로 일반 멤버 메서드도 stiatic 메서드 내부에서 사용될수 없다. 이것은 사람이 우주 공간에서 살수 없는 것과마찬가지이다. 모든 일반 멤버는 this가 있어야지만 작동하는 개념으로 this가 없는 static 메서드 내부에서 어떻게작동할 수 있겠는가?

 

형식 - static 메서드

 

접근_제한자 static 결과형_리턴값 메서드명(매개_변수들) [throws 예외_클래스]{

    내용부

}

 

형식 - static 메서드 접근 방법

 

객체. static 메서드();

클래스명.static 메서드();

 

static 메서드는 static 필드의 값을 처리하기 위한 것이므로 당연히 객체가 없는 상태에서도 사용할 수 있어야한다. 따라서 클래스명으로도 접근할 수 있는 것이다. 우리가 이미 배워 온 것들 중에서도 static 메서가 있었다.

 

System.out.println();// out은 static Field

System.exit(0);// exit(0)는 static 메서드

 

이것들은 전부 클래스명으로 접근한 것들이다.

 

static을 클래스 앞의 지정 예약어로 기제할 수 있다. 그러나 이 경우는 중첩 클래스에서 다르고 여기서는 생략하기로한다. 그러면 static 과 관련하여 간단한 프로그램을 작성해 보자. ( 여기에서 접근 위해 사용된 this와 Ex02 생락할수 있다.

 

package test;
import java.io.*;
public class Ex11 {
 private int x;
 private int y;
 private static int tot;
 private static BufferedReader in;
 static{
  Ex11.in = new BufferedReader(new InputStreamReader(System.in));
  Ex11.tot = 0;
 }
 public Ex11() throws IOException{
  System.out.print("x = ");
  this.x = Integer.parseInt(Ex11.in.readLine());
  System.out.print("y = ");
  this.y = Integer.parseInt(Ex11.in.readLine());
  Ex11.tot = this.x + this.y;
 }
 public static int getTot(){
  return Ex11.tot;
 }
 public void SetTot(int tot){
  Ex11.tot = tot;
 }
 public void display(){
  System.out.print(this.x + " + " + this.y + "=");
  System.out.println(Ex11.tot);
 }
}

03~04 라인

일반 멤버 필드로 x,y를 선언하고있다.

05~06 라인

static 멤버 필드로 tot.in을 선언하고 있다. 일반적으로 BufferedReader의 객체는 static 으로많이이 발생시킨다. 이유는 앞ㅇ서 설명한 바와 같이 객체마다 메모리를 낭비해 가면서 in 객체를 가질 필요 엇이 공유만 하면되기 때문이다.

07~10 라인

static 멤버 필드에 대한 초기화 작업을 하는 영역이다. 일반 멤버는 당연히 생성자에서 초기화를 한다. 각 멤버 접근할 때에 클래스명인 Ex11을 적은 것은 명시적으로 이것이 클래스의 static 맴버라는

것을 당신에게 알리기 위한 것이다.

11~17 라인

생성자에서 x와 y의 값을 입력받고 static 필드를 리턴받을 때에는 static 메서드로 선언하는 것이 사용하기 편리하다. 그러나 일반 멤버와 함께 써야 한다면 당연히 static 메서드가 아닌 일반 메서드로 만드러야 한다.

24~27 라인

이 메서드는 값을 출력하기 위한 일반 멤버 메서드이다. 일반 멤버 필드와 static 멤버 필드가 혼용되어 사용되었기 때문에 static 메서드로 작성할 수 없는 부분이다.

 

package test;
import java.io.*;
public class Ex12 {
 public static void main(String [] args)throws IOException{
  Ex11 rd = new Ex11();
  System.out.println();
  System.out.print("총합은  ");
  System.out.println(Ex11.getTot());
  System.out.println();
  rd.display();
 }

}

출력 결과

 

x = 10
y = 20

총합은  30

10 + 20=30

 

3. 상수 변수를 위한 final 지정 예약어

 

형식 - final 필드

 

접근_제한자 final 자료형 (클래스형) 필드명 = 초기값; final은 반드시 초기값을 적어야 한다.

 

fianl 필드는 상수 변수를 지정하기 위해 사용하는 예약어이다. 예를 들어 파이의 값을 나타내려고 할

떄 메번 3.141592... 라는 식으로 사용하기 힘들 것이다. 그럴 경우에 이 값에 대한 특정 필드를 미리 갓을 지정해 두는 것이 필요하며 이런 필드를 보고 상수 필드라고 한다.

 

사용 예  final double pi = 3.141592...

 

이렇게 정해진 pi라는 필드의 갓은 절대 변할 수 없다. 이것은 생성자에서 초기화할 수도 없고 반드시 선언 시에 초기화 작업까지 마쳐야 한다. 만약 선언 시에 정하지 않으면 디폴트 값으로 초기화되어 버린다.

 

final은 static 예약어와 함께 사용될 수 있다. final static 이라고 선언하든지 static final이라고 선언하든지 관계는 없다. 이 경우 final 필드가static 필드의 특성까지 띄게 된다. 다시 말해 클래스명으로 접근할수 있는다는 것이다. 그러나 지역 변수(Local Variable)로 선언될 때에는 이야기가 다르다. static은 지역 변수(Local Variable)로 선언하자고 한다면static 과 함께 사용해서는 안된다. 컴파일  에러가 발생한다.

 

class A {

   private static final double pi = 3.141592....;

}// 컴파일 성공

 

class A {

   public static void main(String[] ar_{

     static final double pi = 3.141592...; //컴파일 에러

 

3. final 메서드와 클래스

final 예약어가 메서드 앞에 사용될 떄에는 최종 메서드를 의미하는 것이다. 일단 이것은 개념만 알아 두기 바란다.나중에 상속을 배우게 되면 알게 되겠지만 상속 시에 모든 메서드들은 오버라이딩  (Overriding)을 할 수 있다.오버라이등은 메서드 제정의라고도 하며 상속 관계의 각 클래스가 동일한 메서드를 가지고 있을 수 있다는 이야기고 그  메서드의내용부가 서로 틀리 수 있다는 이야기이다. 그러나 만약 메서드의 앞에 fianl 이라는 지정어가 붙게 되면 그것을 상속 받는하위 클래스에서는 오버라이딩을 할 수 없게 된다. 이것으 보안적인 측면을 고려한 개념인데 악의(?)적인 목적을 가진 이로부터해당 클래스의 데이터를 보호하기 위한 대책의 일환이다. 실제 내용은 상속에서 다시 공부 하도록 하다.

 

다음으로 fiial이 크래스 앞에 사용되는 경우다 이 경우에도 메서드와 비슷한데 이것은 아에 상속 자체를 막아 주는 것이다. 그누구도 이 클래스를 상속받지 못하게 만들려면 클래스 앞에 final을 붙여 주면 된다.

 

이 두 가지 전부 abstaract라는 예약어와 함께 사용할 수 없다는 것도 기억해 두자. 왜냐하면 abstract라는 예약어를 사용하게 되는 메서드나 클래스는 반드시 상속을 해야 사용할 수 있는 것들이다.

그러면 상속 못하도록 하는 final과 상속을 해야만 하는 abstract는 과연 함께 쓰을 수 있을 것인가?

여러분의 상상에 맡기겠다.

 

4. 기타 지정 예약어

 

기타 지정 예약어로 일단 알아 두면 유용한 것들로 다음과 같은 것들이 있다.

 

- transient

- instanceof

- volatile

 

transient는 필드 앞에 사용할 수 잇는 지정 예약어로 해당 필드가 임시로 사용됨을 나타내는 것이다. 이것 또한뒤쪽에서 가끔 볼 수 있는 형태로 이 예약어가 사용된 필드의 경우 네트위커 전송이나 파일에 저장시에 메모리 자체가 없는 것과같은 효과를 나타내는 것이다. 혹자는 이것을 BufferedReader in 의 객체를 선언할 때 사용하는 것이 바람직하다는데그것은 각 개인의 생각에 맡기겠다.

 

정석대로라면 이 지정 예약어는 직렬화시킬 수 없는 멤버 필드나 정손하기 싫은 멜버 필드를 위해서 있는 것이다. 실제 클래스에 중요한 데이터 멤버를 이 지정 예약어로 선언 하는 것은 자살 행위(?)이다. 주의 하기 바란다.

 

intstanceof는 클래스 형변환 (다형성) 시에 많이 사용되는 예약어이다. 이것 역시도 상속을 알아야 하는데 일단개념만 설명하자면 이렇다. 하나의 클래스 A라는 것이 있고 이것을 상속받은 클래스 B라는 것이 잇을 떄 다음과 같이 각각 객체를발생시킬 수 있다.

 

A ap = new A();

B ap = new B();

 

이럴 경우에 원칙적으로 ap = bp 는 가능하지만 그 반대는 불가능하다. 그런데 네트 워크나 입.출력 등등을 공부하다보면 가끔 bp = (B)ap 가 나타는데 이것은 ap가만들어질때 B클래스의 객체로만들어졌기 때문에 가능한다.instanceof는 바로 그런 것들(형변화이 가능한지의 여부)을 확인해 볼수 잇는 예약어이다. 이것을 사용해보면 다음과 같다.

 

boolean bool = ap instanceof B;

 

위와 같은 형식으로 적을 수 있고  이 경우 bool형 내에 true의 값이 저장되었다면 bp =(B)ap 가 가능하다. 물론 지금 무슨 이야기인지 모르는 독자도 있을 것이다. 그러나 조금만 기다려라. 곧 배울 것이다.

 

 volatile은 맴버 필드로만 사용할 수 있고 지역 변수로는 사용할 수없는 것으로 일반적 메모리 변수라 불린다. 실제메모리에 활당되어 프로그램 흐름에 관계없이 인터럽트 루틴이나 CPU에 의해 값이 변환 될 수 있는 필드로 사용된다. final예약어와 함께 사용되기도 한다.


[출처:http://blog.naver.com/saenkms?Redirect=Log&logNo=100055879742]

by 데이터수집 | 2009/08/05 17:41 | Java | 트랙백 | 덧글(0)

[JAVA] Java Mail API

 

Java Mail API가 나오기전에는 개발자들은 스스로 전체적인 메일 시스템을 설계하고 구현해야만 했다.하지만 JAVA MAIL API와 함께 제공되는 클래스들(SMTP, POP3, IMAP을 구현하였다)을 사용하면서 매우 손쉽게메일을 주고 받는 시스템을 구축할 수 있게 되었다.

 

Java Mail API는 다음과 같은 기능을 수행하는 것을 기본 목적으로 한다.

  - 헤더와 데이터로 구성된 메일 메시지를 생성한다. Java Mail은 메일 메시지를 정의하기 위해 Message 클래스를 사용한다.

  - Session 객체를 생성한다. 이 객체는 사용자를 인증하고 메시지 저장과 전송에 대한 접근을 제어한다.

  - 메시지를 전송한다.(SMTP)

  - 메시지 저장소로부터 메시지를 읽어온다(POP3)

  - 잃은 메시지에 명령어를 수행한다. '보기'나 '출력' 같은 명령어는 JAF를 인식하는 자바빈에서 구현하도록 하고 있다.


Java Mail Api의 주요 구성요소

가장 중심적인 역할을 하는 클래스인

javax.mail.Session,

javax.mail.Store,

javax.mail.Transport,

javax.mail.Folder,

javax.mail.Message

클래스에 대해서 알아볼 것이다. 실제로 이 다섯개의 클래스만 알맞게 사용하면 매우 손쉽게 메일 시스템을 구축할 수 있다.

 

Javax.mail.Session

  Java Mail Api를 사용하는 출발점이 되는 클래스로서 다양한 메일 프로토콜을 위한 서비스 프로바이더 구현(SPI)을  나타내는 클래스를 로딩하고 제어할 수 있는 메소드를 제공하고 있다. 예를 들어, javax.mail.Store클래스의 인스턴스는  javax.mail.Session 클래스를 통해서 구할 수 있다. (여기서 서비스 프로바이더는 Java Mail Api를 이용하여 구현 클래스 계층을 제공하는 개발자는 벤더를 의미한다. 현재 Java Mail Api는 IMAP, SMTP, POP3 프로토콜에 대한 구현 계층을 제공하고 있다.)

 

Javax.mail.Store

  특정한 메일 프로토콜(IMAP, SMTP, POP3..)을 이용하여 메일의 읽기, 쓰기, 감시, 검색 등을 할 수 있도록 해 준다.  Session클래스를 사용하여 구할 수 있으며, 메일 저장소를 추상화한 javax.mail.Folder에 접근할 수 있도록 해준다.  서비스 프로바이더는 Store클래스를 알맞게 구현해야 한다.

 

Javax.mail.Folder

  메일 메시지에 계층적 구조를 제공하며 메일 메세지에 접근할 수 있도록 해준다.  메일 메세지는 javax.mail.Message 클래스의 객체로 표현된다. 서비스 프로바이더는 Folder클래스를 알맞게 구현해야 한다.

 

Javax.mail.Transport

  특정한 프로토콜을 사용하여 메세지를 전송할 때 사용한다. 서비스 프로바이더는 이 클래스를 알맞게 구현해야 한다.

 

Javax.mail.Message

  주제, 수신자의 이메일주소, 발송자의 이메일주소, 보낸 날짜와 같은 실제 이메일 메시지의 세부사항을 나타낸다.  서비스 프로바이더는 자신이 사용하는 프로토콜에 알맞게 Message를 구현해야 한다.

by 데이터수집 | 2009/08/05 16:11 | Java | 트랙백 | 덧글(0)

[JAVA] Java의 리스트 클래스를 이해하자!

Java의 리스트 클래스를 이해하자!


Java에서 대량의 자료를 추가/삭제하며 처리하기 위해서는 무엇을 사용해야 할까요?

연구실에서 Java를 한번쯤 공부해 본 사람이라면 보통 “Vector Class”라고 대답을 할 것입니다. 정답이죠.Vector Class는 대량의 자료를 가질수 있으며, 추가/삭제또한 자유롭게 처리가 가능합니다. 그럼 뭐가 문제라서 이런 글을쓰는것일까요?

단순히 “처리되는가” 를 넘어서 “빠르게 처리할수 있는가” 를 생각해 본다면,
위에서의 대답 “Vector Class” 는 X에 가까운 답이라고 할 수 있기 때문입니다.

우선, Java에서 제공하는 “대용량 자료처리 개념” 은 여러가지 상위 인터페이스를 통해서 구현할 수 있습니다.(Collection, Iterator, Enumeration, Map등등) 각각 독특한 특징을 가지고 있습니다만, 이번에 다룰내용은 Collection이하의 객체들이 되겠습니다.(나머지에 대해서도 다음 기회에 이야기 하도록 하겠습니다.)

Collection Interface는 “내부에 포함되는 요소는 순서를 가진다” 라는 특징을 가지고 있습니다. (이와 반대로 포함요소가 순서에 관계없이 저장되는녀석이 Map계열입니다.)
Collection을 계승(상속)해서 실제 구현된 객체들도 여럿 있습니다만, 그중에서도 대표적인 ArrayList, LinkedList, Vector 의 특징을 간단하게 설명하면 다음과 같습니다.
(HashSet, TreeSet같은 특이한 녀석들도 있습니다만… 일반적인 경우에 사용되는 녀석들은 아닌관계로, 설명은 다음기회로 넘기겠습니다…)

사용자 삽입 이미지

1.      Vector

Java 1.0때 만들어져, 지금까지 유지되어온 클래스.
1.0버젼에서는 지금과 같은 List관련 객체들은 없었습니다.
이 버젼대에서 애용되었던 것이 Vector입니다.

Vector의 기본적인 동작은 다음에 설명할 ArrayList와 동일하기 때문에 넘어가기로 하고, 다른점만 설명하겠습니다.
Vector와 이후에 등장하는 List객체의 다른점은 “동기화(synchronize)”처리에 있습니다.
우선 “동기화” 라고 하는 개념에 대해서 간단하게 짚고 넘어가도록 하겠습니다.

두명의 학생이 하나의 컴퓨터를 사용하려고 합니다. 사용순서에 제한이 없기 때문에 서로 먼저 사용하려고 싸우게 되죠.그러다보니 다음과 같은 상황이 발생합니다. 학생A가 워드로 “가나다라마바사…. ”를 적고 있는도중에 학생B가 키보드를 가로채서“ABCDEFG…”를 입력해 버립니다. 두 학생은 하나의 자원(컴퓨터)를 공유하지만, 사용 순서에 대한 제한이 전혀 없기때문에서로 상대방의 자료를 덮어써 버리는 일이 발생하게 되죠.
이것을 방지하기 위해서 자바에서는 synchronized 라는 키워드를 만들어 두었습니다. 이 키워드를 사용하면 공통된 자원에 접근하는것은 [반드시 한번에 하나!] 라는 조건이 붙게 되죠. 한 스레드(학생A)이 공유자원(컴퓨터)에 작업을 마치기 전 까지는 다른 스레드(학생B)가 공유자원(컴퓨터)에 접근을 할 수 없도록 약속해 버리는 것입니다. 이런 과정을 “동기화” 라고 합니다.

복수의 스레드로부터 데이터의 추가/삭제처리가 이루어졌을경우에도 내부의 데이터는 “안전”하게 한번에 한 스레드씩 처리가 이루어지도록 되어있다는 것이죠. 데이터의 안정성을 놓고 보았을때, 정말 좋은 일이 아닐수 없습니다.
… 만, 동기화가 문제시 되는 경우는 어디까지나 “공유자원”과 “복수사용자” 가 존재할때 성립되는 것입니다. 한개의 자원을 하나의 스레드가 사용하는 경우에도 동기화를 고려해서 처리를 하게 되면, 오히려 성능의 저하를가져오게 되는 문제가 발생하죠. Vector의 경우는 “무조건 동기화” 이기 때문에 단일 스레드 처리에서는 앞으로 설명할ArrayList나 LinkedList보다 성능이 떨어집니다. 자바 1.2 부터의 Vector의 주 사용목적은 1.0버젼과의호환성이라고 생각하시는게 가장 좋을겁니다. 거의 쓸 일이 없다는 거죠. 혹시 동기화처리가 필요한 경우는 Vector를 이용하기보다는 Collection. synchronizedCollection(Collection c)나synchronizedList,Map을 이용하는것이 성능상 바람직하겠습니다.

2.      ArrayList

Java2 (1.2)에서 새로이 도입된 Collection의 구현객체입니다.

자료의 추가/삭제 등 기본적인 기능은 Vector와 동일하나, 내부적인 자동 동기화 기능이 삭제되어있죠. 때문에 다수의 스레드 환경에서 사용하기 위해서는 Vector설명에서 이야기했었던 Collection. synchronizedCollection(Collection c)를 이용해서 동기화 옵션을 설정해 주면 됩니다.
이름에서 알 수 있듯이, 내부적으로 자료를 Array(배열)구조로 가지고 있는 객체이죠. 데이터의 추가 / 삭제를 위해서 내부적 임시배열을 작성후 데이터를 복사하는 방법을 사용하고 있습니다.

사용자 삽입 이미지

때문에, 대량의 자료를 추가 / 삭제하는 경우에 내부적인 처리량이 늘어나서 상당한 성능저하를 가져옵니다. (C에서 배열에 데이터 추가/삭제 해 보신분은 아시리라 믿습니다.)
대신, 각 데이터의 인덱스를 가지고 있기 때문에, 필요한 데이터에의 접근이 한번만에 가능하죠. (C에서 포인터를 이용해서 한방에 원하는 데이터에 접근하는것과 같습니다.)
보통, 많은 데이터를 한번에 몽땅 가져와서 여러번 참조해 쓸 때 최상의 성능을 나타내는 객체가 되겠습니다.
간단한 예로 정리를 하면,
물건을 사기위해서 5명의 사람이(손님 A,B,C,D,E) 의자에 앉아 차례를 기다리고 있는데,미리 순서를 예약해 둔 F라는 사람이C의 앞에 불쑥 들어서서 자리를 비켜달라고 합니다. 예약을 했기때문에 C는 비켜야 하죠. 결국, C는 D의 자리로. D는 다시E손님의 자리로 한칸씩 밀려나게 됩니다. 그럼 E는? 의자 옆에 빈 공간에 쭈그려 앉던지, 아니면 새로 의자를 요구해야 하겠죠.
이런 손님이 몇백명 있을경우에 도중에 한사람이 끼어들게 되면 뒤로 밀려야 할 사람의 수가 장난이 아니겠죠? 그런 처리를 내부적으로 해 주는것이 ArrayList객체가 되겠습니다.


3.      LinkedList

연구실에서 C를 배우고 계시거나, 이미 C단계를 지나신 분들이 이해하기 쉬운 말로 바꾸면 “연결리스트” 입니다. 앞과 뒤의 구조체 주소를 가진 녀석들이 죽 ~ 나열된 모습. 그것이 바로 LinkedList객체의 실체입니다.

사용자 삽입 이미지
LinkedList의 내부구현


이녀석은 순서대로 늘어선 것이 아니라, 다음에 나올 자료의 위치정보만 가지고 있습니다. (앞과 뒤 모두 가진 객체도 있습니다.) 자기가 몇번째인지의 정보는 관심도 없죠.
Vector, ArrayList같이 인덱스정보를 가진 녀석들과의 차이점은 무엇일까요?
바로 추가 / 삭제의 용이함에 있습니다.

사용자 삽입 이미지
LinkedList에서의 데이터 추가


위의 그림에서 알 수 있듯이, 어떤 정보를 도중에 추가하기 위해서 다른 정보들을 뒤로 밀어내는 처리가 필요없습니다. 간단하게 글로 표현해 보면,
A-B-C-D 4명이 눈을 가린채, 서로 손을 잡고 있다고 하죠. 손을 잡기 전에 서로 다음에 오는 사람이 누군지만 확인을 한 상황입니다. 이 상태에서 E라는 사람을 B다음에 세우려면 어떻게 해야 할까요?
간단합니다. B의 손을C가 아닌 E를 잡도록 하고, E의 손이 C를 잡도록 살짝~ 도와만 주면 끝입니다. 요것이 LinkedList내부의 추가 처리입니다.(삭제는 역순임으로 설명은 생략)
데이터의 추가가 빈번하게 일어나는 자료를 처리하기 위한 객체라고 할 수 있습니다. 하지만, 데이터의 검색면에서는 어떨까요?

사용자 삽입 이미지
LinkedList에서의 데이터 검색

조금전의 예 – 손을 마주잡고있는 사람들 A-B-E-C-D 중에서 C를 찾아내서 물어볼것이 있습니다. 이 경우 어떻게 해야하나요? ArrayList의 경우는 “몇번째 녀석이 C이다. “ 라는 목록을 내부적으로 가지고 있기 때문에 한번에 접근이가능합니다. ... 만, LinkedList는 그런 목록을 가지고 있지 않기때문에, 최초의 정보A로부터 하나씩 검토를 해나가야만 합니다.
A에게가서 C의 위치를 물어봐도 A는 B가 어디있는지 밖에 모르기때문에 B에게 가서 다시 C의 위치를물어봐야 합니다. B는 E의 위치밖에 모르니 E에게 가서 또 물어봐야 하죠. 결국 E가 C의 위치를 알려주게 됩니다만…확률적으로 n개의 데이터가 들어있을경우에 운이 좋으면 1번에, 운이 나쁜경우는 n번 움직여야만 원하는 데이터를 찾을 수 있게됩니다. 데이터의 검색에는 그다지 적합하지 않은 녀석이죠.
(자료구조 같은 과목에서 검색패턴에 대한 좋은 이야기를 많이 들을 수 있을거에용~ ^^)

이야기를 정리하면,

  • Vector – 구버젼 호환용. 그다지 사용되지 않음. 동기화 처리가 내부적으로 일어남으로 다른 객체보다 무거움.

  • ArrayList – 배열의복사에 의한 데이터 저장처리를 내부적으로 행하며, 각 데이터에 대한 인덱스를 가지고 있기때문에 검색이 매우 빠르다. 다만, 많은데이터의 추가 / 삭제시에는 배열의 복사가 빈번하게 일어나, 성능이 떨어지는 단점이 있다.

  • LinkedList – 다음자료의 위치정보를 가지며, 내부적인 인덱스는 가지고 있지않다. 데이터의 추가 / 삭제는 위치정보의 수정만으로 가능하기 때문에많은 정보의 추가 / 삭제처리가 필요할때 유용하다. 다만, 데이터가 많은 경우의 검색시 처음 자료로부터 순차적으로 찾아 나가야하기 때문에 느려지는 단점이 있다.

아직 설명하지 못한 많은 저장 객체들이 존재합니다만…
일반적으로 사용되는 3가지에 대해서 간단하게 적어보았습니다.
왜 비슷한 기능을 가진 녀석들이 여러개 존재하는걸까~ 라고 생각하신다면 각각의 객체가 가지는 특징과 성능차에 대해서 공부해 보는것도 좋을거라고 생각합니다.

실제로 프로그램이라는건 “동작” 하는건 당연한거죠. 보다 좋은 “성능”을 낼 수 있느냐가 중요하다고 생각합니다.
0.01초의 성능차이도 동작하는 환경에 따라서는 생명선이 될 수도 있으니까요.

모두들 좀 더 재밌게~ 그리고 깊게 공부하시는데 조금이나마 보탬이 되었으면~

하는 마음에서 간단하게 적어보았습니다. ~  m(_ _)m

[ 출처: http://shagall.tistory.com/36 ]

by 데이터수집 | 2009/07/31 15:59 | Java | 트랙백

◀ 이전 페이지다음 페이지 ▶