이 기사를 작성하는 목적은 주로 기본적인 Java 지식 지점과 관련하여 수년에 걸쳐 Java를 사용한 경험을 요약하는 것입니다. 방금 시작한 Java 프로그래머와 Java 개발 산업에 진출하려는 초보자와 공유하기를 희망합니다. 나는 당신에게 약간의 경험을 제공하고 당신이 Java를 더 잘 배우고 사용할 수 있기를 바랍니다.
이 소개의 주요 내용은 J2SE 관련 부분입니다. 또한 향후 Java의 각 프레임 워크와 관련된 J2EE 관련 컨텐츠를 소개합니다.
수년간의 Java 개발과 Java 개발자 인터뷰 경험과 결합 된 후 J2SE의 가장 중요한 것은 다음 컨텐츠를 마스터하는 것입니다.
1. JVM 관련 (각 버전의 기능 포함)
Java에 참여하는 사람들에게 JVM 관련 지식이 반드시 깊이 이해할 필요는 없으므로 개념을 간단하게 이해할 수 있습니다. 그러나 3 년 이상의 Java 경험을 가진 선임 개발자의 경우 JVM을 모르는 것은 거의 용납 될 수 없습니다.
Java 운영의 기초로서 JVM을 전혀 모르는 사람들은 Java 언어를 완전히 이해할 수 있다고 믿기가 어렵습니다. 3 년 이상의 Java 경험을 가진 개발자를 인터뷰했을 때 JVM은 거의 필수적인 질문이었습니다. 물론 JVM이 기술 기능의 품질을 결정하는 유일한 인터뷰 질문은 아니지만 Java 개발 기능의 수준을 증명할 수 있습니다.
JVM 카테고리에서 마스터 해야하는 지식은 다음과 같습니다.
JVM 메모리 모델 및 구조
GC 원칙, 성능 튜닝
튜닝 : 스레드 덤프, 메모리 구조 분석
클래스 바이너리 바이트 코드 구조, 클래스 로더 시스템, 클래스 로딩 프로세스, 인스턴스 생성 프로세스
메소드 실행 프로세스
Java의 다양한 주요 버전 업데이트가 제공하는 새로운 기능 (간단한 이해가 필요합니다)
2. Java Operation (기본 필수 요소)
이것은보기가 매우 간단 할 수 있습니다. 누가 Java 프로그램을 운영 할 수 없습니까? 그러나 여러 번, 우리는 IDE를 통해 Java 프로그램을 실행합니다. 기본 IDE는 어떻게 Java 프로그램을 실행합니까? 많은 사람들이 이해하지 못합니다.
이 지식 지점은 Java 개발자가 마스터 해야하는 가장 기본적인 것입니다. 초보자가 될 때, 첫 번째는 명령 줄에서 Java 프로그램을 실행하는 방법을 가르쳐주는 것이지만, 많은 사람들이 Java 학습을 마치고 IDE를 사용하면 이것을 잊어 버립니다. 왜 이것을 아는 것을 강조합니까? Java를 시작하는 가장 순수한 방법을 알고 있으면 그 당시 시작된 디렉토리 수, 이름 지정을 실행하는 방법, 매개 변수, 누락 된 지 여부 등을 분석 할 수 있습니다. 시작에 문제가있을 때. 이를 통해 실제 개발에서 이상한 환경 관련 문제를 해결하는 데 도움이됩니다.
여기서 마스터하는 데 필요한 지식은 다음과 같습니다.
Javac은 Java 파일을 클래스 파일로 컴파일합니다
Java 명령 사용, 명령 줄에서 패키지로 Java 클래스를 시작하는 방법
Java 프로그램과 관련된 다양한 경로 (Classpath, java.library.path, 홈 디렉토리, Java가 운영하는 등)
3. 데이터 유형
이 기사에 대해 할 말이 많지 않으며 Java의 기본 유형과 객체 유형을 마스터하는 것 이상입니다. Packing 및 Unboxing 등을 포함하여 JDK가 자동으로 자동으로 변환하는 방법에 대해 자세히 알아볼 수 있습니다. 포장 후 동일한 유형의 판단을 피하기 위해주의를 기울여야합니다.
주요 지식 지점 :
기본 유형 : int, long, float, double, boolean ,. . .
해당 오브젝트 유형 : 정수 및 기타 유형으로 기본 유형으로 변환, 포장 및 Unboxing
객체 유형 : 동일, 해시 코드
문자열 유형의 기능
4. 객체와 인스턴스, 객체 생성
이와 관련하여 개발자는 클래스와 인스턴스의 개념과 그 사이의 차이점을 이해해야합니다. 이는 Java의 객체 지향적 특징의 기초입니다. 주요 지식은 다음과 같습니다.
클래스 및 인스턴스 개념
인스턴스 생성 프로세스 :
1. 상속 없음 : 메모리 공간을 할당하고, 변수 초기화 및 통화 생성자
2. 상속 : 정적 작업을 처리하고 메모리 공간을 할당하며 변수를 초기 값으로 정의하고 정의에서 초기화를 처리하며 생성자를 실행합니다.
주목할 점 :
정적 특성 등은 기본 클래스-> 서브 클래스에서 초기화됩니다
기본 매개 변수가없는 구조 방법과 관련된 기능
5. 액세스 제어
이것은 또한 Java 캡슐화 기능의 기초이며, 마스터해야 할 것은 다음과 같습니다.
클래스, 메소드 및 필드에 대한 공개 보호 기본 개인의 수정 효과
6. 프로세스 제어
Java 프로세스 제어의 기본 사항은 일부 구문이 일반적으로 사용되는 것은 아니지만 적절한 장소에서 이해하고 사용해야합니다.
마스터해야 할 것은 다음과 같습니다.
IF, 스위치, 루프,
7. 객체 지향 프로그래밍의 개념
이것은 Java 개발자가 마스터 해야하는 Java의 핵심 개념입니다. Java의 많은 기능이나 지식은 Java의 객체 지향 프로그래밍 개념과 관련이 있습니다. 내 이해에 따르면, 훌륭한 개발자는 이러한 기능 (지식 포인트) 자체를 이해해야 할뿐만 아니라 Java의 객체 지향 프로그래밍 개념에 이러한 객체가 어떻게 반영되는지 알아야합니다. 나는 여기에 간단히 나열되었으며 주요 지식은 다음과 같습니다.
세 가지 주요 객체 지향 특징 : 캡슐화, 상속 및 다형성; 각각의 정의 개념, 특성이 반영 된 것 및 각각의 사용 시나리오
정적 다중 분포 및 동적 단일 분포의 개념
과부하의 개념 및 사용
상속 : 다중 인터페이스 구현, 단일 기본 클래스 상속
초록, 추상 클래스, 인터페이스
다형성 : 방법 커버리지의 개념 및 사용
인터페이스 콜백
8. 정적
정적 속성은 또한 일일 Java 개발에 자주 사용됩니다. 정적 키워드와 관련된 사용법을 이해하고 추상 및 최종 및 최종과 같은 키워드와 함께 사용할 수 있는지 여부와 같은 다른 키워드와 함께 사용해야합니다.
마스터해야 할 주요 사항은 다음과 같습니다.
정적 속성, 사용 및로드시 클래스 초기화 방법의 정의
정적 방법의 정의 및 사용
정적 클래스의 정의 및 사용
정의 코드 블록의 정의 및 초기화 타이밍
9. 기본 지식 포인트
여기서 우리는 주로 체계적으로 분류되지 않은 흩어진 Java 지식 포인트를 나열합니다. 또한 매일 개발에 많이 사용됩니다. 이 분야에는 실제로 많은 내용이 있습니다. 현재, 나는 여기에있는 당분간 이것을 요약했습니다.
포함:
Equals, Hashcode, String/Stringbuffer, Final, Minding, Finalize
10. 수집 프레임 워크
이것은 더 많은 숙달이 필요한 부분입니다. 컬렉션 프레임 워크를 사용하지 않고 필요하지 않다고 말할 수 있습니다. 이것은 매우 중요합니다. 그러나 여기서 지식은 어렵지 않지만 컬렉션의 내부 구현 방법을 이해하는 것이 가장 좋습니다. 이는 다른 시나리오에서 적절한 프레임 워크를 선택하여 문제를 해결하는 데 도움이되기 때문입니다. 예를 들어, 10,000 개의 요소 세트가있는 경우 종종 판단 작업이 포함되어 있어야합니다. 컬렉션 또는 내부 구현의 특성을 알고 있다면 올바른 선택을 쉽게 만들 수 있습니다.
다음 내용은 여기에 포함됩니다 (동시성 상관 관계가 포함되지 않음).
수집 프레임 워크 시스템 : 기본 수집,지도
특정 세트 구현, 목록, 세트,지도 특정 구현, 내부 구조, 특수 방법, 해당 시나리오 등의 내용.
컬렉션 사용 등
11. 예외 프레임 워크
Java 개발에서는 예외가 그렇게 심각하게 받아 들여지지 않을 수 있습니다. 일반적으로 예외가 발생하면 직접 던져 지거나 간단히 잡아서 처리하며 프로그램의 전반적인 운영에 큰 영향을 미치지 않습니다. 그러나 엔터프라이즈 수준의 설계 및 개발에서 비정상의 설계 및 취급은 종종 시스템의 전반적인 견고성과 관련이 있습니다. 개발자의 경우 좋은 시스템의 예외 처리는 통일되어야하며 모든 곳에서 흩어져있는 논리를 많이 처리하지 않아야합니다. 시스템의 경우 예외는 제어 가능하고 운영 및 유지 관리가 쉬워야합니다. 예외가 나타나면, 그들을 다루고 운영 및 유지 관리 방법을 알아야합니다. 따라서 예외 프레임 워크는 매우 간단하지만 전체 엔터프라이즈 수준의 애플리케이션 개발을 위해서는 예외 처리가 매우 중요합니다. 예외를 잘 처리하려면 Java의 예외 시스템을 이해해야합니다.
이 부분에서 마스터 할 지식 포인트는 많지 않습니다.
비정상적인 시스템 :
던질 수 있습니다
예외
runtimeexception
오류
runtimeexception과 일반적인 예외, 특정 처리 방법 등의 차이.
12. 자바 io
IO는 Java에서 파일을 읽고 쓰는 것이 간단 할뿐만 아니라 소켓 네트워크의 읽기 및 쓰기와 같은 모든 입력 및 출력 작업도 포함되어 있습니다. 예를 들어, 표준 HTTP 요청에서 게시물 컨텐츠를 읽는 것은 출력 프로세스 등입니다 ...
IO의 경우 Java는 기본 입력 및 출력 관련 API를 제공 할뿐만 아니라 일부 개발 (다수의 IO 운영과 관련된 프로젝트)에서 매우 중요한 단순화 된 운영 리더 및 작가 API를 제공합니다. 또한 매일 개발에 (로그, 읽기 및 읽기 및 쓰기 등)도 포함됩니다.
여기서 주요 지식은 다음과 같습니다.
기본 IO 시스템 : InputStream, OutputStream, Reader/Writer, 파일 읽기, 다양한 스트림 읽기 등 포함
NIO의 개념, 특정 사용 방법 및 사용 시나리오
13. 다중 스레드 동시성
멀티 스레딩은 Java에서 비교적 어려운 부분입니다. 멀티 스레딩을 올바르게 사용하는 경우 CPU 사용률을 효과적으로 개선하고 특히 많은 IO 작업 차단이있을 때 전체 시스템 효율을 향상시킬 수 있습니다. 그러나 그것은 또한 양날의 검입니다. 잘 사용되지 않으면 시스템은 크게 개선되거나 개선되지 않을뿐만 아니라 여러 스레드간에 디버깅과 같은 문제를 가져옵니다.
멀티 스레딩에는 많은 내용이 있습니다. 멀티 스레딩의 초기 사용에서 Java에서 마스터 해야하는 지식 포인트를 간단히 설명합니다. 앞으로 몇 가지 고급 기능을 자세히 소개 할 기회가 있다면 일부 고급 기능의 사용 시나리오에 대한 자세한 소개가 표시됩니다.
멀티 스레드 구현 및 시작
호출 가능과 실행 가능의 차이
SyncRhoized, Reintrantlock의 각각의 기능 및 비교
스레드 풀
실행 결과를 비동기 적으로 받으십시오
동시 패키지
잠그다
..
14. 네트워크
Java는 또한 TCP 프로토콜 및 UDP 프로토콜을 직접 작동 할 수있는 API를 제공합니다. 네트워크 성능을 강조 해야하는 경우 TCP/UDP와 함께 통신을 직접 사용할 수 있습니다. Tomcat 및 기타의 소스 코드를 볼 때 이러한 관련 API의 사용을 볼 수 있습니다. 그러나 일반적으로 TCP는 직접적으로 사용되지 않으며 Mina 및 Netty와 같은 프레임 워크는 처리에 사용됩니다. 이 분야에는 많은 발전이 없기 때문에 자세히 나열하지 않을 것입니다.
15. 시간 및 날짜 처리
거의 모든 응용 프로그램의 경우 시간 및 날짜 처리를 피할 수는 없지만 JDK8 이전의 시간 관련 API 사용은 친숙하지 않습니다. 그 시대에는 Joda와 같은 시간 프레임을 선택할 수 있습니다. JDK8이 출시 된 후, 새로운 시간 API는 기본적으로 다른 프레임 워크의 장점을 통합하고 직접 사용할 수 있습니다.
Java 개발자의 경우 API를 사용하여 시간과 날짜를 처리하는 데 능숙해야합니다.
특정 지식 지점은 더 이상 나열되지 않습니다. JDK8에서 시간과 날짜 API의 사용을 요약하기 위해 앞으로 특별 기사를 작성할 것입니다.
16.xml 파싱/JSON 구문 분석
실제로이 두 내용 중 어느 것도 J2SE의 내용이지만, 매일 개발에서 다른 프로그램 및 구성 파일과의 상호 작용은이 두 형식의 구문 분석과는 별도의 분리 할 수 없습니다.
그러나 개발자의 경우 XML/JSON 특정 구문 분석의 일부 원칙과 방법을 이해할 수 있으면 각 특정 시나리오에서 프로그램보다 효율적이고 강력한 방법을 더 잘 선택할 수 있습니다.
XML : Dom Parsing 및 Sax Parsing의 기본 원칙과 해당 해당 시나리오의 기본 원칙을 이해해야합니다.
JSON : Jackson, Fastjson, GSON 등과 같은 일반적으로 사용되는 JSON 프레임 워크의 사용법을 이해해야합니다.
17. Maven 사용
Maven은 Java의 콘텐츠가 아니지만 Maven은 혁명적이며 Java 개발에 큰 편의를 제공합니다. 의존성의 소개 및 관리, 개발 프로세스의 업데이트 및 릴리스 및 버전 업데이트는 개발 프로세스의 복잡성을 크게 단순화하여 많은 시간을 절약 할 수 있습니다. Maven은 Java 개발자의 표준 구성이되었다고 말할 수 있습니다. 또한 Maven을 Java 개발자의 기본 지식 지점으로 간주합니다. 앞으로 Maven을 사용하는 데있어 경험과 기술을 추가하므로 여기에서 자세히 설명하지 않을 것입니다.
18. 제네릭
이것은 JDK5가 도입 한 새로운 개념입니다. 실제로 구문 설탕입니다. Java 코드를 작성할 때 약간 편리합니다. 일반적으로 응용 프로그램이나 비즈니스 개발을 위해서는 간단하게 사용하면되며 제네릭을 정의하는 데 반드시 사용될 필요는 없습니다. 그러나 일부 기본 공개 구성 요소가 사용됩니다. 필요할 때이 부분을 자세히 볼 수 있습니다. 일반적으로 간단하게 사용할 수 있습니다.
19. 마킹
JDK5 후에도 도입되었습니다. Spring은 훌륭한 프레임 워크이며 XML로 표준 구성 파일로 시작했습니다. 그러나 Spring3 이후, 특히 스프링 부츠가 상승한 후 XML 구성 파일을 단순화하기 위해 주석을 사용하는 것이 좋습니다. 개발자의 경우 XML 구성에서 많은 시간을 절약 할 수 있습니다. 그러나 단점은 주석이 다양한 클래스에 흩어져 있다는 것입니다. XML과 달리 모든 구성에 대한 글로벌 이해와 관리를 가질 수 있으므로 모든 XML을 완전히 교체 할 수있는 방법이 없습니다. 일반 개발자의 경우 주석 만 사용할 수 있습니다. 공개 구성 요소가있는 일부 개발자는 주석의 정의 및 구현을 이해해야 할 수도 있으며 필요할 때 자세히 살펴볼 수 있습니다.
20.RMI
remotemethodinvocation은 Java 언어에 고유 한 원격 통화 인터페이스이며 비교적 간단하고 사용하기 편리합니다. 그러나 언어 간 상황에서는 웹 서비스와 같은 다른 방법이이를 지원하기 위해 필요합니다. 일반적으로 프로그램은 RMI를 사용할 필요는 없지만 특정 상황에서 사용할 수 있습니다. RMI를 사용하여 프로그램의 원격 시작 및 중지를 제어하는 프로젝트에 있습니다.
21.jni
Java Native Interface를 사용하면 로컬 인터페이스 방법을 Java에서 호출 할 수 있으며 일반적으로 C/C ++ 코드를 호출하는 데 사용됩니다. Java에 SO/DLL 파일을로드하는 경로 문제는 인터페이스 자체를 호출하는 데 복잡하지 않지만 필요한 로컬 인터페이스 라이브러리를로드하는 데 많은 시간이 걸립니다.
위의 것은 이러한 기본 Java 지식 포인트 및 기술 포인트에 대한 내 견해와 소개에 대한 간단한 소개 일뿐입니다. 이 내용은 모두 수년에 걸쳐 Java 사용에 대한 요약에서 비롯된 것입니다. 방금 Java에 노출되었거나 Java에서 발전하려는 사람들에게 경험을 제공하기를 바랍니다. 나는 Java를 더 효율적으로 배우고 사용하고 귀중한 시간을 낭비하지 않기를 바랍니다. 이것에는 여전히 불완전한 내용이 있으며 향후 기사를 통해 추가됩니다. 개인 능력이 제한되어 있기 때문에 물론 약간의 오류와 누락이있을 것입니다. 필요한 사람들이 진정으로 도움이 될 수 있기를 바라 면서이 기사를 함께 개선하고 함께 토론 하고이 기사를 개선하는 데 오신 것을 환영합니다.
Java Knowledge Points의 위의 요약 - Java 초보자를위한 몇 가지 제안 (초보자를 위해 읽어야 함)은 내가 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.