전체 글 78

[Redis] AWS ElastiCache for Redis를 활용한 데이터 캐싱 설정

현재 다니는 회사에서 프로젝트 요구에 따라 Redis와 같은 인메모리 DB를 도입할 필요성을 느꼈습니다. 과거 Redis를 EC2에 설치해서 사용한 경험을 통해, 이번에도 Redis를 사용하기로 결정했고 관련 정보를 찾던 도중 AWS에서 2023년 12월에 ElastiCache for Redis Serverless를 출시했다는 따끈따끈한 소식을 접하게 되었습니다. 서버리스의 장점은 개발자가 인프라 관리에 들이는 노력을 대폭 줄일 수 있다는 것입니다. 하지만, 종종 성능 대비 높은 가격과 낮은 설정 자유도가 단점으로 작용합니다. 예시로 AWS Aurora MySQL Serverless v2는 기존 RDS MySQL보다 거의 두배 가까운 비용이 듭니다. 이에 Redis의 서버리스 버전도 비슷한 비용 문제가 ..

Infra & AWS 2024.04.13

설탕 과자 뽑기

h, w = map(int, input().split()) board = [] for i in range(h+1): board.append([0] * (w+1)) n = int(input()) for i in range(n): l, d, x, y = map(int, input().split()) if d == 0: # 가로 for j in range(l): board[x][y+j] = 1 else: # 세로 for j in range(l): board[x+j][y] = 1 for i in range(1, h+1): for j in range(1, w+1): print(board[i][j], end = " ") print() 문제 부모님과 함께 놀러간 영일이는 설탕과자(설탕을 녹여 물고기 등의 모양을 만든..

Algorithm 2024.03.17

(Python) 소수 연산

1. 반올림, 버림, 올림 # 반올림 s = 123.4567 rounded_s = round(s, 2) # 소수점 아래 2자리까지 반올림 print(rounded_s) # 출력: 123.46 # 올림 ceiled = math.ceil(3.14159) # 4 # 버림 import math floored = math.floor(3.14159) # 3 # 절삭1 truncated = int(3.14159) # 3 # 절삭2 import math truncated = math.trunc(3.14159) # 3 2. 정밀한 소수 연산 from decimal import Decimal, getcontext getcontext().prec = 10 # 정밀도 설정 result = Decimal('1.1') + Dec..

Python 2024.03.06

(Java) Generic 동작 원리 및 용도

해당 포스트는 JAVA의 Generic에 대한 동작 원리와 용도에 대한 내용을 포함하고 있습니다. Java에서 제네릭(Generic)은 다양한 타입의 객체를 다루는 메소드나 컬렉션 클래스에 타입 체크와 타입 캐스팅을 컴파일 시간에 처리할 수 있게 도와주는 프로그래밍 기법입니다. 제네릭을 사용하면 코드의 재사용성을 높이고, 타입 안정성을 강화할 수 있습니다. 제네릭의 동작 원리와 용도에 대해 쉽게 설명해 보겠습니다. 동작 원리 제네릭을 사용하면 클래스, 인터페이스, 메소드를 정의할 때 타입(Type)을 파라미터로 사용할 수 있습니다. 이 타입 파라미터는 실제 클래스 타입이 사용될 때까지 구체적인 타입을 지정하지 않고, 코드 작성 시점에는 추상적인 '타입 변수'로서 사용됩니다. 컴파일 시, 컴파일러는 이 타..

Java & Spring Boot 2024.02.12

(Java) .stream() 동작 원리 및 용도

해당 포스트는 JAVA의 .stream()에 대한 동작 원리와 용도에 대한 내용을 포함하고 있습니다. .stream()을 자주 사용하지만 해당 메소드의 동작 원리에 대한 막연한 궁금증이 생겨 글을 작성하게되었습니다. 동작 원리 1. 스트림 생성 : 스트림은 Collection 인터페이스의 stream() 메소드 호출, Arrays.stream(T array), 또는 Stream 인터페이스의 of(), generate(), iterate() 등의 메소드를 통해 생성됩니다. 스트림 생성 시 데이터 소스는 변경되지 않으며, 데이터의 추상적인 뷰만을 제공합니다. 2. 중간 연산(Intermediate Operations) : 필터링(filtering), 매핑(mapping), 정렬(sorting) 등 데이터 스..

Java & Spring Boot 2024.02.12

(Python) 유니코드 변환

ord() 용도: 주어진 단일 문자열(문자)의 유니코드 코드 포인트(정수 값)를 반환 입력: 단일 문자열 (예: 'A', '가') 반환값: 입력된 문자의 유니코드 코드 포인트를 나타내는 정수 (예: ord('A')는 65, ord('가')는 44032) s = "A" print(ord(s)) # 결과 65 chr() 용도: 주어진 유니코드 코드 포인트(정수 값)에 해당하는 문자를 반환 입력: 유니코드 코드 포인트를 나타내는 정수 (예: 65, 44032) 반환값: 입력된 유니코드 코드 포인트에 해당하는 문자열 (예: chr(65)는 'A', chr(44032)는 '가') n = 65 print(chr(n)) # 결과 A​ 참고사항 아스키코드 (ASCII) - 가장 기본적인 표준화된 문자 인코딩 방식 전체..

Python 2024.02.02