분류 전체보기 68

스프링 AOP

1. AOP란 무엇인가?AOP (Aspect Oriented Programming) 는 공통 관심사를 분리하여 핵심 로직에 침투하지 않도록 도와주는 프로그래밍 기법입니다.쉽게 말해, 비즈니스 로직과 상관없는 중복 코드(예: 로깅, 보안, 트랜잭션)를 따로 관리하는 방식입니다.2. 왜 AOP가 필요한가?예를 들어 모든 서비스 메서드에서 실행 시간을 측정하는 로직이 필요하다고 해봅시다.public void doSomething() { long start = System.currentTimeMillis(); // 핵심 로직 long end = System.currentTimeMillis(); System.out.println("수행 시간: " + (end - start));}이 코드를 매..

카테고리 없음 2025.08.06

3 way handshake, TCP, UDP

📦 TCP란?TCP (Transmission Control Protocol): 신뢰성 있는 통신을 보장하는 연결 지향형 프로토콜✅ TCP의 핵심 특징🔗 연결 지향 (Connection-oriented)데이터를 보내기 전 3-way handshake로 연결을 맺음🧾 순서 보장패킷이 순서대로 도착하도록 정렬함🔁 재전송패킷이 유실되면 자동으로 재전송📩 수신 확인 (ACK)받은 쪽이 "잘 받았어요!"(ACK) 라고 알려줌🧯 흐름/혼잡 제어네트워크 상태에 따라 속도 조절🛑 연결 종료 시 4-way handshake안전하게 연결 종료하며 TIME_WAIT 상태 유지 📌 어떤 상황에 쓰일까?웹 브라우징 (HTTP/HTTPS)모든 데이터가 정확히 도착해야 하니까파일 전송 (FTP)데이터 하나라도 빠지면..

java 2025.08.06

JDBC, PreparedStatement, SQL Injection, 커넥션풀

✅ JDBC란?JDBC(Java Database Connectivity)는 자바 애플리케이션이 DB와 통신할 수 있도록 해주는 자바 표준 API입니다.쉽게 말하면, Java ↔ Database 간의 다리 역할을 해주는 도구입니다.JDBC는 자바에서 SQL을 실행하고, 결과를 받아오고, DB와 연결을 맺고 끊는 등의 작업을 처리합니다. JDBC API를 사용하는 애플리케이션의 개락적인 구조는 다음과 같습니다.Application ↓ JDBC API ↓ JDBC Driver (DBMS별) : 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해 주는 클라이언트 사이드 어댑터 ↓ Database ✅ JDBC 실행과정✍️ JDBC 기본 코드 ✅ try-with-resources 문법..

java 2025.08.05

OSI 7계층의 네트워킹 장비 및 주요 프로토콜

다음은 OSI 7계층과 각 계층에 대응되는 네트워킹 장비 및 주요 프로토콜에 대한 간략한 설명입니다. OSI 모델은 네트워크 통신을 계층별로 분리하여 설명하며, 각 계층은 특정 기능을 수행하고 그에 맞는 장비와 프로토콜이 사용됩니다.1. 물리 계층 (Physical Layer)역할: 비트(0과 1)로 데이터를 전송하며, 전기적 신호, 광 신호, 무선 신호 등을 통한 물리적 매체로 데이터가 전달됩니다.네트워킹 장비:허브 (Hub): 들어온 신호를 단순히 여러 포트로 재전송하는 장치.리피터 (Repeater): 약해진 신호를 재생성하여 전송 거리 연장.케이블 (동축 케이블, 광섬유 등): 데이터를 전송하는 물리적 매체.프로토콜:Ethernet (IEEE 802.3): 물리 계층과 데이터 링크 계층에서 사용되..

정보처리기사 2024.09.26

보안 공격 기법

보안 공격 방법은 다양한 방식으로 이루어질 수 있으며, 이를 카테고리별로 나누면 더 이해하기 쉽습니다. 주요 공격 방법을 크게 네트워크 기반, 소프트웨어 기반, 사회 공학, 암호화 공격 등으로 분류할 수 있습니다.1. 네트워크 기반 공격네트워크를 통해 이루어지는 공격입니다.DoS/DDoS (서비스 거부 공격): 대량의 트래픽을 보내 서버나 네트워크를 과부하시키는 공격입니다. DDoS는 여러 시스템이 동시에 공격을 수행합니다.목적: 서비스를 마비시키거나 느리게 만듭니다.MITM (중간자 공격, Man-in-the-Middle Attack): 두 통신 주체 사이에 공격자가 중간에 끼어들어 데이터를 훔치거나 변조하는 공격입니다.목적: 통신 내용 가로채기, 데이터 변조.스니핑 (Sniffing): 네트워크를 통..

정보처리기사 2024.09.24

병행 수행 및 병행 제어

병행 수행 (Concurrency Control) 병행 수행은 데이터베이스 관리 시스템(DBMS)에서 여러 사용자가 동시에 데이터에 접근하고 작업을 처리할 수 있도록 하는 기술입니다. 데이터베이스는 여러 사용자가 동시에 데이터를 삽입, 수정, 삭제 등의 작업을 할 때 그 결과가 정확하고 일관성을 유지하도록 보장해야 합니다. 병행 수행은 이러한 동시에 발생하는 작업을 효율적으로 관리하여 데이터 무결성 및 일관성을 유지하는 것을 목표로 합니다.병행 수행의 필요성성능 향상: 여러 트랜잭션을 동시에 처리하면 시스템 자원을 효율적으로 사용하고 응답 시간을 줄일 수 있습니다.공유 자원의 활용: 다수의 사용자가 동일한 데이터에 접근할 수 있도록 하여 자원을 최대한 활용합니다.데이터 일관성 유지: 동시에 여러 트랜잭션..

정보처리기사 2024.09.24

해시충돌 해결법과 예제

충돌 해결 방법은 해시 테이블의 중요한 부분이며, 성능과 저장 공간 효율성에 영향을 미칩니다.아래에서 자주 사용되는 충돌 해결 방법과 그 차이를 설명하겠습니다.1. 선형 조사법 (Linear Probing)방법: 충돌이 발생하면 해시 테이블의 다음 빈 슬롯을 순차적으로 탐색하여 데이터를 저장.예시: 만약 h(k)=kmod  11h(k) = k \mod 11h(k)=kmod11에서 충돌이 발생하면, 그 다음 슬롯을 확인하는 방식으로 충돌을 해결합니다.장점:간단한 구현.데이터가 해시 테이블 내에 하나의 연속된 메모리 공간에 저장되므로 메모리 캐시 효율이 좋음.단점:클러스터링(한 곳에 연속적인 데이터가 몰리는 현상)이 발생할 수 있어, 테이블의 로딩이 높아질수록 성능이 급격히 저하됨.데이터가 연속된 공간에 저..

정보처리기사 2024.09.24

[MySQL] 비율별로 등급나누기 NTILE, PERCENT_RANK

프로그래머스 대장균의 크기에 따라 분류하기2https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  # NTILE 풀이WITH COLONYGROUPS AS (SELECT ID, NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS GROUPRANKFROM ECOLI_DATA)SELECT ID, CASE WHEN GROUPRANK = 1 THEN 'CRITICAL' ..

SQL 2024.08.23

[MYSQL] 프로그래머스: 재귀문 (recursive) 사용하기 + 예제

WITH와 함께 recursive를 쓰면 재귀 서브쿼리를 만들 수 있다.구조는 do while문과 비슷한데, anchor member 부분에 초기 세팅 쿼리를 작성하고아래의 recursive member에 반복할 쿼리를 작성한 뒤union all로 두 쿼리를 이어주면 된다.가장 아래에는 재귀쿼리릐 중단조건을 작성해줘야 한다. 1. 프로그래머스 : 입양 시각 구하기(2)WITH RECURSIVE hours AS ( SELECT 0 AS hour UNION ALL SELECT hour + 1 FROM hours WHERE hour 0시부터 23시까지 각 시간대별로 발생한 입양 건수를 구하는 문제입니다.입양이 없었던 시간도 표시해야 하므로 0부터 23까지 틀을 만들어주기 위해 재귀쿼리가 필요합..

SQL 2024.08.06

[udemy] 데이터 베이스 엔지니어링 - 데이터베이스 내부 이해

1. 테이블과 인덱스가 디스크에 어떻게 저장되는지테이블은 행기반 / 열기반에 따라 저장 형태가 달라짐(행기반일 경우) 각 행별로 저장되며 페이지 단위로 저장됨-> 읽어올 때 한 행만 읽어오는 것이 아닌, 페이지 단위로 읽어온다페이지들은 '힙'이라는 자료구조에 저장되는데, 여기에 접근해서 데이터를 읽어오는 것은 큰 비용이 드는 일임-> 인덱스를 사용하면 비용을 줄일 수 있음- 인덱스 : 힙을 가리키는 포인터를 모아둔 자료구조 2. 행 기반 vs 열 기반 데이터베이스행 기반 데이터베이스열 기반 데이터 베이스읽기/쓰기에 최적화쓰기가 느림OLTP ( '운영'계 데이터 처리)OLAP ( '분석'계 데이터 처리)압축에 유용하지 않음압축에 좋음집계에 유용하지 않음집계에 좋음다중 컬럼에 유용한 쿼리다중 컬럼에 비효율적..

온라인강의 2024.07.03