"둘 다 구현 못 하는 거 아닌가요?""추상 클래스와 인터페이스의 차이가 뭔가요?"라고 물으면, 대부분 이렇게 답합니다."추상 클래스는 일부 구현이 가능하고, 인터페이스는 구현이 없는 것 아닌가요?" 틀린 말은 아니지만, 이 대답은문법 수준의 차이만 설명할 뿐 설계 의도의 차이를 전혀 담고 있지 않습니다.이 글에서는 문법 차이를 넘어, 두 개념이 객체지향 설계에서 어떤 역할을 하고, 어떤 사고방식으로 선택해야 하는지를 하나씩 짚어 보겠습니다. 1. 추상 클래스 "is-a" vs 인터페이스 "can-do"1-1. 추상 클래스: "너는 ~이다" (is-a)추상 클래스의 본질은 분류(classification) 입니다. "이 객체가 본질적으로 무엇인가?"를 정의합니다.예를 들어, Dog, Cat, Bird는 ..
문자열 처리 클래스 String, StringBuilder, StringBuffer에 대해 깊이 있게 파헤쳐 보겠습니다.개발자분들이 반복문 내에서 무심코 + 연산자로 문자열을 이어 붙이는 경우를 자주 봅니다.트래픽이 몰리는 운영 환경에서는 이런 작은 습관이 시스템에 치명적인 OutOfMemoryError나 심각한 GC(Garbage Collection) 병목을 유발할 수 있습니다.단순히 "문자열을 더할 때는 StringBuilder를 써라"라는 표면적인 암기식 지식을 넘어, JVM 메모리 구조, 바이트코드 레벨의 컴파일러 최적화, 그리고 멀티스레드 환경의 동기화 메커니즘까지, 아키텍트의 시각에서 이 세 가지 클래스의 근본적인 차이를 확인해 보겠습니다. 1. String: 불변의 미학과 함정Java에서 S..
정보보호정보보안의 3요소기밀성 (Confidentiality)시스템 내에는 인가된 사용자만 접근이 허용. 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음무결성 (Integrity)시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있는 보안 요소가용성 (Availability)인가 받은 사람이 그것을 사용하고자 할 때 언제든지 사용할 수 있도록 보장암호 알고리즘대칭키 - 개인키 암호화 방식 (Private Key Encryption)- 암호화 키와 복호화 키가 동일하다- 비밀키는 DB 사용 권한이 있는 사용자만 나눠 가진다- 암호화/복호화 속도가 빠름, 알고리즘이 단순함, 파일의 크기가 작다- 관리해야 할 키의 수가 많다- 블록 암호화 : DES, AES, SEED, ARIA- 스트림 암호화 : R..
공통 모듈 구현결합도 (Coupling)- 결합도 (Coupling)는 두 모듈 간의 상호작용, 또는 의존도 정도를 나타내는 것이다- 모듈간의 결합도를 약하게 하면 모듈 독립성이 향상된다- 결합도가 강할수록 품질이 낮으며, 시스템 구현 및 유지보수 작업이 어렵다- 결합도는 낮을수록 Good = 독립적인 모듈결합도 종류 #내공외제스자 (강→약)내용 결합도 (Content Coupling)하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다공통 결합도 (Common Coupling)두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어 있다 (전역 변수)외부 결합도 (External Coupling)어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조..
데이터베이스 개요데이터베이스 구성개체 (Entity), 속성 (Attribute), 관계 (Relationship)요소논리적 데이터 구조 (Structure) : 논리적인 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현연산 (Operation) : 실제 데이터를 처리하는 작업에 대한 명세로, 조작하는 기본 도구제약 조건 (Constraint) : DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건SQL 명령어데이터 정의어 (DDL, Data Define Language)CREATE, ALTER, DROP, RENAME데이터 조작어 (DML, Data Manipulation Language)SELECT, INSERT, UPDATE, DELETE데이터 제어어 (DCL, Data Control..
