일단 씻고 나가자

23.05.16 본문

Study/닥치는 대로 주워 담기

23.05.16

일단 씻고 나가자 2023. 5. 17. 01:41

2023. 05. 16 화요일

 

[Git] rebase? merge와 차이? 사용 명령어?

: merge와 비교되는 개념.

 

master에서 최초 분기되었을 때 master과의 코드를 공유하는 commitbase라 한다.

rebase는 이 base를 바꾼다는 뜻으로, 기존의 mergemaster의 최신 commit

현재 branch의 최신 commit을 병합했다면

rebase는 임시 공간을 만들어 기존 base부터 현재 branch의 최신 commit 객체들인 flow 내의 commit 객체들을 저장한 후 master의 최신 commit에 이어 붙여 commit 객체를 최신화한다.

 

rebase는 위험하므로 남의 push 커밋을 rebase 하면 남이 다시 push 했을 때 다시 merge 해야 하는 위험이 있지만 병렬 모형의 merge와 다르게 직렬형이므로 플로우가 단순해진다.

 

명령어는 A 브랜치에서 B의 최신 commitbaserebase 하려면

(Acheckout 한 상태에서) git rebase B 로 사용한다.

이때, 두 브랜치에서 같은 파일을 수정하고 commit 했다면 conflict가 난다. (다른 파일만 존재할 땐 ok)

 

 

- [regex] 자바로 정규식을 구현하는 두 클래스와 사용 방법?

: java.util.regex. PatternMatcher 클래스를 사용한다.

Pattern은 정규식을 담는 클래스로 Pattern pattern = Pattern.compile(“정규식”);으로 선언.

Matcher는 실제 문자열에 대한 정규식을 판단하는 클래스로, 문자열이 String str일 때,

Matcher matcher = pattern.matcher(str); 으로 선언한다.

이렇게 선언된 matcher 내장 함수로는 find, group, start, end 등이 있다.

find() // 해당 문자열에 정규식에 해당하는 부분이 있는지 boolean 반환

group() // 정규식에 해당하는 문자열을 String 반환

start(), end() // 정규식에 해당하는 부분의 indexstart, end+1로 반환

 

 

- [Effective Java] 클래스의 compareTo를 구현하는 두 가지 방법?

1. 대소 비교

 

2. stream 이용

// stream에서의 주의점은 comparator 객체를 comparing~ 함수를 통하여 비교하기 때문에 함수형 프로그래밍의 규칙에 따라 getter/setter를 활용, ::을 통해 값 비교해야 하며 int, double 등의 제공하는 자료형이 아닌 경우를 따로 함수를 달리 써서 분기해야 한다.

getter/setter가 아닌 직접 변수명을 쓸 수도 있지만 (ex. Person.age) 이렇게 되면 static으로 선언된 comparator 객체에 대하여 모든 변수가 static으로 선언되어야 한다.

 

 

- 리눅스 기본 명령어? (옵션, 현재 위치, 위치 이동, 파일 목록, 파일 내용, 삭제, 폴더 생성)

1. man [명령어] // manual. 명령어에 붙일 수 있는 여러 옵션에 대해 알려줌.

2. pwd // print working directory. 현재 작업 중인 디렉토리 위치.

3. cd [경로] // change directory. ~ 폴더 혹은 위치로 이동.

                      경로는 절대, 상대 경로 모두 가능.

                      cd ~ 의 경우, 사용자의 home/사용자명 폴더로 이동한다.

                      cd 의 경우, 이전에 이동했던 폴더로 이동한다.

4. ls // list segments. 현재 폴더의 하위 폴더 및 파일을 모두 보인다.

           ls al 의 경우, 숨긴 파일(a)과 파일 권한 및 정보(l)를 보인다.

5. cat [파일명] // concatenate. 해당 파일의 내용을 보인다.

6. rm [파일 혹은 디렉토리명] // remove. 파일 혹은 디렉토리를 삭제한다.

                                                  rm r [디렉토리] 의 경우, 모든 하위 디렉토리 삭제.

                                                  rm f [파일 혹은 디렉토리명] 의 경우, 강제로 삭제.

7. mkdir [디렉토리명] // make directory. 디렉토리를 만든다.

 

 

- 리눅스의 파일 권한에 대하여 10자리 설명?

기본적으로 맨 앞자리는 파일 타입을 알려준다.

소유자는 속한 그룹이 있는데, 소유자를 제외한 나머지 그룹원들의 권한이 두 번째이다.

세 번째는 기타 사용자의 권한이며, 공개라고도 한다.

https://gomguard.tistory.com/76

https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-%ED%8C%8C%EC%9D%BC-%EA%B6%8C%ED%95%9C-%EC%86%8C%EC%9C%A0%EA%B6%8C%ED%97%88%EA%B0%80%EA%B6%8C-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC

 

 

- 리눅스의 특정 파일 권한을 바꾸는 명령어와 방법?

: chmod (change mode)를 활용한다.

chmod [권한 관련 숫자] [파일 이름]처럼 사용한다.

chmod R [권한 관련 숫자] [디렉토리명]처럼 사용하는 경우도 있는데,

이는 해당 디렉토리 하위의 모든 폴더와 파일을 [권한 관련 숫자]의 권한으로 바꾼다는 의미.

, 이는 소유자의 파일만 설정할 수 있다. (root의 파일은 변경 불가)

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.05.18  (0) 2023.05.19
23.05.17  (0) 2023.05.18
23.05.12  (0) 2023.05.13
23.05.11  (0) 2023.05.12
23.05.10  (0) 2023.05.11