반응형

Language 34

[JAVA] Error VS. Exception

# Error JAVA는 컴파일언어로 컴파일 시 JAVA의 문법적인 오류와 같은 심각한 문제를 야기시켜 컴파일 중간에 프로세스를 중단 할 수 있다. 메모리 부족, 스택오버 플로우와 같이 발생하면 복구할 수 없는 심각한 오류이다. 프로세스 자체를 중단시키는 것을 Error라고 합니다. # Exception 동작 도중 예기치 않았던 이상 상태의 발생으로 수행중인 프로그램이 영향을 받은 것으로 경미한 현상이라고 볼 수있다. 이를 Exception이라고 한다. 수습이 가능하고 개발자가 적절히 코드를 작성해준다면 비정상적인 종료는 막을 수 있게 된다. 즉, Error를 Exception상황으로 만들어, Exception Handling을 할 수 있다. # Throwable 클래스 Error를 Exception상황..

Language/Java 2024.04.09

[JAVA] 컴파일 과정

# JVM(Java Virtual Machine) JAVA의 가장 큰 장점은 OS에 독립적이라는 것이다. 따로 Machine을 갖고있는데 그게 JVM이다. (우리가 사용하는 VM의 한종류라고 볼 수있다.) 어떤 방식으로 Compile을 하길래 OS에서 독립적일까? # Compile 과정 개발자가 소스코드를 소스파일 (.java) 에 작성한다. Java의 컴파일러가 소스파일 (.java) Compile한다. 그 결과는 바이트 코드(.class)로 출력된다. 하지만, 바이트 코드(.class) 는 아직 JVM이 이해할 수 없다. Class Loader가 Dynamic Loading을 통해 필요한 클래스들을 로딩 및 링크하여 JVM에 올린다. Load: 바이트 코드(.class)를 JVM 메모리에 로드 검증:..

Language/Java 2024.04.09

[JAVA] Gabage Collection (2)🗑️

2022.01.14 - [Language/Java] - [JAVA] Gabage Collection (1)🗑️ [JAVA] Gabage Collection (1)🗑️ # 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Ga blaj2938.tistory.com 이전 포스팅에서는 GC가 어떻게 사용하지 않는 메모리를 판별하는 참조 방식과 청소 방식에 대해서 알아보았다. 그렇다면 이 방식과 방식을 JVM Heap영역에 대입해서 동작하도록 해야한다. # heap 메모리의 구조 & GC 종류 JVM의 Heap 메모리 영역은 애초에..

Language/Java 2024.04.09

[JAVA] Gabage Collection (1)🗑️

# 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Gabage(쓰레기)는 무엇인지 알아보아야한다. Once upon a time~ 과거 java, python 등등 이러한 언어가 나오기 이전으로 돌아가보자 과거 프로그래밍 언어들은 프로그래머가 동적메모리를 할당부터 해제까지 모두 수동으로 해줘야했다. 특히 우리가 알고 있는 C언어도 그랬다. 항상 개발자들은 메모리를 할당하고 해제하지 않거나 해제한 메모리를 다시 해제 하는 등... 휴먼에러를 많이 발생시켰다. 개발자는 휴먼에러를 최소화해야겠다. 명령대로만 알아듣는 컴퓨터를 ..

Language/Java 2024.04.09

[C++] STL (Standard Template Library) 2편 - iterator와 algorithm

2024.01.23 - [Language/C++] - [C++] STL (Standard Template Library) 1편 - Container [C++] STL (Standard Template Library) 1편 - Container 저번에 포스팅 한 Template는 Generic Programing을 위한 C++의 문법이었다. 2024.01.23 - [Language/C++] - [C++] Template(템플릿) [C++] Template(템플릿) # Generic Programming 기존에 공부했던 JAVA에서는 제네릭 문법이 잇었 blaj2938.tistory.com 1편에서는 자료구조와 관련된 컨테이너라고 부르는 STL을 살펴보았다. 자바의 리스트나 맵이나 우리가 하는 자료구조형을 ..

Language/C++ 2024.01.24

[C++] STL (Standard Template Library) 1편 - Container

