일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- Kubernetes
- 자바
- ubuntu
- 머신러닝
- 코딩테스트
- mysql
- 인공지능
- 데이터베이스
- 코테
- Java
- 파이썬
- Lv 2
- db
- 깃
- 우분투
- git
- 프로그래머스
- DevOps
- 자료구조
- Python
- 정처기
- programmers
- github
- LV 0
- 알고리즘
- docker
- Ai
- 리눅스
- 쿠버네티스
- Today
- Total
목록Programming/Java (16)
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 예외..
익명 클래스란? 이름 없이 한 번만 사용되는 클래스 클래스 선언과 객체의 생성이 동시에 이루어짐 보통 GUI 애플리케이션의 이벤트 리스너, 스레드 등 즉석에서 생성하는 데 사용 new className() { // methods and fields }; 익명 클래스 사용 익명 클래스를 사용하면 클래스 선언을 생략하고 코드를 간결하게 만들 수 있다는 점이 가장 큰 장점인데요. 특히 한 번만 사용되는 이벤트 리스너 같은 경우에 매우 유용합니다. 또한, 익명 클래스는 해당 클래스가 사용되는 곳에 직접 코드를 작성하므로 코드를 읽는 사람이 이해하기 쉬운 장점을 가지고 있습니다. [익명 클래스를 사용하지 않는 경우] import java.awt.event.*; import javax.swing.*; class M..
java.io.DataInputStream 설명 'FileInputStream' 클래스는 파일의 내용을 바이트 단위로 읽어들이는 기능을 제공합니다. ['FileInputStream'만을 사용하는 경우] try { FileInputStream fis = new FileInputStream("data.bin"); int i = fis.read(); i = i
오버로딩(Overloading) 같은 이름의 메서드를 여러 개 가지면서 매개변수의 유형과 개수가 각각 다른 것을 의미 매개변수에 따라 동일한 이름의 메서드가 다르게 작동하도록 하는 기능 예를 들어, '더하기' 함수를 만든다고 가정해보겠습니다. 이 함수는 두 개의 정수를 더하는 기능, 두 개의 실수를 더하는 기능, 또는 두 개의 문자열을 연결하는 기능 등을 수행할 수 있습니다. 함수의 이름은 같지만, 매개변수의 유형과 개수가 다르므로 이를 '오버로딩' 이라고 합니다. 또한, 자주 사용하는 'System.out.println' 메서드도 매개변수에 따라 서로 다른 동작을 하는 오버로딩의 전형적인 예입니다. System.out.println(1); // 정수 출력 System.out.println(1.0); /..
'java.util.stream.IntStream' 의 주요 메서드를 정리한 글입니다. IntStram 이란? Java8에서 데이터를 더 효과적으로 처리할 수 있는 새로운 기능인 Stream API 중 한 부분. 'int' 에 대한 순차 및 병렬 집계 연산을 수행하는 데 사용 반복문 없이도 배열이나 컬렉션의 데이터를 처리할 수 있음 IntStram 주요 메서드 import java.util.stream.IntStream; 1. range와 rangeClosed 'range' 와 'rangeClosed' 메소드는 주어진 범위 내 순차적인 정수 스트림을 반환 'range'는 마지막 정수를 포함하지 않는 반면, 'rageClosed'는 마지막 정수를 포함 IntStream.range(1, 5).forEach(..
클래스 변수 (Class Variables) 클래스의 모든 인스턴스가 공유하며, 이 변수들은 클래스가 메모리에 로드될 때 생성 클래스 변수는 JVM의 Method Area라고 불리는 영역에 저장됨 한 번 로딩된 클래스는 중복해서 로딩되지 않음. 인스턴스 변수 (Instance Variables) 해당 클래스의 객체(인스턴스)가 생성될 때마다 메모리에 생성 인스터스 변수는 Heap 메모리 영역에 저장됨 클래스 변수와 인스턴스 변수 생성 시점과 메모리 영역 예시 public class Exam0140 { static class A { static int v1; int v2; } public static void main(String[] args) { A.v1 = 100; A p = new A(); p.v2 ..
substring() 문자열의 특정 부분을 추출하는 데 사용 두 가지 버전 - 시작 인덱스만 제공, 시작 인덱스와 끝 인덱스 모두 제공. String s = "Hello World"; System.out.println(s.substring(6)); // 출력: World System.out.println(s.substring(0, 5)); // 출력: Hello charAt() 주어진 인덱스에 있는 문자를 반환 String s = "Hello World"; System.out.println(s.charAt(0)); // 출력: H length() 문자열의 길이 반환 String s = "Hello World"; System.out.println(s.length()); // 출력: 11 contains()..