본문 바로가기

CS

(24)
TCP/IP 4계층 모델 TCP/IP 4 계층 모델 인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이고, 이를 OSI 7 계층이나 TCP/IP 4 계층이라 말한다. 이 글은 TCP/IP 4계층을 설명한 글이다. TCP/IP 4 계층 구조 애플리케이션 계층 전송 계층 인터넷 계층 네트워크 인터페이스 계층 (네트워크 접근 계층) 애플리케이션 계층 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층이다. (사용자 응용프로그램 인터페이스를 담당) ex) 크롬 전송 계층 전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 통신 노..
GC(garbage collection) 알아보기 GC 알아보기 GC(garbage collection)이란? Garbage Collection은 보통 메모리의 압박이 있을 때 수행하게 된다. 어떤 이유에서든지 메모리가 필요하면 수행된다는 의미다. GC는 새로운 Object의 할당을 위해 한정된 Heap 공간을 재활용하려는 목적으로 수행된다. Heap영역을 재활용하기 위해 Root Set에서 참조되지 않는 Object를 없애 가용한 공간을 만드는 작업이라고 할 수 있다. 재활용을 위해 수행된 메모리의 해지는 할당한 그 자리에서 이루어지기 때문에 Garbage가 빠져나간 자리는 듬성듬성 비어있다. 이 경우 메모리의 개별 Free Space의 크기보다 큰 Object에게 공간을 할당할 경우 재활용의 의미가 사라진다. GC 작동원리 객체를 생성할 때마다 스택..
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..