TIL : 221118

JINSEON YE·2022년 11월 18일

TIL

목록 보기
15/88

이론공부만 하니까 들었을땐 대강 알겠는데 만들어보라하면 ㄹㅇ 하나도 못함.
담주 팀프젝인데 비상비상;;;

계산기 만들기

void : 리턴이 없는 자료형 / 어떤 값도 리턴해줄 필요가 없을 때 사용하는 자료형

method : 함수

클래스 : 서로 연관되어있는 변수와 메소드를 그룹핑해줌.

계산기 만들라하는데 새로만든 Calculator 클래스가 실행이 안 되는 것이다...
우여곡절 끝에

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello Words!");
    }
}

이라고 해서 실행버튼은 생겼는데 오류가 뜨는겨

public class Calculator {
    public static void main(String[] args) {
        System.out.println("Hello Words!");
    }
}

이러니까 됐음. 아니 저러기 전엔 심지어 void main에 main 대신 Calculator 넣었었다..
이거 진짜 그냥 숨쉬기 수준으로 당연히 알아야하는 건데 실습 안하다보니 몰랐음.
나같은 사람 없겠지...? 진짜.. 수치스럽지만 기록해본다.
그리고 생활코딩을 또 들으면서 여지껏 들었던 자바강의가 이제 윤곽이 잡히면서 이해가 돼가는데
ㄹㅇ 쾌감 오지고
새벽 3시 자기전에 누워서 강의듣다가 유레카돼서 갑자기 코드쓸라고 컴켰다.. (이 맛에 코딩하나)

public class UpgradeCalculator extends Calculator{
    public int left;
    public int right;
    public void minus(){
        System.out.println(left-right);
    }
}

나는 이제 이걸 온전히 이해할 수 있다... 미륀....
근데 아직 저걸 출력하는 방법ㅂ을 모름
그건 내일 해야지 ㅜ ㅜ 부모에 헬로월드가 되어있으니 저것도 헬로월드가 뜨더라.
문자열 숫자열 이렇게 달라서 그런가? 좀 더 실습하다보면 이것도 왜그런지 알게되겠지

재밌다 재밌어;;; 진짜 쪽팔리지만 이제라도 알아서 다행이다

프로세스

  • 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
  • 독립된 메모리를 할당 받는다.
  • 기본적으로 프로세스마다 최소 1개의 스레드(메인 스레드)를 갖는다.
  • 동시적 : 여러작업을 돌아가면서 일부분식 진행 / 빨라서 동시에 진행되는 것 처럼 느껴짐
  • 병렬적 : 각각 동시에 작업
    cpu 속도가 발열 등 물리적 제약때문에 빠르게 발전 못하자, 대안으로 코어를 여러개 달아서 작업을 분담할 수 있게 만들었음.

스레드

  • 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위
  • 한 프로세스 내에서 동시에 진행하는 여러 갈래의 작업
  • 프로세스와 해당 프로세스 내의 다른 스레드와 자원과 공간을 공유하면서 사용

동기 vs 비동기 (호출되는 함수의 작업 완료 여부를 신경쓰는가)

  • 동시성 : 함수 A와 함수 B가 동시에 진행되는 것(처럼 보이는 것). 그러기 위해서는 특정 함수 A가 다른 함수 B의 결과값에 의존하는지가 중요하다.

동기 (Synchronous)

  • 코드가 반드시 작성된 순서대로 작동

비동기 (Asynchronous)

  • 무조건 순서대로 실행되는 건 아님
  • 각 스레드가 하는 일은 각 스레드가 함. 멀티테스킹.

블로킹 vs 논블로킹 (제어권이 누구한테 있는가)

  • 제어권 : 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다.

Blocking

  • 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때 까지 기다렸다가 자신의 작업을 시작하는 것

Non-Blocking

  • 다른 주체의 작업에 관련없이 자신의 작업을 하는 것

  • Blocking & Synchronous : 자바에서 입력요청할 때 사용
  • Blocking & Asynchronous : 거의 안 씀

Non-Blocking & Synchronous : 게임에서 맵을 넘어갈 때 ..?
Non-Blocking & Asynchronous : 자바스크립트에서 API 요청하고 다른 작업을 하다가 콜백을 통해 추가적인 작업을 처리할 때.

profile
백엔드 개발자

0개의 댓글