JWT(JSON Web Token) 서버와 클라이언트 간의 정보를 안전하게 전달하기 위해 사용되는 토큰 기반의 인증 방식 텍스트 기반의 토큰 → 정보를 JSON 형식으로 인코딩하여 사용자 정보나 권한 정보를 포함 클라이언트가 서버로 요청을 보낼 때마다 헤더에 첨부되어 전송 → 서버는 해당 토큰을 검증하여 인증 및 권한을 확인 JWT의 구성 요소 Header 토큰의 베타 정보를 담고 있다. 주로 토큰의 유형과 서명 알고리즘을 명시 Base64로 인코딩되어 토큰의 첫 부분을 형성 { "typ": "JWT", "alg": "HS256" } Payload 클라이언트 정보나 클레임(Claim) 정보 포함 클레임 : 사용자 정보, 토큰의 만료 기간, 권한 등 포함 Base64로 인코딩되어 토큰의 두 번째 부분을 형..
ORM 장점 객체 지향적이기 때문에 개발자가 비즈니스 로직 및 코드 자체에 집중할 수 있다. 관념적 코드(Boilerplate code)가 없거나 적어진다. 코드의 재사용, 유지보수의 편리성이 증대된다. DBMS의 종속성이 줄어든다. 단점 N+1 문제 등 해결해야할 과제가 있다. 생성되는 쿼리 속도등의 문제가 있다. 설계과 잘못되면 일관성이 무너지거나 성능 저하의 문제가 있다. JPA Java의 ORM 표준 기술 JPA를 사용해야 하는 이유 생산성 향상 유지보수성 향상 패러다임의 불일치 해결 성능 쿼리에 비해 성능이 느려지는 경우도 있어 단순히 성능이 좋아지는 것은 아니다. 하지만, 동일한 쿼리를 캐싱하는 기능 등 성능이 개선되는 기능이 있다. 데이터 접근의 추상화와 벤더 독립성 JPA의 구현체 Hibe..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서..
https://school.programmers.co.kr/learn/courses/30/less문제 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다..
OAuth (Open Authorization) OAuth는 인터넷 사용자들이 자원을 다른 웹 애플리케이션에서 안전하게 제3자로부터 접근하고 사용할 수 있도록 허용하는 프로토콜 및 프레임워크이다. 주로 웹과 모바일 애플리케이션에서 사용되며, 사용자가 자신의 데이터를 달느 서비스와 공유하거나 다른 서비스의 데이터를 사용할 수 있게 해준다. OAuth 주체 1. Resource Owner 리소스 소유자. 우리의 서비스를 이용하면서, 구글, 페이스북 등의 플랫폼에서 리소스를 소유하고 있는 사용자 2. Client Resource Server의 자원을 이용하고자 하는 서비스 = 우리가 개발하려는 서비스 3. Resource Server 구글, 페이스북, 트위터와 같이 리소스를 가지고 있는 서비스 4. Autho..
정적 페이지(Static Pages)와 동적 페이지(Dynamic Pages) Web Server와 WAS(Web Application Server) WebServer 역할 HTTP 요청 처리 : 웹 서버는 클라이언트로부터 받은 HTTP 요청을 처리하고, 이에 따른 정적 컨텐츠를 반환한다. 동적인 컨텐츠를 제공하기 위해서는 WAS로 클라이언트 요청을 보내고 WAS에서 처리한 결과를 클라이언트에게 전달한다. 종류 Apache, Nginx, IIS WAS (Web Application Server) 역할 클라이언트 요청에 따라 데이터베이스 조회와 비즈니스 로직 처리를 통해 동적인 페이지를 생성하여 클라이언트에게 반환한다. 종류 Tomcat, JBoss, WildFly WebServer와 WAS를 구분하는 이..
REST REST(Representational State Transfer)는 웹 애플리케이션을 위한 아키텍처 스타일 중 하나로, 리소스와 HTTP 메서드를 기반으로 데이터를 관리하는 방법론이다. 따라서 이를 잘 지킨 API를 RESTful한 API라고 한다. 구성요소 자원(Resource) REST는 모든 것을 리소스로 간주하며, 각 리소스는 고유한 식별자인 URI(Uniform Resource Idenficier)를 갖는다. 행위(Verb) HTTP 메서드(GET, POST, PUT, DELETE 등)를 의미 표현(Representation of Resource) 행위의 구체적인 내용 원칙 URL는 리소스를 표현 URL는 리소스를 나타내는 고유한 경로여야 한다. 리소스를 직관적으로 이해할 수 있는 명..
캐스팅 (Casting) 캐스팅은 프로그래밍에서 변수의 타입을 변경하는 것이다. 캐스팅이 필요한 이유 1. 다형성 상속과 오버라이딩을 통해 부모 클래스와 자식 클래스 간에 다형성을 구현할 수 있고, 부모 클래스의 레퍼런스로 자식 클래스의 객체를 다룰 수 있다. 이때, 부모 클래스의 레퍼런스로 자식 클래스의 메서드를 호출하면, 오버라이딩된 메서드가 실행된다. 그러나 부모 클래스의 레퍼런스로는 자식 클래스에 추가된 메서드나 속성을 직접 호출할 수 없다. 이때, 캐스팅을 사용하여 부모 클래스의 레퍼런스를 자식 클래스로 캐스팅하면, 추가된 기능에 접근할 수 있다. class Animal { void makeSound() { System.out.println("Animal makes a sound"); } } c..