일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 전략패턴 #StrategyPattern #디자인패턴
- 개발자 취업
- DesignPattern
- jwt
- jwttoken
- 단기개발자코스
- 개발자부트캠프추천
- 구글 OAuth login
- 커스텀 헤더
- 디자인패턴
- 프로그래머스 이중우선순위큐
- 취업리부트코스
- Python
- JavaScript
- 파이썬
- spring batch 5.0
- KPT회고
- 1주일회고
- 디자인 패턴
- 빈 충돌
- TiL
- 99클럽
- 인프콘 2024
- 프로그래머스
- 항해99
- 코딩테스트 준비
- Spring multimodule
- @FeignClient
- 빈 조회 2개 이상
- infcon 2024
- Today
- Total
목록분류 전체보기 (192)
m1ndy5's coding blog
JWT 로그인을 공부하고 구현하면서 Refresh Token의 필요성, 저장 위치와 같은 의문점이 들어 정리하는 글이다. Refresh Token이란?JWT 토큰은 사용자의 신원이나 권한의 정보를 담고 있는 토큰이다.따라서 사용자는 이 JWT 토큰을 사용하여 안전하게 통신할 수 있다.하지만 이 토큰의 가장 큰 문제점은 탈취를 당할 수 있다는 것이다!!해커가 토큰을 탈취해 서버에 접근한다면 서버 입장에서는 토큰의 주인이 접근한다고 생각할 것이다.만약 이 토큰에 유효기간이 없다면 해커는 언제고 이 탈취한 토큰을 가지고 멀쩡한 사용자 행세할 것이다!이를 막기 위해 토큰의 유효기간을 짧게 두고, 토큰의 유효기간이 끝나면 Refresh Token을 가지고 새로운 토큰 발행을 요청한다. 동작 과정로그인 성공 -> ..
프론트없이 JWT 토큰을 사용한 로그인을 구현하던 중에 겪었던 문제들과 고민들에 대해서 정리해보려고 한다!일단 기술 스택으로는 Spring boot 3.2, Spring Security 6.2, Spring Gateway 4.1을 사용하였다. 현재 진행하고 있는 프로젝트는 멀티모듈 구조이기 때문에 로그인 후 토큰 발급(인증)은 User Module에서 진행하고, 각 요청의 토큰 검증(인가)은 Gateway Module에서 진행하게 설계했다. 가장 먼저 문제를 겪었던 부분은 로그인이 성공한 후에 SimpleUrlAuthenticationSuccessHandler의 onAuthenticationSuccess 메서드에서 토큰을 발급하고 메인페이지로 리다이렉트해주는 부분이었다.구현하고자 했던 로직은 로그인 성공..
https://bit.ly/4bblDWc IT 커리어 성장 코스 항해99, 개발자 취업부터 현직자 코스까지항해99는 실무에 집중합니다. 최단기간에 개발자로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.hanghae99.spartacodingclub.kr1달 뒤에 쓰는 늦은 후기ㅎㅎ일단 취업 리부트 코스 1기를 수료했고 백엔드 개발 코스를 수강했다.항해 99의 [취업 리부트 코스]는 개발 공부 경험이 있는 취업 준비생을 대상으로 취업 성공 전까지 무상으로 교육을 진행해 주는 멘토링 서비스이다!커리큘럼은 1달동안은 알고리즘, 1달은 프로젝트, 사이사이 중간중간 이력서 봐주시고 프로젝트 끝날정도쯤엔 본격적으로 모의면접을 통한 면접대비까지 진행한다! 가장 ..
docker-compose?docker-compose는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구왜 docker-compose를 사용할까?여러 개의 컨테이너가 하나의 애플리케이션으로 동작할 때 docker-compose를 사용하지 않는다면 각 컨테이너를 하나씩 생성해 실행해야 한다. 만약 100개의 컨테이너가 하나의 애플리케이션으로 동작한다면 일일이 컨테이너를 실행하기는 번거롭다.docker-compose는 여러 개의 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작하기 때문에 하나의 명령어로도 애플리케이션을 이루고 있는 컨테이너들을 실행시킬 수 있다.docker-compos..
면접에서 String과 StringBuffer의 차이점에 대한 질문을 받았는데 잘 대답하지 못했다ㅜㅜ 정리를 해보자!!! 1. 가변성(Mutability) String String 클래스의 인스턴스는 불변(immutable)입니다. 한 번 생성되면 내부 문자열은 변경될 수 없다. 문자열을 수정하면 새로운 String 객체가 생성된다. StringBuffer StringBuffer은 가변(mutable) 클래스이다. 따라서 문자열의 내용을 변경할 수 있다. 2. 스레드 안전성(Thread Safety) String String 클래스는 스레드 안전(thread-safe)하다. 여러 스레드가 동시에 String 객체에 접근해도 문제가 발생하지 않는다. StringBuffer StringBuffer도 스레드 ..
파면 팔수록 굉장히 많은 것들이 나오는 동시성..!! 재밌구나 하하 이번에는 Java에서 동시성 이슈를 제어하는 방법에 대해 정리해보자. 1. Synchronized 키워드 : Synchronized 키워드를 사용하여 특정 메서드 또는 코드 블록을 한 번에 하나의 스레드만 실행하도록 한다. public class SynchronizedExample { private int counter = 0; // synchronized 키워드를 사용하여 메서드를 동기화 public synchronized void increment() { counter++; } public int getCounter() { return counter; } public static void main(String[] args) { Syn..
JPA에서는 CRUD 작업을 수행하기 위해 @Entity로 표시된 엔티티 클래스가 JPA 컨텍스트에 등록되면, 생명주기를 갖게 되고 JPA에 의해 관리된다. 생명주기가 살아있는 엔티티는 DB 테이블과 매핑되어 관리되는데, 개발자가 엔티티에 데이터를 추가/수정/삭제하면 그에 맞는 쿼리문이 자동으로 생성된다. 이와 같이 JPA에 의해 생명주기가 관리되는 엔티티를 두고 영속성(Persistence)이 있다고 표현한다. 영속성 관리 EntityManager EntityManagerFactory는 여러 스레드에서 동시에 접근해도 안전하지만, 생성하는 비용이 크다. 따라서 EntityManagerFactory에서 요청이 올 때마다 생성 비용이 거의 없는 EntityManager를 생성한다. EntityManager..
모의면접을 봤는데 생각하지 못했던 부분에서 질문이 들어왔다. 이전 포스팅에서 낙관적 락을 사용해 동시성 문제를 해결할 때 Version을 사용해 엔티티의 수정을 막았다고 했는데 이 Version이 데이터베이스에 저장되서 관리되는 것이냐는 질문에 대답을 하지 못했다. 또한 Select for Update로도 충분히 동시성 이슈를 해결할 수 있는데 왜 굳이 Version을 사용해서 진행하였냐라는 질문에도 제대로 대답하지 못했다. 그래서 정리해보려고 한다! Post Entity @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Post extends BaseEntity { @Column(name="member_id",..
"Docker is a must" said job posting. 어느새 개발자 사이에서 필수가 되버린 Docker 대체 넌 누구냐?? 알아가보자. What is Docker? Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것들이 포함되어 있다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있다. 도커 이미지 & 컨테이너 도커 이미지는 컨테이너를 만드는 데 사용되는 읽기 전용 템플릿이다. 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커..
Garbage Collector 가비지 컬렉터는 메모리 관리를 자동으로 처리하는 JVM의 구성 요소 중 하나이다. 가비지 컬렉터의 주된 역할은 Heap 영역에서 사용하지 않는 객체를 찾고 자동으로 메모리에서 해제하여 시스템 자원을 효율적으로 관리하는 것이다. 가비지 컬렉터의 역할 1. 가비지 식별 : 가비지 컬렉터는 더 이상 참조되지 않는 개체를 식별한다. 객체가 어떠한 참조에도 도달하지 않는 경우, 해당 객체는 가비지로 간주된다. 2. 가비지 수거 : 가비지 컬렉터는 식별된 가비지 객체들을 메모리에서 수거(삭제)한다. 이러한 프로세스를 통해 메모리 누수를 방지하고 프로그래머가 명시적으로 메모리를 관리하지 않아도 된다. 가바지 컬렉터의 원리 1. 참조 추적 : 대부분의 가비지 컬렉터는 참조 추적 알고리즘..