- URL은 자원(파일)의 위치를 의미하고 URI는 인터넷 상의 자원의 식별자입니다. URI가 URL보다 상위 개념 입니다.
- HTTP는 웹 브라우저와 서버와의 통신 규약입니다.
- HTTPS는 HTTP와 다르게 정보를 암호화해서 데이터를 전송합니다.
- 인터넷 표준 프로토콜입니다.
- IP : 데이터가 전송되는 경로를 위한 프로토콜
- TCP : 인터넷은 패킷을 이용하여 정보를 전달하는데 데이터가 손실되거나 순서가 뒤바뀌는것을 검색하여 교정하는 프로토콜
- 네트워크 , 인터넷 , 전송 (tcp/ip), 응용 (http)
- 서버와 클라이언트가 특정 포트를 통해 양방향 통신을 하는 방식입니다.
서버에 요청을 하는 방식
- get : 속도 빠름, uri에 노출, 데이터 한정 O
- post : 속도 비교적 느림, uri에 노출X, 데이터 한정 X, body에 데이터를 담아 전송
- 동기 : 요청과 결과가 동시에 일어남 -> 결과 주어지기 전 아무것도 못함
- 비동기 : 동시에 일어나지 않음 -> 결과가 주어지지 않더라도 다른 작업
- 사용 이유 : HTTP요청은 request, response가 이루어지면 연결을 끊음 -> 상태정보 유지 X
- 세션 : 서버에 저장됨. 일정 시간동안 응답 없으면 끊김. 보안에 좋지만 서버에 저장하므로 메모리 많이먹음.
- 클라이언트가 Request를 보내면 세션 ID 발급
- 쿠키 : 클라이언트에 저장되는 키와 값이 들어있는 데이터 파일. 저장되는 양 한정되있음. 속도가 빠름
- 캐시 : css, js , 이미지 파일을 사용자의 로컬에 저장
- Representational State Transfer : 웹의 자원에 URI를 부여하여 API를 제공하는 것
- 프로세스 : OS로 부터 시스템 자원을 할당받는 작업의 단위
- 쓰레드 : 프로세스가 할당받은 자원을 이용
- 라이브러리 : 특정한 기능을 모듈화하여 가져다가 사용할 수 있게 한것.
- API : 라이브러리에 인터페이스(명세)를 포함
- 프레임워크 : 애플리케이션의 틀과 구조를 결정. 공통된 부분을 제공하여 개발자는 비지니스 로직에 집중
- 플랫폼 : 하드웨어나 소프트웨어의 환경
- 데이터베이스 업무처리의 가장 작은 단위. 하나의 트랜잭션은 롤백되거나 커밋된다
- Commit : 트랜잭션에 대한 작업이 성공적으로 끝남을 관리자에게 알려줌
- Rollback : 트랜잭션의 일부라도 비정상 처리 되었을 때 모든 연산을 취소
- 일관성 : 트랜잭션 연산은 모두 반영되던지 전혀 반영되지 않아야 한다.
- 독립성 : 하나의 트랜잭션 연산에 다른 트랜잭션 연산이 끼어들 수 없다.
- 지속성 : 트랜잭션의 결과는 영구적으로 반영된다.
- JVM환경에서 돌아가는 객체 지향언어이다. 플랫폼에 종속적이지 않다.
- 제네릭 : 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것.
- 타입을 새롭게 만들기 위해 클래스를 새로 만들 필요가 없다.
- 형 변환의 번거로움을 줄일 수 있다.
- 제네릭은 기본 타입은 사용할 수 없다.
- 객체 : 소프트웨어 세계에 구현할 대상
- 클래스 : 객체를 만들어 내기 위한 틀
- 인스턴스 : 소프트웨어 세계에 구현된 실체
- Interface(인터페이스) : 소프트웨어 개발에 있어 각 클래스 간에 상호작용을 위해 제공되는 기능 규격.
- 멤버에는 public static final이 생략가능, method는 추상메소드
- 유지보수가 편리하고 다형성을 나타내기 좋다. 메소드의 내부구조를 가릴 때 사용.
- 추상메소드는 자바에서 클래스 간의 상속을 단일 상속만 허용하기 때문에 정의할 때 심한 제약이 따른다.
- 직렬화 : 입출력에 스트림이라는 데이터 통로를 사용하는데, 객체는 바이트형이 아니어서 스트림을 통해 파일에 저장하거나 네트워크 전송이 불가하다. 따라서 이를 가능하기 위해 객체를 바이트 배열로 변화하는 작업을 '직렬화'라고 한다.
- 역직렬화 : 직렬화를 통해 받은 객체를 원래 모양으로 만드는 과정.
- serialVersionUID : 직렬화,역직렬화 시에 클래스 버전이 맞는지 확인하는 용도.
- JAVA Virtual Machine(자바 가상 머신) 역할 : 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JAVA와 OS사이에서 중개자 역할을 하여 운영체제에 독립적인 플랫폼을 제공한다. 또한 JVM은 자동으로 메모리 관리를 해준다
- 객체를 생성하지 않고도 모든 객체들이 멤버나 메서드를 공유 할 수 있다.(편리, 속도빠름)
- 메스드 내에서 인스턴스 변수를 사용하지 않으면 static을 사용할 수 있다.
- 클래스 변수(static) / 인스턴스 변수(일반적인 멤버변수)
- 기존에 정리한 자바 개념노트 보기
- 객체지향 : 추상화를 통해 캡슐화된 여러 개의 객체들이 상속관계를 맺어 하나의 조직이 되어 다형성을 표현한 것.
- 객체(Object) : 하나의 역할을 갖는 데이터의 집합
- 추상화(Abstraction) : 현실세계의 실체 및 개념을 사용자 관점에 따라 상태와 행위를 정의하는 과정.
- 캡슐화(Encapsulation) : 추상화를 통해 정해진 상태화 행위가 하나의 틀로 모여지는 것. -> 정보은닉(독립성↑,보안↑) => 데이터 은닉 : 외부에서 객체의 상태를 알 수 없도록 숨기는 것. => 구현부 은닉 : 외부에서 객체의 행위를 알 수 없도록 숨기는 것.
- 상속 : 동일한 데이터나 함수의 중복 정의를 피하고 공통된 데이터나 함수를 한 곳에 정의하여 재사용 하자는 개념
- 추상 클래스 : 일반화된 클래스로 서로 다른 유형의 클래스들 간에 공통된 속성, 행위를 추출하여 정의한 가상의 클래스.
- 다형성(Polymophism) : 동일한 환경(interface)에서 여러 동작을 하여 서로 다른 결과를 보여주는 것.(동적 바인딩)
- JAVA에서의 다형성
- 객체 캐스팅(promotion) 2. 동적바인딩 3. JVM호출
- JAVA에서의 다형성 매커니즘 1.Parametric Polymorphism(파라메터에 적용된 다형성)
- Heterogeneous Polymorphism(이형집합구조)
- 객체 지향에서 다형성
- 오버로딩(함수) : 한 개의 클래스 내부에서 이름이 같고 파라메터 리스트가 다른 메소드를 정의.
- 가독성을 높여주고, 생성자 오버로딩은 객체 로딩시 유효한 초기값 정책으로 인해 사용. (1) 연산자 오버로딩 : 특정 연산자가 상황에 따라 의미나 용도가 달리 쓰이는 현상 (2) 함수 오버로딩 : 한 클래스 내에서 동일의 함수가 여러 번 중복 정의되는 경우
- 오버라이딩 : 여러 개의 클래스들이 서로 관계를 맺고 있을 때 이미 정의된 메소드를 관계가 맺어진 클래스 내에서 재정의하는 것.
- 객체 캐스팅(Object Casting)과 동적 바인딩(Virtual Method Invocation)
- 객체 캐스팅 : 상속 혹은 구현되어 있는 클래스나 인터페이스 타입이 서로의 타입으로 형변환 하는 것을 말한다.
- 업캐스팅 / 다운캐스팅
- 동적 바인딩 : 실행 타임 때 어떤 메서드가 실행될지를 메소드 호출 시점에 JVM이 결정하는 것.
- 자바에서 일어나는 바인딩은 모두 동적 바인딩이다.
-
데이터 값 메모리 할당
-
생성자
- null-parameter constructor
- 구현되지 않을 경우 JVM이 default constructor를 만든다.
- overloaded constructor : parameter가 선언되어 있는 생성자.
- constructor chaining : class 내의 한 생성자에서 다른 생서자를 호출하는 관계.
- 접근 제어자
- private : 외부 접근 불가
- package(=default) : 같은 패키지
- protected : 같은 패키지 + 상속 관계
- public : 모두 허용