タスクは難易度の高い順に配置されます。 各タスクには、いくつかの「開発」もあり、それぞれが新しいパッケージなどを引き付けることを目的としています。
タスク:アナログgrep
入力に供給されるテキスト情報の流れをフィルタリングし、引数として入力プログラムに送信された単語を含む行のみを出力で表示するコンソールプログラムを実装する必要があります。
合併症のオプション:
- プログラムは大文字と小文字を区別してはいけません
- 引数に1つの単語を渡すことはできませんが、
- 引数として、特定の単語を指定することはできませんが、 正規表現を指定できます
タスク:アナログソート
送信されたテキストをアルファベット順に標準入力にソートするコンソールプログラムを作成します。
合併症のオプション:
- プログラムはソート時に大文字小文字を無視する必要があります
- プログラムはアルファベット順ではなく、文字列の文字数でソートする必要があります
- 引数としてのプログラムは、行をソートするためにその行の単語のシリアル番号を受け取ることができます
タスク:チャット
タスクは複数のステージで構成され、その最後には標準のコンソールチャットが必要です。
- ポート1234でサーバーソケットを開くコンソールプログラムを実装します。クライアントが接続すると、プログラムはクライアントが送信したすべてを表示する必要があります。 telnetシステムプログラムを使用して接続を試みることにより、操作性を確認できます。 将来、このプログラムをサーバー部分と呼びます
- プログラムを複雑にし、複数のクライアントがtelnetを介して同時に接続できるようにする
- 別のコンソールプログラムを実装します。これは、本質的にtelnetの類似物です。 ポート1234で指定されたIPに接続し、ユーザーがEnterキーを押して入力した行をサーバーに送信します。 将来、このプログラムをクライアント部分または単にクライアントと呼びます
- 1人のユーザーからのメッセージがサーバーに現在接続しているすべてのユーザーにすぐに送信されるように、プログラムのサーバー部分を複雑にするため
- プログラムのサーバー部分を複雑にして、新しいユーザーが接続したときに最後の10メッセージが表示されるようにする
- 起動時に、クライアント部分はユーザーに名前を尋ねる必要があります。 将来、メッセージをサーバーに送信するときは、次のテンプレートを使用する必要があります。「ユーザー名:テキスト」
- この時点まで、サーバーとクライアント間のメッセージはプレーンテキストです。 これにより、付随する情報も送信することが難しくなります。たとえば、ユーザー名、サーバーがメッセージを受信した日付などです。 このタスクでは、情報の交換をSerializationの使用に変換する必要があります。 つまり クライアントとサーバー間の情報交換は、シリアル化されたMessageクラスを使用して実行する必要があります。このクラスには、テキストに加えて、追加の属性が含まれます:メッセージ作成日、ユーザー名、送信者IP、送信者がいるモード(ICQ:I sleep、eat、work :) )
- サーバー部分を追加して、接続されているユーザーの数を監視し、10人を超えるユーザーの接続を許可しないようにします。
- 現在、多くのサーバーパラメータがプログラム自体のコードに登録されています。たとえば、サーバーを開くポート、接続時に表示されるメッセージの数、接続ユーザーの最大数などです。 これらすべての構成パラメーターをXMLファイルに転送します。
- サーバーは、ユーザー名に適切なパスワードを知っているユーザーのみを許可する必要があります。 これを行うには、起動時にクライアントもパスワードを要求する必要があります。 また、新しいユーザーを接続する場合、サーバーは構成ファイル内のデータを使用してユーザー名/パスワードを検証する必要があります。 パスワードが一致しない場合、またはそのようなユーザーが存在しない場合、サーバーは適切なメッセージでクライアントを切断する必要があります。
タスク:Javaコマンドライン(JCL)
このタスクは通常、J2SDKコース全体のテストとして私から与えられます。
ある種のコマンドライン実装を表すコンソールプログラムをJavaで実装します。つまり、ユーザーが1行ずつ入力したコマンドを実行できます。 コマンドとは、次の行を意味します。
" " " №1" " №2" ... " №N"
必要なユーザーコマンドを実行するコードは、別個のJavaクラスとして実行する必要があります。 クラスとコマンド名の対応は、プログラムの構成(XML)ファイルで指定する必要があります。 実行時のコマンドは、標準入力/出力を使用してユーザーと対話することもできます。
プログラムは次のコマンドをサポートする必要があります。
- dir-現在のディレクトリ内のファイルのリストを表示します
- cd "path"-パスが最初の引数で指定されているディレクトリに移動します
- pwd-現在のディレクトリへのフルパスを出力します
合併症のオプション:
- プログラムは、コマンド「!System_program_name引数#1 ...引数#N」をサポートする必要があります。コマンドは、対応する引数でシステムプログラムを起動します。同じJCL入力をシステムプログラムの入力に、出力で同じを入力する必要があります
- プログラムは、「command1 arguments && command2 arguments」および「command1 arguments ||」という構文をサポートする必要があります。 team2引数。 最初のケースでは、「command1」が正常に実行された場合にのみ、「command2」が起動されます。 2番目のケースでは、「command1」の実行が正常に完了しなかった場合にのみ、「command2」が起動されます。
- プログラムは、バックグラウンドでコマンドを実行する機能をサポートする必要があります。 これを行うには、コマンドラインの最後に「&」記号を入力するだけです。 プログラムは、バックグラウンドで実行されるタスクのリストを表示するコマンド「jobs」もサポートする必要があります
- ネットワークバージョンでプログラムを実行する機能を実装します。つまり、 プログラムはポートを開き、リモートマシンから通常のtelnetを使用してポートを操作できます。 このプログラムは、複数のユーザーの接続を一度にサポートするだけでなく、誰が接続して誰にメッセージを送信するかを示すコマンドと書き込みコマンドをサポートする必要があります。
PS誰かがこれらのタスクでJavaを試してみると、解決された問題を自分で確認し、可能であれば有用なコメントを提供する準備ができています:)
PPSパッケージまたはライブラリへのリンクを資料に提供する価値があると思いますか。このアイテムまたはそのアイテムを実装するには、知識が必要です。