cs 7

TreeSet 개념 정리

1. 개념TreeSet은 중복을 허용하지 않으면서 자동으로 정렬을 유지하는 자료구조다.내부적으로 이진 탐색 트리(Red-Black Tree) 기반으로 구현되어 있어서, 데이터를 추가하는 순간 정렬된 위치에 들어간다.TreeSet set = new TreeSet();set.add(5);set.add(1);set.add(3);set.add(1); // 중복 → 무시됨// 내부적으로 [1, 3, 5] 순서로 정렬되어 유지됨2. HashSet과의 비교 HashSetTreeSet중복 제거OO순서보장 안 됨자동 오름차순 정렬추가/삭제/조회 속도O(1)O(log n)내부 구조해시 테이블이진 탐색 트리 TreeSet이 HashSet보다 속도는 살짝 느리지만(O(log n) vs O(1)), 정렬까지 자동으로 해결해준..

Computer Science 2026.06.27

트랜잭션(Transaction) — ACID, 격리 수준, MVCC까지

Java/Spring 백엔드 면접 준비 학습 노트1. 트랜잭션이란?트랜잭션은 더 이상 쪼갤 수 없는 작업의 최소 단위다. 여러 쿼리를 하나의 묶음으로 처리해 데이터 정합성을 보장하는 핵심 개념이다.왜 필요한가? — 계좌이체 예시원이가 민수에게 10만원을 이체할 때 두 쿼리가 필요하다.UPDATE accounts SET balance = balance - 100000 WHERE user = '원'; -- 1단계UPDATE accounts SET balance = balance + 100000 WHERE user = '민수'; -- 2단계1단계 실행 후 서버가 죽으면 원이 통장은 -10만원이지만 민수 통장은 그대로 — 돈이 사라진다.두 쿼리를 하나의 트랜잭션으로 묶어야 둘 다 성공하거나, 둘 다 실패하도..

Computer Science 2026.06.12

OOP 4원칙| 캡슐화·상속·다형성·추상화

객체지향 프로그래밍(OOP)의 4가지 핵심 원칙을 정리한다.Java 기반으로 개념과 예시 코드를 함께 정리한다.1. 캡슐화 (Encapsulation)필드와 메서드를 하나의 클래스로 묶고, 외부에서 내부 데이터에 직접 접근하지 못하도록 숨기는 것이다.private 필드로 외부 접근 차단public getter/setter를 통해서만 필드 접근 허용setter 내부에 유효성 검증 로직을 넣어 잘못된 값 유입 방지 → 데이터 무결성 보장내부 구현이 바뀌어도 외부 코드 수정 불필요 → 유지보수성 향상public class BankAccount { private String owner; private int balance; // 외부에서 직접 접근 불가 public BankAccount(Stri..

Computer Science 2026.04.28

[네트워크] OSI 7계층 모델과 TCP/IP 4계층 모델

1. OSI 7계층 모델1) 정의국제표준화기구(ISO)에서 제정한 네트워크 통신의 표준 모델데이터 통신 과정을 7개의 계층으로 분리하여 표준화한 구조로, 각 계층은 특정한 기능을 수행하며 상하 계층과 협력함2) 계층별 주요 기능계층이름주요 역할대표 프로토콜/기술7응용(Application)사용자와 직접 상호작용HTTP, FTP, SMTP, DNS6표현(Presentation)데이터 형식 변환, 암호화JPEG, MPEG, SSL/TLS5세션(Session)통신 세션 관리(연결/종료)Socket, RPC4전송(Transport)신뢰성 있는 데이터 전송TCP, UDP3네트워크(Network)경로 선택, 주소 지정IP, ICMP2데이터링크(Data Link)프레임 전송, MAC 주소 관리Ethernet, PPP..

Computer Science 2025.11.06

[네트워크] TCP와 UDP

TCP란?전송 프로토콜, Transmission Controll Procotol인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나애플리케이션 간에 안전하고 신뢰할 수 있게 데이터를 교환하기 위해 사용데이터를 보낸 순서대로 오류 없이 전달하는 것을 보장웹 브라우징, 이메일 등 안정적인 데이터 전송이 필요한 대부분의 인터넷 서비스에 필수적TCP의 특징연결 지향형: 데이터를 보내기 전에 먼저 상대방과 논리적인 통신 경로(TCP 커넥션) 설정신뢰성 보장: 데이터를 보낸 후, 받은 쪽에서 올바르게 수신되었는지 확인(ACK)하고, 오류가 발생하면 재전송순서 보장: 데이터를 보낼 때 순서 번호를 붙여, 수신 측에서 받은 데이터를 순서대로 재조립하도록 함흐름 제어: 수신 측의 처리 속도에 맞춰 데이터 전송 속도를 조절하여..

Computer Science 2025.11.01

[네트워크] 3-Way Handshake

3-Way Handshake란?TCP가 통신을 시작하기 전(데이터를 주고 받기 전에)에 클라이언트와 서버 간의 연결이 잘 되어 있는지 확인하기 위해 세 번의 주고 받는 과정을 거치는 것TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 데이터를 신뢰성 있게 전송하는 것이 목표이기 때문에 먼저 서로 통신 가능한 상태임을 확인해야 함과정1. SYN (Synchronize)"나 연결해도 돼?"클라이언트가 서버에 연결 요청 신호(SYN 패킷) 전송클라이언트는 자신이 어떤 순서번호(Sequence Number)로 데이터를 보낼지 알려줌예) 클라이언트 -> 서버: SYN = 1, Seq = 1002. SYN - ACK (Synchronize - Acknowledge)"좋아, 연결하..

Computer Science 2025.10.20

[Algorithm] 이진 탐색(Binary Search)

개념정렬된 리스트에서 특정 값을 빠르고 효율적으로 찾기 위한 알고리즘데이터의 중간 값을 비교하여 탐색 범위를 절반씩 줄여나가는 방식으로 작동하며, 이는 O(log N)의 시간복잡도를 가짐특징정렬 필수반드시 정렬된 데이터에서만 사용 가능빠른 속도매 단계마다 탐색할 범위가 절반으로 줄기 때문에 데이터의 양이 많아질수록 선형 탐색보다 훨씬 빠름작동 방식정렬된 리스트의 가운데 값을 기준으로 탐색 시작찾고자하는 값과 가운데 값 비교찾고자하는 값이 가운데 값보다 크면, 오른쪽 절반을 대상으로 다시 탐색찾고자하는 값이 가운데 값보다 작으면, 왼쪽 절반을 대상으로 다시 탐색찾고자 하는 값을 찾거나, 탐색 범위가 더 이상 줄어들지 않을 때까지 과정 반복Java 코드 예제package com.ajw.algorithm.ar..

Computer Science 2025.10.14
728x90