일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- docker
- git
- 데이터베이스
- ubuntu
- Lv 2
- 우분투
- Kubernetes
- Java
- LV 0
- 프로그래머스
- 파이썬
- 정처기
- DevOps
- mysql
- db
- Ai
- 머신러닝
- programmers
- 인공지능
- 자료구조
- 코테
- Linux
- Python
- 리눅스
- 코딩테스트
- 깃
- 알고리즘
- 쿠버네티스
- 자바
- github
- Today
- Total
목록자바 (27)
Myo-Kyeong Tech Blog
2023.07.16 - [Programming/Java] - [ JAVA ] 스레드 풀(Thread Pool) - Thread Pool을 사용해야 하는 이유 [ JAVA ] 스레드 풀(Thread Pool) - Thread Pool을 사용해야 하는 이유 Thread-per-Request 모델이란? 서버 요청이 있을 때마다 새로운 스레드를 생성하고 처리하는 방식 request : Thread = 1 : 1 로 매핑되어서 하나의 request를 하나의 Thread가 처리하는 방식 Thread-per-Request 모델 data04190.tistory.com 이전 글에서 Thread Pool이 왜 필요한지에 대해 설명했었는데요. 이번 글에서는 그 이유를 바탕으로 직접 Java 코드로 Thread Pool을 구..
Thread-per-Request 모델이란? 서버 요청이 있을 때마다 새로운 스레드를 생성하고 처리하는 방식 request : Thread = 1 : 1 로 매핑되어서 하나의 request를 하나의 Thread가 처리하는 방식 Thread-per-Request 모델 한계 만약 Thread per request 모델의 동작 방식이 서버에 들어오는 요청마다 Thread를 새로 만들어서 처리하고 처리가 끝난 스레드를 버리는 방식으로 동작한다면 어떤 문제점이 발생할까? 1. 스레드 생성에 필요한 시간 : 스레드 생성에는 일정 시간이 소요되므로, 이로 인해 요청 처리가 늦어질 수 있다. 2. 스레드 생성 및 관리 비용 : 요청 처리 속도보다 요청이 빠르게 늘어나면 끊임없이 새로운 스레드가 생성된다. 이는 메모리 ..
Stateful 방식이란? 서버가 클라이언트의 상태 정보를 계속 유지하며 서버 간의 연결을 유지하는 방식 클라이언트가 요청을 보내면, 서버가 그 요청을 처리하고 클라이언트의 상태 정보를 업데이트 클라이언트가 다시 요청을 보낼 때 서버는 클라이언트 상태 확인하고 이를 기반으로 요청 처리 Stateful 방식 활용 예시 온라인 채팅 어플리케이션 : 온라인 채팅은 클라이언트 간 실시간 메시지 교환을 위해 상태 정보를 유지해야 합니다. 클라이언트가 채팅에 참여하고 있는 동안 상대방의 메시지를 수신하고 전송할 수 있어야 하므로, 클라이언트와 서버 간의 연결을 유지하는 Stateful 방식이 적합합니다. 온라인 게임 : 온라인 멀티플레이어 게임에서는 플레이어 간의 실시간 상호 작용과 게임 상태 정보를 유지해야 합니..
예외 처리 (Exception) 예외(Exception) : 프로그램이 실행되는 동안 발생할 수 있는 비정상적인 조건이나 오류 상황 프로그램 실행 중에 발생할 수 있는 예외 상황을 대비하여 프로그램이 중단되지 않고 정상적으로 계속 실행될 수 있도록 하는 것 Try-Catch-Finally 문법 try{} : 예외가 발생할 수 있는 코드 catch(예외 유형 변수){} : 예외를 처리하는 코드 finally {} : 마무리를 수행하는 코드, 항상 실행되는 코드 try { // 예외가 발생할 수 있는 코드 } catch (ExceptionType1 e) { // ExceptionType1 예외가 발생했을 때 처리할 코드 } catch (ExceptionType2 e) { // ExceptionType2 예외..
java.io.DataInputStream 설명 'FileInputStream' 클래스는 파일의 내용을 바이트 단위로 읽어들이는 기능을 제공합니다. ['FileInputStream'만을 사용하는 경우] try { FileInputStream fis = new FileInputStream("data.bin"); int i = fis.read(); i = i
코딩테스트 연습 - 원하는 문자열 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 알파벳으로 이루어진 문자열 myString과 pat이 주어집니다. myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요. 단, 알파벳 대문자와 소문자는 구분하지 않습니다. 제한사항 1 ≤ myString의 길이 ≤ 100,000 1 ≤ pat의 길이 ≤ 300 myString과 pat은 모두 알파벳으로 이루어진 문자열입..
코딩테스트 연습 - 괄호 회전하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) ..
코딩테스트 연습 - 멀리 뛰기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567..
코딩테스트 연습 - N개의 최소공배수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요...
코딩테스트 연습 - 예상 대진표 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼..