전체 글 12

주소창에 'naver.com'을 치면 일어나는 일

웹 페이지가 브라우저에 보이는 과정1. 사용자 입력사용자가 브라우저의 주소창에 naver.com을 입력한다.2. 웹 페이지 URL브라우저 캐시 확인OS의 DNS 기록 확인 (OS도 DNS 기록을 가지고 있음)라우터 캐시 확인 - 자체 DNS 레코드 캐시를 유지 관리하는 라우터와 통신위 모든 단계에 실패하면 브라우저는 Recursive DNS 서버로 이동한다.3. 도메인 네임브라우저는 DNS 서버에 해당 도메인에 대한 IP 주소를 요청한다.4. IP 주소 반환DNS 서버는 naver.com에 해당하는 IP 주소를 반환한다. 이 IP 주소는 실제 웹 서버의 위치를 나타낸다.5/6. HTTP 요청 메시지브라우저는 TCP 통신을 통해 해당 IP 주소(네이버 서버)로 HTTP 요청을 전송한다.7. 웹 페이지 UR..

CS 2025.02.15

OS (운영체제)와 컴퓨터

🖥️ 운영체제(OS, Operating System)OS(운영체제)란, 사용자가 컴퓨터를 쉽게 다룰 수 있도록 도와주는 인터페이스이다.한정된 메모리 및 시스템 자원을 효율적으로 분배하는 역할을 한다.📌 OS의 역할CPU 스케줄링과 프로세스 관리 CPU 소유권을 어떤 프로세스에 할당할지 결정 프로세스 생성 및 삭제, 자원 할당 및 반환 관리메모리 관리 한정된 메모리를 각 프로세스에 효율적으로 할당디스크 파일 관리 디스크 파일 저장 및 관리 방법 결정I/O 디바이스 관리 마우스, 키보드 등의 I/O 디바이스와 컴퓨터 간 데이터 교환 관리🔹 운영체제의 구조🛠️ 시스템 콜 (System Call)운영체제가 커널에 접근하기 위한 인터페이스 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수..

CS 2025.02.10

데이터베이스 Lock (잠금) 이란?

Lock : 잠그다왜 데이터베이스 Lock을 하고, 또 어떻게 하는가?📌 왜 Lock을 사용할까?재고는 1개밖에 없었지만, 두 사람이 동시에 주문하여 둘 다 성공하는 문제 발생이러한 데이터 무결성 문제를 방지하기 위해 DBMS에서는 동시성 제어를 수행동시성 제어: 트랜잭션들이 동시에 수행될 때, 데이터 일관성을 유지하도록 접근을 제어하는 것어떻게?Lock을 이용🔑 Lock의 종류1️⃣ 낙관적 잠금(Optimistic Lock)데이터 갱신 시 경합이 발생하지 않을 것이라고 가정한 사용자가 업데이트를 완료하면, 동시 업데이트 확약을 시도하는 다른 사용자에게 충돌이 있음을 알림✅ 동작 방식첫 Read 시 version을 읽음구매 완료 후 다시 version을 읽음처음 읽었던 version과 같다면 업데이트..

CS 2025.02.07

정규화

데이터베이스 정규화 (Database Normalization)1. 데이터베이스 (Database)Data : 사실, 관찰, 측정 등을 통해 얻어진 정보를 의미하며, 정리되지 않은 원시적인 형태의 정보Base : 기초, 기반, 저장소Database : 데이터의 기지 (1950년대 미국에서 처음 사용), 구조화된 정보 또는 데이터의 조직화된 모음 혹은 전자적으로 저장되고 체계적인 데이터 모음 (현대)2. 정규화 (Normalization)정(正): 바를 정, 올바르게 하다, 또는 바르게 맞추다.규(規): 법 규, 규칙이나 기준을 의미.화(化): 될 화, 변화시키다, 어떤 상태로 만들다.정리정규화란 올바른 기준에 맞게 데이터를 변화시키는 과정이다.즉, 데이터를 체계적으로 저장하고 관리하는 저장소를 규칙에 맞..

CS 2025.01.10

백준 9663번 N-Queen

N-Queen 문제문제 정의N-Queen 문제는 N x N 체스판에 N개의 퀸을 배치하는 문제로, 다음과 같은 조건을 만족해야 한다:각 퀸은 같은 행, 같은 열, 또는 대각선에 다른 퀸이 없어야 한다.문제 이해를 위해 N이 4인 경우에 탐색하는 과정의 일부를 보자나는 이 문제를 보고 백트래킹 방식으로 접근해보았다.코드는 다음과 같다.javaimport java.io.*;import java.util.*;public class Main { static int N, cnt; static int[][] board; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedRead..

Algorithm_Java 2025.01.04

쿼리 최적화

1. 쿼리 최적화란?쿼리 최적화(Query Optimization)는 데이터베이스에서 실행되는 쿼리를 최적의 방식으로 처리하도록 설계하여 응답 속도와 리소스 사용량을 개선하는 작업이다.2. 쿼리 최적화가 왜 필요한가?문제점느린 응답 속도데이터가 많아질수록 쿼리 실행 시간이 길어져 사용자 경험이 저하된다.비효율적인 리소스 사용CPU, 메모리, 디스크 I/O 자원이 과도하게 사용된다.확장성 제한비효율적인 쿼리는 시스템 확장 비용을 증가시킨다.3. 쿼리 최적화 팁논문 SQL 쿼리 최적화 기법 - 효율적이고 빠른 SQL 쿼리를 작성하기 위한 팁저자: Jean HABIMANASELECT 문에서 * 대신 열 이름 사용SELECT 문에서 HAVING 절을 피하고 WHERE 절 사용불필요한 DISTINCT 조건 제거서..

개인 공부 2025.01.03

트랜잭션에 대하여

트랜잭션(Transaction)트랜잭션은 데이터베이스와 애플리케이션 간의 데이터 거래에서 안정성을 확보하기 위한 단일 논리적 작업 단위입니다.예를 들어, 계좌 이체 과정에서 인출 또는 입금만 성공하면 데이터 무결성이 깨질 수 있습니다. 이를 방지하기 위해 트랜잭션을 사용합니다.트랜잭션은 모든 작업이 성공적으로 완료되거나, 실패 시 모든 작업이 원래 상태로 되돌아가는 원자성을 보장하여 데이터의 일관성과 무결성을 유지합니다.트랜잭션의 필요성: 계좌 이체 예시문제 상황사용자 A 계좌: 10,000 원사용자 B 계좌: 5,000 원사용자 A가 사용자 B에게 2,000원을 이체하는 트랜잭션이 실행됩니다.이 과정에서 A 계좌에서 2,000원 인출이 성공하고, B 계좌에 2,000원 입금이 실패한다면 데이터 무결성이..

CS 2025.01.03

Java/자바 오버라이딩

메소드 오버라이딩- 상속된 메소드를 자식 클래스에서 재정의하는 것- 자식이 재정의한 메소드가 우선적으로 사용됨주의사항- 부모 메소드의 선언부와 동일해야한다. (리턴 타입, 메소드 이름, 매개변수가 동일해야 함)- 접근 제한을 더 강하게 오버라이딩할 수 없다. (public -> private 불가)- 새로운 예외를 throws할 수 없다. - 부모의 메소드를 사용하고 싶으면 super.메소드(); 를 사용한다.package Person;public class Person { String name; int age; public void Hi() { System.out.println("안녕하세요"); }}// 부모 클래스 Personpackage Person;import P..

Java 2024.06.16