본문 바로가기

분류

(54)
JVM이란 무엇일가? JVM 알아보기 JVM이란? JVM의 역할은 개발자들이 작성한 Java 프로그램이나 Web 애플리케이션 Server(WAS) 등을 구별하지 않고 Java 프로그램의 범위에 들어가는 모든 것들을 실행시키는 기본 데몬이다. Java에서 프로그램을 실행한다는 것은 컴파일 과정을 통해 생성된 Class 파일을 Java Compiler가 자바 ByteCode로 변환 후 JVM으로 넘겨준다 JVM은 ByteCode를 해석(Interpret)하는 과정을 거쳐 메모리 등의 리소스를 할당하고 관리하며 정보를 처리하는 일련의 작업들을 포괄한다. ( Thread 관리 및 GC와 같은 메모리 정리 작업도 포함) JVM안 각각의 기능들 Class Loader : JVM내로 .class파일들을 Load 하여 Loading 된 클..
Process 알아보기 Process 프로세스란? 프로세스란 실행되기 위해 주기억장치로 올라간 프로그램, 즉 실행 중인 프로그램이라고 정의할 수 있다. 프로세스는 주기억장치에 있으면서 하드웨어를 동작시키는 능동적인 존재다. 또한 프로세는 프로그램 코드뿐만 아니라 실행에 필요한 다양한 정보가 포함된다. 프로세스는 각자 자신만의 독립적인 주소 공간을 가지고 수행되며 프로세스가 다른 프로세스의 주소 공간을 참조하는 것을 허용하지 않는다. 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미칠 수 없다. (다른 프로세스와 정보를 주고받을 수 없기 때문) 운영체제는 프로세스 간의 협력 메커니즘을 제공해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있게 한다. 프로세스 상태 프로세스의 상태를 구분해보자. 실행 상태 ..
의존관계 주입 방법 4가지 의존관계 주입 방법 4가지 생성자 주입 방법 생성자를 통해서 의존 관계를 주입받는 방식으로 애플리케이션이 시작 후 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되며 불변(final), 필수(notNull) 의존관계에 사용된다. + 생성자 주입을 기본으로 사용하고, 필수 값이 아닌 경우에는 수정자 주입 방식을 옵션으로 부여하여, 생성자 주입과 수정자 주입을 동시에 사용할 수 있다. @Component public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; // = new MemoryMemberRepository(); @Autowired public MemberServic..
객체지향의 사실과 오해 기억 남기기 객체지향의 사실과 오해 정리 객체지향이란 무엇인가? 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분리하는 방법이다. 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미한다. 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합이다. 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메소드를 자율적으로 선택한다. 객체지향 설계의 핵심은 객체가 협력을 위해 어떤 책임을 지녀야 하는지를 결정하는 것이다. 객체란? 객체지향 애플리케이션의 아름다움을 결정하는 것이 협력이라면 협력이 얼마나 조화를 이루..
Java Array와 List 차이 알아보기 Array와 List Array란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 베열의 선언 타입[] 변수이름; int[] score; 타입 변수이름; int score[]; 배열은 선언한 다음에 배열을 생성해야한다. 배열을 선언만 하는것은 단지 생성된 배열을 다루기 위한 참조변수 공간을 만들 뿐이고, 배열을 생성해야지만 비로소 값을 저장할 수 있는 공간이 만들어진다. 타입[] 변수이름 = new 타입[길이] int[] score = new int[5]; // 배열을 생성하면서 배열의 길이를 적어 줘야한다. int score[] = new int[5]; 배열의 길이를 적워줘야 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수가 할당되며, 배열에서는 인덱스를 사용하는데 ..
JDK 와 JRE 그리고 JVM 알아보기 JDK 와 JRE 그리고 JVM 알아보기 안에서부터 밖으로 나가보자 JVM(Java Vertual Machine)란? JVM을 직역한다면 자바를 실행하기 위한 가상 기계라고 할 수 있다. JVM은 자바 응용프로그램을 운영체제나 하드웨어가 아닌 JVM과 통신하고 JVM은 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 즉 Java로 작성된 프로그램은 운영체제에 독립적이다. 즉 한번 작성하면, 어디서나 실행된다.(Write once, run anywhere) JRE(Java Runtime Environment)란? JRE는 이름에서 알 수 있듯이 실행만을 위한 환경이다. 개발자가 애플리케이션과 서비스 간에 완벽한 데이터 연결을 구축할 수 있도록 지원하는 다수의 ..
OOP - SOLID 알아보기 SOLID 알아보기 개발과정에서 SOLID를 왜 지켜야 할까? SOLID 원칙을 지킨다면 개발과정에서 유지보수에 용이하며 확장에 쉽도록 프로그래밍할 수 있도록 도움을 주기 때문이다. SOLID S - Single Responsibility Principle 단일 책임의 원칙 O - Open Close Principle 개방 폐쇄의 원칙 L - Liskov Substitutuin Principle 리스코프 치환의 법칙 I - Interface Segregation Principle 인터페이스 분리 원칙 D - Dependency Inversion Principle 의존관계 역전 원칙 단일 책임의 원칙 (SRP) 하나의 클래스는 하나의 책임만을(기능만을) 가지고 있어야 한다는 프로그래밍 원칙이다. A Cla..
그림으로 배우는 네트워크 원리 기억 남기기 그림으로 배우는 네트워크 원리 정리 1. 네트워크 기본 네트워크란? pc나 스마트폰 같은 단말 기기를 서로 연결하여 다른 사람과 데이터를 주고받는 연결망 네트워크를 사용하는 목적 정보 수집이나 커뮤니케이션 효율화 등 다양한 목적을 위해 사용 네트워크를 통해서 데이터를 주고받는 주체는 애플리케이션이다. 애플리케이션은 서버 애플리케이션에 요청(리퀘스트)을 보내고 응답(리스폰)을 받는다. 피어투피어 애플리케이션은 서버를 거치지 않고 클라이언트 애플리케이션끼리 직접 데이터를 송수신한다. (통신 상대의 클라이언트 애플리케이션을 지정하고자 서버 애플리케이션을 이용하는 경우도 있다.) 통신에서 서로 같은 언어로 대화하는 것처럼, 컴퓨터끼리의 통신을 보장하기 위해 규칙을 만들어 놓은 것을 프로토콜이라고 한다. 실제 통..