[Java] 서버의 동시 요청 처리(스레드풀 이용)
Language/Java2023. 8. 14. 00:41[Java] 서버의 동시 요청 처리(스레드풀 이용)

이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 서버의 다중 작업 위와 같이 TCP와 UDP 서버에서는 accept()와 receive() 를 제외한 요청 처리 코드를 별도의 스레드에서 작업을 해야 서버에 들어오는 클라이언트의 무수한 요청을 동시에 처리할 수 있다. 스레드를 처리할 때 주의할 점은 클라이언트의 폭증으로 인한 서버의 과도한 스레드 생성을 방지해야 한다는 것이다. 자바에서는 이러한 과도한 스레드 생성을 방지하기 위해 스레드풀을 제공한다. 스레드풀은 작업 처리 스레드 수를 제한해서 사용하기 때문에 갑작스런 클라이언트 폭증이 발생해도 크게 문제가 되지 않는다. 다만 작업 큐의 대기 작업이 증가되어 클라이언트에서 응답을 늦게..

[Java] 백준 1302번 문제 (베스트 셀러)
자료구조 & 알고리즘/BOJ2023. 8. 13. 13:20[Java] 백준 1302번 문제 (베스트 셀러)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); HashMap ma..

[Java] 백준 1920번 문제 (수 찾기)
자료구조 & 알고리즘/BOJ2023. 8. 13. 08:42[Java] 백준 1920번 문제 (수 찾기)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); int arr[] = new int[N]; StringT..

[Java] UDP 네트워킹
Language/Java2023. 8. 13. 00:09[Java] UDP 네트워킹

이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. IP 주소로 프로그램들이 통신할 때는 약속된 데이터 전송 규약이 있다. 이것을 전송용 프로토콜이라고 부른다. 인터넷에서 전송용 프로토콜은 아래의 두 가지로 나뉜다. TCP(Transmission Control Protocol) : 우선 연결 후 데이터 전송 UDP(User Datagram Protocol) : 우선 데이터 전송 후 연결 UDP 네트워킹 UDP는 발신자가 일방적으로 수신자에게 데이터를 보내는 방식이다. TCP처럼 연결 요청 및 수락 과정이 없기 때문에 TCP보다 전송 속도가 상대적으로 빠르다. UDP는 고정 회선이 아니라 여러 회선을 통해서 데이터가 전송되기 때문에 특정..

[알고리즘] 이진 탐색
자료구조 & 알고리즘/알고리즘2023. 8. 12. 21:34[알고리즘] 이진 탐색

이 글은 누구나 자료 구조와 알고리즘(저자 : 제이 웬그로우)의 내용을 개인적으로 정리하는 글임을 알립니다. 정렬된 배열 정렬된 배열은 값이 항상 순서대로 있어야 한다는 점이다. 즉, 값을 추가할 때마다 적절한 셀에 넣어 배열의 값을 정렬된 상태로 유지한다. 이렇게 3, 17, 50, 202로 정렬된 배열이 있다고 가정할 때, 정렬된 배열에서는 값을 오름차순으로 유지하려면 적절한 위치에 75를 삽입해야 한다. 하지만 이는 말처럼 쉽지가 않다. 컴퓨터는 75를 올바른 위치에 바로 넣는 작업을 한 단계로 처리할 수 없다. 먼저 75가 들어갈 올바른 위치를 찾아야 하고, 이후 다른 값들을 옮겨 빈 공간을 만들어야 한다. 처음의 배열 상태로 돌아가보자. 1. 인덱스 0의 값을 확인해서 삽입하려는 값인 75가 왼..

[Java] 백준 11728번 문제 (배열 합치기)
자료구조 & 알고리즘/BOJ2023. 8. 12. 10:57[Java] 백준 11728번 문제 (배열 합치기)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws Exception { List A = new ArrayList(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(st...

[Java] TCP/IP 네트워킹
Language/Java2023. 8. 12. 00:44[Java] TCP/IP 네트워킹

이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. IP 주소로 프로그램들이 통신할 때는 약속된 데이터 전송 규약이 있다. 이것을 전송용 프로토콜이라고 부른다. 인터넷에서 전송용 프로토콜은 아래의 두 가지로 나뉜다. TCP(Transmission Control Protocol) : 우선 연결 후 데이터 전송 UDP(User Datagram Protocol) : 우선 데이터 전송 후 연결 TCP 네트워킹 TCP는 연결형 프로토콜로 상대방이 연결된 상태에서 데이터를 주고받는다. 클라이언트가 연결 요청을 하고 서버가 연결을 수락하면 통신 회선이 고정되고, 데이터는 회선을 통해 전달된다. 회선 고정 TCP/IP 통신에서는 클라이언트와 서버 간..

[Java] 백준 11729번 문제 (하노이 탑 이동 순서)
자료구조 & 알고리즘/BOJ2023. 8. 11. 12:56[Java] 백준 11729번 문제 (하노이 탑 이동 순서)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { static StringBuilder sb = new StringBuilder(); static void hanoi(int TopNum, int x, int y) { if (TopNum > 1) hanoi(TopNum - 1, x, 6 - x - y); sb.append(x + " " + y ).append("\n"); if (TopNum > 1) hanoi(TopNum - 1, 6 - x - y, y); } public static void main(String[] args) throws Exception { BufferedReader..

image