본문 바로가기

분류 전체보기240

[OS] 프로세스 vs 스레드 프로그램 프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로세스 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일 운영체제로부터 자원을 할당받은 작업의 단위 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야.. 2021. 8. 18.
[Java] 추상 클래스 vs 인터페이스 인터페이스 인터페이스는 설계도 또는 명세라고 생각할 수 있다. 모든 메소드가 추상 메소드이고, 일반 변수를 가질 수 없다. 자바 8 부터 default method, static method도 정의 가능 default 키워드를 이용하여 메소드 구현이 가능. 또한 이를 구현하는 클래스는 default메소드를 오버라이딩 할 수 있다. 인터페이스가 변경이 되면, 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제가 있다. 이런 문제를 해결하기 위하여 인터페이스에 메소드를 구현해 놓을 수 있도록 하였다. static 키워드를 이용하여 메소드 구현이 가능 인터페이스에 static 메소드를 선언함으로써, 인터페이스를 이용하여 간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다. 반.. 2021. 8. 18.
[Java] Java SE, Java EE, Java ME 자바 배포판 Java SE, Java EE, Java ME 차이 Java SE(Standard Edition) 자바 스탠다드 에디션은 가장 보편적으로 쓰이는 자바 API 집합체(패키지)이다. Java SE는 Java Software Development Kit(SDK)으로 구현된다. 대체로 처음에 자바개발에 입문할 때 접한다. JAVA SE API Applet AWT RMI JDBC Swing Collections Xml binding JavaFX (Merged to Java SE 8) Java 8 Collections Streaming API Java 9 Reactive Streams API Java 9 HTTP/2 API Java EE(Enterprise Edition) Java SE 스펙기반으로 자.. 2021. 8. 18.
[Web] HTTP와 HTTPS 차이점 HTTP HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 세계적인 정보를 공유하는데 큰 역할을 하였다. WWW(World Wide Web)에 내재된 프로토콜이다. 인터넷에서 자원(파일, 이미지, 비디오)을 교환하는 프로토콜(약속, 규칙) 기본 포트 80 하이퍼텍스트 문서를 표현하기.. 2021. 8. 18.
[Java] 변수의 scope와 static scope 프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가진다. 그 범위를 변수의 스코프라고 한다. 변수가 선언된 블럭이 그 변수의 사용범위이다. public class ValableScopeExam{ int globalScope = 10; // 인스턴스 변수 public void scopeTest(int value){ int localScope = 10; System.out.println(globalScope); System.out.println(localScope); System.out.println(value); } } 클래스의 속성으로 선언된 변수 globalScope 의 사용 범위는 클래스 전체 이다. 매개변수로 선언된 int value 는 블럭 바깥에 존재하기는 하지만, 메서드 선언부에.. 2021. 8. 11.
[Java] 가비지 컬렉션(Garbage Collection) C/C++ 프로그래밍을 할 때 메모리 누수(Memory Leak)를 막기 위해 객체를 생성한 후 사용자하지 않는 객체의 메모리를 프로그래머가 직접 해제 해주어야 했지만, JAVA에서는 JVM(Java Virtual Machine)이 구성된 JRE(Java Runtime Environment)가 제공되며, 그 구성 요소 중 하나인 Garbage Collection(이하 GC)이 자동으로 사용하지 않는 객체를 파괴한다. GC에 대해서 알아보기 전에 'stop-the-world'라는 용어를 알아야한다. 'stop-the-world'란, GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것입니다. 어떤 GC 알고리즘을 사용하더라도 'stop-the-world'는 발생하게 되는데, 대개의 경우 GC 튜닝은.. 2021. 8. 11.
[OS] CPU 스케줄링 스케줄링(Scheduling) 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다. 운영체제는 프로세스들에게 CPU 등의 자원 배정을 적절히 함으로써 시스템의 성능을 개선할 수 있다. 유형 1단계 스케줄링 : 장기 스케줄링 = 작업 스케줄링 = Job scheduling 작업이 시스템에 들어오는 것을 승인. 프로세스가 준비큐(ready queue)로 들어간다. 2단계 스케줄링 : 중기 스케줄링 프로세스들이 프로세서를 서로 차지하려고 할 때 어느 프로세스부터 CPU를 차지할 수 있게 할지 결정 프로세스들을 보류시키고 다시 활성화하는 기법을 사용하여(스와핑) 시스템에 대한 단기적인 부하를 조절한다. 이로써 시스템을 적절히 운영한다. 스왑은 작업의 혼합을 개선하거나 프로세스가 가지고 있던 메모리를 사용.. 2021. 8. 11.
[Java] 람다식 람다식(Lambda Expression) 함수적 프로그래밍 기법으로 'y = f(x)' 형태의 함수로 구성된 프로그래밍 기법이다. 즉, 람다식은 함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. 자바 8부터 지원하며 자바는 람다식을 함수적 인터페이스의 익명 구현 객체로 취급한다. '람다식 → 매개변수를 가진 코드 블록 → 익명 구현 객체' 익명 함수(Anonymous Function) : 함수의 이름이 없는 함수로, 익명 함수들은 모두 일급 객체이다. 일급 객체인 함수는 변수처럼 사용가능하며 매개 변수로 전달이 가능하는 등의 특징을 가지고 있다. 변수.. 2021. 8. 10.
[Network] TCP, UDP 차이점 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 데이터의 전달을 담당한다. TCP, UDP는 전송계층에서 사용하는 프로토콜이다. 프로토콜(protocol) : 컴퓨터 상호간 혹은 컴퓨터와 단말간에서 통신을 할 때에 필요한 통신규약 통신규약 : 상호간의 접속이나 전달 방식, 통신 방식, 주고받을 자료의 형식, 오류 검출 방식, 코드 변환 방식, 전송 속도 등에 대하여 정하는 것. TCP( Transmission Control Protocol ) 인터넷상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면, TCP는 패.. 2021. 8. 9.