프로세스와 스레드
·
기타
프로세스와 스레드 기본 프로세스 프로세스는 운영체제에 의해 연속적으로 실행되고 있는 프로그램이다. 유저가 프로그램을 실행했다면 프로세스는 메모리 위에 올라가 있게 되며 운영체제에 의해 CPU, 메모리 자원을 할당받는다. 프로세스는 독립된 메모리 영역으로 Code, Data, Stack, Heap을 할당받는다. Code : 개발자가 작성한 코드 Data : 전역 번수, 정적 변수, 배열, 구조체 등 프로그램이 실행되면서 생기는 정적인 데이터 Stack : 함수 호출과 관련된 정보(실행정보, 지역변수, 파라미터 등) 일반적으로 컴파일 타임에 Stack의 크기가 결정됨. Heap: 런타임에 동적으로 메모리를 처리해야 하는 상황에서 사용되는 공간. Array를 사용하거나 외부 파일을 읽을 때 등을 예로 들 수 ..
SOLID 원칙
·
기타
SOLID 객체지향 설계 5대 원칙이라 부르는 SOLID 원칙은 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말하고 각 원칙의 앞자를 따서 SOILD 원칙이라고 부른다. Single Responsiblity Single Responsiblity은 객체는 하나의 책임만을 지녀야 한다는 법칙이다. 여러 책임을 동시에 가지는 객체는 처음에 코드를 짤 때는 편하지만 코드가 복잡해질수록 에러가 날 확률도 높아지며 직관적으로 코드를 이해하기 어려워진다. 따라서 객체를 설계하기 전 책임을 확실하게 부여하는 것이 중요하다. AS-IS # 하나의 클래스(객체)가 여러 책임을 가지고 있을때 class Employee: def..
서브모듈
·
기타/깃허브
미리하는 코드정리 git submodule add 원격저장소URL 폴더이름 #서브모듈 추가 및 저장소 연결 대형 프로젝트 깃은 작은 프로젝트부터 대용량 프로젝트까지 관리할 수 있는 버전 관리 도구이다. 깃은 작은 프로젝트뿐만 아니라 큰 규모의 프로젝트도 관리하기 쉽도록 저장소를 여러 개 이용하여 단일 프로젝트를 진행할 수 있다. 저장 용량 깃 저장소는 용량 한게가 없다. 컴퓨터의 하드디스크에서 지원하는 용량만큼 깃 저장소를 생성할 수 있다. 또 깃은 파일을 기반으로 데이터베이스를 관리한다. 하지만 저장소 크기가 너무 크면 컴퓨터에 부담을 준다. 이러한 이유로 깃 호스팅 서비스들은 제공되는 저장소 용량을 보통 1GB 제한한다. 그렇기 때문에 파일 개수가 많은 프로젝트에서는 좀 더 효율적인 관리 방법이 필요..
복귀
·
기타/깃허브
미리하는 코드정리 git reset --soft 커밋ID # 지정된 커밋 이전 상태로 되돌아감(add 상태) git reset --mixed 커밋ID# 지정된 커밋 이전 상태로 되돌아감(add 이전 상태) git reset --hard 커밋ID# 지정된 커밋 이전 상태로 되돌아감(파일 수정 전 상태) git revert 커밋ID # 지정된 커밋을 취소하는 커밋 생성 git revert --mainline 숫자 병합커밋ID # 병합 취소 되돌리기 깃을 이용하여 버전을 관리하는 목적은 만일의 사태를 대비하기 위해서이다. 깃을 사용하면 언제든지 원하는 시점으로 전체 코드를 되돌릴 수 있다. 다시 시작 깃은 기록된 커밋을 기준으로 이전 상태로 되돌릴 수 있다. 즉, 코드를 항상 안정적으로 유지하고 관리할 수 있..
병합과 충돌
·
기타/깃허브
미리하는 코드정리 git merge 브랜치이름 # fast-forward 방식으로 병합 git rebase 브랜치 # rebase 형식으로 병합 (리베이스 병합 후 merge 명령어를 한번더 입력 해줘야함) 병합 브랜치를 생성하는 목적은 원본 코드에 영향을 주지 않고 분리하여 개발하기 위해서이다. 독립 된 브랜치에서 개발 작업이 끝나면 다시 원본 브랜치에 작업한 결과를 반영해야 한다. 분리된 브랜치를 한 브랜치로 합치는 작업을 병합(merge)이라고 한다. 깃으로 자동 병합 깃의 자동 병합은 원본을 기준으로 두 파일의 변경 이력을 비교한다. 변경된 파일 내용이 발견되면 자동으로 수정된 코드 내용을 병합한다. 깃의 병합은 브랜치를 기준으로 한다. 브랜치는 같은 저장소 내에서 서로 독립적으로 작업을 분리한 ..
임시처리
·
기타/깃허브
미리하는 코드정리 git stash # 현재 작업 내용 임지 저장 git stash list # 저장된 스태시 리스트 git stash pop # 임시 저장한 스태시 불러오기 git stash branch "브랜치이름" # 새로운 브랜치 생성과 동시에 스태시의 임시 작업 복원 git stash apply # 스태시 복사 (git stash pop과 다른점은 스태시를 불러온 이후에도 삭제되지 않음) git stash drop # 스태시 삭제 임시처리 스태시 작업 브랜치를 변경하려면 워킹디렉터리는 깨끗한(clean)상태로 정리되어 있어야 한다. 워킹 디렉터리에 작업 중인 내용이나 커밋되지 않은 변경 사항들이 남아 있으면 브랜치를 변경할 수 없다. 예를 들어 브랜치에서 코드를 수정하는 도중에 새로운 버그가 발..
ariz1623
코딩의 숲