목록전체 글 (46)
나의 길

DTO(Data Transfer Object)란?계층 간에 데이터 교환을 위해 사용하는 객체public class User { private Long id; private String name; private String email; private String password;} 위의 User 클래스를 바로 응답으로 넘겨주면 몇 개의 문제점이 있습니다. 1. 해당 클래스의 모든 정보가 보이며 이로 인해 민감한 정보가 노출되어 보안 문제가 발생할 수 있습니다.2. User 클래스가 변경될 경우 View가 View가 변경될 경우 User 클래스가 변경되는 강한 결합을 가지게 됩니다.3. JPA 사용시 직렬화 문제가 발생할 수 있습니다. Lazy 로딩 필드가 직렬화되지 않거나 예외 발생 ..

JWT(JSON Web Token)! JWT가 사용되는 경우는 권한 부여와 정보 교환을 할 때입니다. 가장 일반적으로는 권한 부여. 권한 부여는 사용자가 로그인을 하면 그 이후의 각 요청에 JWT가 포함되어 사용자가 해당 토큰으로 허용된 경로, 서비스 및 리소스에 액세스 할 수 있습니다. JWT는 Header, Payload, signature로 구성됩니다. 그리고 각 부분은 .(점)으로 구분됩니다. Header Header는 아래와 같이 구성됩니다. 토큰의 유형(typ), 서명 알고리즘(alg)입니다. 서명 알고리즘은 보통 (HMAC SHA256 또는 RSA 등) 입니다. 위의 JSON은 Base64Url로 인코딩 되어 JWT의 Header를 구성합니다. Payload Payload는 C..

이 문제는 Queue의 개념과 java에서 Queue를 구현하고 있는 클래스들을 간단하게 다뤄보기 좋은 문제인 것 같습니다.(당연히 자신이 구현한 Queue로도 풀이가 가능합니다!) 예제 이해 앞서 말씀드린 것처럼 Queue를 구현하고 있는 클래스들(ArrayDeque, LinkedLIst, PriorityQueue) 중 LinkedList를 사용했습니다. 해당 클래스의 메소드들을 알고 있다면 간단하게 풀이가 가능합니다. 풀이할 때 집중한 것은 분기가 많으니 최대한 코드가 지저분해지지 않도록 노력했습니다! 구현 코드 import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java...

이 문제를 접하면서 시간 제한에 신경을 더 쓰게 되었고, 조금이나마 시간을 줄이는 방법을 알 수 있었습니다. 저의 시행착오와 풀이를 한 번 살펴보도록 하겠습니다. 예제 이해 문제를 접하면 sudo code를 약간이라도 적어보려고 노력하는데 처음 문제를 보며 든 생각은 if문이 많이 사용될 것 같다는 생각을 하고 일단 문제를 풀기만 하자라는 마음으로 풀이에 임했습니다. import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(n..

이 문제를 처음 접하면 저처럼 예제 출력이 왜 이렇게 출력되는지 몰라 조금 해맬 수 있다고 생각해 한 번 살펴보도록 하겠습니다. 예제 이해 해당 문제에서 가장 중요한 문구는 '임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 연산을 수행해야 하는지' 라고 생각합니다. 예제 입력 1을 보면 8개의 숫자를 입력받고 4를 만드려면 push(1), push(2) , push(3) , push(4) 하고 pop()을 수행해야 합니다. 생각을 조금 더 해보자면 아래와 같이 예제가 출력된다는 것을 알 수 있습니다. + 1+ 2+ 3+ 4- 4- 3+ 5+ 6- 6+ 7+ 8- 8- 7- 5- 2- 1 -인 pop()을 한 숫자를 나열해보면 예제 출력 1..

이 문제는 StringBuilder의 reverse() 메소드와 많은 방법을 통해 구현할 수 있지만 저는 Stack을 활용해서 문제를 풀었습니다. (링크의 과정을 참고하여 Stack으로 풀이!) 구현 코드 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new String..

이 문제는 반복문을 배웠다면 접할 별찍기의 약간 심화 버전처럼 느꼈습니다.(피라미드 + 역 피라미드 별 찍기) 구현 코드 import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for (int i = 1; i 0; i--){ for ..

스택(Stack)이란? 스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로, 밑이 막힌 투명한 실린더에 고체를 쌓고 뺀다라고 생각하면 됩니다. 특징은 마지막에 넣은 데이터를 처음으로 꺼냅니다. 해당 이미지는 스택을 이해하기 위한 예시를 입니다. Java main method가 실행되고, z method를 호출합니다. z method 호출을 종료하고, main method로 돌아와 main method 호출을 종료합니다. 이미지에도 나타나 있듯이 스택에서 데이터를 집어넣는 것을 push, 빼는 것을 pop이라고 합니다. 스택 기본 사용법 Java에서는 Stack을 push, pop 이외에 peek(맨 위의 데이터 출력), search(해당 데이터가 있으면 그 위치 반환, 없으면 -1 반환), ..

데이터베이스 정규화란? 데이터 구조를 최적화하여 데이터의 중복을 최소화하기 위한 프로세스 정규화의 장점이상 현상 방지(삽입 이상, 갱신 이상, 삭제 이상)유지 보수의 용이(변경과 확장)성능 향상(쿼리) 및 비용 감소(효율적인 저장)💬 이상 현상삽입 이상 : 정규화 되지 않은 테이블에 데이터를 삽입하기 불필요한 데이터를 삽입해야되는 경우.갱신 이상 : 동일한 값이 여러 곳에 저장되어 있어 모든 값이 갱신되지 않아 데이터의 불일치가 발생하는 경우.삭제 이상 : 특정 데이터를 삭제하면 원하지 않는 다른 데이터도 함께 삭제되는 경우. 정규화 단계 제 1정규화(1NF : First Normal Form)- 테이블의 속성 값이 원자값을 가져야한다. 회원이름구매 상품호두육포나무츄르럭키육포, 츄르킹츄르, 캣닙- 회원..

이번에 작성하는 글의 주제는 Udemy Spring Boot 강의(https://www.udemy.com/course/spring-boot-and-spring-framework-korean) 수강 후기입니다!이 강의를 선택하시기 전 알아두시면 좋은 점과 이 강의로 공부한 입장에서 후기를 말씀드리겠습니다! 이 강의를 선택한 이유 아래 이미지와 같이 업데이트가 잘되고, 한글 자막 버전이 아닌 강의도 평이 좋고, 한글 자막도 평이 좋아 선택하였습니다. 다른 강의들보다 탄탄한 커리큘럼이고, 미리 보기 가능한 강의로 어느 정도 수준이 맞을 것 같아 선택하는 계기가 되었습니다. 강의를 통해 배운 점 1. spring boot에서 필요한 spring spring boot를 배우려면 spring 프레임워크의 기능들을 ..