객체지향 프로그래밍의 핵심: 캡슐화, 상속, 다형성

캡슐화(Encapsulation) 캡슐화는 객체의 데이터와 해당 데이터를 조작하는 기능을 하나의 단위로 묶고, 내부 구현을 외부로부터 숨기는 메커니즘입니다. 주요 목표 데이터 무결성 보장: 외부의 잘못된 접근으로부터 내부 상태를 보호 모듈 독립성 향상: 인터페이스와 구현의 분리로 변경 영향도 최소화 재사용성 극대화: 검증된 컴포넌트를 여러 곳에서 활용 구현 방 ...

7월 3일 03:57에 게시됨

SQL 주입 방어 도구: 동적 ORDER BY 처리

개요 동적 ORDER BY 매개변수는 웹 애플리케이션에서 흔히 발견되는 케이스로, 이를 처리할 때 SQL 주입 공격으로부터 보호해야 합니다. SQL 주입은 악의적인 코드 실행을 가능하게 하는 중요한 보안 취약점입니다. 대비 조치 예비 컴파일陈述문(Prepared Statements) 사용: 예비 컴파일陈述문은 SQL 주입을 방지하는 효과적인 방법 중 하나입니다. 이 방법은 SQL 문과 ...

7월 3일 02:50에 게시됨

Java BigDecimal 숫자 포맷팅: 천단위 구분자 및 소수점 조절

BigDecimal 형식의 데이터를 문자열로 변환하여 다양한 포맷을 적용하는 방법을 설명합니다. 모든 결과는 String 타입으로 반환됩니다. DecimalFormat을 활용한 포맷팅 import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public class NumberFormatter { public static void main(String[] args) { // 고 ...

7월 3일 01:58에 게시됨

JVM 런타임 데이터 영역 이해하기

JVM의 런타임 데이터 영역은 다섯 개의 주요 영역으로 구성됩니다. PC 프로그램 카운터, 가상 머신 스택, 네이티브 메서드 스택, 힙, 메서드 영역이 바로 그것입니다. 이 다섯 영역은 스레드 공유 영역과 스레드 전용 영역으로 구분되며, 각각의 특성과 역할에 대해 살펴보겠습니다. 1. PC 프로그램 카운터 프로그램 카운터는 상대적으로 작은 크기의 메모리 영역으로, 현 ...

7월 3일 01:11에 게시됨

자바 Apache HttpClient를 활용한 HTTP 통신 구현

HTTP(HyperText Transfer Protocol)는 웹 환경에서 클라이언트와 서버 간의 데이터 교환을 위해 설계된 애플리케이션 계층 프로토콜입니다. RFC 2616을 기반으로 표준화된 HTTP/1.1은 요청(Request)과 응답(Response) 모델을 따르며, 연결 상태를 유지하지 않는 Stateless(무상태) 특성을 가집니다. 레거시 SOAP 웹 서비스를 현대적인 HTTP 기반의 API로 마이그레이션할 때 ...

7월 2일 21:22에 게시됨

Apache Commons Collections 4의 이해와 활용

Apache Commons Collections 4에 대한 이해 Apache Commons Collections 4 배경: commons-collections (3.x 버전)는 API 설계 및 구현에서 몇 가지 문제점(예: 인터페이스 설계의 모호성, 효율적이지 못한 구현 등)이 발견되었습니다. 이러한 문제를 해결하려면 많은 비호환 변경이 필요했습니다. 공식 팀은 이러한 개선 사항을 적용하면 기존 3.x 버전과 바이너리 또는 소 ...

7월 2일 19:51에 게시됨

Kudu의 파티셔닝 방법

확장성을 제공하기 위해 Kudu 테이블은 여러 태블릿 서버에 분산된 태블릿 단위로 나뉩니다. 각 행은 항상 특정 태블릿에 속하며, 이는 테이블 생성 시 설정된 파티셔닝 규칙에 따라 결정됩니다. Kudu는 다음 3가지 방식으로 데이터를 파티셔닝할 수 있습니다: 범위 파티셔닝 (Range Partitioning) 범위 파티셔닝은 데이터량에 따라 균형있게 기계 간에 분배하여 부하 불균 ...

7월 2일 04:40에 게시됨

공산급 문서 보안 환경에서 웹 편집기의 복잡한 형식 변환 및 저장 기능 검증

산업용 문서 처리 시스템 설계 및 구현 이번 솔루션은 국산화 환경을 기반으로 한 고도로 보안된 문서 관리 요구사항을 충족하며, 워드/엑셀/파워포인트/PDF 등 다양한 형식의 문서를 안전하게 가져오고, 그 내용을 정제하여 웹 기반 에디터에 삽입하는 기능을 제공합니다. 특히 군사급 보안 기준을 준수하며, 민감 정보의 유출을 방지하기 위한 다층적 보안 설계가 적용되 ...

7월 2일 03:51에 게시됨

Java 스레드(Thread) 개념 및 활용

스레드는 Java 프로그래밍에서 중요한 개념 중 하나입니다. 먼저 프로세스와 스레드의 차이점을 간단히 살펴보겠습니다. 프로세스(Process)란 운영체제에서 실행 중인 하나의 프로그램을 의미하며, 시스템 자원을 할당받는 기본 단위입니다. 각각의 프로세스는 독립된 메모리 공간과 코드를 가지고 있습니다. 스레드(Thread)는 프로세스 내부에서 실행되는 경량화된 작업 ...

7월 1일 23:57에 게시됨

Java에서 문자열 객체의 메모리 위치 확인 방법

자바에서는 문자열이 불변 객체로 처리되며, 메모리 내부에 저장되는 방식에 대해 많은 개발자가 관심을 갖습니다. 실제로 자바는 객체의 직접적인 메모리 주소를 제공하지 않지만, 간접적인 방법을 통해 문자열 객체의 고유 식별 정보를 확인할 수 있습니다. identityHashCode를 통한 객체 식별 System.identityHashCode() 메서드는 객체의 해시 코드를 반환하며, 이 ...

7월 1일 20:54에 게시됨