전체 글 32

Git 기본 명령어 정리

fetch git fetch --all: 모든 원격 저장소 정보를 동기화 한다. git fetch [branch]: remote를 지정하면 특정 remote의 변경 내용을 동기화하며, branch가 지정되면 특정 브랜치 정보만 동기화 한다. remote -> branch commit git commit -am "커밋 메시지": 워킹 트리에서 작업한 것을 add(스테이징 에어리어)로 옮김과 동시에 commit(로컬 저장소) + 커밋 메시지 등록 git commit --amend: commit 까지 완료하고 push 하기전에 커밋 메시지를 변경할 수 있다. push git push : local 브랜치로 가서 모든 커밋들을 수집합니다, 그다음 origin/ 브랜치로 가서 이 브랜치에 부족한 커밋들을 채워 넣..

Development/Git 2023.02.18

스레드의 종류

컴퓨터를 구성하는 하드웨어(CPU, Memory, Devices)와 하드웨어를 관리하고 컴퓨터 시스템 전반을 관리하는 OS(커널)가 있고 우리가 개발한 프로그램(Application)은 운영체제를 통해서 하드웨어를 사용하게 된다. 하드웨어 스레드 OS 관점에서는 가상의(logical) 코어 인텔에서는 hyper-threading이라고 브랜딩하였다. -> 물리적인 코어마다 하드웨어 스레드가 두 개 예) 싱글 코어 CPU에 하드웨어 스레드가 두 개라면 OS는 이 CPU를 듀얼코어로 인식하고 듀얼 코어에 맞춰서 OS 레벨 스레드들을 스케줄링 한다. OS 스레드(네이티브 스레드 == 커널 스레드 == 커널-레벨 스레드 == OS-레벨 스레드) OS 커널 레벨에서 생성되고 관리되는 스레드 CPU에서 실제로 실행..

Development/OS 2023.02.12

프로그램, 프로세스, 스레드, 멀티 태스킹, 멀티 스레드, 멀티 프로세싱, 멀티 코어

프로그램 컴퓨터의 CPU에게 시킬 명령들을 프로그래밍 언어로 적어놓은 파일 명령어들의 조합 프로그램은 정적인 개념으로 저장매체(HDD, SDD)에 저장된 실행 파일을 의미한다. 프로세스 CPU(프로세서)에 의해 실행되고 있는 프로그램이다. 프로세스는 최소 1개의 스레드가 존재한다. OS는 Virtual Memory(제한된 공간)(1차 메모리 RAM + 2차 메모리 HDD)를 프로세스에 할당한다. JVM이 실행되어 컴파일러에 의해 변환된 바이트코드가 메모리 상에 올라갔을 때 "프로세스가 실행 중이다"라고 한다. 프로그램이 메모리 상에 올라와 컴퓨터의 자원(메모리, CPU)을 할당받아 실행중인 것을 의미한다. 멀티 태스킹 하나의 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템..

Development/OS 2023.02.11

운동 전 근성장에 비효율적인 행동 3가지

운동에는 정답이 없기때문에 가벼운 마음으로 참고만 하면 좋을것 같습니다. 1. 웨이트 트레이닝 전에 과도한 유산소를 하지마라 웨이트를 하기전에 유산소 운동을 과도하게 할 경우 근육 내 글리코겐의 농도가 소모되고 웨이트 운동에서 가장 많이 쓰이는 근육의 에너지원이기 때문에 웨이트 도중에 근력이 떨어질 수 밖에 없다. 그렇게 웨이트에서 근력이 떨어지면 운동의 볼륨이 낮아져 운동의 효과가 훨씬 떨어진다. 아래와 같이 논문에 의거하여 웨이트 후 유산소가 근성장과 체지방 감량에도 훨씬 더 좋다고 한다. ※ 워밍업을 위한 가벼운 유산소는 괜찮다. 2. 과한 정적 스트레칭을 하지마라 정적 스트레칭: 스트레칭 하는 부위의 근육을 움직이지 않고 지긋이 늘리기만 하는 스트레칭 동적 스트레칭: 스트레칭 하는 부위를 움직이며..

JVM GC

GC(Garbage Collection)란 JVM의 Heap 영역에서 사용하지 않는 객체를 삭제하는 프로세스를 말한다. ※ Java GC를 잘 알아야 하는 이유: 서비스 중에 문제가 생기면 대부분 GC의 메모리 파트에서의 발생 빈도가 높기 때문이다. 하지만 과거엔 서버를 사서 코어, 메모리 사이즈 등에 맞추어 이런 저런 GC 튜닝을 해야했지만 퍼블릭 클라우드로 바뀌면서 환경이 거의 통일 되었기에 요즘엔 GC를 튜닝할 일이 잘 없다고 한다. ※ 왜 자바에서만 특히 GC를 신경쓸까? 러스트 같은 언어도 GC가 있긴한데 아무때나 아무렇게 일어나도 괜찮은 모델이다. A a = new A(); B b = new B(); a = b; 대충 위와 같은 참조를 못하게 막아서 레퍼런스 카운트를 1로 강제하기 때문에 ST..

Development/Java 2023.02.03

JVM 메모리

JVM(Java Virtual Machine): 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 (메모리 관리, GC 수행) 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환 바이트 코드를 실행하는 표준이자 구현체 JVM 밴더: 오라클, 아마존, Azul, ... JDK는 특정 플랫폼에 종속적 (JDK를 다운받을 때에 mac OS용, Windows용, Linux용이 따로 있다.) 자바는 플랫폼에 독립적이다. JRE(Java Runtime Environment) 자바 애플리케이션을 실행할 수 있도록 구성된 배포판 개발 관련 도구는 포함하지 않는다. (그건 JDK에서 제공) JDK(Java Development Kit) JRE + 개발에 필요한 툴(javac,..

Development/Java 2023.02.03