일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 문자열
- dfs
- ddd
- BFS
- Redis
- pandas
- 데이터 flow
- docker
- 파이썬
- 세그먼트 트리
- java
- DP
- 스프링
- equals
- UML
- dataframe
- 다익스트라
- series
- 자바
- 헥사고날 아키텍처
- 비트마스크
- disjoint set
- 위상정렬
- 포트앤어댑터 아키텍처
- 알고리즘
- springboot
- 이펙티브 자바
- JPA
- 백준
- spring security
- Today
- Total
목록스프링부트(SpringBoot)/활용 (6)
코딩못하는사람
발단 저번 우아한 Redis 강연을 듣고 공부하면서(https://cantcoding.tistory.com/70) Redis의 Sorted Set기능이 눈에 들어왔다. 현재 진행하고 있는 프로젝트에서 서비스 사용시 주어지는 포인트 시스템이 있는데, 그 포인트와 닉네임을 key-value 형태 Sorted Set에 저장하여 랭킹보드를 구현하면 재밌을거같다는 생각이 들어서 실제 적용하였다. Redis 설치 필자는 AWS EC2 서버에 Docker 를 통하여 Redis를 설치하였다. (http://redisgate.kr/redis/education/docker_intro.php ) 저 레퍼런스에 들어가면 쉽게 따라할 수 있다. 레디스 서버 실행하기 docker run --name myredis -d -p 63..
JWT Token(JSON Web Token)이란? JWT란? JSON Web Token (JWT) 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해줍니다. 여기서 자가수용적인 방식은 JWT를 사용하는 가장 큰 이유가 됩니다. JWT을 사용하지 않는 이전 인증방식들은 서버에서 접속한 회원의 세션정보를 유지하고 있어야하는 구조였습니다. 그에 따라서 클라이언트가 늘어날수록 서버 자원의 낭비가 심해지는 구조를 가지고있었습니다. 하지만 JWT토큰은 클라이언트에 대하여 무상태(stateless)로 유지하기때문에 훨씬 이상적인 구조입니다. JWT의 핵심내용을 동작 방식과 함께 살펴보겠습니다. 회원 인증 정보 교류 Stateless 동작 방식 ..
처음 웹서비스 제작할때는 생산성을 위해 Spring Data JPA를 사용하여 자동으로 쿼리문을 만들었다. 하지만 API하나하나 수행될때마다 연관된 쿼리가 너무 많이 수행되서 공부한 내용을 바탕으로 성능개선을 해보고자 한다. 이번에 제작한 웹서비스에는 회원간 메세지 기능이 있다. 메시지 엔티티에는 보내는회원과 받는회원이 회원 엔티티를 각각 1:1 단방향 연관관계로 가지고있다. SpringDataJPA를 통해서 처음 만들어낸 Repository 메서드를 보자. public interface MessageRepository extends JpaRepository { List findBySentMember(Member member); List findByReceivedMember(Member member); ..
Gradle 이란? 그래들(이하 Gradle)은 그루비(Groovy)를 기반으로 한 빌드 도구. Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개된 빌드 도구. 처음 SpringBoot로 프로젝트를 만든다면 프로젝트에 필요한 의존성들을 체크하고 Build Tool을 고르게 되면 프로젝트에 의존성 주입이 완료된다. 이렇게 의존성을 주입받아 프로젝트를 진행하다가 필요한 라이브러리를 검색하다 보니 크게 두가지 형태로 나누어져있는 것을 보고 차이점이 궁금했다. Compile VS implementation compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.1' implem..
TDD (Test-Driven Development)란? 이름에서 알 수 있듯이 테스트가 주도하는 개발이라는 뜻이다. 종료조건을 테스트 코드로 미리 정하고 그에 맞춰서 테스트를 통과시키기 위해 개발해 나간다고 생각하면 이해하기 쉽다. 항상 실패하는 테스트를 먼저 작성한다(RED) 테스트가 통과하는 프로덕션 코드를 작성한다(GREEN) 테스트가 통과하면 프로덕션 코드를 리팩토링한다. 위 3단계를 반복하며 점진적으로 개발을 완료시킨다. 프로덕션 코드-프로젝트의 로직을 포함하고 제품(어플리케이션)에서 실행되는 시스템의 부분을 가리킨다 단위 테스트(Unit Test)란? TDD의 첫 단계인 기능 단위의 테스트 코드를 작성하는 것이다. TDD를 하는 것이 아닌 순수하게 테스트 코드를 작성하는 것을 의미한다. 왜 ..
IntelliJ란? 스프링 개발에 친화적인 JetBrains에서 만든 Java IDE이다. 인텔리제이의 장점 강력한 추천 기능 다양한 리팩토링과 디버깅 기능 형상관리(Git)의 높은 자유도 인덱싱을 통해 파일 및 자원에 대한 빠른 검색속도 HTML과 CSS,JS,XML에 대한 강력한 기능 지원 자바,스프링 부트 버전업에 맞춘 빠른 업데이트 스프링 프로젝트 시작하기 start.spring.io/ 에서 원하는 파일을 생성하는 방법과 인텔리제이에서 바로 Spring Initializr를 사용하는 방법이 있다. 원하는 프로젝트 명, 빌드툴, 패키징 포맷, 언어,버전 등을 자유롭게 선택하여 만들 수 있다. (과거에는 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.) 마지막으로 프로젝트에 필요한 의존..