목록전체 글 (75)
ballqs 님의 블로그
PasswordEncoder 암호화현재 듣고 있는 강의에서는 이러한 내용을 가르쳐 주었다.implementation 'org.springframework.boot:spring-boot-starter-security' security DI를 추가하고@Configurationpublic class PasswordConfig { @Bean public PasswordEncoder passwordEncoder() { // Hash 함수 비밀번호를 암호화해줌 // 해당 메서드를 사용해서 비밀번호를 encoding하는 것 return new BCryptPasswordEncoder(); }} PasswordEncoder를 수동적으로 bean등록하여 사용 하는 방식..
Spring을 이용하여 Naver Open API를 사용하려면 우선 아래사이트에 접근해야한다.https://developers.naver.com/products/intro/plan/ https://developers.naver.com/products/intro/plan/ developers.naver.com애플리케이션 등록하기 등록하기 화면에서 작성해야하는 내용들이 있다.애플리케이션 이름 , 사용 API , 비로그인 오픈 API 서비스 환경 등이 있으며 아래와 같이 작성했다.등록이 완료되면 Client ID와 Client Secret를 발급받는다.다만 중요해서 이미지를 잘라서 보여주겠다.애플리케이션 사용하기출처 :https://developers.naver.com/docs/serviceapi/search..
JWT란?Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim기반의 Web Token이다.토큰의 한 종류라고 생각하면 된다. 일반적으로 쿠키 저장소를 사용하여 JWT를 저장한다.JWT 사용이유기본적으로 클라이언트가 많을 경우 세션의 경우는 아래와 같이 사용된다.Session storage가 모든 Client의 로그인 정보 소유하고 있기 때문에 모든 서버에서 모든 Client의 API 요청을 처리한다.단! 이렇게 처리 될 경우 Session storage에 많은 접근이 있어서 과부하가 올 확률이 높다.그렇게 먹통이 되면 모든 서버가 동작이 안되게 처리되는 것이다. 로그인 정보를 Server에 Session에 저장하지 않고 Client에 로그인 정보를 JWT로 HS256인코딩 하여 저장하며 JW..
DFS 알고리즘에는 꼭 재귀 메서드를 호출하는게 아닌 Stack이나 Queue를 활용하는 방법도 있다고 한다. 해당 방식으로 풀게된 문제는 프로그래머스의 전력망을 둘로 나누기이다.문제 설명n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있고 여기서 하나의 전선을 끊어서 현재의 전력망 네트워크를 2개로 분할하는 문제이다.단! 두 전력망이 가지게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 한다.제한사항n은 2 이상 100 이하인 자연수입니다.wires는 길이가 n-1인 정수형 2차원 배열입니다.wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의 v1번 송전탑과 v2번 송전탑이 전선으로 연결되어 있다는 것을 의미합니다.1 ≤ v1 전력망 네트워크가 하나의 트리 ..
JPA란?Java ORM(Object-Relational Mapping)기술의 대표적인 표준 명세이다. JPA는 애플리케이션과 JDBC 사이에서 동작된다JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해준다.또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리가 가능하다. 하이버네이트(Hibernate)란?JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준이 하이버네이트이다.스프링 부트에서는 기본적으로 ‘하이버네이트’ 구현체를 사용 중이다.영속성 컨텍스트란?Persistence를 객체의 관점으로 해석해 보자면 ‘객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)을 자유롭게 유지하고 이동할수 있는 객체의 성질’을 의미한..
투 포인터(Two Pointer) 이란?배열이나 리스트에서 두 개의 포인터를 사용하여 특정 조건을 만족하는 부분 구간을 효율적으로 탐색하는 알고리즘이다. 일반적으로 배열이나 리스트가 정렬되어 있을때 사용한다.두 개의 포인터는 보통 양 쪽 끝으로 시작하여 각각 탐색하면서 특정 조건을 만족하는지 검증한다.다만! 한 쪽 방향에서 동시에 시작하는 경우도 있는데 이는 해당 배열의 합과 차를 통해 특정 조건이 만족하는지 검증한다.투 포인터의 문제 적용프로그래머스 문제를 풀다가 이런 문제를 접했다.연속된 부분 수열의 합 이라는 문제이다. 문제 설명내림차순으로 정렬된 배열이 주어질 때 특정 조건을 만족하는 수열을 찾는 문제이다.주어진 k값이 있고 배열의 연속된 부분의 합이 k와 같으면 해당 포인터들의 index를 반환..
받아오는 Parameter에 따라 유효성 검사를 할수 있다는 기능이 있다고 해서 알아보았다.@Valid 라는 기능이다. 이건 어떻게 사용하는지 작성해보겠다.의존성 추가build.gradle 파일을 찾아서 추가하자.implementation 'org.springframework.boot:spring-boot-starter-validation'사용방법@RestController@RequestMapping("/api/schedule")public class ScheduleController { private final ScheduleService scheduleService; @Autowired ScheduleController(ScheduleService scheduleService) { ..
프로그래머스 SQL 문제 : 입양 시각 구하기(2)테이블 명 : ANIMAL_OUTS NAMETYPENULLABLECOMMENTANIMAL_IDVARCHAR(N)FALSE동물 아이디ANIMAL_TYPEVARCHAR(N)FALSE생물 종DATETIMEDATETIMEFALSE입양일NAMEVARCHAR(N)TRUE이름SEX_UPON_OUTCOMEVARCHAR(N)FALSE성별 보호소에서는 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성! 코드# WITH문으로 작성하여 시간을 만들어 놓고 ANIMAL_OUTS 테이블과 LEFT JOINWITH RECURSIVE HOURS AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR + 1..
Lombok이란?Java의 라이브러리로 Spring에서 사용되는 온갖 Entity 및 Dto(Data Transfer Object)에 사용하며 반복되는 메소드를 Annotation를 사용하여 자동으로 작성해주는 라이브러리이다. 자동으로 작성되는 것은 Getter , Setter , toString , Constructor 정도로 간략하게 알고있다. 추가 방법 2가지1.프로젝트 생성시 의존성 주입 2.build.gradle 에 추가하는 방법compileOnly 'org.projectlombok:lombok'annotationProcessor 'org.projectlombok:lombok' Memo 클래스public class Memo { private Long id; private String..
오늘의 일정9:00 ~ 10:00 - 알고리즘 코드카타10:00 ~ 12:00 - 팀 프로젝트 발표 준비12:00 ~ 13:00 - 점심시간13:00 ~ 17:00 - 팀 프로젝트 발표17:00 ~ 18:00 - KPT 작성18:00 ~ 19:00 - 저녁시간19:00 ~ 22:00 - KPT 작성22:00 ~ - TIL 작성알고리즘 코드카타이번 문제는 난이도가 조금 있어보였다.프로그래머스의 쿼드압축 후 개수 세기 라는 문제였고 풀어봤다.해당 문제는 2^n * 2^n 크기의 2차원 배열이 있고 안에는 0과 1이 값들이 무작위로 들어가 있다.글로 설명보다는 아래의 입출력 예 설명으로 보는게 가장 빠를 것이다. 제한사항arr의 행의 개수는 1 이상 1024 이하이며, 2의 거듭 제곱수 형태를 ..