[TIL] 2월 11일

yeon·2021년 2월 11일
0

미션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, 가변)
    • String은 immutable
  • StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한다.
    • 배열로 길이변경 불가, 공간이 부족하면 새로운 배열을 생성해야하기 때문
  • StringBuffer는 String과 달리 내용 변경이 가능하다.
  • append()는 지정된 내용을 StringBuffer에 추가한 후, StringBuffer의 참조를 반환

StringBuffer의 비교

  • StringBuffer는 equals()가 오버라이딩 되어있지 않다.!!!

    StringBuffer sb = new StringBuffer("abc");
    StringBuffer sb2 = new StringBuffer("abc");
    
    // sb와 sb2의 내용이 같다. 하지만
    System.out.println(sb == sb2);        // false
    System.out.println(sb.equals(sb2));   // false
  • StringBuffer를 String으로 변환 후에 equals()로 비교해야 한다.

String s = sb.toString();
String s2 = sb2.toString();

System.out.println(s.equals(s2));    // true

StringBuilder

  • StringBuffer와 거의 비슷, StringBuffer의 메서드를 쓰면 됨
    • StringBuffer는 동기화 되어 있어서 멀티쓰레드에 안전하다.
    • StringBuilder는 동기화 안되어 있음
  • 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하
    • 이럴땐 StringBuffer 대신 StringBuilder를 사용하면 성능이 향상된다.

implementation : 구현

representation : 묘사

concrete : 구체적인

intent : 목적, 계획, 의미, 취지


오늘 한일

  • 아직도 rebase와 merge가 어질어질하다. learngitbranching 사이트에서 연습해봐야겠다.
  • 자바의 정석 StringBuffer, StringBuilder 학습
  • 미션3을 하고 있는데 이중 ArrayList로 구현해야하나 싶어서 요소를 가져오는 코드를 작성하다가 실패했다ㅠㅠ 어떻게 미션3을 구현할지 내일 더 생각해보자

0개의 댓글