분류 전체보기(324)
-
[Java] hashCode() - equals() 재정의
hashCode() / equals() - 둘다 Java의 Object 클래스에 정의되어 있는 메소드이다 따라서, Java의 모든 객체는 equals(), hashCode()를 상속받는다 hashCode()? - 해싱기법에 사용되는 "해시함수"를 구현한 메소드이다 해시함수는 찾고자하는 값을 입력하면, 해당 값이 저장된 위치를 알려주는 해시코드를 return한다 - 일반적으로 해시코드가 동일한 두 객체가 존재하는 것은 가능하다 Object클래스에 정의된 hashCode()는 객체의 주소값으로 해시코드를 생성해서 return한다 32bit JVM : 서로 다른 두 객체는 절대로 동일한 해시코드를 가질 수 없다 64bit JVM : 객체끼리 해시코드가 중복될 수 있다 >> 따라서, 클래스의 인스턴스 변수 값으..
2022.02.20 -
[Network] 네트워크 계층 : IP
네트워크 계층 프로토콜 IP 프로토콜 - Addressing 방식 지정 - IP 데이터그램의 형식 - 패킷 Handling 방식 >> Data의 전송 관련 제어 프로토콜 >> Data Plane 라우팅 프로토콜 - Packet의 경로를 결정 RIP / OSPF / BGP / .... >> Control Plane ICMP 프로토콜 - Packet의 에러 보고 - 라우터의 신호 제어 >> 에러/신호 관련 제어 프로토콜 IP 데이터그램 형식 (IPv4) 고정 헤더 : Version / Header Length / TOS(Type of Service) / Total Length / Identification / Flags / Fragment offset / TTL(Time to live) / Protocol ..
2022.02.18 -
[Java] 변수의 선언위치
변수 변수 종류 선언 위치 생성시기 전역변수 클래스 변수 (static) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 인스턴스가 생성되었을 때 지역변수 클래스 이외의 영역 (메소드 / 생성자 / 초기화 블럭 내부) 변수 선언문이 수행되었을 때 클래스 변수 (static) - static이 붙은 모든 변수 - 클래스내의 어디서든 사용이 가능하다 :: 공유가 자유롭다 - 인스턴스 없이 바로 사용할 수 있다 :: 클래스이름.클래스변수 - 클래스가 메모리에 로딩될 때 생성되고, 프로그램 종료까지 유지된다 - 어디서 사용하든 해당 변수에 대해서는 전부 공통적인 값을 가지고 있다 - JVM내에 메소드 영역에 생성된다 >> 클래스 멤버(static)은 클래스 멤버만 호출 가능하다 인스턴스 변수 - 클래스의..
2022.02.17 -
[Java] 가변인자
가변인자 선언 :: '타입... 변수명' - JDK1.5부터 메소드의 매개변수를 동적으로 지정해 줄 수 있게 되었다 :: 가변인자 가능 파이썬의 *args와 비슷한 역할을 한다 public class test3{ public static void main(String[] args) { System.out.println(getSum(1, 2, 3, 4, 5)); System.out.println(getSum(1, 5, 10)); System.out.println(getSum(new int[] {10, 20, 30, 40, 50})); } static int getSum(int... args){ int sum = 0; for(int n : args) sum += n; return sum; } } ------..
2022.02.17 -
[Java] 얕은 복사 / 깊은 복사
얕은 복사 (Shallow Copy) - "주소값"을 복사한다 따라서, 실제 참조하고 있는 값이 동일하다 - "="연산자는 얕은 복사를 수행 >> 따라서, 한 쪽에서 Update가 되면, 주소값을 참조하고 있는 다른쪽도 같이 Update된다 import java.util.*; public class test3{ public static void main(String[] args) { int [] a = {1, 2, 3, 4, 5}; int [] b = a; // shallow copy a[0] = 5; b[4] = 3; /* 예상 a : 5 2 3 4 3 b : 5 2 3 4 3 */ System.out.println("Array a : " + Arrays.toString(a)); System.out.p..
2022.02.17 -
[Java] 이름이 존재하는 반복문?
일반적인 반복문에서의 break / continue - break문이나 continue문을 통해서 해당 반복문의 종료 or 시작부분으로 돌아가게 된다 break문을 통해서 여러개의 반복문을 탈출하지 못하고, 오직 단 하나 :: break문 자신이 속해있는 for문만 탈출이 가능하다 public class test3{ public static void main(String[] args) { for(int i=2; i
2022.02.17 -
[Network] 네트워크 계층 : Router
Router 기능 1. Router Processor가 라우팅 알고리즘/프로토콜을 수행해준다 Control Plane :: 라우팅 기능을 수행하기 위해서 라우팅 프로토콜 메시지를 주고받음 Packet의 경로를 결정해준다 소프트웨어가 구현한다 2. Forwarding :: 입력 Link → 출력 Link로 Packet을 포워딩한다 Data Plane :: user의 Data를 라우팅 결과(경로)를 이용해서 포워딩 user의 Data를 빨리 전달하기 위해서 하드웨어로 구현 1. Packet이 Input Port로 들어온다 2. Input Port에서 Switching을 통해서 Output Port로 내보내진다 스위칭 구조(Switching Fabric)은 3가지가 존재 Input Ports Physical ..
2022.02.17 -
[Network] 네트워크 계층 : 가상 회선 - 데이터그램
네트워크 계층 - 송신 Host → 수신 Host로 Packet 전달을 담당하는 계층 ※ Transport Layer : 송신 Process → 수신 Process로 Packet 전달 - 모든 Host와 Router에 Network Layer Protocol에 내장되어 있다 송신 Host :: Network Layer 1. Transport Layer로부터 세그먼트를 받는다 2. 해당 세그먼트에 IP 헤더를 붙여서 데이터그램을 생성 >> 캡슐화 >> 송신측 Network Layer가 데이터그램을 송신 Host → 수신 Host로 보내준다 수신 Host :: Network Layer 1. 받은 데이터그램에서 IP헤더를 떼어내서 조사 >> 역캡슐화 2. 데이터그램에서 세그먼트를 추출해서 Transport L..
2022.02.16 -
[Network] 트랜스포트 계층 : TCP
TCP 1. Client와 Server 서로 1:1 통신을 한다 - Server는 Client별로 소켓을 보유하고 있기 때문에, 1:1로 양방향 통신이 가능하다 - 3-way handshake를 통해서 TCP 연결을 하면 소켓이 생성된다 2. 신뢰적이고, 순차적인 Data를 전달한다 - UDP와 달리, TCP는 Data를 바이트 스트림으로 인식 각 Data별로 Boundary가 존재하지 않는다 일단 Data를 TCP Buffer에 저장해둔다 혼잡/흐름 제어에 따라서 Data를 전송한다 이때, Data는 순차적인 바이트 스트림이므로 Window Size씩 전송이 된다 >> TCP는 Data의 Boundary가 존재하지 않고, 하나의 연속적인 바이트 스트림으로 인식 3. 연결지향형 서비스를 제공한다 - Cl..
2022.02.15 -
[Network] 트랜스포트 계층 : 신뢰성 있는 데이터 전송의 원리
(1) Checksum :: Packet에 오류가 있는지 확인 ▶ 송신측 1. 보내려는 세그먼트에서 체크섬을 계산 세그먼트 값들을 16비트로 나눠서 각각의 값을 더한후, 1의 보수를 취하면 체크섬이 계산된다 2. 계산된 체크섬 값을 세그먼트의 체크섬 필드에 insert해서 수신측으로 전달 ▶ 수신측 1. 수신된 세그먼트의 체크섬 값을 계산한다 먼저 체크섬 필드를 0으로 설정하고, 송신측에서 계산하는 것과 동일하게 계산 2. 수신된 세그먼트의 체크섬 필드의 값과 계산한 체크섬 값이 동일한지 확인 동일하면 오류 X 다르면 오류 O (2) Acknowledgement / Negative-Acknowledgement :: Packet에 오류가 있는지 없는지 응답해주기 - Receiver가 Sender에게 Pac..
2022.02.13 -
[Network] 트랜스포트 계층 : UDP
UDP 1. Network-Layer :: IP에 최소한의 기능만 추가한다 - 다중화/역다중화 - 오류 검사 (체크섬) 2. "best effort" 서비스를 제공 - Network-Layer가 주는 메시지 그대로 Application-Layer로 전달해준다 - 원본 Data와 뭐가 다르고, 어떠한 문제가 생겼는지 파악할 수 없다 ex) Data 손실 / Data의 순서가 어긋난채로 전달 UDP는 Data의 Boundary를 명확히 지킨다 각각의 Data를 독립적으로 전달한다 (Boundary가 명확) 3. 비연결형 서비스 - 핸드셰이킹을 통한 연결을 확립하지 않는다 :: 일방적으로 전달 - UDP 세그먼트(메시지)들은 서로 독립적으로 전달된다 각 메시지들은 자신의 목적지로만 전달된다 :: 서로 상관 X..
2022.02.13 -
[Network] 트랜스포트 계층 : Transport Layer
Transport Layer - 각 End System(Host)의 Process간의 논리적 통신을 제공 송신측 Host Application-Layer에서 전달된 메시지를 세그먼트로 분할해서 Network-Layer로 전달 수신측 Host Network-Layer에서 온 각 세그먼트들을 결합해서 Application-Layer로 전달 Network-Layer vs Transport-Layer ▶ Network-Layer - Host들 사이의 논리적 통신을 제공 출발지 Host → 목적지 Host로 전달 ▶Transport-Layer - Process들 사이의 논리적 통신을 제공 - Network-Layer에 의존적이고, Network-Layer의 기능을 강화 목적지 Host로 온 메시지 → 목적지 Ho..
2022.02.13