객체 = 실제로 존재하는 것 (실물 또는 개념)

클래스 = 객체를 정의해 놓는 것(설계도)

객체의 구성요소 = 속성(멤버변수), 기능(메서드)

인스턴스화 = 클래스로부터 객체를 만드는 과정

인스턴스 = 클래스로부터 만들어진 객체

*객체 와 인스턴스는 비슷하지만 객체가 좀 더 넓은 범위의 뜻으로 쓰인다. 인스턴스는 특정 클래스로 인해 만들어진 하나를 지칭하고 객체는 그 인스턴스 전체를 지칭하는 것이라 생각하면 편하다.

객체의 생성

클래스명 변수명; (클래스 선언 -> 할당 메모리를 만든다)

변수명 = new 클래스명(); (new 연산자를 통해 생선된 클래스가 메모리의 빈 공간에 생성된다. 

메소드 사용 = 참조변수.멤버변수();

새로운 객체를 생성하면 각각의 객체는 독립적이다.

JVM 구조

Hello.java(자바파일) ---> Java Compiler(javc) ---> hello.class(바이트코드) ---> 클래스로더 ---> JVM(OS로부터 메모리 영역을 할당받음) ---> [자바 인터프리터, JIT Compiler,가비지콜렉터 ---> Runtime 시스템 ] ---> 운영체제(OS) ---> 하드웨어(HW)

  • Java : 사람이 읽을 수 있는 방식으로 작성한 코드 파일
  • Java Compiler : Java 파일을 Class 파일로 만들어주는 파일
  • 바이트코드 : 운영체제가 읽을 수 있는 Java Compiler가 변환한 코드 
  • Class : 운영체제가 이해할 수 있는 방식의 코드 파일 / 바이트코드의 확장자
  • 클래스 로더 : 바이트코드를 메모리 영역으로 운반하는 역할의 운반기
  • JVM : Java Virture Machine 의 약자로 가상의 머신을 만들어 운영체제(window, mac, Linux)와 기기(PC, Mobile, 서버)에 상관없이 Java 프로그램을 실행 가능하게 만들어 주는 것.
  • 메모리 영역 : 운영체제로 부터 JVM이 할당받은 영역 (Java 데이터를 저장하는 영역)
  • 자바 인터프리터 : 운영체제가 읽은 바이트코드를 기기가 실행할 수 있는 로우레벨의 기계어로 변환하는 것
  • JIT Compiler : 인터프리터의 효율을 올려주는 컴파일러
  • 가비지 콜렉터 : 메모리 영역에서 안쓰는 영역 주기적으로 청소하는 역할
  • Runtime 시스템 : 프로그램이 실행중인 상태를 관리하는 시스템

JRE : Java Runtime Environment(자바 실행 환경)이라는 뜻으로 .class로 된 Java프로그램을 실행만 시킬 수 있다.

JDK : Java Development Kit(자바 개발 키드) .java 파일들을 .class 파일들로 변환해주는 Java Compiler (javac) 기능, Jdb(디버깅기능), JRE, Java Development Tools 등을 모두 포함하고있다.

저장공간의 선언

int number;

int = 저장공간의 타입

number = 저장공간(변수)의 이름

값의 저장

1. 초기화 int number = 10;

저장공간을 선언함과 동시에 값을 저장 한다면 초기화

2. 덮어쓰기 number = 10;

저장공간을 먼저 선언하고 저장공간의 데이터를 저장하면 덮어쓰기이다.

1. 1xx

정보 요청을 받았고 작업을 진행 중이라는 의미

2. 2xx

성공

200 OK: 성공적으로 처리했을 때 쓰인다. 가장 일반적으로 볼 수 있는 HTTP 상태.
201 Created: 요청이 성공적으로 처리되어서 리소스가 만들어졌음을 의미한다.
204 No Content: 성공적으로 처리했지만 컨텐츠를 제공하지는 않는다. 일반 사용자가 볼 일은 거의 드물며 처리 결과만 중요한 API 요청 등에서 주로 사용한다.
206 Partial Content: 컨텐츠의 일부 부분만 제공한다. 보통 클라이언트에서 시작 범위나 다운로드할 범위를 지정한 경우 자동으로 해당 부분만 제공할 때 사용하는 코드이다.

 

3. 3xx
301 Moved Permanently(영구 이동): 영구적으로 컨텐츠가 이동했을 때 사용된다.
302 Found: 일시적으로 컨텐츠가 이동했을때 사용된다.

4. 4xx

403 Forbidden(거부됨): 서버가 요청을 거부할 때 발생한다. 관리자가 해당 사용자를 차단했거나 서버에 index.html 이 없는 경우에도 발생할 수 있다. 혹은 권한이 없을 때(로그인 여부와는 무관하다)에도 발생한다.

404 Not Found(찾을 수 없음): 찾는 리소스가 없다는 뜻으로, 가장 흔하게 볼 수 있는 오류 코드이다.

408 Request Timeout(요청 시간 초과) : 요청 중 시간이 초과되었을때 사용하는 코드이다.

410 Gone(사라짐) : 404와는 달리 찾는 리소스가 영원히 사라진 경우 사용하는 코드이다. 쉽게 말해, 404는 "찾는 게 일단 여긴 없는데 다른 곳에는 있을 수도 있어요" 라는 뜻이고, 410은 "니가 찾는게 있었는데요, 없었습니다"라는 뜻이다.

 

5. 5xx

500 Internal Server Error(내부 서버 오류): 서버에 오류가 발생해 작업을 수행할 수 없을 때 사용된다. 보통 설정이나 퍼미션 문제. 아니면 HTTP 요청을 통해 호출한 문서가 실제 HTML 문서가 아니라 JSP, PHP, 서블릿 등의 프로그램일 경우 그 프로그램이 동작하다 세미콜론을 빼먹는등의 각종 에러로 비정상 종료를 하는 경우 이 응답코드를 보낸다.
501 Not Implemented(요청한 기능 미지원): 서버가 요청을 수행하는데 필요한 기능을 지원하지 않는 경우 사용된다. 웬만해서는 볼 수 없다.
502 Bad Gateway(게이트웨이 불량): 게이트웨이가 연결된 서버로부터 잘못된 응답을 받았을 때 사용된다.
503 Service Temporarily Unavailable(일시적으로 서비스를 이용할 수 없음): 서비스를 일시적으로 사용할 수 없을 때 사용된다. 주로 웹서버 등이 과부하로 다운되었을 때 볼 수 있다.
504 Gateway Timeout(게이트웨이 시간초과): 게이트웨이가 연결된 서버로부터 응답을 받을 수 없었을 때 사용된다.

오늘한 과제를 업로드 하려는데 github repository에 push하려는 단계에서

fatal: invalid refspec 오류가 떴다.

원인을 찾아보니 레퍼지토리를 처음 만들면

브랜치 설정과 remote add 를 통해 레퍼지토리 주소를 입력해 줬어야 하는데

이런 초기설정을 안해줘서 그렇다 한다!

git branch -M main
git remote add origin https://github.com/notitle12/sparta2.git
git push -u origin main

 

입력값이 설정해 놓은 형식과 다를때 발생하는 경고문구다.

나같은 경우 Scanner 클래스를 사용할 때 String input = sc.next()으로 설정해 뒀는데 이때 next() 메소드의 경우 띄어쓰기(공백)를

기준으로 문자열을 반환한다.

따라서 해당 코드를 실행하고 문자열을 입력할때 띄어쓰기가 포함된 문장을 입력하면 위와같은 경고문구가 나온다.

따라서 이러한 문제를 해결하려면 next() 메소드가 아닌 nextLine() 메소드를 사용하면 줄바꿈이 일어나기 전까지의 모든 문장을

반환할 수 있다.

같은 경고문구라 하더라도 작성한 코드가 모두 다르기 때문에 본인이 사용한 메서드와 입력값의 형식이 일치하는지 확인해 보면 해결되지 않을까 싶다.

+ Recent posts