일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Java
- 우분투
- ubuntu
- Ai
- 코딩테스트
- 자료구조
- 알고리즘
- Python
- docker
- 쿠버네티스
- 파이썬
- mysql
- Linux
- db
- 머신러닝
- 인공지능
- 깃
- LV 0
- Kubernetes
- 정처기
- 자바
- DevOps
- Lv 2
- programmers
- 프로그래머스
- 코테
- 리눅스
- git
- github
- 데이터베이스
- Today
- Total
목록Programming (21)
Myo-Kyeong Tech Blog
python 개발을 하다보면 코드의 흐름을 확인하거나 오류를 추적하기 위해 print를 많이 사용하게 됩니다. 하지만 더 조금 더 복잡한 애플리케이션을 개발하거나, 운영 환경에서 문제를 모니터링하려면 print 대신 logging 모듈을 사용하는 것을 더 권장합니다.왜 print 대신 logging을 사용해야 할까?print 는 단순한 디버깅에는 유용할 수 있지만, 큰 애플리케이션이나 운영 환경에서는 logging이 더 유리한 점이 많습니다.1. 로그 레벨을 통한 중요도 구분logging 모듈은 메시지의 중요도에 따라 로그 레벨을 제공하여, 상황에 맞게 로그를 분류할 수 있게 해줍니다. DEBUG개발 시 디버깅을 위해 사용하는 가장 낮은 수준의 로그INFO일반적인 정보 메시지로, 정상적인 실행 과정을 ..
PDB ( Python Debugger ) Python 코드 디버깅을 위한 표준 라이브러리 코드 실행 중에 프로그램을 일시 중지하고 상태를 검사하거나 변수를 조사하여 버그를 찾을 수 있음 프로그램 실행 중에 인터랙티브하게 상호작용할 수 있는 디버깅 환경을 제공 Pdb 사용 방법 디버깅 모드 설정 디버깅이 필요한 지점에 'import pdb; pdb.set_trace()' 코드를 추가 프로그램 실행 중에 이 코드를 만나면 디버거가 시작 import pdb; pdb.set_trace() [사용 예제] # debug_ex.py # 사용자로부터 두 개의 숫자를 입력받아, 그 합과 곱을 출력하는 코드 def multiply_two_numbers(number1, number2): result = number1 * ..
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. 스레드 생성 및 관리 비용 : 요청 처리 속도보다 요청이 빠르게 늘어나면 끊임없이 새로운 스레드가 생성된다. 이는 메모리 ..
우선순위 큐(Priority Queue) 란? 데이터의 '우선순위'에 따라 데이터를 관리하는 자료구조 '큐(Queue)'라는 자료구조를 확장한 개념 단순히 데이터를 선입선출(FIFO, First In First Out)하는 방식 대신 데이터마다 설정된 '우선순위'에 따라 데이터의 순서가 정해지는 점이 큐와 다름 이해하기 쉽게 예를 들면, 병원의 응급실에서 환자를 처리하는 방식을 생각해 볼 수 있다. 응급실에선 누가 먼저 왔는지 보다는 환자의 상태가 얼마나 심각한지에 따라 순서가 결정된다. 즉, 상황이 급하거나 중요한 환자가 먼저 치료를 받게 된다. 이처럼 '긴급성'이라는 우선순위에 따라 환자의 치료 순서가 정해지는 것이 우선순위 큐와 유사하다. 우선순위 큐(Priority Queue) 사용 파이썬에서 우..
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); /..