📌 Static 이란?스태틱(Static)은 고정이라는 뜻을 갖고 있습니다. Static 키워드를 사용하면 Static 변수와 Static 메서드를 만들 수 있는데 이 변수와 메서드는 메서드 영역에 올라가게 됩니다. 따라서 모든 곳에서 호출이 가능하고 이에 따라 속도도 빠르다는 특징을 갖고 있습니다. 하지만 Garbage Collector의 영역 밖에 존재하므로 Static을 자주 사용한다면 프로그램의 종료 시까지 메모리가 할당된 채로 존재하므로 메모리 누수가 발생된다는 단점이 있습니다. 만약 메모리 영역에 대해서 잘 모르신다면 밑의 글을 읽어보시는걸 추천드립니다. [Java] Java 메모리 영역자바의 메모리 영역 자바 프로그램을 실행 하게 되면 JVM은 OS(운영체제 ex. 윈도우, 유닉스, 리눅..
📌 추상클래스와 인터페이스 개념먼저 추상클래스와 인터페이스에 대해 개념을 학습한 뒤 어떤 상황에서 추상클래스와 인터페이스를 써야 하는지에 대해서 설명드리겠습니다. <td ..
오버로딩(Overloading) 오버로딩은 같은 클래스 내에서 메서드 이름은 같고 매개변수(파라미터)의 타입, 갯수를 다르게 구현하는 방식을 의미합니다. 만약 하나의 클래스 안에 같은 이름의 메서드를 정의한다면 컴파일 에러가 발생하게 됩니다. public class Test { void overloading(){ System.out.println("매개변수가 없는 메서드"); } void overloading(int a, int b) { System.out.println("매개변수가 int 형 2개로 이루어진 메서드"); } void overloading(String a, int b){ System.out.println("매개변수가 int 형 1개, String 1개로 이루어진 메서드"); } } 더보기..
제네릭이란? 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미합니다. 흔히 ArrayList, LinkedList를 생성할 때 사용해 본 경험이 있으실 겁니다. //타입 + 배열 자료형 int[] arr = new int[3]; //리스트 자료형 + ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); ArrayList list3 = new ArrayList(); 이처럼 클래스 안에 로 되어 있는 부분이 바로 제네릭입니다. 배열의 타입을 지정하듯이 리스트 자료형 같은 래퍼 클래스나 메서드에서 사용할 데이터 타입(type)을 매개변수(parameter) 주듯이 외부에서 지정하는 이른바 타입을 변수화 한..
Garbage Collection(GC) 이란? 가비지 컬렉션(Garbage Collection)은 자바의 메모리 관리 기법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스를 말합니다. C / C++언어에서는 가비지 컬렉션이 없어 수동으로 메모리 할당과 해제를 해줘야 하지만 Java는 가비지 컬렉터가 대행해 주기 때문에 한정된 메모리를 효율적으로 사용할 수 있습니다. 따라서 개발에만 집중할 수 있다는 장점이 있습니다. 가비지 컬렉션 vs 가비지 컬렉터 가비지 컬렉션은 사용하지 않는 메모리를 해제하는 행위를 말하고, 가비지 컬렉터는 행위의 주체(프로그램)를 말합니다. 즉 가비지 컬렉터가 가비지 컬렉션을 수행합니다. Heap ..
자바의 메모리 영역 자바 프로그램을 실행 하게 되면 JVM은 OS(운영체제 ex. 윈도우, 유닉스, 리눅스) 로 부터 메모리를 할당 받습니다. 할당 받은 메모리를 용도에 따라서 여러 영역으로 나누어 관리합니다. JVM의 메모리 공간(Runtime Data Area)은 크게 메서드(Method) 영역, 스택(Stack) 영역, 힙(Heap) 영역으로 구분되고 데이터 타입에 따라 각 영역에 나눠서 할당 되게 됩니다. 컴퓨터의 메모리는 한정된 공간이기 때문에 어떻게 관리하고 사용하느냐에 따라서 성능(속도)이 좌우됩니다. 따라서 Java 어플리케이션에서 메모리를 효율적으로 사용하기 위해서는 메모리 구조와 특징에 대해 이해할 필요가 있습니다. 1. 메서드 영역(Static or Method) JVM이 실행되고 클..
Java 동작 과정 전체적인 동작 과정은 컴파일 수행 -> 클래스 로딩 -> 메모리 할당 -> 바이트 코드 해석 및 실행 -> 가비지 컬렉션 -> 예외 처리 -> 프로그램 종료 과정을 수행합니다. 위 그림은 전체적인 자바의 실행 과정을 보여줍니다. 그럼 이제 조금씩 나누어서 과정을 살펴보겠습니다. 1. 컴파일 (Compile) 컴파일러 (Compiler)는 '해석기'라는 뜻으로 인간이 사용(이해)하는 고레벨언어를 기계가 이해할 수 있는 기계어(저 레벨 언어)로 해석해 주는 번역 프로그램입니다. 사람이 java언어로 Member라는 클래스를 만들면 IDE,Eclipse같은 IDE들은 자동 컴파일 기능을 갖추고 있어, 파일을 저장하는 순간 자동으로 컴파일을 수행합니다. 이렇게 자동으로 컴파일된. class ..
1. 이산수학 개요 이산수학(Discrete Mathematics) 개념 컴퓨터를 위한 수학 참과 거짓으로 살펴보는 컴퓨터 수학 이산수학을 배우는 이유 이산수학이란 불연속적인 숫자를 다루는 수학이다. 컴퓨터 내부적으로 0과 1만을 다루는 데 그러한 불연속적인 데이터 흐름을 다루기에 적합한 수학적 사고를 배양하는데 필수적인 강의라고 할 수 있다. 또한 이산수학에서는 다루는 내용이 자료구조, 알고리즘 등의 베이스가 되어 전체적인 컴퓨팅 사고력을 길러줄 것이다. 그리고 추후 수학적 귀납법 등의 다양한 기초 개념이 알고리즘에 반복적으로 출현하기 때문에 컴퓨터 과학의 베이스 학문 이라고 할 수 있다. 2. 명제 명제 (Proposition) 개념 진실 혹은 거짓을 말한다. 참(True)이나 거짓(False)으로 ..
OSI 7계층 국제 표준화 기구인 ISO에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델로 OSI 7 계층을 통용적으로 많이 사용한다. 응용계층 분산된 시스템을 하나의 통용된 응용시스템으로 묶어주는 계층 예를들어 구글검색시스템 , 네이버웹툰, LOL 등이 있으며 사용자와 제공자가 멀리 떨어져있지만 하나의 응용시스템으로 묶어주는 계층을 말한다. 표현계층 분산된 응용의 표현 방법에 대한 규약으로 쉽게 말해 각각의 애플리케이션들의 정보를 서로 잘 통신할 수 있도록 필터하고 변환하는 계층이라고 말할 수 있다. 예를들어 HTML이 있다. 세션계층 응용의 접속 및 통신과 관련된 규약을 표현한 계층으로 객체단위에서 정보(그림이나,사물의 움직임)등 주고받기 위한..
1. 네트워크 품질 기준 2가지 속도 측면 대역폭(Bandwidth) 또는 처리량(Throughput) 네트워크 대역폭은 네트워크가 단위 시간 내 전달할 수 있는 최대 크기의 전달 용량을 의미합니다. 대역폭이 높을수록 많은 데이터가 네트워크에 실려서 전달하고 전달받을 수 있습니다. 대역폭 자체는 전달 속도와는 관계가 없으며 오히려 용량과 관계가 있습니다. 1MB/s -> 8Mbps(Mb/s) 1메가바이트 -> 8메가비트 지연시간(Latency) 네트워크 지연 시간은 네트워크 통신의 지연을 말하며, 네트워크를 통해 데이터를 전송하는 데 걸리는 시간을 보여줍니다. 딜레이나 랙이 길게 발생하는 네트워크는 지연 시간이 길고, 응답 시간이 빠른 네트워크는 지연 시간이 짧습니다. ●Processing delay P..