본문 바로가기

전체 글

(38)
[Spring] DI와 IoC에 대한 공부 Dependency (의존관계)A가 B를 의존하면 B가 변하면 A에도 영향을 미치는 관계를 말한다. public class Computer { private SamsungRam16g samsungRam16g; public Computer() { samsungRam16g=new SamsungRam16g(); }}위 코드처럼 Computer는 SamsungRam16g에 의존하게 된다. 필자는 간단한 예시로 하나의 클래스에서만 들었지만 실제로 이렇게 모든 코드를 짠다면 만약에 SamsungRam16g이 아니라 SamsungRam32g으로 변경하거나 다른 램으로 변경을 할 경우 쓰고 있는 모든 코드를 변경해야 한다.public class Computer { private Ram..
[Java] 다형성에 대한 공부 다형성(Polymorphism)하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 클래스가 상속 관계에 있을 때 나타나는 성질이다.public class Car { public void carMethod(){ System.out.println("자동차입니다."); }}public class OilCar extends Car{ public void oilCarMethod(){ System.out.println("기름차입니다."); }}위 코드는 OilCar가 Car를 상속하는 코드이다.public class PloyMain { public static void main(String[] args) { System.out.println..
[Java] 상속과 구현에 대한 공부 상속 관계객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 메서드를 새로운 클래스에서 재사용하게 해 준다.extends 키워드를 사용하며 하나의 대상만 선택할 수 있다.  부모 클래스상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스public class Animals { public void sound(){ System.out.println("소리를 냅니다."); }} 자식 클래스부모 클래스로부터 필드와 메서드를 상속받는 클래스public class Eagle extends Animals { public void fly(){ System.out.println("날아 갑니다."); }}eagle이 Animals를 상속받는다.publi..
[Java] Garbage Collector 대한 공부 Garbage Collector프로그램이 동적으로 할당했던 메모리 영역(Heap) 중 사용하지 않는 영역을 탐지하여 해제하는 기능이다.public class Main{ public static void main(String[] args){ User user=new User("홍길동","20") user=new User("김철수","25") }}위 코드를 보면 user는 처음에 User 객체가 생성되고 '홍길동'을 참조하고 있다. 하지만 다음줄이 실행되면서 '김철수'를 참조한다. 이때 참조하지 않는 '홍길동'이 GC의 대상이 된다.  GC에 과정으로 Mark and Sweep 있다. 처음에는 GC가 Stack의 모든 변수를 스캔하면서 객체가 참조하고 있는 변수를 Marking..
[Java] JVM의 Heap, Stack구조에 대한 공부 자바 메모리 구조에 대한 공부를 하면서 Heap과 Stack 영역에 대하여 간단하게 지나갔는데 이번 글을 통해서 자세하게 공부해 보자위 그림(Runtime Data Area 영역)에서 JVM stack과 Heap의 대해 공부하겠다.Heap영역1. 프로그램을 실행하면서 생성한 모든 객체가 저장된다.2. 주기적으로 GC가 제거하는 영역이다.위 그림은 자바 7 이전과 8 이후의 JVM 구조이다. 위 그림처럼 Heap은 영역이 나누어지는데 이는 GC이 Heap을 효율적으로 삭제하기 위해서 3가지 영역으로 나누어진다. New/Young 생명 주기가 짧은 객체를 GC 대상으로 하는 영역 Edennew를 통해서 생성된 객체가 위치한다. 정기적인 GC후 살아남은 객체들은 Survivor로 이동한다.survivor1 /..
[Java] 자바 메모리 구조에 대한 공부 (Heap,Stack,Method) jvm 영역에 대해서 공부를 했다. 이번에는 자바 메모리 구조에 대하여 공부하겠다. 간단하게 Runtime Data Area를 다시 보면 아래 그림과 같다.여기서 Heap, Stack, Method의 구조와 영역에 대해서 공부할 것이다.  일단 자바에 변수에 대해서 알아야 한다. 자바의 변수는 아래 코드와 같이 나누어진다.public class Shop{ public static int count = 10; // 클래스 변수 public int inventory = 100; //인스턴스 변수 }public class Main { public static void main(String[] args) {//매개 변수 //지역 변수 int wieght = ..
[Java] JVM 구성에 대한 공부 JVM(Java Virtual Machine)OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 위 그림은 자바가 어떻게 동작하는지 간단하게 나타낸 그림이다.그림에서 자바 소스코드(.java) 를 Java Compiler(.javac)가 자바 바이트 코드(.class)형식으로 컴파일한다.바이트 코드란 JVM이 알아들을 수 있는 명령어 집합을 이야기한다.Class Loader를 통해서 컴파일된 바이트코드를 JVM Runtime Data Area로 로딩한다. 위 그림은 JVM 부분만 상세하게 나타낸 그림이다. 클래스 로더(Class Loader)JVM 내로 클래스 파일(.class)을 Load 하고, Loading 된 클래스들을 Runtime Data Area의 Metho..
[OS] 프로세스와 스레드에 대한 공부 프로세스  : 컴퓨터에서 실행되고 있는 프로그램를 말한다.프로세스는 Code, Data, Stack, Heap의 구조로 독립된 메모리 영역으로 할당받는다.Code 영역은 프로그래머가 작성한 코드를 CPU에서 해석 가능한 기계어 형태로 저장되어 있는 영역이다.Data 영역은 전역(Global) 변수나 정적(Static) 변수가 저장되어 있는 영역이다.Stack 영역은 지역 변수, 매개변수, 반환 값 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장한다.Heap 영역은 동적 메모리 영역이다.프로세스가 할당받는 메모리 영역은 위 그림과 같은 구조를 가진다.프로세스에서 최소한 한 개의 스레드를 가진다.각 프로세스는 별도의 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 ..