私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
目次
目次
(2) 新しいプロジェクトを作成し、チームメイトを招待します。
具体的なものは次のとおりです。
(1) エンティティ層: エンティティ層には、データベース内のオブジェクトに対応する特定のオブジェクト エンティティが格納されます。
(2) DAO 層: (2 つの層 (dao のインターフェース層と dao の実装層) に再分割できます) は、データベースと対話する層であり、データベースの追加、削除、変更、およびクエリ操作が含まれます。
(3) サービス層 (2 つの層 (サービス インターフェイス層とサービス実装層) に細分化できます): 主にビジネス モジュールの論理アプリケーション設計を担当します。
(4) コントローラー層: コントローラー層は、特定のビジネス モジュール プロセスの制御を担当します。コントローラー層は、フロントエンドとバックエンドの対話、フロントエンド要求の受け入れ、サービス層の呼び出し、サービス層から返されるデータの受信を担当します。サービス層、そして最後に特定のページとデータをクライアントに返します。
(5) Util 層: ツール層には、一般的に使用されるツール クラスが配置されます。たとえば、いくつかの一般的なメソッドを util 関数として記述でき、コード全体を簡素化できます。
(6) 例外層: 統合された戻り例外層を作成できます。
(7) フィルタ層: アイデンティティ認証を均一にフィルタリングするなどのフィルタ層。フィルタが通過しない場合はゲスト モードのみになります。
DTO は、フロントエンド リクエストによって送信されるデータ構造です。
VO は、フロントエンドによって送信されたリクエストに応じてバックエンドによって返される応答です。
PO は、オブジェクト エンティティとデータベース オブジェクト テーブルの間の実際の対応関係です。
BOは、業務処理プロセスにおけるオブジェクトエンティティです。
中国語のピンインではなく、英語で名前を付けてください。
派手ではなく、わかりやすくすること。
通常の名前の代わりにこぶの名前を使用します。
一定の間隔で改行し、長い段落を書かないでください。
個人主義ではなく、注釈を付けてください。
Java 自体で特別な意味を持つキーワードや予約語などは使用しないでください。 ! !
(1) テーブル名は一意であり、複数のテーブル名で同じ名前を使用することはできません。
(2) テーブル名は、大文字や特殊文字の使用を避け、「user_info」または「tbl_user」を使用してください。
(3) キーワードと矛盾しないようにしてください。like、desc、range、match、delayed などの予約語を無効にするには、MySQL 公式の予約語を参照してください。
(4) データベースフィールド名:「user_id」、「user_name」、「user_password」、「user_register_time」、「user_login_time」など、26 文字の英字(大文字と小文字を区別)とアンダースコア「_」で構成されます。
(5) 主キーと外部キーの仕様:
主キー: pk_+テーブル名
例えば:pk_main
外部キー:fk_+スレーブテーブル名+_+メインテーブル名
例えば:fk_sub_main
(1) クラスのアノテーション:
クラス アノテーション (Class) は主に、クラスの用途と、作成者、作成日のバージョン、パッケージ名などの情報を宣言するために使用されます。
/**
* @バージョン: V1.0
* @著者: フェンドー
* @クラス名: ユーザー
* @パッケージ名: ユーザー
* @description: これはユーザークラスです
* @データ: 2024-07-01 12:20
**/
(2) メソッドのアノテーション (コンストラクター):
/**
* @著者: フェンドー
* @メソッド名: addUser
* @description: ユーザーを追加します
* @パラメータ: xxxx
* @return: 文字列
* @スロー:
*/
(3) コードブロックのコメント: コードの特定の部分の目的を説明します。
/**
* ユーザーをインスタンス化する
* xxxxxxxxx
*/
ユーザー user=新しいユーザー();
(4) 単一文のコメント: 個々のコードをコメントします。
ユーザー user=new User() // ユーザーをインスタンス化します。
他の人が理解できるように名前を付け、キャメルケースで名前を付け、大文字と小文字を区別します。
例: UserController、FileController、BookService
例: getUserName()、userLogin()、getMessage();
例: MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
1) 単一のオブジェクトを取得するメソッドには、接頭辞 get が付きます。2) 複数のオブジェクトを取得するメソッドには、listObjects のように先頭に list が付けられ、複数形で終わります。3) 統計値の取得方法には先頭に count が付きます。4) 挿入メソッドには、save/insert という接頭辞が付きます。5) 削除メソッドには、remove/delete という接頭辞が付きます。6) 変更されたメソッドには、先頭に update が付きます。
1) データ オブジェクト: xxxDO、xxx はデータ テーブルの名前です。2) データ転送オブジェクト: xxxDTO、xxx は業務分野に関連する名前です。3) 表示オブジェクト: xxxVO、xxx は通常 Web ページの名前です。
これは、既存のオブジェクトを使用する場合の大きな落とし穴です。判断には、equals メソッドを使用することをお勧めします。
良い例:(1) 誤差範囲を指定します。2 つの浮動小数点数の差がこの範囲内にある場合、それらは等しいと見なされます。浮く 1つの = 1.0F - 0.9F ;浮く b = 0.9F - 0.8F ;浮く 差分 = 1e-6F ;もし ( 数学 . 腹筋 ( 1つの - b ) < 差分 ) {システム . 外 . 印刷 ( "真実" );}(2) BigDecimal を使用して値を定義し、浮動小数点数演算を実行します。ビッグデシマルa = 新しい ビッグデシマル ( "1.0" );ビッグデシマルb = 新しい ビッグデシマル ( "0.9" );ビッグデシマル c = 新しい ビッグデシマル ( "0.8" );ビッグデシマル x = 1つの . 減算する ( b );ビッグデシマルy = b . 減算する ( c );もし ( バツ . 比較する ( ええ ) == 0) {システム . 外 . 印刷 ( "真実" );}
識別子の種類 | 命名規則 | 例 |
パッケージ | 一意のパッケージ名のプレフィックスは常にすべて小文字の ASCII 文字であり、トップレベルのドメイン名 (通常は com、edu、gov、mil、net、org、または 1981 年に指定された国を識別する英語の 2 文字コード) です。 ISO 3166規格。パッケージ名のその後の部分は、さまざまな組織の内部命名規則に従って異なります。このような命名規則では、特定のディレクトリ名の構成を使用して、部門、プロジェクト、マシン、またはログイン名を区別することがあります。 | 日本語 com.apple.quicktime.v2 edu.cmu.cs.bovik.チーズ |
クラス | 命名規則: クラス名は名詞であり、大文字と小文字が混合され、各単語の最初の文字が大文字になります。クラス名は簡潔でわかりやすいものにしてください。完全な単語を使用し、略語は避けてください (URL や HTML など、略語がより広く使用されている場合を除く) | クラス Raster; クラス ImageSprite; |
インターフェース | 命名規則: 大文字と小文字の規則はクラス名に似ています。 | インターフェース RasterDelegate; インターフェースの保存; |
メソッド | メソッド名は動詞であり、大文字と小文字が混合され、最初の単語の最初の文字が小文字、後続の単語の最初の文字が大文字になります。キャメルケースのネーミング | 走る(); 速く走る(); 背景を取得します。 |
変数 | 変数名を除き、クラスやクラス定数を含むすべてのインスタンスは大文字と小文字が混合され、最初の単語の最初の文字は小文字、後続の単語の最初の文字は大文字になります。変数名は、構文的には許可されていますが、アンダースコアまたはドル記号で始めることはできません。 変数名は短く、わかりやすいものにする必要があります。変数名は覚えやすい、つまり目的がわかるように選択する必要があります。 | リスト<User>ユーザーリスト; 文字列ユーザー名; |
定数 | クラス定数と ANSI 定数の宣言はすべて大文字で、単語をアンダースコアで区切って宣言する必要があります。 (エラーが発生しやすいため、ANSI 定数は避けてください) | 静的最終int MIN_WIDTH = 4; 静的最終int MAX_WIDTH = 999; 静的最終int GET_THE_CPU = 1; |
a) GET: サーバーからリソースを取得します。 (選択操作として見ることができます)b) POST: サーバー上に新しいリソースを作成します。 (挿入操作とみなすことができます)c) PUT: サーバー上のリソースを更新します。 (更新操作として見ることができます)d) DELETE: サーバーからリソースを削除します。 (削除操作とみなすことができます)
code
:httpステータスコード message
:対応するテキスト記述情報 data
list
dict
- {
- "code": 200,
- "message": "new user has created",
- "data": {
- "id": "user-4d51faba-97ff-4adf-b256-40d7c9c68103",
- "firstName": "crifan",
- "lastName": "Li",
- "password": "654321",
- "phone": "13511112222",
- "createdAt": "2016-10-24T20:39:46",
- "updatedAt": "2016-10-24T20:39:46"
- ......
- }
- }
(3) レスポンスステータスコード
エラー:
2XX の成功
200 ok (リクエストは成功しました)
204 コンテンツがありません (リクエストは成功しましたが、結果は返されませんでした)
206 部分コンテンツ (クライアントがリソースの一部を要求し、サーバーが正常に応答して、一連のリソースを返します)
3XX リダイレクト
301 永久に移動 (永久リダイレクト)
302 件見つかりました (一時リダイレクト)
303 see other (リクエストに対応するリソースには別の URI があるため、GET を使用する必要があることを示します)
要求されたリソースを取得するためのメソッド)
304 変更されていません (クライアントがリソースへの条件付きアクセスを使用すると、サーバーはリソースを見つけますが、リクエストの条件が条件を満たさないことを示します。リダイレクトとは関係ありません)
307 一時リダイレクト (302 と同じ意味)
4XXクライアントエラー
400 不正なリクエスト (リクエスト メッセージに構文エラーがあります)
401 不正 (認証が必要 (最初の返信) または認証失敗 (2 回目の返信))
403 禁止 (リクエストはサーバーによって拒否されました)
404 見つかりません (要求されたリソースがサーバー上に見つかりません)
5XXサーバーエラー
500 内部サーバー エラー (サーバーがリクエストを実行したときにエラーが発生しました)
503 サービスを利用できません (サーバーが過負荷になっているか、メンテナンスのためにダウンしているため、リクエストを処理できません)
例証します: nginx のデフォルトの制限は 1MB で、tomcat のデフォルトの制限は 2MB です。ビジネスでより大きなコンテンツを転送する必要がある場合は、サーバー側の制限を増やすことができます。
例証します: try ブロック内の return ステートメントが正常に実行された後、すぐには戻りませんが、finally ブロック内のステートメントの実行が続行されます。ここに return ステートメントがある場合は、ここで直接戻り、 内のリターン ポイントを容赦なく破棄します。ブロックしてみてください。
リンク: リンクをクリックして apifox を直接ダウンロードします (最新バージョンをダウンロードするだけです)。 Apifox - API ドキュメント、デバッグ、モック、テストのための統合コラボレーション プラットフォーム。インターフェースドキュメント管理、インターフェースデバッグ、モック、自動テストなどの機能を備え、インターフェース開発、テスト、共同デバッグの効率が10倍向上します。最高のインターフェース文書管理ツールおよびインターフェース自動テストツール。https://apifox.com/
1. チームを作成し、新しいプロジェクトを作成します。
チームメイトを招待する
2. 新しいインターフェイスと新しいデータ モデルを作成します。
(1) リクエストが何であるかを判断します (POST、GET、PUT、DELETE)。
(2) テスト環境は統一する必要があり、異なる環境では URL が異なります。
(3) リクエストパラメータは次のように設定されます。
どのようなパラメータが設定されていますか? パラメータの例、中国語名、およびパラメータの説明を提供してください。
(4) 応答は次のように構成する必要があります。
たとえば、さまざまな状態でどのような種類の情報が返されるかを指定する必要があり、成功例と例外例が存在する必要があります (フロントエンドの便宜のため)。
- {
- "code": 200,
- "message": "登入成功",
- "data": {
- "user_id": 27,
- "user_name": "孟霞",
- "user_password": "123456",
- "user_age": "15",
- "user_photo": "http://dummyimage.com/400x400",
- "user_last_time": "1996-12-11 09:03:49",
- "user_indentity": "messager",
- "user_birthday": "2024-02-23"
- }
- }
(5) データモデルは次のように作成できます。
複数のデータ モデルを作成できます。これは、応答フィールドを返すのに非常に便利であり、フロントエンドでデータ フィールドを表示するのにも便利です。
apifox の書き込み仕様と具体的な詳細。
Apifox クイック スタート | Apifox ヘルプ ドキュメントhttps://apifox.com/ヘルプ/
(1) API インターフェース文書の冒頭に序文が必要です。このセクションには次の内容を含めることができます。
このパートの目的は、読者に API インターフェースの基本的な状況と背景情報を理解してもらうことです。
(2) インターフェース一覧
次に、API インターフェイス ドキュメントで、すべてのインターフェイスをリストする必要があります。各インターフェイスには次の情報が含まれている必要があります。
このセクションの目的は、読者が各インターフェイスの基本情報をすぐに理解し、ドキュメント内の例に基づいてインターフェイスを正しく使用できるようにすることです。
(3) リクエストパラメータとレスポンスパラメータの説明
インターフェイスのリストの後に、各インターフェイスのリクエスト パラメーターと応答パラメーターを詳しく説明する必要があります。このセクションには次の情報を含める必要があります。
パラメーターの型と形式については、標準のデータ型と形式を使用することも、特定の状況に応じて独自のデータ型と形式を定義することもできます。必須かどうか、デフォルト値は実際の状況に基づいて決定する必要があります。
(4) エラーコードの説明
API インターフェースを使用すると、エラーが発生することがあります。この場合、エラーの種類と原因を説明するためにエラー コードを返す必要があります。したがって、API インターフェイスのドキュメントでは、考えられるすべてのエラー コードを指定する必要があります。このセクションには次の情報を含める必要があります。
このセクションの目的は、読者が考えられるすべてのエラーの種類と原因を理解し、ドキュメント内の例に基づいてエラーを正しく処理できるようにすることです。
(1) 具体的な操作:
テストクラスを定義する
提案:
テストクラス名: テスト対象クラス名 Test CalculatorTest
パッケージ名: xx.xx.xx.test cn.itcast.test
テストメソッドの定義: 独立して実行可能
提案:
メソッド名: テストメソッド名 testAdd()
戻り値: void
パラメータリスト: 空のパラメータ
@Testをメソッドに追加する
Junit 依存関係環境をインポートする
判定結果:
赤: 失敗しました
緑: 成功
通常、Assert クラスの静的メソッドassertEquals(expected,actual)を使用して、期待される結果と出力結果を処理します。
Assert.assertEquals(3, 結果);
2 つのパラメータは次のとおりです: 期待値 プログラム結果値
テスト結果の処理に Assert.assertEquals(expected,actual) を使用するのはなぜですか?
赤は失敗を表し、緑は正しさを表すと規定しているからです。テスト メソッドを使用してコンピュータの加算メソッドをテストする場合、この結果のみを出力します (例外が発生しないと仮定して)。 1 と 3 を入力すると、結果 4 が得られると期待されますが、出力されるものは 2 で、取得されると期待されるものは 4 です。この時点で得られた結果は期待を満たしていませんが、実行結果はまだ緑色です。 (正しいことを表す), それは正しくありませんか? このとき、最後に Assert のassertEquals メソッドを使用して、期待値とプログラムが出力した結果値を比較し、それらが等しい場合は緑色になります。等しくない場合は赤になります。この時間は緑と赤の定義を満たしていますか?
- package cn.itcast.test;
-
- import cn.itcast.junit.Calculator;
- import org.junit.Assert;
- import org.junit.Test;
-
- public class CalculatorTest {
- /**
- * 测试add方法
- */
- @Test
- public void testAdd(){
- Calculator c = new Calculator();
- int a = 1, b = 2;
- int result = c.add(1, 2);
- Assert.assertEquals(3, result);
- }
-
- /**
- * 测试sub方法
- */
- @Test
- public void testSub(){
- Calculator c = new Calculator();
- int a = 1, b = 2;
- int result = c.sub(1, 2);
- Assert.assertEquals(-1, 2);
- }
- }
-
@前に
テストメソッドの前に @Before を追加すると、このメソッドはすべてのテストメソッドが実行される前に自動的に実行されます。
@後
テストメソッドの前に @After を追加するとリソース解放メソッドとなり、すべてのテストメソッドが実行された後に自動的に実行されます。
@Before で装飾されたメソッドは、テスト メソッドが実行される前に実行されます。
@After で装飾されたメソッドは、テスト メソッドの実行後に実行されます。
@Before または @After で変更されたメソッドは、テスト メソッドが発生するかどうかに関係なく実行されます。
(2) Testクラスプラグインを自動生成する
(1) バックエンドのインターフェース文書を書くときは、フロントエンドが理解できるように明確に書く必要があります。自分で理解できるように書く必要はありません。書き換えられた名前とデフォルト値のインターフェイス応答は適切に記述される必要があります。
(2) 教えられた内容に加えて、メール認証の登録、認証コードのログイン、c3p0、MD5 暗号化、ログ ログ、結果のスタイルなど、その他のことを自分で学ぶこともできます。
(3) コードの記述も標準化する必要があり、ロジック (Cookie、セッション) の設定も厳密にする必要があり、空の判断が必要な場合は空の判断を行う必要があり、セキュリティを強化できる場合はそこから学ぶことができます。
(4) フロントエンドとバックエンドはうまく連携する必要があります。フロントエンドに何も言わずにバックエンドが勝手にやることを許してはいけません。フロントエンドとバックエンドのインタラクティブな応答も評価の一部であり、作成したインターフェイスは apifox 経由でのみ実行できますが、特定のフロントエンド ページに表示されるときにエラーが発生しますか。 ? 論理的な問題など、考慮が必要な点はありますか。
(5) 需要分析中に、実行したい機能とインターフェイスを指定します。フロントエンドで実行されていない機能がある場合は、それらの機能をバックエンドで実行する必要があります。 Interfaces/data を書いていない場合は、注意深く反省して、もっとコミュニケーションしてください。
実際に機能するプロジェクト、またはショッピング Web サイトなどの同様のものに対してベンチマークを行うことができます。次に、この Web サイトにあるバックエンド インターフェイス、機能モジュール、および具体的な詳細についてベンチマークを行う必要があります。
(6) やみくもに追求せず、論理的かつ合理的で、簡略化できる部分は簡略化することを学びましょう。ただし、基本的なインターフェイス数とコード量も保証する必要があります。 (私たちが最初に書いたインターフェースは基本的に 40 以上でした)