미션2 PR시 충돌이 발생한 이유?
→ rebase하기 전에 step2브랜치를 만들고 작업해서 그런것이라고 예상됨
그래서 conflict가 발생했고, upstream에는 이미 rebase가 되어있어서 이걸 당겨서 merge한 것으로 컨플릭트가 해결된 것
그렇다면 새로운 브랜치를 만들기전에 rebase를 하면 컨플릭트가 발생하지 않나?
→ yes.
PR전, 최신화된 업스트림이 작업한 브랜치에 반영되면 컨플릭트가 발생하지 않을 것이다. 보통 '선 머지 후 PR'이라고 많이 이야기하는데, 업스트림 → 작업 브랜치 방향의 머지를 한번 해주면 컨플릭트가 나지 않을 것이다.
- git pull은 local repository와 비교하여 병합하고, local repository에 저장(add)까지 수행
- git pull = git fetch + git merge
- git fetch는 local에 연결된 remote repository의 브랜치 목록과 그 파일 내용을 최신으로 업데이트한다.
- local과 remote의 싱크를 맞추는 새로고침 역할
- git merge는 두개의 branch를 병합하는 명령어
자바의 정석 9장 StringBuffer와 StringBuilder
StringBuffer 클래스
- 문자열을 저장하기 위한 클래스
- String처럼 문자형배열(char[])을 내부적으로 갖고있다.
- String과 달리 내용을 변경할 수 있다.(mutable, 가변)
- StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한다.
- 배열로 길이변경 불가, 공간이 부족하면 새로운 배열을 생성해야하기 때문
- StringBuffer는 String과 달리 내용 변경이 가능하다.
- append()는 지정된 내용을 StringBuffer에 추가한 후, StringBuffer의 참조를 반환
StringBuffer의 비교
-
StringBuffer는 equals()가 오버라이딩 되어있지 않다.!!!
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb == sb2);
System.out.println(sb.equals(sb2));
-
StringBuffer를 String으로 변환 후에 equals()로 비교해야 한다.
String s = sb.toString();
String s2 = sb2.toString();
System.out.println(s.equals(s2));
StringBuilder
- StringBuffer와 거의 비슷, StringBuffer의 메서드를 쓰면 됨
- StringBuffer는 동기화 되어 있어서 멀티쓰레드에 안전하다.
- StringBuilder는 동기화 안되어 있음
- 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하
- 이럴땐 StringBuffer 대신 StringBuilder를 사용하면 성능이 향상된다.
implementation : 구현
representation : 묘사
concrete : 구체적인
intent : 목적, 계획, 의미, 취지
오늘 한일
- 아직도 rebase와 merge가 어질어질하다. learngitbranching 사이트에서 연습해봐야겠다.
- 자바의 정석 StringBuffer, StringBuilder 학습
- 미션3을 하고 있는데 이중 ArrayList로 구현해야하나 싶어서 요소를 가져오는 코드를 작성하다가 실패했다ㅠㅠ 어떻게 미션3을 구현할지 내일 더 생각해보자