이 글을 쓰는 목적은 주로 몇 가지 기본 Java 지식 포인트와 관련하여 수년간 Java를 사용하면서 얻은 경험을 요약하는 것입니다. 따라서 이제 막 Java를 시작한 프로그래머와 계획 중인 사람들과도 공유하고 싶습니다. Java 개발 업계에 처음 입문하시는 분들에게 Java를 더 잘 배우고 사용할 수 있도록 경험을 제공할 수 있기를 바랍니다.
1. JVM 관련(버전별 기능 포함) Java를 처음 접한 분들에게 JVM 관련 지식은 반드시 깊은 이해가 필요한 것은 아닙니다. 간단한 이해만으로도 충분합니다. 하지만 Java 경력이 3년 이상인 시니어 개발자에게 JVM을 모른다는 것은 거의 용납되지 않습니다. JVM은 Java를 실행하는 기본입니다. JVM을 모르는 사람이 Java 언어를 완벽하게 이해할 수 있다는 것은 믿기 어렵습니다. Java 경력 3년 이상의 개발자를 인터뷰할 때 JVM은 거의 필수 질문입니다. 물론, JVM이 기술 역량의 질을 결정하는 유일한 면접 질문은 아니지만, 자바 개발 역량의 수준을 입증할 수는 있습니다. JVM 카테고리에서 꼭 숙지해야 할 지식은 JVM 메모리 모델 및 구조기본 유형: int, long, float, double, boolean, . . .
4. 객체와 인스턴스, 객체 생성
이 역시 Java 캡슐화 기능의 기초입니다.
자바 프로세스 제어의 기초 일부 구문은 일반적으로 사용되지 않을 수 있지만 이를 이해해야 합니다. 그리고 적절한 장소에 사용하세요.
이것은 Java 개발자라면 누구나 마스터해야 하는 Java의 핵심 개념입니다. Java의 많은 기능이나 지식 포인트는 Java 객체 지향 프로그래밍 개념과 관련되어 있습니다. 내가 이해하기로 좋은 개발자는 이러한 기능(지식 포인트)을 스스로 이해해야 할 뿐만 아니라 이러한 객체가 Java의 객체 지향 프로그래밍 개념에 어떻게 반영되는지 알아야 하며 이는 개발자가 Java를 마스터하는 데 더 도움이 됩니다. , 기타 객체지향 프로그래밍 언어도 마찬가지입니다. 주요 지식 포인트는 다음과 같습니다.
객체 지향의 세 가지 주요 특성: 캡슐화, 상속, 다형성 각각의 정의 개념과 어떤 특성이 반영되는지, 각각의 사용 시나리오
정적 다중 디스패치, 동적 단일 디스패치의 개념
과부하의 개념과 사용법
상속: 인터페이스의 다중 구현, 기본 클래스의 단일 상속
추상, 추상 클래스, 인터페이스
다중 상태: 메소드 커버리지의 개념과 사용법
인터페이스 콜백
8. 정적
일상에서의 정적 속성 Java 개발에서도 자주 사용되는 키워드로 abstract, final 등의 키워드와 결합하여 사용할 수 있는지 등 static 키워드와 관련된 사용법과 다른 키워드와의 사용법을 이해해야 합니다.
숙달해야 할 주요 사항은 다음과 같습니다.
정적 속성의 정의 및 사용, 클래스 로드 시 초기화 방법
정적 메소드 정의 및 사용
정적 클래스 정의 및 사용
정적 코드 블록 정의 및 초기화 시점
9. 기본 지식 포인트
주로 체계적으로 분류되지 않은 흩어져 있는 Java 지식 포인트입니다. 일상적인 개발에도 많이 사용됩니다. 실제로 이 콘텐츠에는 더 많은 내용이 있지만 여기에 임시로 요약했습니다.
포함: 같음, 해시코드, 문자열/문자열 버퍼, 최종, 최종, 마무리
10. 컬렉션 프레임워크
자바 개발을 할 때 컬렉션 프레임워크를 꼭 사용할 필요는 없다고 할 수 있는데, 이는 매우 중요합니다. 그러나 여기서 지식 포인트는 어렵지 않지만 컬렉션의 내부 구현을 이해하는 것이 가장 좋습니다. 이는 다양한 시나리오에서 문제를 해결하는 데 적합한 프레임워크를 선택하는 데 도움이 되기 때문입니다. 예를 들어 10,000개의 요소가 있는 컬렉션에는 종종 다음을 수행해야 합니다. 판단 작업이 포함되어 있으며 컬렉션의 특성이나 내부 구현을 알면 올바른 선택을 하기 쉽습니다.
다음 콘텐츠가 여기에 포함됩니다(동시성 관련은 포함되지 않음):
수집 프레임워크 시스템: 기본 컬렉션, 맵
특정 컬렉션 구현 내용, List, Set, Map의 구체적인 구현, 내부 구조, 특수 메서드, 적용 가능한 시나리오 등
컬렉션 관련 도구 클래스 사용법 컬렉션, etc.
11. 예외 프레임워크
Java 개발에서는 예외를 그다지 심각하게 받아들이지 않을 수 있습니다. 일반적으로 예외가 발생하면 직접 발생하거나 임의로 처리할 수 있으며 프로그램의 전체 작동에 큰 영향을 미치지 않습니다. 그러나 엔터프라이즈 수준 디자인 및 개발에서는 예외 디자인 및 처리 품질이 시스템의 전반적인 견고성과 관련되는 경우가 많습니다. 개발자의 경우, 좋은 시스템의 예외 처리는 시스템에 흩어져 있는 많은 예외 처리 논리를 피하기 위해 통합되어야 하며, 예외는 제어 가능해야 하고 특정 예외가 발생한 후 처리하는 방법이 있어야 합니다. 따라서 예외 프레임워크는 매우 간단하지만 전체 엔터프라이즈 수준 애플리케이션 개발에서는 예외 처리가 매우 중요합니다. 예외를 잘 처리하려면 Java의 예외 시스템을 이해해야 합니다.
이 부분에서 마스터해야 할 지식 포인트는 많지 않습니다. 주요 지식은 다음과 같습니다.
비정상 시스템:
Throwable
예외
RuntimeException
오류
RuntimeException 일반 Exception과의 차이점, 특정 처리 방법 등
12. Java IO
IO Java에서 파일 읽기만 하는 것이 아닙니다. 쓰기는 매우 간단하며 소켓 네트워크 읽기 및 쓰기와 같은 모든 입력 및 출력 작업도 포함됩니다. 예를 들어 표준 HTTP 요청에서 Post의 내용을 읽는 것도 출력 프로세스입니다...
IO의 경우 Java는 기본적인 입출력 관련 API를 제공할 뿐만 아니라 이를 단순화하는 일부 Reader도 제공합니다. 작업, 작성기 및 기타 API는 특정 개발(많은 수의 IO 작업과 관련된 프로젝트)에서도 매우 중요하며 일반적인 일상 개발(로그, 임시 파일 읽기 및 쓰기 등)에도 포함됩니다.
여기서 주요 지식 포인트는 다음과 같습니다.
기본 IO 시스템: InputStream, OutputStream, Reader/Writer, 파일 읽기, 다양한 스트림 읽기 포함 NIO의 개념을 이해하고, 구체적인 사용 방법 및 사용 시나리오
13. 멀티 스레드 동시성
멀티스레딩은 일반적으로 Java에서 어려운 영역으로 간주됩니다. 멀티스레딩은 특히 많은 수의 IO 작업이 차단되는 경우 CPU 사용량을 효과적으로 늘리고 전반적인 시스템 효율성을 향상시킬 수 있지만 제대로 사용하지 않으면 시스템이 크게 개선되지 않는 양날의 검이기도 합니다. 개선이 되지 않으며, 멀티스레드 간 디버깅 등의 문제도 발생하게 됩니다.
멀티스레딩에는 내용이 많습니다. 자바에서 처음 멀티스레딩을 사용하기 위해 익혀야 할 지식 포인트만 간략하게 설명하겠습니다. 앞으로는 사용 시나리오를 소개하겠습니다. 기회가 있을 때 몇 가지 고급 기능을 자세히 설명하겠습니다.
멀티스레딩 구현 및 시작
호출 가능과 실행 가능의 차이점
동기화, reentrantLock 기능 및 비교
스레드 풀
실행 결과를 얻기 위한 미래의 비동기 방식
동시 패키지
잠금
..
14. 네트워크
Java에서는 TCP 프로토콜과 UDP 프로토콜을 직접 운영할 수 있는 API도 제공합니다. 네트워크 성능을 강조해야 하는 경우 TCP/UDP를 직접 통신에 사용할 수 있습니다. Tomcat 등의 소스코드를 보면 이러한 관련 API의 사용법을 확인할 수 있습니다. 그러나 TCP는 일반적으로 직접적으로 사용되는 경우가 거의 없으며, 처리를 위해 MINA, Netty 등의 프레임워크를 사용하는 경우가 많다.
15. 시간 및 날짜 처리
거의 모든 애플리케이션의 경우 시간 및 날짜 처리를 우회할 수 없지만 JDK8 관련 API 사용 이전 시간은 친절하지 않다. 그 시대에는 Joda와 같은 시간대가 사용 가능했습니다. JDK8 출시 이후 새로운 Time API는 기본적으로 다른 프레임워크의 장점을 통합하여 직접 사용할 수 있습니다.
Java 개발자의 경우 API를 사용하여 시간과 날짜를 처리하는 데 능숙해야 합니다.
구체적인 지식 포인트는 더 이상 나열되지 않습니다. 앞으로 JDK8의 시간 및 날짜 API 사용법을 요약하는 특별 기사를 작성하겠습니다.
16.XML 파싱/JSON 파싱
사실 이 두 콘텐츠는 J2SE에는 없지만 일상적인 개발에서는 다른 콘텐츠와 상호 작용합니다. 프로그램에서 구성 파일과의 상호 작용은 점점 더 이 두 형식의 구문 분석과 분리될 수 없게 되었습니다.
그러나 개발자의 경우 XML/JSON 구문 분석의 몇 가지 특정 원칙과 방법을 이해할 수 있으면 각 특정 시나리오에서 프로그램을 더욱 효율적이고 강력하게 만드는 데 적합한 방법을 더 잘 선택하는 데 도움이 됩니다.
XML: DOM 구문 분석과 SAX 구문 분석의 기본 원리와 각각의 적용 가능한 시나리오를 이해해야 합니다.
JSON: 몇 가지 공통적인 내용을 이해해야 합니다. Jackson, FastJson, Gson 등과 같은 JSON 프레임워크 사용
17. Maven의 사용
Maven은 Java의 일부는 아니지만 Maven은 Java 개발에 있어 혁명적입니다. . 종속성 도입 및 관리부터 개발 프로세스의 업데이트 및 릴리스, 심지어 버전 업데이트까지 Maven을 사용하면 개발 프로세스의 복잡성을 크게 단순화하여 많은 시간을 절약할 수 있습니다. Maven은 Java 개발자의 표준이 되었다고 할 수 있습니다. 그러므로 나는 Maven을 Java 개발자에게 꼭 필요한 기본 지식 포인트라고 생각한다. 앞으로는 Maven 등을 사용하면서 경험과 기술을 추가할 것이므로 여기서는 자세히 다루지 않겠습니다.
18. Generics
이것은 실제로 JDK5에서 도입된 새로운 개념으로 Java 코드를 작성할 때 약간 편리합니다. 일반적으로 애플리케이션 개발이나 비즈니스 개발 시에는 제네릭 정의 등의 연산을 반드시 사용하지 않아도 되지만, 일부 기본적인 공용 컴포넌트를 개발할 때에는 필요할 때 이 부분을 자세히 살펴보시면 됩니다. 일반적으로 쉽게 사용하는 방법만 알면 됩니다.
19.
주석도 jdk5 이후에 도입되었습니다. Spring은 처음부터 xml을 표준 구성 파일로 사용하는 훌륭한 프레임워크입니다. 그러나 Spring 3 이후, 특히 spring-boot가 등장한 이후에는 xml 구성 파일을 단순화하기 위해 주석을 사용하는 것이 점점 더 대중화되었습니다. 개발자의 경우 xml 구성에서 많은 시간을 절약할 수 있습니다. 하지만 단점은 주석이 다양한 클래스에 분산되어 있다는 점입니다. xml과 달리 모든 구성을 전역적으로 이해하고 관리할 수 있으므로 모든 xml을 완전히 대체할 수 있는 방법은 없습니다. 일반 개발자의 경우 주석을 사용하는 것만으로도 충분합니다. 일부 공개적으로 조직된 개발자는 주석의 정의와 구현을 이해하고 필요할 때 자세히 살펴볼 수 있습니다.
20.RMI
RemoteMethodInvocation은 자바 언어 특유의 원격 호출 인터페이스로 비교적 간단하고 사용하기 편리하다. 그러나 언어 간 지원이 필요한 경우 웹 서비스와 같은 다른 방법을 사용하여 이를 지원해야 합니다. 일반적으로 프로그램은 RMI를 사용할 필요가 없지만 특정 상황에서는 RMI를 사용하여 프로그램의 원격 시작 및 중지를 제어했습니다.
21.JNI
Java에서 로컬 인터페이스 메소드를 호출할 수 있는 Java Native Interface는 일반적으로 C/C++ 코드를 호출하는 데 사용됩니다. 주목할 점은 Java에서 so/dll 파일을 로드할 때의 경로 문제입니다. 인터페이스 호출 자체는 복잡하지 않지만, 필요한 로컬 인터페이스 라이브러리가 로드되었는지 확인하는 데는 많은 시간이 걸리는 경우가 많습니다.
위 내용은 Java의 21가지 기술지식을 요약한 것입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. !