문자열 처리 클래스 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..
데이터 입출력 구현자료구조의 구성선형 구조 (Linear Structure) : 배열, 스택, 큐, 데크, 선형 리스트비선형 구조 (Non-Linear Structure) : 트리, 그래프선형 리스트 (Linear List)연속 리스트 (Contiguous List) => 순차적배열과 같이 연속되는 기억장소에 저장되는 자료 구조기억장소를 연속적으로 배정받아, 기억장소 이용 효율은 밀도가 1로서 가장 좋다중간에 데이터를 삽입하기 위해 연속된 빈 공간이 있어야 한다삽입, 삭제 시 자료의 이동이 필요하다연결 리스트 (Linked List) => 비순차적자료들을 반드시 연속적으로 배열시키지 않고 임의의 기억공간을 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용해 서로 연결시킨 자료 구조노드의 삽..
