생성 과정 요약 VPC 생성 Subnet 생성 Internet Gateway 연결 생성 및 VPC에 연결 Route Table 생성 외부망에서 사용할 라우팅 테이블 생성 모든 요청이 Internet Gateway를 거치도록 설정 외부망에서 사용할 서브넷 등록 내부망에서 사용할 라우팅 테이블 생성 내부망에서 사용할 서브넷 등록 NAT 게이트웨이 모든 요청이 NAT 게이트웨이를 거치도록 설정 서버 생성 외부망에서 웹 서비스 용도의 EC2 생성 페어 키 생성 Security Group 설정 : 전체 대역 8080번 포트 오픈, 관리망 22번 포트 오픈 내부망에서 데이터베이스 용도의 EC2 생성 Security Group 설정 : 외부망 3306번 포트 오픈, 관리망 22번 포트 오픈 관리망에 베스쳔 서버 용도..
JPA의 장점 객체에 적절한 책임을 할당하는 객체지향적 개발이 가능하다. 새로운 필드가 추가될 때마다 쿼리를 수정해야 하는 문제가 발생하지 않는다. 생성 방식 create: 기존 테이블 삭제 후 다시 생성 (개발) create-drop: create와 같으나 종료 시점에 테이블 drop (개발) update: 변경된 부분만 반영 (테스트, 개발) validate: entity와 table이 정상 매핑되었는지만 확인 (테스트, 운영) none: 사용하지 않음 (스테이징, 운영) 데이터베이스 스키마 생성 방식 설정 // application.properties spring.jpa.hibernate.ddl-auto={생성_방식} 스키마 자동 생성을 위한 Entity class 작성법 @Entity // (1)..
정적 팩토리 메소드란? 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해 객체를 생성하는 것을 정적 팩토리 메서드라고 한다. 인스턴스 캐싱과 함께 사용하여 매번 새로운 인스턴스를 생성하지 않을 수 있다. 인스턴스 캐싱이란? 인스턴스를 미리 만들어 두고 필요할 때 사용함으로서 메모리 낭비를 해결하는 방법이다. public class LottoNumber { // 인스턴스 캐싱 private static final Map lottoNumbers = new HashMap(); // 1부터 45까지 LottoNumber 객체를 미리 생성한다. static { for (int number = LOTTO_START_NUMBER; number
디미터의 법칙(Law of Demeter) 상태를 가지는 객체의 데이터를 꺼내려 하지 말고 메세지를 보내라. 객체의 자료를 숨기고 함수를 공개함. 코드의 중복 사용 방지와 유지 보수성을 높일 수 있다. 결합도를 낮추고 응집도를 높일 수 있다. 디미터의 법칙을 위반한 경우 public class Lotto { private List LottoNumbers; public Lotto(List lottoNumbers) { LottoNumbers = lottoNumbers; } public List getLottoNumbers() { return LottoNumbers; } } @Test void 디미터의_법칙_위반() { List lottoNumbers = new ArrayList(Arrays.asList(1,..
리뷰어에게 코드 컨벤션을 지적받고 함께 받은 우아한테크코스 스타일 가이드를 읽어보았지만 사용 예시가 없어서 글로만 이해하기 힘들었다. 그리고 이때까지 함께 첨부된 intellij-java-wooteco-style.xml의 쓰임세에 대해 알지 못했다. 나는 사용 예시와 함께 정리된 글이 있지 않을까? 하고 검색했는데 IntelliJ에 Google Java Style Guide 적용하기 (feat. Naver)를 읽고 함께 첨부된 xml 파일의 용도를 알 수 있었다. 인텔리제이에서 자동 정렬(⌥ + ⌘ + L)을 사용하면 Wooteco Java Code Style로 자동 정렬 하도록 인텔리제이 설정을 바꿀 수 있다. IntelliJ에서 Wooteco Java Style Guide 사용하기 우아한테크코스 스타..
커밋 메세지 형식 (): 커밋 메세지의 행은 100자를 초과할 수 없다! 이를 통해 다양한 git 툴뿐만 아니라 github에서도 메세지를 쉽게 읽을 수 있다. Subject Line 변경에 대한 간결한 설명이 포함되어야 함. 허용된 feat (feature) fix (bug fix) docs (documentation) style (formatting, missing semi colons, …) refactor test (when adding missing tests) chore (maintain) 허용된 변경된 부분이라면 무엇이든 지정될 수 있다. 예를 들어 $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView 등... 생략 가능하다...
1단계 - 브랜치 생성 및 Fork 그리고 Local로 복사 1. 원본 프로젝트에 나의 브랜치 생성 및 확인 1-1. next-step/java-lotto-pro 저장소에 브랜치 생성 1-2. 브랜치 확인 2. Fork 해서 나의 GitHub로 프로젝트 가져오기 * Copy the main branch only 체크 해제 3. 나의 GitHub에서 Local로 프로젝트를 가져온 후 기능 구현을 위한 브랜치 생성 3-1. Fork한 프로젝트 URL을 이용해서 Local에 나의 브랜치만 다운로드 한다. git clone -b {본인_아이디} --single-branch https://github.com/{본인_아이디}/{저장소_아이디} ex) git clone -b seogineer --single-bran..
스레드(thread)란? 명령문이 순서대로 하나씩 처리되는 것. 즉, 프로그램의 실행 흐름. 멀티스레드 프로그램(multi-thread program)이란? 둘 이상의 실행 흐름을 갖는 프로그램. 멀티스레드 프로그램의 작동 방식 메인 스레드만 프로그램이 시작되면 자동으로 시작되고, 다른 스레드들은 메인 스레드에서 만들어서 시작한다. 메인 스레드가 끝나더라도 다른 스레드는 끝나지 않고 실행을 계속할 수 있다. 스레드는 동시에 실행되는 것이 아니라 자바 가상 머신이 스레드를 번갈아 실행한다. 멀티스레드 프로그램의 작성 방법 1. Thread 클래스를 이용하는 방법 class AlphabetThread extends Thread { public void run () { for (char ch = 'A'; ch
Exception 종류 RuntimeException이 checked exception과 unchecked exception을 나누는 기준으로서 RuntimeException과 서브 Exception은 모두 unchecked exception에 속하고 나머지는 모두 checked exception에 속한다. checked exception 반드시 try-catch 문으로 처리해야 하는 예외 예) IOException, FileNotFoundException unchecked exception 반드시 처리해야 할 필요가 없는 예외 예) RuntimeException, NullPointerException, ArithmeticException Exception 클래스의 메소드 getMessage() exce..
일급 컬렉션(First Class Collection) Wrapping한 Collection 외에 다른 멤버 변수가 없는 상태 특정 역할만을 수행하는 자료구조 // 기존 public class Racing { private List cars; } // 변경 public class Racing { private Cars car; } public class Cars {// List를 Cars 클래스로 Wrapping private List cars;//멤버 변수가 하나 밖에 없는 일급 컬렉션 public Cars(List cars){ this.cars = cars; } } 원시값, 문자열 포장 원시 타입 또는 문자열을 객체로 포장 // 기존 public class User { private String na..