TIL

    [Git] git remote, 원격 저장소 확인, 추가, 수정, 삭제

    지금 내 로컬저장소와 연결된 저장소를 확인하고 싶다면 git remote 저장소 url주소도 같이 보고 싶다면 git remote -v upstream이라는 이름으로 https://github.com/soosue/test 저장소를 연결하고 싶다면 git remote add upstream https://github.com/soosue/test upstream으로 연결된 저장소를 upstream2라는 이름으로 바꾸고 싶다면 git remote upstream upstream2 upstream2로 연결된 저장소를 지우고 싶다면 git remote remove upstream2

    SQL 쿼리 실행 원리

    우리가 작성하는 SQL쿼리는 절차적 언어가 아닌 선언적 언어다. 그 말은 우리가 작성한 쿼리가 직접 실행되는 것이 아니라, select 할거야 하고 선언을 하면 우리가 작성한 쿼리가 그에 맞는 실행될 수 있는 명령어로 바뀌어서 실행된다는 얘기이다. 다시 돌아와서 그럼 그 과정은 어떻게 될까? 크게 5가지 단계로 나뉘게 된다. 1. SQL쿼리 작성 2. Parser - parsing 3. 옵티마이저 - 최적화 4. row-source generation - row-source 생성 5. SQL엔진 - 실행 우리가 작성한 SQL쿼리가 DB서버에 전달이 되면 DBMS에서 parser가 parsing을 해준다. parsing에는 크게 2가지 스텝이 존재하는데, 첫번째 스텝은 문법과 권한 및 오브젝트 체크이다. ..

    [Java] 동시성, 스레드 조심해야할 사항1

    [Java] 동시성, 스레드 조심해야할 사항1

    여러 스레드를 사용하는 상황에서 프로그래밍을 할 때, 주의해야할 상황이 하나 있다. 바로 여러 스레드가 변수를 공유해서 사용하는 상황이다. 무엇을 조심해야할까? 첫번째는, 한 스레드가 접근할 때 다른 스레드는 접근하지 못하게 하는 것이다. 이를 배타적 수행이라고 한다. 두번째는, 한 스레드가 변경한 값을 다른 스레드도 볼 수 있게 하는 것이다. 이를 스레드간 통신이라고 한다. 배타적 수행과 스레드간 통신이 꼭 지켜져야하는 것은 아니다. 하지만 상황을 잘 이해하고 필요하다면 꼭 적용해야 내가 원하는 결과가 나올 수 있다. 차례대로 살펴보자. 배타적 수행 언제 한 스레드가 공유 데이터에 접근할 때 배타적으로 수행해야할까? 스레드 1이 Number객체를 변경 중이라서 상태가 완전하지 않은 순간의 객체를, 스레..

    [Git] Fork, Pull Request, Clone, Push

    [Git] Fork, Pull Request, Clone, Push

    오늘은 git study 정리를 했다. Fork, PR, clone, branch, rebase에 대해 정리를 해봤다. Fork : 다른 사람의 repository(upstream)를 복사하여 새로운 repository(origin)를 만드는 것. Pull Request : Fork해서 만든 repository(origin)의 변경내용을 원본(upstream)에 반영해달라고 요청하는 것. Clone : 원격 repository(upstream, origin)를 내 local에 복사해서 가져오는 것. Push : 내 local의 변경사항을 연결된 원격 repository에 적용하는 것.(push 권한이 있을 경우에만 성공한다. 없을 경우에 반영해달라고 요청하는 것이 PR.) Branch : 작업하던 것을 ..

    [Spring] Filter란,

    [Spring] Filter란,

    1. 필터란, 2. 필터는 그럼 언제 사용하는가? 3. 필터는 어떻게 실행되는가? 필터란, 이름의 의미만 보면, '요청에 대해서 거름망 같은 역할 수행하나?' 하는 생각을 할 수 있다. 실제로 로그인 여부를 확인한다거나, 들어온 요청에 대해서 character encoding 등의 일을 한다. 하지만 그 외에 인터셉터와 같이 컨트롤러로 가기 전, 하고 싶은 작업들을 행할 수 있다. 클라이언트가 요청을 하면, WAS -> Filter -> Servlet -> Interceptor -> Controller 의 순으로 거치게 되는데 필터가 서블릿쪽 기술이고, 인터셉터는 스프링쪽 기술이어서 서블릿 필터, 스프링 인터셉터로 불리기도 한다. 필터는 그럼 언제 사용하는가? 필터와 인터셉터는 공통관심사를 처리할 때 사..

    [Git] fork, pull request, rebase

    pull request시에 conflict가 날 때, 처리하는 경우에 대해서 자습해보았다. 우선, pull request시 conflict가 나는 이유를 알아보자. 현재 upstream repository에 commit되어있는 코드가 내가 fork한 repository의 코드와 겹치는 부분이 있기 때문이다. 결국 내 코드에서 겹치는 부분을 해결하고 pull request를 해야한다. (conflict해결 후, fork한 repository에 push만 해주면 된다!) 겹치는 부분을 해결할 때는 2가지 방법이 있다. 1. upstream의 코드를 내 브랜치에다가 merge하는 방법. 2. upstream의 코드를 내 브랜치를 rebase를 해주는 방법. 선택은 2번을 하겠다. 왜냐하면 git graph가 ..