본문 바로가기

전체 글78

[Network] Protocol Layers 복잡한 시스템을 다루기 위해 network 를 layering 했다. Protocol layering 로 인해 복잡한 시스템의 관계를 확인할 수 있게 되었고 유지보수가 쉬워졌다. OSI 7 Layer 이름 전송 기본 단위 실제 프로토콜의 예 7 Layer Application Layer message, information, data HTTP, FTP, SMTP 6 Layer Presentation Layer zip, mp4, jpg, avi 5 Layer Session Layer 4 Layer Transport Layer segment TCP, UDP 3 Layer Network Layer packet, datagram IP, RIP, OSPF 2 Layer DataLink Layer frame 802.. 2022. 11. 6.
[Network] Components of a Computer Network 네트워크는 크게 network edge, access network, network core 로 구성되어 있다. Network Edge application 이나 end system 을 network edge 라고 한다. Access Network end system 을 edge router(first router) 에 물리적으로 연결하는 네트워크를 access network 라고 한다. residential access network, institutional access network, mobile access network 등이 있다. wired, wireless communication links 가 access networks 를 구성하는 데 사용된다 .또한, 이러한 commnunication .. 2022. 11. 6.
[Network] What is the Internet? Nuts-and-Bolts view 인터넷은 전 세계의 수십억의 computing devices 로 연결된 computer network 이다. 크게 host, communication links, packet swtiches 로 구성되어있다. host(end system) 인터넷에 연결되어 있는 computing device 를 host(end system) 이라고 한다. host 로 PC, server, smartphone, laptop 등이 있다. host 는 communication links 와 packet swtiches 의 네트워크로 인해 연결되어있다. end system 는 ISPs(Internet Service Providers)를 통해 인터넷에 접근한다. communication lin.. 2022. 11. 5.
[Java] 스레드(Thread)와 동기화(Synchronization) 스레드(Thread) 스레드는 실행 중인 프로그램/프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 보통 스레드 하나에 CPU의 코어 하나가 할당되어 동시에 실행이된다. 스레드는 동시에 독립적으로 실행이 되므로 동일한 실행결과를 보장할 수 없다. public Thread(Runnable target) { ... } Thread의 생성자는 매개변수 타입으로 java.lang.Runnable 인터페이스를 가진다. Runnable 인터페이스는 하나의 추상메서드인 void run() 을 가지는 함수형 인터페이스이다. Runnab.. 2022. 10. 11.
[Java] NIO 와 NIO.2 Path 클래스 Path pt1 = Paths.get("C:\\JavaStudy\\PathDemo.java"); Path pt2 = pt1.getRoot(); Path pt3 = pt1.getParent(); Path pt4 = pt1.getFileName(); Path 인터페이스는 경로를 표현하기 위한 인터페이스다. java.io.File 클래스를 대체하기 위해 정의된 인터페이스로 java.nio.file 패키지에 정의되어 있다. 인스턴스의 생성은 해당 파일/디렉토리의 존재 유무와 상관이 없고 실행한다고 하여 파일/디렉토리가 생성되는 것도 아니다. Path 인스턴스를 사용하여 파일이나 디렉토리의 정보를 담은 인스턴스를 생성할 수 있다. 파일 및 디렉토리 생성 public static Path creat.. 2022. 10. 2.
[Java] I/O 스트림 I/O 스트림 데이터의 흐름을 스트림(Stream)이라고 한다. 자바에서 입출력 대상에 상관없이 동일한 방법으로 입출력을 할 수 있도록 I/O 스트림 모델이라는 것을 정의했다. 자바 I/O 모델의 스트림을 I/O 스트림이라고 한다. 스트림 관련 클래스들은 java.io 패키지에 정의되어 있다. I/O 스트림은 크게 입력 스트림(Input Stream)과 출력 스트림(Output Stream)으로 나뉜다. 입력 스트림은 실행 중인 자바 프로그램으로 데이터를 읽어 들이는 스트림이고, 출력 스트림은 실행 중인 자바 프로그램으로부터 데이터를 내보내는 스트림이다. /** try-catch-finally **/ OutputStream out = null; try { out = new FileOutputStream(.. 2022. 9. 29.
[Java] 시각과 날짜의 처리 Instant 클래스 Instant now = Instant.now(); now.getEpochSecond(); Instant 클래스는 타임 라인의 특정 시점을 표현하는 클래스이다. 위의 코드 처럼 now 메서드를 사용하면 현재 시각 정보를 담은 인스턴스를 생성할 수 있다. '1970-01-01 00:00:00' 을 표준 자바 epcoh 이라고 한다. getEpcohSecond 메서드를 사용하면 표준 자바 epoch 을 기준으로 지나온 시간을 초 단위로 계산한 결과를 반환한다. Duration 클래스 Instant start = Instant.now(); ... Instant end = Instant.now(); Duration between = Duration.between(start, end); Sy.. 2022. 9. 24.
[Java] Stream 스트림(Stream) int[] arr = {1, 2, 3, 4, 5} /* example1 */ IntStream stm1 = Arrays.stream(arr); // 스트림 생성 IntStream stm2 = stm1.filter(n -> n%2 == 1);// 중간 연산 int sum = stm2.sum(); // 최종 연산 /* example2 */ int sum = Arrays.stream(arr) // 스트림 생성 .filter(n -> n%2 == 1) // 중간 연산 .sum(); // 최종 연산 Java 에서 데이터의 흐름을 생성할 수 있는데, 이러한 흐름을 스트림(Stream)이라고 한다. 배열이나 컬렉션 인스턴스를 다룰 때 for문이나 iterator를 사용하여 접근하였다. Java .. 2022. 9. 23.
[Java] Optional 클래스 null 과 NPE(NullPointerException) null은 참조형 타입의 기본 값이다. 어떠한 데이터 타입으로 구분되지 않는 모든 참조값에 할당될 수 있는 특수한 값이다. null이 저장된 참조변수를 대상으로 메서드 호출 등의 코드를 수행할 경우 예외가 발생하는데 그 예외를 NPE(NullPointerException)이라고 한다. NPE가 문제가 되는 이유는 컴파일 시점에는 예외가 발생하지 않다가 런타임 때 발생하기 때문이다. 기존에 NPE를 막기위해서는 null 여부를 체크하는 코드를 추가했다. String test = null; int len = test.length(); // NPE 발생 if (String != null) {// null check int len = test.lengt.. 2022. 9. 15.