アリババコード規範(JAVA)認証試験の感想

3847 ワード

コーディング仕様
  • DO/DTO/VOなどのPOJOクラスを定義する場合、属性のデフォルト値は設定しないでください.
  • すべての上書き方法は@override注記を追加する必要があります.
  • 型は、配列を表すために中括弧に隣接している.int[] arrayDemoではなく、int arrayDemo[]です.
  • インタフェースで変数を定義しないでください.
  • カッコ、カンマの前で改行しないでください.
  • クラスのオブジェクト参照によるこのような静的変数または静的メソッドへのアクセスを回避し、コンパイラ解析コストを増加させることなく、クラス名で直接アクセスすればよい.
  • 同じパラメータタイプ、同じビジネスの意味で、Javaの可変パラメータを使用して、Objectを使用することを避けることができます.可変パラメータは、パラメータリストの最後に配置する必要があります.(学生たちができるだけ可変パラメータでプログラミングしないことを提唱する)
  • 外部で呼び出されているインタフェースまたは両方のライブラリに依存しているインタフェースでは、メソッド署名の変更は許可されず、インタフェース呼び出し側への影響を回避します.インタフェースが古い場合は、@Deprecated注記を追加し、新しいインタフェースまたは新しいサービスが何であるかを明確に説明する必要があります.
  • javaの使用を推奨する.util.Objects#equals.

  • コンセプト
    if文は、ガード文を使用して階層ネストを低減します.衛文は複雑な条件式を複数の条件式に分割することであり、例えば複雑な式であり、何層もネストされたif-then-else文を複数のif文に変換し、その論理を実現し、この複数のif文が衛文である.
    if(obj != null){
      doSomething();
    }

    ガード文に変換したコードは次のとおりです.
    if(obj == null){
       return;
    }
    doSomething();

    参照先:https://blog.csdn.net/Soumns_Kris/article/details/78390492 https://blog.csdn.net/jw903/article/details/45506777
    ユニットテスト
    ホワイトボックステストにおけるコードオーバーライド率の種類:文オーバーライド、分岐オーバーライド(オーバーライド判定)、条件オーバーライド、パスオーバーライド.文オーバーライドは最も弱いメトリック方式であり、パスオーバーライドであってもプログラムが完全に大丈夫であることは保証されない.
    データベース#データベース#
  • NULLは、どの値と比較してもNULLとなります.ISNULL()を使用してNULL値かどうかを判断します.
  • インデックスに範囲検索がある場合、インデックス秩序性は利用できません.例えば、WHERE a>10 ORDER BY b;インデックスa_bソートできません.
  • varcharフィールドにインデックスを作成する場合は、インデックスの長さを指定する必要があります.全フィールドにインデックスを作成する必要はありません.実際のテキストの分割度に基づいてインデックスの長さを決定すればいいです.インデックスの長さと区分度は矛盾体であり、一般的に文字列タイプデータに対して、長さ20のインデックスであり、区分度は90%以上に達し、count(distinct left( , ))/count(*)の区分度を用いて決定することができる.
  • は、上書きインデックスを使用してクエリー操作を行い、テーブルに戻ることを回避します.インデックスを作成できる種類は、プライマリ・キー・インデックス、ユニーク・インデックス、通常のインデックスの3種類に分けられ、上書きインデックスはクエリーの効果の1つであり、explainの結果、extra列が現れる:using index.
  • は、遅延関連付けまたはサブクエリを使用して、スーパーページシーンを最適化する.取得するidセグメントをすばやく位置決めしてから、関連付けます:SELECT a.* FROM 1 a, (select id from 1 where LIMIT 100000,20 ) b where a.id=b.id
  • SQLパフォーマンス最適化の目標:少なくともrangeレベルに達するにはrefレベルが必要であり、constsができれば最適です.1)consts単一テーブルには、最大1つの一致行(プライマリ・キーまたはユニーク・インデックス)しかなく、最適化フェーズでデータを読み込むことができます.2)refは、通常のインデックスを使用することを意味します.(normal index).3)rangeはインデックスの範囲検索を行います.explainテーブルの結果、type=index、インデックス物理ファイルのフルスキャン、速度が非常に遅く、このindexレベルはrangeよりも低く、全テーブルスキャンとは小さな魔女です.
  • は、フィールドタイプの違いによる暗黙的な変換を防止し、インデックスが失効することを防止します.
  • でコンビネーションインデックスを作成する場合、最も区別度が高いのは一番左です.非等号と等号が混在している場合は、インデックスを作成するときは、等号条件の列を前にしてください.
  • は、count(*)の代わりにcount(カラム名)またはcount(定数)を使用しないでください.count(*)は、SQL 92によって定義された標準統計行数の構文であり、データベースには関係なくNULLおよび非NULLには関係ありません.count(*)はNULLのローを統計しますが、count(カラム名)はNULLのローを統計しません.
  • sumのNPE問題を回避する:SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table.
  • TRUNCATE TABLEはDELETEよりも高速であり、使用するシステムやトランザクションログリソースは少ないが、TRUNCATEはトランザクションがなくtriggerをトリガしないため、事故を引き起こす可能性があるため、開発コードでこの文を使用することは推奨されない.TRUNCATE TABLEは,WHERE句を持たないDELETE文と機能的に同一である.
  • 表クエリーでは、クエリーのフィールドリストとして*を使用しないでください.どのフィールドを明確に明記する必要がありますか.極端な場合でも、エンティティ・クラス/テーブルのすべてのフィールドをクエリーする必要があります.*は使用できません.
  • のcompareValueは属性値と比較する定数であり、一般的に数字であり、等しい場合にこの条件をつけることを示す.は空ではなくnullではない場合に実行されることを示す.はnull値でない場合に実行することを示す.
  • 外部キーとカスケードは使用できません.すべての外部キー概念はアプリケーション層で解決する必要があります.外部キーとカスケード更新は単機低同時に適用され、分布式、高同時クラスタには適していない.カスケード更新は強いブロックであり、データベース更新嵐のリスクがある.外部キーは、データベースの挿入速度に影響します.

  • その他
    アプリケーション・サーバには一般的に接続プール機能があるため、アプリケーション・サーバとデータベースの間には長い接続があります.