백엔드52 [이펙티브 자바] 아이템 1 : 생성자 대신 정적 팩토리 메서드를 고려하라 ✍️ 학습 목표 객체 생성하기 정적 팩토리 메서드의 장점 정적 팩토리 메서드의 단점 📌 객체 생성하기 객체를 생성하는 가장 흔한 방법은 public 생성자를 사용하는 것이다. 정적 팩토리 메서드를 사용해서도 객체를 생성할 수 있다. 차이는 다음과 같다. 🧐 public 생성자 class Pokemon { private int attack, defense, hp; public Pokemon(int attack, int defense, int hp) { this.attack = attack; this.defense = defense; this.hp = hp; } } public class Item1 { public static void main(String[] args) { Pokemon 피카츄 = new .. 2022. 12. 7. [Java] 멀티쓰레드 프로그래밍 (22.12.05 updated) ✍️ 학습할 것 Thread 클래스, Runnable 인터페이스 Thread의 상태 Thread의 우선순위 Main Thread 동기화 데드락 📌 Thread 클래스, Runnable 인터페이스 Java는 멀티쓰레드 프로그래밍을 지원하는 언어이다. 멀티쓰레드 환경은 어떤 쓰레드가 문제가 발생하면 다른 쓰레드에도 영향을 미친다. 따라서 쓰레드에 대한 이해는 필수적이고 다른 실행 환경을 제공하는 프로세스에 대한 이해도 같이 해보자. 🧷 프로세스, Process 메모리 상에 올라간 프로그램을 프로세스라고 한다. 자체적인 실행환경을 가지고 있다. 모든 프로세스는 적어도 하나의 쓰레드를 가진다. 둘 이상일 때 멀티쓰레드 프로세스라고 부른다. 🧷 쓰레드, Thread 쓰레드는 일종의 실행환경의 단위로 실제 작업을 .. 2022. 12. 5. [자바 ORM 표준 JPA 프로그래밍] 다양한 연관관계 매핑 (6장) 📌 다대일 다대일 관계에서 외래 키는 항상 다쪽에 존재한다. 즉, 연관관계의 주인은 항상 다쪽이다. 1️⃣ 다대일 단방향 [N:1] 회원은 Member.team으로 팀 엔티티를 참조할 수 있지만 반대로는 참조할 수 없다. 2️⃣ 다대일 양방향 [N:1, 1:N] 다대일 양방향에서 핵심은 다음과 같다. 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 양방향 관계는 항상 서로를 참조해야 한다. 📌 일대다 다대일 관계의 반대 방향이다. 보통 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션을 사용한다. 1️⃣ 일대다 단방향 [1:N] 보통 자신이 매핑한 테이블의 외래 키를 관리하는데 Team.members로 회원 테이블의 TEAM_ID 외래 키를 관리한다. 이 경우 mappedBy 속성을 사용하지 않고 .. 2022. 12. 2. TIL : StringUtils 사용하기 (17) 🔧 StringUtils StringUtils란? Apache에서 지원하는 문자열을 다루는 라이브러리이다! Spring에서 지원하는 StringUtils가 있는데 그거완 다르다! 🧐 왜 사용할까? str1.equals(str2) // str2이 null 이라면 NullPointerException 발생! StringUtils 라이브러리는 Null-Safety하기 때문이다. 😎 사용하기 라이브러리이다 보니 의존성을 추가해야 한다. 1️⃣ Gradle implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.8' 2️⃣ Maven org.apache.commons commons-lang3 3.8 😋 지원 메소드 너무 많으니까.. 2022. 12. 1. TIL : JWT, Access Token / Refresh Token (16) 🔐 JWT JWT란? Json Web Token의 약자로 인증에 필요한 정보를 암호화시킨 JSON 토큰이다. JSON 데이터를 Base64 URL-safe Encode로 인코딩하였고, 토큰 내부에 위조 방지를 위한 전자서명도 들어있다. 🧷 구조 (Header.Payload.Signature) Header : 타입과 해시 알고리즘(ex. HMAC SHA256, RSA)의 종류를 담고 있다. Payload : 사용자 권한, 정보 등을 담고 있다. Key-Value로 이루어진 정보를 Claim이라고 한다. Signature : 헤더에서 정해진 알고리즘과 비밀키를 사용해서 암호화한 인증을 위한 데이터이다. 🧐 왜 JWT를 사용할까? Base64를 통해서 암호화한다는 것을 알기 때문에 누구나 Payload를 쉽게.. 2022. 11. 30. TIL : 서버 인증 방식 (쿠키, 세션, 토큰) (15) 🍪 쿠키 인증 방식 쿠키란? 서버를 통해서 클라이언트 쪽에 저장되는 Key-Value 형식의 문자열 덩어리이다. 이 쿠키를 통해서 클라이언트가 누구인지 인증한다. 🌊 Flow 클라이언트가 서버에 요청을 보낸다. 서버가 요청에 대한 응답 헤더에 쿠키를 담아서 보낸다. 이후 클라이언트가 요청을 보낼 때마다 쿠키를 같이 보내고 서버는 해당 쿠키로 클라이언트를 확인한다. 🧷 단점 요청 시 쿠키의 값을 그대로 보내기 때문에 보안성이 떨어진다. 쿠키에는 용량 제한이 있다. 브라우저마다 쿠키 지원 형태가 다르기 때문에 공유가 불가능하다. 📖 세션 인증 방식 쿠키의 보안 이슈를 해결하기 위해 클라이언트 쪽이 아닌 서버 측 저장소에 보관하는 방식이다. 쿠키와 마찬가지로 Key-Value의 형태의 데이터를 저장하고 Key.. 2022. 11. 30. 이전 1 ··· 3 4 5 6 7 8 9 다음