커밋 메세지 형식 (): 커밋 메세지의 행은 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..
String 클래스에 대한 학습 테스트 요구사항1 "1,2"을 , 로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현한다. "1"을 , 로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현한다. @Test @DisplayName("요구사항1 - 1") void test1_1(){ String target = "1,2"; String[] temp = target.split(","); assertThat(temp).contains("1", "2"); } @Test @DisplayName("요구사항1 - 2") void test1_2(){ String target = "1"; String[] temp = target.split(","); assertTha..
OAuth 사용자의 정보를 가지고 있는 제3의 서비스로부터 접근 권한을 위임 받아서 웹 사이트의 자원에 접근하는 방식 사용자의 정보를 저장하고 관리해야 하는 부담을 줄일 수 있다. 사용자도 자신의 개인정보를 신뢰할 수 없는 타인에게 제공하는 단점을 해결한다. OAuth 제공자는 네이버, 카카오, 구글 등이 있다. JWT Header, Payload, Signature로 구성된 암호화된 토큰 session 기반 인증 방식과 달리 stateless한 구현이 가능하다. 로그인 흐름 Resource Owner(사용자)가 Client(서버) 자원에 접근하려 하면 Resource Server(OAuth 제공자)의 로그인 창을 호출하여 인증을 요구한다. 로그인을 성공하면 Resource Server에 로그인 API..
1. 스왑 파일 생성 root 경로(/)에 아래 명령어로 파일을 생성한다. bs는 블록 크기, count는 블록의 수 AWS에서 권장하는 스왑 공간은 RAM 2GB 이하는 RAM 용량의 2배, 128MB X 16 = 2048MB cd / sudo dd if=/dev/zero of=/swapfile bs=128M count=16 2. 스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트 sudo chmod 600 /swapfile 3. 스왑 영역을 설정 sudo mkswap /swapfile 4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 만든다 sudo swapon /swapfile 5. 절차가 성공했는지 확인 sudo swapon -s 6. /etc/fstab 파일을 편집하여 부팅..
자료구조란? 데이터를 추가, 삭제, 검색에 있어서 효율적으로 사용할 수 있도록 구조를 만들어서 저장해 둔 것 모든 자료구조 클래스에는 래퍼런스 타입의 데이터만 저장할 수 있다. java.util 패키지에 속하는 JDK 라이브러리의 자료구조 클래스들 자료구조 클래스 이름 리스트 ArrayList, LinkedList, Vector 스택 LinkedList, Stack 큐 LinkedList 해쉬 테이블 HashMap, Hashtable 집합 HashSet List 데이터를 일렬로 늘어놓은 자료구조 중복된 데이터를 저장하고 순서를 유지하는 선형 자료구조 선언 // ArrayList 선언 // 인덱스로 데이터 항목을 찾는 일이 많은 프로그램에서 유리함 ArrayList list = new ArrayList()..
역정규화 성능이나 개발의 편의성을 위해서 테이블의 구조를 바꾸는 것 여러 대의 서버로 데이터를 분산할 때 사용할 수 있다. 조인 줄이기 많은 조인은 시스템에 부하를 줄 수 있기 때문에 조인을 줄여서 부하를 줄일 수 있다. 조인을 하지 않고 테이블을 조회할 수 있도록 컬럼을 추가했다. 하지만, topic_tag_relation 테이블은 중복이 발생하고 tag 테이블이 존재하면서 동시에 tag_name 컬럼이 존재하는 중복도 같이 발생해버렸다. 계산 작업을 줄이기 GROUP BY와 같은 명령어는 데이터가 많은 경우 많은 비용이 발생할 수 있다. SELECT author_id, COUNT(author_id) FROM topic GROUP BY author_id topic_count 컬럼을 추가해서 쿼리를 대체..