1. 쿠키(cookie)

  • 브라우저를 사용하는 환경(로컬 컴퓨터)에 서버에서 받은 데이터를 저장한 파일

  • 서버에 다시 데이터를 요청할 필요가 없기 때문에 속도가 빠르다.

  • 예) 자동 로그인, 비로그인 장바구니 등

 

2. 세션(session)

  • 쿠키가 사용자의 컴퓨터(브라우저)에 저장 된다면, 세션은 서버 쪽에 저장된다.

  • 쿠키와 역할은 비슷하지만 저장 위치가 다르다.

  • 쿠키는 브라우저를 종료해도 데이터가 소멸되지 않지만, 세션은 브라우저를 종료하면 데이터가 소멸되므로 비교적 보안이 강하다.

 

3. 캐시(cache)

  • 웹 페이지의 UI, 이미지 등이 서버에서 내 개인 PC로 전송되는 데이터들이 사용자의 컴퓨터에 캐시라는 저장 공간에 저장해두는 것

  • 원본 데이터에 접근하는 시간이 오래 걸리는 경우, 값을 다시 계산하는 시간을 절약하고 싶은 경우 사용된다.

  • 그다음부터는 웹 페이지를 열 때마다 서버가 아니라 캐시에 저장되어 있는 데이터를 사용하는 것이다.

  • 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 다 빠른 속도로 데이터에 접근할 수 있다.

1. 캡슐화

  • 비슷한 역할을 하는 변수와 메서드를 하나의 클래스로 모은 것
  • 캡슐화에 속한 개념으로 정보 은닉이라는 것이 있는데 내부 구조는 private로 감추고, 외부에서 조작할 수 있는 명령어만 public으로 공개

2. 상속

  • 클래스를 재사용하는 것
  • 부모 클래스를 자식 클래스에서 상속 받게 되면 부모 클래스의 멤버변수나 메소드를 그대로 물려 받는 것
  • 코드를 재활용할 수 있기 때문에 생산성이 높고 유지보수하기 좋다.

3. 추상화

  • 현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓은 것
  • "자동차", "배", "비행기" -> 운송수단

4. 다형성

  • 하나의 인터페이스를 이용하여 서로 다른 구현을 제공
  • 메서드 오버로딩(Overloading), 메서드 오버라이딩(Overriding)을 통해 지원
  • 메서드 오버로딩(Overloading) : 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하면서, 매개 변수의 개수나 타입이 다른 형태
int add(int a, int b) {
	return a + b;
}

long add(long a, long b) {
	return a + b;
}
  • 메서드 오버라이딩(Overriding) : 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의하는 것

 

contains() 함수

  • 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수

  • 대/소문자 구분

public class Test{
	public static void main(String[] args){
		
		String str = "Hello Java World";

		System.out.println(str.contains("Hello"));			// true
		System.out.println(str.contains("JAVA"));			// false
		System.out.println(str.contains("world"));			// false
		System.out.println(str.contains("Java World"));		// true
        
	}
}

프로그램(Program)

  • 운영체제 위에서 실행할 수 있는 파일 ex) 카카오톡, 크롬

 

프로세서(Processor)

  • 프로세스가 동작될 수 있도록 하는 하드웨어(=CPU)

  • 한순간에 하나의 프로세스만 실행할 수 있다.

 

프로세스(Process)

  • 메모리에 적재되어 프로세서에 의해 실행 중이거나 실행 대기 중인 프로그램

  • 한순가에 여러 가지 일을 하는 것처럼 보이지만 실제로는 짧은 시간에 프로세스를 교체하기 때문에 동시에 여러 개의 작업이 실행되고 있다고 느낀다.

프로세스의 상태

Context Swithching

프로세스 구조

  • 프로세스는 각각의 독립된 메모리 영역(Stack, Heap, Data, Code)을 할당 받는다.

멀티 프로세스

  • 실행 중인 프로세스에서 다음 프로세스로 넘어갈 때 각각의 영역을 따로 가지기 때문에 비효율이 발생한다.

  • 다른 프로세스의 정보를 이용하기 위해서 통신이 필요하다.

스레드 (Thread)

  • 프로세스 내에서 실행되는 작업의 흐름의 단위

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위

  • 자원은 Process 단위로 받고 작업/스케줄링은 Thread 단위로 진행한다.

  • 스레드 간 전환 속도가 Stack영역만 처리하기 때문에 Context Switching 비용이 적게 든다.

  • 스레드는 프로세스 내에서 각각 Stack만 따로 할당 받고 Heap, Data, Code 영역은 공유한다.

Context Swithching

 

+ Recent posts