KangMoo's Blog
취소

컴퓨터의 음수표현과 2의 보수

컴퓨터의 음수 표현 컴퓨터는 모든 데이터를 0과 1로 표현한다. 2진수에 대해서 알고 있다면 양수로 이루어진 자연수를 표현할 때 큰 어려움 없이 표현할 수 있다. 예를 들어 5라는 10진수 숫자를 2진수로 표현하면 101(2)이다. 그렇다면 -5라는 숫자를 표현할 때는 어떻게 해야 할까? 단순하게 생각하면 -를 붙여서 -101로 표현하...

자바 동적 프록시(Dynamic Proxy) 란?

동적 프록시(Dynamic Proxy)란? 자바 동적 프록시는 자바에서 객체의 인터페이스를 구현하여 런타임 시에 객체의 메서드 호출을 제어하는 기술. 대부분의 사용자가 자신도 모르게 사용하고 있으며, AOP(Aspect-Oriented Programming)와 같은 기술의 핵심 요소로 활용된다 동적 프록시의 개념 동적 프록시는...

자바의 Record 란?

Java Record 소개 데이터 중심의 불변성과 간결성을 추구하는 클래스 데이터를 저장하고 전달하는 것에 중점을 둔 클래스 객체의 행동(메서드)보다 객체가 담고 있는 데이터(필드)에 더 많은 중요성을 부여하는 클래스 JDK14부터 도입되었으며, JDK16에서 정식 스펙으로 포함되었다 데이터 ...

자바의 CompletableFuture 란?

들어가면서 Java 5에서 도입된 Future 인터페이스는 비동기 계산의 결과를 수월하게 처리할 수 있게 되었지만, 몇가지 한계점이 있었다 Future의 get() 메서드를 호출할 때, 작업이 완료될때까지 블록킹된다 여러 Future를 조합하거나 예외를 처리하는것이 복잡하다 비동기 작업의 실패를 알리는 콜백 메커니즘이 부족하다 이러...

자바의 Annotation 이란?

들어가면서 자바에는 두 가지 종류의 주석이 있다. 주석(Comments)과 어노테이션(Annotations) 주석은 코드의 실행에 전혀 영향을 미치지 않으면서 개발자들이 의도와 로직을 명확하게 전달할 수 있게 도와준다. 그러나 자바의 어노테이션은 단순한 주석을 넘어서는 일을 한다. 어노테이션은 코드에 메타데이터를 추가하여, 컴파일러, 개발 도구, ...

자바의 Reflection 이란?

자바의 리플렉션(Reflection)이란? 실행 중인 자바 애플리케이션 내부를 검사하고, 수정할 수 있는 강력한 기능 강력하다 = 큰 책임감이 따른다 클래스, 인터페이스, 메서드, 필드, 생성자 및 모듈과 같은 프로그램의 다양한 측면을 런타임 중에 검사하고 수정할 수 있는 기능을 제공한다 리플렉션을 ...

컴파일 vs 인터프리트 vs 하이브리드

컴파일 언어 소스 코드를 기계어로 변환하는 과정을 거치는 프로그래밍 언어 기계어 코드는 컴퓨터가 직접 실행할 수 있다 강력한 최적화와 높은 실행 효율성을 가지며, 시스템 프로그래밍 및 성능이 중요한 어플리케이션에 주로 사용된다 장점 성능 : 컴파일 언어는 실행 전에 전체 코드를 최적화하여 빠른 실행 속도를 제공한다...

자바와 객체지향

객제지향 프로그래밍의 탄생 배경 객체지향 이전에는 프로그래밍을 개발 시 다음과 같은 문제점들이 있었다 데이터와 함수의 분리: 데이터와 함수가 각각 분리되어 있었기 때문에 체계적으로 조작하기 어려웠다 사람의 사고방식과 다른 코드: 사람이 이해하는 방식으로 코드를 작성하는 것이 아닌, 컴퓨터가 돌아가는 방식대로 코드를 작성하다보니 코드를 직관...

자바의 클래스와 객체

클래스(Class)란? 클래스는 객체를 생성하기 위한 설계도이다 자바에서 클래스는 객체의 상태를 나타내는 필드(변수)와 객체의 행동을 나타내는 메서드(함수)로 구성된다 클래스는 코드 영역에 위치하며, 이를 통해 다양한 객체를 생성하여 사용할 수 있다 객체(Object)란? 객체(Object)는 클래스의 설계도를 바탕으로 생...

집합의 기수 (Cardinality of Sets)

집합의 기수(Cardinality of Sets) [ A = (# elements)] 집합의 기수(Cardinality of Sets)란 해당 집합을 구성하는 원소의 수를 말한다. 이는 집합의 크기를 나타내는 중요한 척도로 사용된다. 예시 \[A = \{...