정적 바인딩과 동적 바인딩에 관하여
·
java
Java에서 바인딩(Binding)이란, 프로그램이 실행되기 전에(컴파일 시간) 또는 실행 중(런타임)에 메서드 호출과 해당 메서드의 실제 구현을 연결하는 과정입니다. 바인딩에는 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding) 두 가지 방식이 있으며, 이 글에서는 두 방식의 개념과 차이점, 예제 코드를 살펴보겠습니다. 1. 정적 바인딩 (Static Binding)1.1 정적 바인딩이란?정적 바인딩 (Early Binding 또는 Compile-Time Binding) 은 컴파일 시간에 어떤 메서드 또는 변수에 대한 호출이 어떤 정의와 연결될지 결정되는 방식입니다. 즉, 컴파일러가 메서드 호출을 사전에 결정하는 것을 의미합니다.정적 바인딩은 private, stati..
Java 상속에 관하여
·
java
객체지향 프로그래밍(OOP)에서 상속 (Inheritance) 과 다형성 (Polymorphism) 은 코드 재사용성과 유연성을 높이는 중요한 개념입니다. 이 글에서는 Java에서 객체 상속이 동작하는 과정과 다형성으로 인해 메서드가 어떻게 동작하는지 예제 코드와 함께 설명하겠습니다.1. Java에서 객체 상속의 동작 과정1.1 상속(Inheritance) 개념Java에서 상속은 기존 클래스 (부모 클래스, superclass) 의 속성과 메서드를 새로운 클래스 (자식 클래스, subclass) 가 물려받는 기능입니다. 이를 통해 코드의 중복을 줄이고, 유지보수를 쉽게 할 수 있습니다.1.2 기본적인 상속 예제class Parent { String name = "Parent"; void dis..
Signature 에 관하여
·
java
Java에서 **시그니처(Signature)**는 메서드를 고유하게 식별하는 중요한 요소입니다. 메서드 오버로딩이나 클래스의 설계에서 시그니처를 이해하는 것은 필수적입니다. 이 글에서는 Java 시그니처의 개념, 구성 요소, 관련 사례와 함께 자세히 알아보겠습니다.1. Java 시그니처란?시그니처(Signature)는 메서드의 이름과 매개변수 리스트를 결합한 것으로, 메서드를 고유하게 식별합니다. 컴파일러는 시그니처를 기준으로 동일한 클래스 내에서 메서드를 구분합니다.시그니처의 구성 요소메서드 이름매개변수의 순서, 타입, 개수반환 타입과 접근 제어자는 시그니처에 포함되지 않습니다.예제public class SignatureExample { // 서로 다른 시그니처를 가진 메서드들 public ..
BufferedReader와 Scanner의 차이 및 비교
·
java
Java에서 사용자 입력을 처리하거나 파일을 읽는 데 자주 사용되는 두 가지 클래스는 BufferedReader와 Scanner입니다. 이 글에서는 두 클래스의 주요 차이점, 성능 비교, 그리고 성능 차이가 발생하는 이유에 대해 알아보겠습니다.1. BufferedReader와 Scanner1.1 BufferedReaderBufferedReader는 Java의 I/O 패키지(java.io)에 포함되어 있으며, 대량의 문자 데이터를 읽는 데 최적화된 클래스입니다.주요 특징:버퍼를 사용하여 효율적인 데이터 읽기를 지원.데이터를 문자열 단위로 처리 (readLine() 메서드 제공).입력을 해석하거나 파싱하지 않음.1.2 ScannerScanner는 Java의 유틸리티 패키지(java.util)에 포함되어 있으..
슬라이딩 윈도우 알고리즘에 관하여
·
algorithm
슬라이딩 윈도우(Sliding Window)는 배열이나 문자열과 같은 데이터 구조에서 특정 조건에 맞는 부분 구간을 효율적으로 탐색하거나 계산하기 위한 알고리즘 기법입니다. 이 글에서는 슬라이딩 윈도우 알고리즘의 개념, 작동 원리, 주요 사례 및 구현 방법에 대해 알아보겠습니다.1. 슬라이딩 윈도우 알고리즘이란?슬라이딩 윈도우는 고정된 크기의 윈도우(구간)를 데이터 구조 위에서 이동시키며 문제를 해결하는 방식입니다. 반복적으로 윈도우를 이동하면서 이전 계산 결과를 활용하여 효율적인 처리를 제공합니다.사용 목적불필요한 계산을 줄여 성능 최적화특정 구간 내의 값을 계산하거나 조건을 만족하는 부분을 탐색2. 작동 원리슬라이딩 윈도우는 기본적으로 두 개의 포인터(보통 시작 포인터와 끝 포인터)를 사용하여 데이터..
숏서킷 연산에 관하여
·
java
1. 숏서킷 연산이란?숏서킷 연산은 논리 연산자 && (AND)와 || (OR)에서 조건식의 결과를 미리 판단할 수 있을 때, 남은 조건을 평가하지 않고 연산을 종료하는 최적화 기법입니다.1.1 동작 원리&& (AND): 첫 번째 조건이 false라면, 전체 결과는 항상 false이므로 나머지 조건은 평가하지 않습니다.|| (OR): 첫 번째 조건이 true라면, 전체 결과는 항상 true이므로 나머지 조건은 평가하지 않습니다.// AND 연산if (a != 0 && b / a > 1) { System.out.println("조건 충족");}// a가 0이면 b / a > 1은 평가되지 않음 (ZeroDivisionError 방지)// OR 연산if (a == 0 || b / a > 1) { ..
Interface 에 관하여
·
java
자바에서 인터페이스(Interface)는 클래스와 비슷한 형태를 가지지만, 클래스와는 다르게 특정 동작을 정의하고 해당 동작을 구현하도록 강제하는 데 사용됩니다. 인터페이스는 객체지향 프로그래밍의 중요한 개념 중 하나로, 다형성과 설계의 유연성을 제공합니다. 이번 글에서는 Java Interface의 개념, 사용 방법, 주요 특징, 그리고 활용 예제를 살펴보겠습니다.1. 인터페이스란 무엇인가?인터페이스는 추상 메서드(구현되지 않은 메서드)와 상수를 포함할 수 있는 참조 타입입니다. 인터페이스는 클래스가 구현해야 하는 메서드의 청사진을 정의합니다.인터페이스의 목적표준화: 동일한 동작을 여러 클래스에 강제적으로 구현하도록 합니다.다형성 지원: 객체의 구현체를 숨기고 인터페이스를 통해 동작하도록 합니다.유연한..
QueryDSL 설정하기
·
spring
개발 환경spring boot 3.4.0gradle 8.10.0🐘build.gradledependencies { // querydsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"}Qclass 생성하기Query..
WAS (Web Application Server) 에 관하여
·
web
1. WAS란 무엇인가?WAS(Web Application Server)는 클라이언트로부터의 요청을 처리하고 동적인 웹 콘텐츠를 생성하는 서버 소프트웨어입니다. 웹 서버와는 달리 애플리케이션 로직을 실행할 수 있는 환경을 제공합니다. 대표적인 WAS로는 Apache Tomcat, WildFly, WebLogic, WebSphere 등이 있습니다. 특히 Apache Tomcat은 오랜 시간 동안 널리 사용되어 온 WAS로, 무료로 제공되는 오픈 소스 소프트웨어이며, 서블릿과 JSP를 기반으로 한 웹 애플리케이션 개발에 자주 활용됩니다. 가볍고 안정적인 성능 덕분에 소규모 프로젝트부터 대규모 시스템까지 폭넓게 사용됩니다.2. WAS의 주요 역할2.1 동적 콘텐츠 생성WAS는 클라이언트의 요청에 따라 동적인 ..
클라우드 컴퓨팅에 관하여
·
cloud
클라우드 컴퓨팅이란?클라우드 컴퓨팅(Cloud Computing)은 인터넷을 통해 컴퓨팅 자원을 제공하는 기술입니다. 이를 통해 사용자는 물리적인 하드웨어나 소프트웨어 없이도 필요한 리소스를 온디맨드 방식으로 사용할 수 있습니다.1. 클라우드 컴퓨팅의 서비스 모델클라우드 컴퓨팅의 서비스 모델은 사용자가 클라우드 서비스를 어떤 형태로 제공받는지를 정의합니다. 크게 세 가지로 나뉩니다.1.1 IaaS (Infrastructure as a Service)정의: 가상화된 컴퓨팅 자원(서버, 스토리지, 네트워크)을 서비스 형태로 제공.특징:사용자는 운영체제(OS), 애플리케이션 등 소프트웨어를 설치하고 관리.물리적인 하드웨어 관리가 필요하지 않음.높은 유연성과 확장성 제공.사용 예시:AWS EC2(Elastic ..