4월 21일 학습 내용

박도일·2022년 4월 21일
0

4월 학습내용

목록 보기
12/17

<< 복습 >>

복습 1

  • git init : 레포 생성
  • git status : 레포 상태 확인
  • git add : 스테이징
  • git restore : Unstage or Discard
  • git commit : 커밋
  • git branch : 브랜치 만드는거
  • git merge : 병합
  • Relative Reference

    ^ / ~

  • git reset : 되돌아 가는 것
  • git revert : 반대되는 커밋
  • git fetch : 원격 가져오는거
  • git pull : fetch + merge
  • git pysh : 로컬에 있는 거 보내는 거
  • git clone : 원격 저장소 로컬로 복제
  • git log : 이력 확인

복습 2

  • Github Flow
    1. main에서 새로운 브랜치 만들고
    2. 작업 하면서 커밋 및 푸시
    3. 작업 끝나면 Pull Request
    4. 코드 리뷰
    5. 리뷰 끝나면 approve해서 main으로 merge
  • 충돌처리

    만약 merge 하다가 남의 것을 날렸으면 reset하고 다시 merge

<< 220421 >>

컴퓨터 공학개론

  • 컴퓨터는 메모리, 입력과 출력(I/O), CPU 로 나눌 수 있다.
  • 1byte = 8bit
  • 컴퓨터 식별 방법 : IP, 포트넘버
메모리
  • 엔디안 : 비트를 저장하는 방식

    빅 엔디안 : 1000 (큰 자리수를 먼저) -> 네트워크 장비에 주로 사용
    리틀 엔디안 : 0001 (작은 자리수를 먼저) -> 대부분의 컴퓨터 방식

  • 메모리는 왜 계층구조로 이루어져야 하는가 : 비용문제. 모든 저장공간을 register로 만들면 비용이 너무 많이 든다.
  • 집적도를 높혀서 만들면 발열을 잡기 힘들다.
  • CPU는 register 하고만 작동
  • cache : 메모리 계층 구조에서 데이터관리를 하기 위한 보조 고속 기억 장치

    cache hit : 필요한 캐시가 있을때
    cache miss : 필요한 캐시가 없을때
    하드디스크 -> 디스크캐시 -> 메인 메모리 -> 캐시 -> CPU

입력과 출력(I/O)
  • 키보드, 마우스, 모니터, 스피커, 프린트 등 주변장치라고도 한다.
  • 입력 : 컴퓨터에 데이터를 넣는 것
  • 출력 : 컴퓨터가 정보를 보여주는 것
CPU(중앙 처리 장치)
  • 산술 논리 장치, 레지스터, 제어 장치

    ALU(산술 논리 장치) : 산술 계산, 불리언 대수, 기타 연산을 한다
    레지스터 : CPU가 데이터를 저장할 때 사용
    피연산자와 연산코드를 받아 결과와 조건코드를 생성
    명령코드의 집합 -> 명령집합(Instruct set)
    CISC / RISC
    제어장치는 명령코드와 피연산자를 메모리에서 가져와서 ALU에게 어떤 작업을 수행할지 알려주고, 결과를 메모리에 돌려준다.

컴퓨터 아키텍쳐
  • 컴퓨터 구조 : 하버드 구조 / 폰 노이만 구조

    폰 노이만 : 현재 대부분의 컴퓨터 구조

운영체제
  • 위에 배운 모든것(하드웨어)들을 운영하고 관리하는 프로그램
    ex) Window, Mac, Linux
프로그램
  • 하드디스크에 명령어를 저장 해놓은 것

  • 어학 단어 뜻 : 일정, 순서, 절차 들을 모아 놓은 것

  • 뭔가를 실행하려면 메인메모리까지 불러와야 함.

  • 하드디스크에서 불러오면 메인 메모리에 켜지고, 프로그램이 다른 것으로 바뀌는데 그것을 Process(프로세스)라고 한다.

  • 프로세스

  • 실행되는 프로그램

    텍스트(코드) : 우리가 작성한 명령 코드들이 들어가는 공간(기계어)
    데이터 : 정적 데이터가 들어감
    힙 : 동적 할당 공간
    스택 : 정적 할당 공간 (우리가 작성한 변수)

  • 프로그램 더블클릭 -> 프로세스 변경 -> 위 4가지 중에 하나로 처리

    스레드
  • 실제 코드가 실행되는 곳

  • CPU에 보내지는 내용은 스레드의 내용

  • 한개의 프로세스는 무조건 메인스레드는 하나만 있음

    멀티스레드의 경우 스택은 따로 있지만 힙, 데이터, 텍스트는 공유함
    멀티스레드에서 같은 작업을 실행할 경우 결과값이 예상값이랑 달라질 경우가 있음(Race Condition)
    이를 해결하기 위해 스레스 작업 순서를 정해주는 작업을 스레드 동기화 라고 한다.

    • 뮤텍스(Mutex) : 상호 배제 영역
OSI 7계층
  • Application : 프로그램 끼리 데이터 통신
  • Presentation : 데이터 암호화/복호화
  • Session : 세션의 연결/해제는 어떻게 할지 생각하는 영역
  • Transport : 어떤 방식으로 전송을 할지 생각하는 영역
  • Network : 네트워크 내의 컴퓨터를 식별하는 영역
  • DataLink : 내 컴퓨터에서 네트워크 장비까지 가기 위한 경로를 정의하는 영역
  • Physical : 실제 비트 전송 방식을 정의하는 영역(무선, 유선 등)
TCP/IP Protocol
  • OSI 7계층 중 App~sessin 까지 묶어서 Application
  • Transport는 동일
  • Network는 Internet영역으로
  • DataLink와 Physical영역을 묶어서 Network Interface로 변경

프로그래밍 언어

과거의 컴퓨터
  • 천공카드를 이용하여 직접 기계어를 입력
  • 어셈블리어를 개발 하여 사용

    JUMP를 과다 사용으로 인해 스파게티 코드가 만들어졌다.
    마가렛 헤밀턴이 어셈블리어로 우주선을 발사.

  • 이후 사람이 편한 코드를 생각하다가 데니스 리치가 C언어 개발
  • C언어가 대세가 될 수 있었던 이유 : 메모리를 직접적으로 다룰 수 있어서
구조적, 절차지향 프로그래밍
  • 구조적 프로그래밍 : 제어문 (if, else, for, while, do-while 등)의 사용으로 안정적인 코드
  • 절차지향 프로그래밍 : 함수(서브루틴, 프로시저)를 이용해 만든 프로그래밍
  • 드라이버, 펌웨어 에서는 C언어를 주로 사용 : 메모리를 관리 할 수 있기 때문에
  • Computational Thinking(컴퓨팅 사고)
구분
  1. Type : 비트를 해석하는 방법 + 그에 적용할 수 있는 연산

    Primitive Type
    Built-in Type
    User-defined Type

  2. Control Statement

  • Conditional Statement

    if / else / switch

  • Interation Statement

    for / while / do while

  1. Fuction (수학적 : 정의역에 있는 어떤 삾을 대입시켰을때, 그에 대응 되는 공역의 값이 나오는것)

  2. Core

  • 언어의 핵심 => 문법
  • 변수, 조건문, 반복문, 함수, 구조체, 열거형, 배열, 포인터, 공용체, 매크로, 타입재정의
  1. Library
  • 함수의 모음
profile
개발자가 되고 싶은 사람

0개의 댓글

관련 채용 정보