분류 전체보기 59

[JAVA] 디자인패턴 - State 패턴

State 패턴 State 패턴 소개 State 패턴은 객체의 상태를 관리하고 해당 상태에 따라 객체의 행동을 변경하는 디자인 패턴입니다. 이 패턴을 사용하면 객체의 상태 전이를 캡슐화하고, 유지보수와 확장이 쉬운 구조를 만들 수 있습니다. 사용 이유 객체가 여러 상태에 따라 다른 행동을 해야 할 때 State 패턴을 사용하면 코드 유지보수가 용이하며 가독성이 높아집니다. 장점 코드의 가독성과 유지보수성이 향상됩니다. 객체의 상태 전이를 명확하게 관리할 수 있습니다. 단점 상태 클래스가 많아질수록 클래스의 수가 늘어날 수 있습니다. 스토리 : 은행 계좌 상태 관리 이 예제는 은행 계좌의 상태를 관리하는 패턴을 구현한 것입니다. 계좌는 두 가지 상태를 가집니다. 열린 상태 (Open State): 입금과 ..

Java 2024.01.18

[스프링] 공공데이터 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 해결

오류 스프링으로 국토부 건축물대장정보 Open Api를 불러오는데 에러를 마주했다. 인코딩 키를 사용해서 브라우저에서 api 호출하면 잘 불러와지는데, 스프링에서 호출하면 SERVICE_KEY_IS_NOT_REGISTERED_ERROR 에러가 떴다. SERVICE ERROR SERVICE_KEY_IS_NOT_REGISTERED_ERROR 30 해결책 1. 서비스키를 디코딩키로 설정 후에 URLEncoder를 사용해서 각 파라미터랑 서비스키를 인코딩해줬다 인코딩 디코딩을 잘하자.. // 각 파라미터를 URLEncoder를 사용하여 인코딩 String encodedSigunguCd = URLEncoder.encode(sigunguCd, StandardCharsets.UTF_8.toString()); Stri..

스프링 2024.01.18

[스프링] 웹서버, WAS, 서블릿 / SSR, CSR

웹 어플리케이션에 대해 헷갈렸던 개념들 위주로 정리해보려 한다. 웹서버 vs WAS 둘 다 HTTP 기반으로 동작한다. 웹서버는 정적 리소스 제공한다. NGINX, APACHE가 있음 WAS는 웹서버 기능을 포함하면서 코드를 실행해 애플리케이션 로직을 수행한다. 서블릿, JSP MVC등 톰캣, Jetty, Undertow가 있음 웹 시스템 구성 WAS랑 DB만으로 시스템 구성이 가능한데, 이렇게되면 WAS가 너무 많은 역할을 담당해서 서버 과부하가 올 수 있다. 따라서 위 그림처럼 정적 리소스는 웹서버가 처리하고 애플리케이션 로직과 같은 동적 처리가 필요하면 WAS에 요청을 위임한다. 필요에 따라 웹서버랑 WAS서버를 각각 증설할 수 있어서 효율적으로 리소스를 관리할 수 있다! 서블릿 HTTP 요청이 오..

스프링 2024.01.14

[백준 파이썬] 단계별로 풀어보기 - Lv6. 심화 1

# 25083 새싹 print(" ,r'\"7") print("r`-_ ,' ,/") print(" \\. \". L_r'") print(" `~\\/") print(" |") print(" |") - " 출력 : \" - \ 출력 : \\ # 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 A = list(map(int, input().split())) print(1-A[0], 1-A[1], 2-A[2], 2-A[3], 2-A[4], 8-A[5]) # 2444 별찍기-7 n = int(input()) for i in range(1, n+1): print(' '*(n-i)+'*'*(2*i-1)) for i in range(n-1, 0, -1): print(' '*(n-i)+'*'*(2*i-1)) - 연결해서..

[백준 파이썬] 단계별로 풀어보기 - Lv5.문자열

# 27866 문자와 문자열 #단어 S와 정수 i 주어짐 #S의 i번째 글자 출력 S = input() i = int(input()) print(S[i-1]) # 2743 단어 길이 재기 #알파벳 입력받아 길이 출력 x = input() print(len(x)) # 9086 문자열 #문자열 입력 #문자열 첫 글자와 마지막 글자 출력 T=int(input()) #테스트 케이스 개수 for _ in range (T) : x = input() print(x[0]+x[-1]) #x[-1]은 마지막 글자 - x[-1] : 마지막 글자 # 11654 아스키 코드 #주어진 글자의 아스키코드값 출력 x = input() print(ord(x)) - ord() : 아스키 코드값 리턴 함수 - chr() : 아스키 코드값..

[파이썬 게임] Chimp Memory Game

chimp memory game 격자 : 5 rows(행), 9 columns(열) start 버튼 6 numbers (순차 증가) 격자에 숫자 랜덤 위치하기 Hide Numbers : 1. Display Time, 2. First Number 시간이 지난 후에 숫자 숨겨짐 1을 누르면 나머지 숫자 숨겨짐 Correct → Next Level Wrong → Game Over 프레임 : 1_frame 가로 1280, 세로 720 import pygame #초기화 pygame.init() screen_width = 1280 #가로크기 screen_height = 720 #세로크기 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.d..

[백준 파이썬] 단계별로 풀어보기 - Lv4. 1차원 배열

# 10807 개수 세기 N=int(input()) x = list(map(int,input().split())) v = int(input()) print(x.count(v)) - x.count(v)로 x리스트 안에 v가 몇 개 들어가있는지 확인가능 # 10871 X보다 작은 수 N,X = map(int,input().split()) A = list(map(int, input().split())) for i in range(N) : if A[i] 42로 나눈 나머지 #서로 다른 값 몇 개? A=[0]*10 for i in range(10) : x = int(input()) A[i] = (x % 42) B = set(A) print(len(B)) - 리스트 입력 받고 리스트를 집합으로 바꿔서 중복되는 수 ..

[백준 파이썬] 단계별로 풀어보기 - Lv3.반복문

# 25304 영수증 #X : 영수증 총금액 #N : 영수증 구매 물건의 종류 수 #가격 a, 개수 b X=int(input()) N=int(input()) sum=0 for i in range (N) : a,b = map(int,input().split()) sum += a*b if sum==X : print("Yes") else : print("No") - sum=0 으로 미리 초기화해주기 # 25314 코딩은 체육과목 입니다. N=int(input()) x = int(N/4) for i in range(x) : print("long", end=' ') print("int") - end= ' ' : 붙여서 출력해줌, 구분은 공백 # 15552 빠른 A+B import sys T=int(input())..