본문 바로가기

스파르타 부트캠프(spring)

[내일배움캠프_spring] 3주차_JAVA 복습, CS강의

팀 프로젝트를 들어가면 JAVA를 이용하기 때문에 알고리즘을 진도를 나가기보다는 JAVA강의를 복습을 들어갔다.

 실시간 CS강의로 오전 객체지향 프로그래밍, 오후에는 프로세스, 스레드, 비동기에 대해서 공부했다. 객체지향 프로그래밍에서 추상화의 중요성을 알아가고 프로세스,스레드, 비동기에 대해 기초지식을 배움


****객체지향 프로그래밍****

  • 객체 = 사물(다양한 속성들의 집합)

: 사물을 설명하는 것은 그 사물이 가지고 있는 속성을 설명하는 것

 -->객체지향 : 목표는 실세계를 모방하는 것이 아나라 창조하는 것

  • 다른 객체와 협력하기 위해 메시지를 전송하고 메시지를 전달 받은 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택하여 처리.

 

****프로세스, 스레드, 비동기****

*프로세스, 스레드에 대한 개념

  • 프로세스 : 메모리에 적재되어 실행되고 있는 프로그램 인스턴스, 운영체제로부터 시스템자원을 할당 받은 작업 단위
  • 스레드 : 프로세스 내 프로세스 자원을 이용하는 여러 실행 흐름단위

 

*멀티 프로세스, 멀티 스레드

  • 멀티 프로세스

: 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것

단점- 문맥교환에서(Context Switching)에서의 오버헤드(여러프로세스 처리상황->돌아가면서 처리->context switching)

 

  • 멀티스레드

: 하나의 프로그램-> 여러개의 스레드 -> 하나의 작업처리

장점 - 메모리 공간, 시스템 자원 소모 감소 / 스레드 간 통신 간단 / CS시 PCB&캐시 메모리 비율 필요X, 비용 감소 

단점 - 다른 스레드와의 자원 공유 동기화 문제 / 하나의 문제가 전체의 문제로 생길 수 있음

 

  • Thread-Safe

: 멀티스레드 환경에서 여러 스레드가 동시 사용되어도 안전

 

*블로킹 & 논블로킹

  • 블로킹 : 제어권을 넘겨주는 것
  • 논블로킹 : 제어권을 넘겨주지 않는 것

*동기 & 비동기(호출 함수의 작업완료 여부)

  • 동기 : 리턴값을 확인하면서 신경쓰는 것
  • 비동기 : 작업완료 여부는 신경쓰지 X

 

JAVA비동기

: 기본적 멀티스레드 방식(ex.리퀘스트 요청 처리, db 접근 등)

 

JavaScript 비동기

: 싱글 스레드 논블로킹 모델 환경에서 실행(ex.타이머, 사용자와의 인터럭션, 네트워크 요청 등)