1. UDP란 User Datagram Protocol 발신자가 일방적으로 수신자에게 데이터를 보내는 방식 TCP보다 데이터 전송속도가 빠르다.(연결 요청 및 수락하는 과정이 없기 때문에) TCP처럼 고정회선이 아니라 여러 회선을 통해 데이터가 전송된다. ➡️ 데이터가 순서대로 전송되지 않거나, 잘못된 회선으로 인한 데이터 손실이 발생할 수 있다. 데이터 전달의 신뢰성이 중요한 경우 TCP를 사용해야 할 것 2. DatagramSocket, DatagramPacket UDP네트워킹을 위해서 자바에서는 java.net패키지에 DatagramSocket, DatagramPacket클래스를 제공한다. DatagramSocket : 데이터의 수신, 발신점 DatagramPacket : 주고 받는 데이터 3. 서..
1. TCP란 전송용 프로토콜 중 하나로 연결형 프로토콜이다. 상대방이 연결된 상태에서 데이터를 주고 받는 형식이다. 연결이 된 상태로 데이터를 주고 받기 때문에 보낸 순서대로 전달이 되며, 손실이 발생하지 않는다. IP와 함께 사용하기 때문에 TCP/IP 라고 흔히 부른다. 2. TCP통신 흐름 클라이언트가 연결을 요청한다. 서버 쪽에서 연결을 수락한다. (통신 회선이 고정된다.) 데이터를 전달한다. 3. 서버 1) SeverSocket 객체 생성 // #1 ServerSocket serverSocket = new ServerSocket(50001); // #2 ServerSocket serverSocket = new ServerSocket(); serverSocket.bind(new InetSocke..
java.io, java.nio.file 패키지는 파일과 디렉토리 정보를 가지고 있는 File, Files 클래스를 제공한다. Files는 File을 개선하여 더 많은 기능을 가지고 있다. 1. File 1) 객체 생성 방법 File file = new File("파일의 경로"); 2) 파일 존재 여부 확인하기 boolean isExist = file.exist(); 3) 파일이 존재하지 않는다면 메서드 설명 boolean createNewFile() 새로운 파일을 생성한다. boolean mkdir() 새로운 디렉토리를 생성한다. boolean mkdirs() 경로상 없는 모든 디렉토리를 생성한다. 4) 파일이 존재한다면 메서드 설명 boolean delete() 파일 또는 디렉토리 삭제 boolea..
[디자인 패턴] 디자인 패턴(Design Pattern)이란 1. 디자인 패턴(Design Pattern)이란 설계에 자주 사용하는 패턴들을 정형화 하여 유형별로 정해두고 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿을 뜻한다. 2. 디자 hyunbenny.tistory.com 1. 어댑터 패턴(Adapter Pattern)이란 클래스의 인터페이스를 다른 인터페이스로 변환하는 패턴이다. 함께 동작할 수 없는 클래스들이 함께 동작할 수 있도록 해준다. 기존의 코드를 수정하지 않고 코드를 재활용할 수 있다는 장점이 있다.(SOLID 중 OCP를 따른다.) 2. 어떤 경우 사용하는가 기능적으로는 문제없이 동작하는 코드가 단지 인터페이스 차이로 인해 호환되지 않아 사용할 수 없는 경우..
1. 직렬화란 객체를 출력하기 위해서 필드 값들을 일렬로 늘어선 바이트로 변경하는 것을 말한다. 그렇다면 역직렬화(Deserialization)이란 직렬화된 바이트를 객체의 필드 값들로 다시 복구 시키는 것을 말한다. 2. Serializable 인터페이스 아무런 메서드와 필드가 없다 ➡️ 객체를 직렬화할 수 있다고 알려주는 역할만 한다. 자바는 Serializable을 구현한 클래스만 직렬화 할 수 있도록 제한하고 있다. 클래스의 인스턴스 필드 값들은 직렬화의 대상이다. 하지만, static 필드 값과 transient로 선언된 필드값은 직렬화에서 제외된다. 3. serialVersionUID 위에서 말했듯이 직렬화, 역직렬화를 하는데 있어서 기본 전제조건은 동일한 클래스여야 한다는 것이다. 하지만 동..
[Java] 데이터 입출력(1) 데이터 입출력이란 키보드, 파일 또는 프로그램으로부터 입력되거나, 모니터, 콘솔, 파일에 저장 및 출력되는 것들을 데이터 입출력이라 한다. 1. 입출력 스트림 1) 입출력 스트림이란 위의 정의 hyunbenny.tistory.com 1. 보조 스트림 다른 스트림과 연결되어서 여러가지 기능을 제공해주는 스트림 보조 스트림 단독으로는 입/출력 기능을 수행할 수 없다. ➡️ 직접 입/출력 스트림에 연결해서 사용해야 한다. 보조 스트림은 여러개를 연결하여 스트림 체인으로 구성할 수 있다. 1) 보조 스트림 연결 방법 보조 스트림을 생성할 때 생성자의 매개변수로 입/출력 스트림을 넣어준다. InputStream is = new FileInputStream(""); InputStre..
1. 동시성과 병렬성 1) 동시성이란 하나의 코어(CPU)에서 여러 쓰레드가 번갈아 가며 작업을 실행하는 것을 말한다. 한 시점에 하나의 작업만 실행한다. 하지만 처리속도나 번갈아 작업하는 것이 워낙 빠르기 때문에 동시에 처리되는 것처럼 보이는 것이다. 2) 병렬성이란 멀티 코어를 각각 이용하여 병렬로 작업을 실행하는 것을 말한다. 한 시점에 여러개의 작업을 동시에 실행하기 때문에 동시성보다는 작업효율이 좋다. a. 데이터 병렬성 전체 데이터를 분할하여 서브 데이터로 만들고, 이 서브 데이터를 병렬로 처리하는 것을 말한다.(자바 스트림이 데이터 병렬성을 구현한 것) b. 작업 병렬성 서로 다른 작업을 병렬 처리하는 것을 말한다.(클라이언트의 요청을 각각 다른 쓰레드에서 별도로 처리하는 서버 프로그램) 2..
1. 벨만-포드 알고리즘이란 그래프에서 최단 거리를 구하는 알고리즘 2. 특징 음수 가중치 에지가 있어도 로직이 수행이 가능하다. 전체 그래프에서 음수 사이클의 존재 여부를 판단할 수 있다. 3. 알고리즘 로직 1) 주어진 데이터를 Edge리스트로 그래프로 구현한 후, 거리 배열의 값을 업데이트한다. Edge를 중심으로 동작하기 때문에 그래프를 Edge리스트로 구현한다. 최단 경로 배열은 출발노드는 0, 나머지는 무한대(99,999,999 혹은 INF)로 초기화한다. 출발 노드가 방문한 적 없는 노드일 때는 값을 업데이트 하지 않는다. if(출발 노드의 거리 배열의 값 + Edge 가중치