

OOP(Object Oriented Programming), 객체지향프로그래밍이은 소프트웨어를 모듈화하거 유지 보수하기 용이하도록 설계하는 프로그래밍 패러다임 중 하나이다. 해당 패러다임은 객체와 그 객체들간의 상호작용을 모델링하여 프로그램을 구성한다.여기서 객체는 데

하나의 클래스는 하나의 책임만을 갖고 있어야 한다는 원칙이다.즉, 클래스를 변경하는 이유는 하나를 가져야 한다. 이를 통해 클래스가 변경이 되어도 다른 기능에 미치는 영향을 최소화할 수 있다.Report라는 클래스가 있고 해당 클래스는 보고서를 출력하고 저장하는 두가지

Null은 자바 언어에서 아무런 값이 없음을 나태내는 값이다. 이는 참조 변수가 객체를 참조하지 않을 때 사용이 된다.자바라는 언어로 프로그램을 개발하면서 여러번의 NullPointerException 예외를 경험을 했다.NullPointerException란?Null

람다 람다 표현식은 메소드로 전달할 수 있는 익명 함수를 단순화한 것이다. 특징 익명 보통의 메소드와는 달리 이름이 없으므로 익명이라고 표현한다. 또한 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 람다는 메소드 처럼 특정 클래스에 종속이 되지 않으므로

지금까지 Java를 공부하면서 간단한 코두룰 작성하는데 제네릭에 대하여 자세히 이해를 하고 사용하지는 않았다. 그래서 이번 기회에 제네릭에 대하여 자세히 알아 보겠다. Generic 제네릭은 Java 5에서 처음 도입되었습니다. 이는 컬렉션 프레임워크의 개선과 동시

지금까지 자바를 공부하면서 아주 갈략하게 스트림에 대하여 읽었던 기억이 있다. 하지만 이 기능을 자주 사용하지 않았다. (사실 당시에 너무 복잡해 보여서 겁이나서 안했다.)그래서 다시 알아보고 사용하고 싶어서 정리를 한다.스트림은 자바8 API에 추가된 기능이다. 이

코딩테스트 정렬 문제를 풀고 있었다. 당시 필자인 나 정렬이라면 그냥 무턱대고 사용하던 sort() 메소드 뿐이였다.그런데 유일하게 사용할 줄 알았던 sort()에 대해서 어떻게 구동이 되는지 등 모르면서 사용을 했었다. 누군가 해당 메소드에 관한 질문을 한다면?
사전적인 의미로 스택은 "샇다"라는 의미를 갖고 있다. 그리고 지금 우리가 직접 구현할 Stack이라는 자료 구조는 LIFO이라고 칭한다. 해당 구조는 흔하게 후입선출이라고 생각하면 이해하기 쉽다. 후입선출추가될 것을 가장 뒤에 추가를 하고, 요소를 하나 뽑을 때
변수는 값을 저장할 수 있는 메모리의 특정 번지에 붙이에 붙이는 이름이다. 프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을 수 있다.프로그래밍 언어에 따라 다르지만, 자바의 변수는 다양한 타입의 값을 저장할 수 없다. 각 타입에 정해진 타입의 값만 저
자바에서 사용되는 연산자는 위 표와 같이 존재를 한다. 그럼 표에서 피연산자의 수를 기준으로 해당 연산자들의 동작을 확인 하자.부호 연산자 (+, -)해당 연산자는 boolean,char타입을 제외한 나머지 기본 타입에 사용이 가능하다. 해당 연산자는 양수및 음수를 표
조건문은 조건식에 따라 다른 실행문을 실행하기 위해 주로 사용이 된다. 조건문의 종류로는 if문, switch문이 존재한다.if문은 조건식에는 참과 거짓이 반환되는 연산이나 boolean타입의 변수가 올 수 있다. 여기서 조건식이 참이거나 변수가 true일 경우 블록을
자바라는 언어는 객체 지향 언어이다. 본격적으로 객체를 학습하기 전에 먼저 참조 타입의 종류와 참조 변수의 역활에 대해서 알아야 한다.자바에서 타입은 크게 기본 타입과 참조 타입으로 두 가지로 나뉜다. 앞선 글에서는 기본 타입에 관련해서 간략히 알아 보았으니 이번에는
객체 지향 프로그래밍 객체 지향 프로그래밍에 있어서 객체의 의미를 짚고 가야 한다. 여기서 객체는 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성과 동작(기능)을 갖고 있는 것을 말한다. 자바에서는 속성과 동작을 각각 필드와 메서드라고 부른다.

자바에서 사용되는 CalssLoader는 클래스 파일(.class) 파일을 읽어 JVM의 Method Area에 적재하는 역활을 한다.즉, 우리가 .java 파일을 작성하고 컴파일한 .class 파일이 실제로 JVM 메모리에 올라가서 사용될 수 있도록 하는 입구 역할을

왜 Java는 JVM위에서 실행이 될까? 그리고 JVM은 무엇일까? 라는 의문이 생긴다.기본적으로 Java는 프로그래밍 언어이다. 하지만 컴퓨터는 Java를 이해할 수 없다.컴퓨터는 오직 기계어만을 이해할 수 있다. 그렇기 때문에 Java는 기계어가 아니기 떄문에 컴퓨

Execution Engine은 JVM에서 바이트코드를 실제로 실행하는 핵심 구성 요소로, Interpreter와 JIT Compiler를 통해 실행 성능을 최적화하는 역할을 담당한다. 또한 실행 과정에서 메모리 관리(GC)와 네이티브 코드 연동까지 수행한다.Execu

서비스를 운영하면 가끔 트래픽이 평소와 다르지 않은데 갑자기 응답 지연 발생, CPU 사용률 상승, 서비스 잠시 멈춤 등의 문제가 발생할 수 있다. 이 상황에서 콘솔을 봐도 에러에 대한 로그도 나타나지 않는다. 이러한 경우는 상당수 GC관련으로 발생된 문제이다.GC는