전체 글 317

프로세스 VS 스레드

프로세스(Process)란? - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 - 운영체제로 부터 독립된 메모리 영역을 할당받는다 (다른 프로세스의 자원에 접근 X) - 프로세스들은 독립적이기 때문에 통신하기 위해 IPC를 사용해야 한다. - 프로세스는 최소 1개의 쓰레드를 가지고 있다. * IPC(Inter-Process Communication) - 프로세스 사이의 데이터 통신, 대표적인 종류로는 시그널, 파이프, 메세지 큐, 공유메모리, 메일박스 등 스레드(Thread)란? - 프로세스 내에서 할당받은 자원을 이용해 동작하는 실행 단위 - 쓰레드는 프로세스 내에서 Stack만 따로 할당 받고, Code,Data, Heap 영역은 공유한다. (Stack을 분리한 이유는 Stack에는 함수의 호출 ..

직렬화란?

직렬화란? - 자바에서 입출력 할 때 스트림이라는 데이터 통로를 통해 이동하는데 객체는 바이트 형이 아니라서 스트림을 통해 파일에 저장하거나 네트워크로 전송이 불가능하다. 따라서 객체를 스트림을 통해 입출력하려면 바이트 배열로 변환 하는것이 필요한데 이를 직렬화라고 한다. - 반대로 스트림을 통해 받은 직렬화된 객체를 원래 모양으로 만드는 과정을 역직렬화라고 한다. [ 참고 ] https://minchoi0912.tistory.com/93

가비지 컬렉션이란?

가비지 컬렉션(Garbage Collection, GC) 이란? - 메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역(heap) 중에서 더 이상 사용하지 않는 영역을 탐지하여 자동으로 해지하는 기법 가비지 대상 - 객체가 null일 경우 - 블럭 안에서 생성된 객체는 블럭 실행 종료후 대상 - 부모 객체가 null이되면, 포함하는 자식 객체들도 자동으로 가비지 대상

제너릭이란?

제너릭 (Generic) 이란? - 클래스에서 사용할 타입을 클래스 외부에서 사용자에 의해 지정되는 것 - 객체 타입을 컴파일 시에 체크하기 때문에 코드의 안정성을 높여주고, 형변환을 하지 않아도된다. - 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다. 필요성 - 잡자에서는 객체들을 담아 편리하게 관리하기위해 Collection 제공, 이 Collection의 대부분이 어떤 객체를 담을지 모르기 때문에 모든 자바 객체들의 base객체(최상위 객체)인 Object로 저장되어 설계하도록 되어있다. - 이 Collection에 Element로 어떤 Type을 받아 들이는 것이 장점이지만 서로 다른 Type이 하나의 Collection에 섞여들어갈 경우 문제가 생긴다. - JDK 5.0 에 와서 제네릭..

Collection란?

컬렉션(Collection)이란? - 자바에서 '목록성 데이터를 처리하는 자료구조' 를 통칭 * 자료구조 : 어떤 정보를 담는 것 의미, 하나의 데이터가 아닌 여러 데이터를 담을 때 사용하는 것 ( 배열이 가장 기본적인 자료구조, DTO 또한 자료를 뽑는 하나의 방식 ) - 다수의 데이터를 다루는데 표준화된 클래스들을 자료구조를 직접 구현하지 않고 편하게 사용 가능함 - 배열과 다르게 객체를 보관하기 위한 공간을 미리 정의하지 않아도됨 -> 객체의 수를 동적으로 할당 가능하므로 효율성 증대 JCF(Java Collections Framework) - 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)하기 위해서 사용하는 라이브러리 - 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘..

static이란?

static (정적멤버, 정적필드, 정적메소드) - 메모리에 고정적으로 할당되어 프로그램이 종료될 때 해제되는 것 - 이미 메모리에 올라가 있으므로 객체 생성 없이 바로 사용 가능 - 객체마다 가지고 있을 필요가 없는 공용적인 데이터라면 static으로 선언 - 정적멤버(메소드,블록) 내부에 인스턴스 필드, 메소드를 사용 할 수 없음 -> 객체가 생성되지 않았기 때문

JAVA 변수 초기화 순서

멤버 변수의 초기화는 선택, 지역 변수의 초기화는 필수 JAVA 변수 초기화 하는 방법 - 기본값 - 명시적 초기화 - 생성자를 통한 초기화 - 초기화 블록 클래스 변수 인스턴스 변수 초기화 시점 클래스가 처음 로딩 될 때 단 한번만 초기화 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화 초기화 순서 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자 초기화 [ 참고 ] https://markim94.tistory.com/138 https://ecsimsw.tistory.com/entry/%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-%EC%B4%88%EA%B8%B0%ED%99%94 https://ktko.tistor..

접근제한자

접근 제한자 - 논리적인 오류가 생기지 않도록 변수에 아무 메소드나 접근할 수 없도록 제한하는 것 public - 다른 클래스, 다른 폴더내의 다른클래스에서 사용가능, 즉 모든 곳에서 사용가능 protected - 동일한 클래스, 같은 폴더 내의 다른 클래스에서 사용가능, 다른 폴더의 경우는 상속관계면 사용가능 default - 동일한 클래스에서나 혹은 같은 폴더 내의 다른 클래스에서 사용가능 - 따로 접근지정자를 명시해주지 않을시 default의 값을 가짐 private - 동일한 클래스 내부에서만 사용 가능 접근지정자 접근범위 동일클래스 동일패키지 다른패키지의 자식클래스 다른패키지 public 접근 제한 없음 O O O O protected 동일 패키지와 상속 받은 클래스 내부 O O O defaul..