1) 그림에 맞게 코드작성하기(실습)
2) synchronized
synchronized는 자바에서 사용되는 키워드로, 멀티스레딩 환경에서 동기화를 위해 사용됩니다.
synchronized를 사용하면 한 순간에 오직 하나의 스레드만이 해당 블록 또는 메서드에 접근할 수 있습니다. 다른 스레드들은 해당 영역에 진입하기 위해 대기해야 합니다. 이를 통해 여러 스레드가 동일한 자원에 동시에 접근하여 발생할 수 있는 문제를 방지하고, 데이터의 일관성과 안전성을 유지할 수 있습니다.
synchronized는 크게 두 가지 방법으로 사용될 수 있습니다. 첫째, 인스턴스 메서드에 synchronized를 붙여 해당 메서드 전체를 동기화할 수 있습니다. 이 경우 해당 메서드는 해당 인스턴스에 대해 잠금(lock)을 획득하고, 다른 스레드들은 그 잠금이 풀릴 때까지 해당 메서드에 접근할 수 없습니다.
둘째, 특정 객체 또는 클래스에 대해 임의의 블록을 synchronized로 감싸서 동기화할 수 있습니다. 이 경우 해당 객체나 클래스에 대한 잠금을 획득하고, 다른 스레드들은 그 잠금이 풀릴 때까지 해당 블록에 접근할 수 없습니다.
synchronized는 스레드 간의 동기화를 단순하게 처리할 수 있는 강력한 도구이지만, 남발하면 성능 저하를 초래할 수 있으므로 신중하게 사용해야 합니다. 최근에는 java.util.concurrent 패키지의 동시성 컬렉션과 Lock 인터페이스 등을 사용하여 동기화를 관리하는 방법도 주로 추천됩니다.
3)OSI (Open Systems Interconnection) 7 계층
OSI (Open Systems Interconnection) 7 계층은 네트워크 프로토콜 아키텍처에서 사용되는 개념적인 계층 모델입니다. 이 모델은 컴퓨터 네트워크에서 데이터 통신이 이루어지는 과정을 일곱 개의 계층으로 분리하여 설명합니다. 각 계층은 특정한 기능과 역할을 가지며, 상위 계층과 하위 계층 사이에는 서비스 제공 및 이용에 대한 인터페이스가 정의되어 있습니다.
다음은 OSI 7 계층의 각 계층과 역할에 대한 간략한 설명입니다:
- 물리 계층 (Physical Layer): 네트워크의 물리적인 전송 매체와의 직접적인 상호작용을 담당합니다. 데이터를 전기적, 기계적, 물리적인 신호로 변환하여 전송합니다.
- 데이터 링크 계층 (Data Link Layer): 네트워크 상에서 인접한 노드 간의 신뢰성 있는 데이터 전송을 담당합니다. 오류 검출과 수정, 흐름 제어 등의 기능을 수행합니다.
- 네트워크 계층 (Network Layer): 다양한 경로 중에서 패킷을 전송하기 위한 최적의 경로를 선택하고, 라우팅을 수행합니다. 패킷의 목적지까지의 전송을 보장합니다.
- 전송 계층 (Transport Layer): 종단 간의 데이터 전송을 관리하고, 신뢰성 있는 전송을 제공합니다. 데이터 분할, 재조립, 흐름 제어, 오류 복구 등을 수행합니다.
- 세션 계층 (Session Layer): 양 끝단의 응용 프로세스 간의 대화 관리를 담당합니다. 세션의 생성, 유지, 종료 등을 관리합니다.
- 표현 계층 (Presentation Layer): 데이터 표현 방식의 독립성을 제공하며, 데이터 암호화, 압축, 형식 변환 등의 기능을 수행합니다. 응용 계층에 맞게 데이터를 변환합니다.
- 응용 계층 (Application Layer): 사용자와 직접 상호작용하는 응용 프로그램에 대한 서비스를 제공합니다. 이메일, 파일 전송, 웹 브라우징 등 다양한 응용 프로토콜이 이 계층에서 동작합니다.
4) 도메인과 호스트의 차이
도메인(Domain)과 호스트(Host)는 컴퓨터 네트워크에서 다른 개념을 나타냅니다.
도메인은 인터넷 상에서 식별하기 위해 사용되는 고유한 이름입니다. 도메인 이름은 일반적으로 계층적인 구조로 되어 있으며, 최상위 도메인(Top-Level Domain)과 서브도메인(Subdomain)으로 구성됩니다. 예를 들어, "example.com"과 같은 도메인 이름에서 "example"는 서브도메인이고, ".com"은 최상위 도메인입니다. 도메인은 웹 사이트, 이메일 서버, 네트워크 리소스 등을 식별하는 데 사용됩니다.
호스트는 네트워크에서 접속 가능한 컴퓨터나 장치를 가리킵니다. 호스트는 IP 주소를 갖고 있으며, 네트워크 상에서 고유한 식별자 역할을 합니다. 예를 들어, "www.example.com"에서 "www"는 호스트 이름입니다. 호스트는 일반적으로 도메인 이름과 결합하여 사용되어 웹 서버, 이메일 서버, FTP 서버 등 특정 서비스를 제공하는 컴퓨터를 가리킵니다.
간단히 말하면, 도메인은 인터넷 상에서 식별할 수 있는 이름이고, 호스트는 네트워크에서 서비스를 제공하는 컴퓨터나 장치를 가리키는 식별자입니다. 도메인은 호스트를 식별하는 데 사용될 수 있으며, 호스트는 도메인에 속할 수도 있습니다.
'JAVA 수업 > java 수업 기록' 카테고리의 다른 글
네트워크 입출력 정리 (0) | 2023.06.11 |
---|---|
멀티 스레드 정리 (0) | 2023.06.11 |
0608 수업 내용 (2) | 2023.06.08 |
0607 수업 내용 (2) | 2023.06.07 |
인터페이스의 세계로~~ (2) | 2023.06.05 |