본문 바로가기

Java62

TIL : Random VS SecureRandom (19) 🛠️ Random과 SecureRandom 난수 생성을 위해서 보통 Random을 사용하는데, SecureRandom을 권장하더라! 왜 그럴까? 🤔 Random 우선 Random은 난수를 만들기 위해 사용하는데, 정말 무작위 숫자를 만들지 않고 의사 난수를 생성한다. 의사 난수란? 무작위의 숫자처럼 보이는 규칙적으로 만들어진 숫자이다. Random을 조금 써본 사람이라면 같은 seed라면 같은 값이 나오는 것을 알고 있을 것이다! 이게 바로 의사 난수라서 그렇다. 😮 SecureRandom 이름에서부터 느껴지듯이 보안성이 더 좋을 것만 같다. 그렇다면 정확하게 어떤 점이 다를까? 1️⃣ 크기 Random은 48 비트까지 지원하지만 SecureRandom은 128 비트까지 지원한다! 같은 값이 나올 확률이.. 2022. 12. 20.
[이펙티브 자바] 아이템 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.
자바 ORM 표준 JPA 프로그래밍 : 연관관계 매핑 기초 (5장) 📌 단방향 연관관계 회원과 팀의 관계를 통해서 객체와 테이블의 차이를 보면 다음과 같다. 객체 : 단방향 관계이다. 회원은 Team 필드를 통해서 팀을 알 수 있지만, 반대로 팀은 알 수 없다. 테이블 : 양방향 관계이다. 외래 키를 통해서 서로 JOIN 할 수 있다. 참조를 통한 연관관계는 항상 단방향이다. 양방향으로 만들고 싶으면 반대쪽에서도 필드를 추가해 참조를 보관해야 한다. 하지만 이건 서로 다른 단방향 관계 2개이다. 테이블과 다르게 외래 키 하나로 양방향으로 JOIN 할 수 없다. 1️⃣ 순수한 객체 연관관계 참조를 통해서 연관관계를 탐색하는 것을 객체 그래프 탐색이라고 한다. 2️⃣ 테이블 연관관계 데이터베이스의 외래 키를 사용해서 연관관계를 탐색하는 것을 조인이라고 한다. 3️⃣ 객체 관.. 2022. 11. 18.