전체 글 74

선택 정렬(Selection Sort) 이란?

선택 정렬(Selection Sort)은 주어진 리스트에서 가장 작은 요소를 찾아서 정렬된 부분에 배치하는 방식입니다. 이 알고리즘은 간단하고 직관적이지만, 성능 면에서는 비효율적일 수 있습니다.   선택 정렬의 동작 원리선택 정렬은 아래와 같은 방식으로 작동합니다:주어진 리스트에서 가장 작은 원소를 찾습니다.그 원소를 리스트의 첫 번째 원소와 교환합니다.첫 번째 원소를 제외한 나머지 부분에 대해 동일한 과정을 반복합니다.이 과정을 리스트의 끝까지 반복하여 정렬된 리스트를 만듭니다. 선택 정렬의 단계별 설명예시로 숫자 배열 [64, 25, 12, 22, 11]을 선택 정렬로 정렬하는 과정을 살펴보겠습니다.1단계:리스트에서 가장 작은 숫자를 찾습니다. (11)11을 첫 번째 원소인 64와 교환합니다.결과:..

데이터베이스(DB) 정규화와 비정규화

데이터베이스 정규화(Normalization)와 비정규화(Denormalization)의 정의와 함께 각 기법이 어떻게 적용되는지 예시를 통해 설명하겠습니다.  1. 데이터베이스 정규화(Normalization)정규화는 데이터베이스에서 중복을 최소화하고 데이터를 효율적으로 관리할 수 있도록 테이블을 구조화하는 과정입니다. 이 과정은 여러 단계로 나뉘며, 각 단계는 '정규형(Normal Form)'이라고 불립니다.정규화의 목적중복 제거: 같은 데이터를 여러 번 저장하지 않도록 한다.데이터 무결성 유지: 잘못된 데이터가 삽입되지 않도록 한다.검색 효율성 향상: 데이터를 쉽게 찾을 수 있도록 한다.정규화 과정제1정규형(1NF): 각 열에 원자 값(Atomic Value)만 포함되도록 하는 규칙입니다. 즉, 각..

거품 정렬 (Bubble Sort) 이란?

거품 정렬(Bubble Sort)은 간단하고 직관적인 정렬 알고리즘으로, 인접한 두 원소를 비교하여 순서가 잘못된 경우 교환하며 정렬을 수행합니다. 이 과정은 리스트가 완전히 정렬될 때까지 반복됩니다. 알고리즘 동작 원리리스트의 처음부터 끝까지 인접한 두 원소를 비교합니다.두 원소의 순서가 올바르지 않다면 서로 교환합니다.첫 번째 단계가 끝나면 가장 큰 값이 리스트의 마지막 위치로 이동합니다.위 과정을 리스트 크기 - 1 만큼 반복합니다.이 알고리즘은 리스트의 크기에 따라 비교 및 교환을 반복하여 정렬을 완료합니다. 예제정렬되지 않은 리스트[5, 3, 8, 4, 2]단계별 동작1단계 (첫 번째 루프)5와 3을 비교: 교환[3, 5, 8, 4, 2]5와 8을 비교: 교환하지 않음[3, 5, 8, 4, 2]..

RuntimeException과 Exception의 차이점

Java에서 예외 처리(Exception Handling)는 안정적인 프로그램 작성을 위한 중요한 요소입니다. 예외는 크게 Checked Exception과 Unchecked Exception으로 나뉩니다. 이 중 RuntimeException과 Exception은 가장 자주 등장하는 개념으로, 둘의 차이를 알아보겠습니다.1. ExceptionException은 java.lang.Exception 클래스에서 파생된 예외입니다. 일반적으로 Checked Exception에 해당하며, 컴파일 시점에 반드시 처리해야 합니다. 즉, 예외가 발생할 가능성이 있는 코드를 작성할 때 반드시 try-catch 블록이나 throws 키워드를 사용하여 처리해야 합니다. 특징Checked Exception은 컴파일러가 예외..

카테고리 없음 2025.01.15

브라우저(Browser) 동작 방법

웹 서핑을 하다 보면 여러 URL을 통해 다양한 사이트를 방문하게 됩니다. 그렇다면 우리가 브라우저 주소창에 URL을 입력했을 때, 어떤 과정을 거쳐 원하는 페이지가 화면에 표시될까요?이는 웹의 기본적인 개념이지만, 막상 설명하려면 "렌더링", "파싱" 등 복잡한 용어들이 등장해 난감할 수 있습니다. 크롬, 파이어폭스, 사파리와 같은 오픈소스 브라우저를 기준으로, 브라우저가 동작하는 과정을 알아보겠습니다.브라우저의 주요 기능브라우저는 사용자가 요청한 자원을 서버에서 받아와 화면에 표시합니다. 이 자원은 HTML 문서, PDF, 이미지 등 다양한 형태일 수 있으며, 자원의 위치는 URI(Uniform Resource Identifier)에 의해 결정됩니다.브라우저는 HTML과 CSS 명세를 따라 HTML ..