저번에 포스팅 한 Template는 Generic Programing을 위한 C++의 문법이었다. 2024.01.23 - [Language/C++] - [C++] Template(템플릿) [C++] Template(템플릿) # Generic Programming 기존에 공부했던 JAVA에서는 제네릭 문법이 잇었다. 2022.01.10 - [Language/Java] - [JAVA] 제네릭(Generic) [JAVA] 제네릭(Generic) 제네릭이란 데이터의 타입을 일반화 한다 제네릭은 클래스나 blaj2938.tistory.com Generic은 일반이라는 말이다. 우리가 평상시에 일반화 하면 안된다고 하지만 Generic 프로그래밍의 장점은 중복 코드를 줄일 수 있다는 것이다. 생각해보면 다 똑같이 ..

Language/C++ 2024.01.23

[C++] Template(템플릿)

# Generic Programming 기존에 공부했던 JAVA에서는 제네릭 문법이 잇었다. 2022.01.10 - [Language/Java] - [JAVA] 제네릭(Generic) [JAVA] 제네릭(Generic) 제네릭이란 데이터의 타입을 일반화 한다 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성 blaj2938.tistory.com 여기서 말하는 Generic은 Generic Programming에서 나온 것이다. 그 정의가 무엇이냐면, 프로그래밍 언어에서 타입에 구애 받지 않고 재사용이 가능한 코드를 작성하는 이론을 이야기 하는 것이다. C++ 들어가기전 친숙한 JAVA의 Generic이 어떤건지 보..

Language/C++ 2024.01.23

[C++] Class & 접근제어지시어

# Class(클래스)란? class는 OOP에서 특정 Object를 생성하기 위해서 변수와 메소드를 정의하는 일종의 틀이라고 할 수 있다. 객체를 정의하기 위한 메소드와 변수로 구성된다. Method(메소드) : OOP에서 객체와 관련된 서브틴이자 클래스가 갖고 있는 function이다. 데이터와 멤버변수에 대한 접근 권한을 갖고 있다. Variable(변수) : 데이터의 위치를 저장하는 역할을 한다. 일종의 틀, 즉 템플릿을 사용하면 Object를 분류할 떄 멤버의 자료형을 미리 정하지 않고 객체를 사용할 때 결정할 수 있게된다. C++에서 클래스는 구조체의 상위 호환이라고 할 수있게된다. 구조체에 대한 이해는 아래 글을 참고하면 된다. 2024.01.19 - [Language/C++] - [C++]..

Language/C++ 2024.01.22

[C++] Structure Type(구조체)

# 구조체란? 구조체(Structure Type)은 C++의 기본적인 타입(int, char, double 등등)들을 통해서 새롭게 정의를 할 수 있는 사용자 정의 타입이다. 개인적인 생각인데 해당 발상은 타입별로 자료형을 따로 선언해야한다는 단점을 극복하고 묶음의 단위로 사용하기 위함이 아닐까 싶다. 그 비슷한게 Class(클래스)가 있다. 글을 쓰면서 객체 VS. 구조체에 대해서 알아보겠다. 이하 비슷하게도 배열(Array)가 있지만 우리가 Array를 선언할때와 구조체를 선언할때를 보면 차이점을 명확하게 알 수있다. char c[10]; //배열 //구조체 struct st{ char[10] c; int n; double d; }; 위처럼 배열은 한가지 타임으로만 만들수 밖에 없다. 문자형이면 문자..

Language/C++ 2024.01.19

[C++] Pointer(포인터)

# Address Value의 이해 데이터의 주소값이란 해당 데이터의 저장된 메모리의 시작 주소를 의미합니다. 여기서 궁금한 점이 있을 수 있다. 메모리는 물리 메모리를 이야기하는 것이 아닌 CPU가 바라보는 논리주소, 즉 가상 주소를 의미한다. 가상 메모리리 관련해서는 아래 포스팅을 첨부한다. 2024.01.15 - [Computer Science/Operation System] - [OS] Virtual Memory와 Paging기법 [OS] Virtual Memory와 Paging기법 2024.01.12 - [Computer Science/Operation System] - [OS] 메모리 관리 전략 & Paging / Segmentaion 기법 [OS] 메모리 관리 전략 & Paging / Seg..

Language/C++ 2024.01.18
반응형