알 리 바 바 자바 개발 매 뉴 얼-규범 너 와 나

3095 단어 침전 총화
긴 장 된 업무 에서 여 가 를 빼 내 어 지식 을 공 고 히 하 다.
자신 을 풍부하게 하고 끊임없이 향상시키다.
1.Object 의 equals 방법 은 빈 포인터 이상 을 던 지기 쉬 우 므 로 상수 또는 값 이 있 는 대상 을 확정 하여 equals 방법 을 사용 해 야 합 니 다.
정규:"test".equals(object);
반 례:object.equlas("test");
설명:java.util.Objects\#equals(JDK 7 이 도입 한 도구 클래스)를 추천 합 니 다.
2.foreach 순환 에서 요소 의 remove/add 작업 을 하지 마 십시오>,remove 요 소 는 Iterator 방식 을 사용 하 십시오.동시 작업 을 하려 면 Iterator 대상 에 자 물 쇠 를 추가 해 야 합 니 다.
정규:
 
Iterator it = a.iterator();
while (it.hasNext()) {
    String temp = it.next();
    if(       ) {
        it.remove();
    }
}

반 례:
 
 
List a = new ArrayList();
a.add("1");
a.add("2");
for (String temp : a) {
    if ("1".equals(temp)) {
        a.remove(temp);
    }
}

설명:상기 코드 의 결 과 를 실행 해 보십시오.
 
3.Map 클래스 집합 K/V 가 null 을 저장 할 수 있 는 지 주의:
 
집합 류
Key
Value
Super
설명 하 다.
HashTable
null 로 허용 되 지 않 음
null 로 허용 되 지 않 음
Dictionary
스 레 드 보안
ConcurrentHashMap
null 로 허용 되 지 않 음
null 로 허용 되 지 않 음
AbstractMap
세그먼트 잠 금 기술
TreeMap
null 로 허용 되 지 않 음
null 로 허용
AbstractMap
스 레 드 가 안전 하지 않 습 니 다.
HashMap
null 로 허용
null 로 허용
AbstractMap
스 레 드 가 안전 하지 않 습 니 다.
반 례:HashMap 의 간섭 으로 인해 많은 사람들 이 Concurrent HashMap 을 null 값 에 넣 을 수 있다 고 생각 하고 사실상 저장 합 니 다.
null 값 은 NPE 이상 을 던 집 니 다.
4.스 레 드 자원 은 스 레 드 탱크 를 통 해 제공 해 야 하 며 응용 프로그램 에서 자체 적 으로 스 레 드 를 만 드 는 것 을 허용 하지 않 습 니 다.
설명:스 레 드 를 사용 하 는 장점 은 스 레 드 를 만 들 고 소각 하 는 데 걸 리 는 시간 과 시스템 자원 의 비용 을 줄 이 고 자원 부족 문 제 를 해결 하 는 것 이다.
스 레 드 탱크 를 사용 하지 않 으 면 시스템 이 같은 스 레 드 를 많이 만들어 메모리 가 소모 되 거나'과도 한 전환'문제 가 발생 할 수 있 습 니 다.
5.스 레 드 탱크 는 Executors 로 만 들 수 없 으 며 Thread PoolExecutor 방식 을 통 해 작성 한 학생 들 을 더욱
스 레 드 탱크 의 운행 규칙 을 명 확 히 하고 자원 소모 의 위험 을 피한다.
설명:
1)Fixed ThreadPool 과 Single Thread Pool:
     허용 되 는 요청 대기 열 길 이 는 Integer.MAX 입 니 다.VALUE,대량의 요청 이 쌓 여 OOM(메모리 넘 침)을 초래 할 수 있 습 니 다.
2)CacheThreadPool 과 Scheduled Thread Pool:
     허용 되 는 생 성 스 레 드 수 는 Integer.MAX 입 니 다.VALUE,대량의 스 레 드 를 만들어 서 OOM 을 만 들 수 있 습 니 다.
6. 이상 분 지 를 표현 할 때 if-else 문 구 를 적 게 사용 하면 다음 과 같이 바 꿀 수 있 습 니 다.
if (condition) {
    ...
    return obj;
}
//   else       

설명:if()...else if()...else...방식 으로 논 리 를 표현 하고 후속 코드 유지 에 어려움 을 피 하려 면 3 층 을 초과 하지 마 십시오.
정규:논리 적 으로 3 층 이 넘 는 if-else 코드 는 위 문 이나 상태 모드 를 사용 하여 이 루어 집 니 다.위 구문 예제:
public void today() {
    if (isBusy) {
        System.out.println("change time.");
        return;
    }
    if (isFree()) {
        System.out.println("go to travel.");
        return;
   }
    System.out.println("stay at home to learn Alibaba Java Coding Guideline");
    return;
}

 7. 순환 체 중의 문 구 는 성능 을 고려 해 야 한다.다음 작업 은 가능 한 한 순환 체 외 처리 로 옮 겨 야 한다.예 를 들 어 대상,변 수 를 정의 하고 데이터 베이스 연결 을 가 져 오 며 불필요 한 try-catch 작업 을 한다.
(이 try-catch 는 순환 체 외 로 이동 할 수 있 습 니까?)

좋은 웹페이지 즐겨찾기