자바(JAVA) 컴파일 과정

자바(Java)는 플랫폼 독립성을 가지는 언어로, "Write Once, Run Anywhere"라는 철학 아래 설계되었습니다. 이를 가능하게 하기 위해 자바는 소스 코드를 중간 형태인 바이트코드(Bytecode)로 변환하고, 이 바이트코드를 JVM(Java Virtual Machine)이 실행하는 구조를 따릅니다. 자바 컴파일 과정을 설명하겠습니다.1. 자바 컴파일 과정자바 컴파일 과정은 크게 세 단계로 이루어집니다:소스 코드 작성(Source Code Writing)개발자가 .java 확장자를 가진 파일에 자바 소스 코드를 작성합니다.컴파일(Compilation)javac 컴파일러를 통해 자바 소스 코드가 바이트코드로 변환됩니다.결과물은 .class 파일로 저장됩니다.실행(Execution)JVM이 ..

CSRF(Cross-Site Request Forgery)

1. CSRF란 무엇인가?CSRF(Cross-Site Request Forgery)는 웹 보안 공격의 한 유형으로, 공격자가 인증된 사용자의 권한을 도용하여 사용자의 의지와는 무관하게 특정 요청을 서버로 보내도록 유도하는 방식입니다. 이를 통해 공격자는 피해자의 계정으로 악의적인 행동(데이터 삭제, 권한 변경, 거래 요청 등)을 수행할 수 있습니다.예시)사용자가 A 사이트에 로그인하여 인증 쿠키를 보유하고 있습니다.공격자는 악성 웹 페이지를 생성하여 사용자가 이 페이지를 방문하도록 유도합니다.사용자가 페이지를 방문하면, 공격자의 페이지에서 A 사이트로 악의적인 요청을 보냅니다.브라우저는 사용자가 이미 인증된 세션을 보유하고 있기 때문에, 해당 요청은 인증된 사용자로 간주되어 처리됩니다.2. CSRF의 작..

Jackson 기반 JSON 유틸리티와 커스텀 ObjectMapper 적용하기

Java 애플리케이션에서 JSON 처리는 필수적입니다. 데이터를 직렬화(Serialize)하여 JSON 문자열로 변환하거나, 역직렬화(Deserialize)하여 객체로 변환하는 작업은 매우 빈번하게 이루어집니다. Jackson 라이브러리를 활용하여 JSON 처리를 간단하고 일관되게 구현하는 방법을 소개합니다. 특히 ObjectMapper를 확장한 커스텀 클래스와 JSON 유틸리티를 연계하여 효율성을 높이는 방법을 중점적으로 살펴보겠습니다.1. StandardObjectMapper: 커스텀 ObjectMapper 구현StandardObjectMapper는 Jackson의 ObjectMapper를 확장한 클래스입니다. JSON 처리에서 공통적으로 필요한 설정을 관리하며, 싱글톤 패턴으로 구현되었습니다.imp..

ORACLE(오라클) ROWNUM 함수

Oracle 데이터베이스에서 ROWNUM은 결과 집합 내의 각 행에 대해 고유한 번호를 부여하는 가상 컬럼입니다. 이는 데이터를 제한하거나 특정 조건에 맞는 행을 빠르게 필터링하는 데 사용됩니다. ROWNUM의 특징결과 집합 생성 순서: ROWNUM은 쿼리가 처리되는 순서에 따라 행 번호를 부여합니다.임시 컬럼: ROWNUM은 실제 데이터베이스 테이블의 컬럼이 아니며, SELECT 쿼리에서만 존재합니다.제약 사항: ROWNUM은 WHERE 절에서 조건으로 사용될 때 동작 방식에 주의가 필요합니다.기본 구문SELECT ROWNUM, column1, column2FROM table_name;예제 1: 간단한 데이터 제한테이블에서 상위 5개의 행만 가져오고 싶을 때 사용합니다.테이블 구조CREATE TABLE..

ORACLE(오라클) ROW_NUMBER() 함수

Oracle 데이터베이스에서 ROW_NUMBER() 함수는 순차적인 숫자를 생성하여 결과 집합 내의 각 행에 고유한 번호를 부여하는 데 사용됩니다. 이는 주로 데이터 순서를 지정하거나 특정 조건에 따라 데이터를 필터링할 때 유용합니다. 함수 구조ROW_NUMBER() OVER (PARTITION BY ORDER BY )PARTITION BY: 데이터를 그룹화하는 기준을 지정합니다. 각 그룹별로 ROW_NUMBER()가 독립적으로 계산됩니다.ORDER BY: 각 그룹 내에서 행 번호를 매기는 기준이 되는 정렬 순서를 지정합니다.사용 사례중복 데이터 제거페이징 처리그룹 내 특정 순위의 데이터 추출예제 1: 중복 데이터 제거중복된 데이터를 가진 테이블에서 최신 데이터만 남기고 나머지를 삭제한다고 가정합니다...