[컴퓨터 네트워크 수업] Chapter 3. Transport Layer 요약
·
Network
전송 계층의 개념 및 기본 기능전송 계층은 프로세스(애플리케이션) 간 통신을 담당전송 계층의 주요 기능 2가지Multiplexing / Demultiplexing신뢰성 있는 데이터 전송과 흐름/혼잡 제어Mutliplexing & DemultiplexingMutliplexing(다중화): 여러 앱이 데이터를 보낼 때 포트번호로 구분하여 전송Demutliplexing(역다중화):UDP의 경우: 목적지 포트만 사용같은 포트로 들어오는 요청은 구분 XTCP의 경우: 4-Tuple 사용UDP(User Datagram Protocol)UDP 특징비연결형 → 핸드셰이크 X, 지연 적음비신뢰성 → 유실 & 순서 보장 X이는 애플리케이션 게층에서 챙겨줌혼잡 제어 X간단한 헤더 → 오버헤드 적음체크섬UDP는 데이터가 전송..
[컴퓨터 네트워크 수업] Chapter 2. Application Layer 요약
·
Network
Client-Server vs. P2P클라이언트-서버서버는 항상 켜져있으며 고정 IP를 가짐클라이언트는 서버에 요청하고 서버에 응답하는 구조P2P(Peer-to-Peer)중앙 서버가 없고 피어 간 직접 통신각 피어가 클라이언트이자 서버 역할자체 확장성 뛰어나나 IP 주소 변동으로 인해 관리 복잡프로세스 간 통신 및 소켓프로세스 간 통신같은 호스트 내 → IPC 매커니즘다른 호스트 간 → 메시지 교환소켓: 프로세스와 전송 계층 사이에서 데이터를 보내고 받는 인터페이스애플리케이션 계층 프로토콜 및 전송 서비스 요구사항애플리케이션에 필요한 전송 서비스데이터 무결성타이밍처리량보안애플리케이션 계층 전송 게층 선택 기준데이터 무결성 필요 여부: 신뢰성 필요 → TCP타이밍 민감도: 실시간 요구 → UDP처리량 요구..
[컴퓨터 네트워크 수업] Chapter 1. Introduction
·
Network
1. 인터넷의 기본 개념인터넷이란?정의인터넷은 "네트워크의 네트워크"로, 여러 개의 작은 네트워크(예: 가정, 기업, 모바일 네트워크)가 서로 연결되어 있는 구조구성 요소네트워크 엣지(Edge)호스트(host, end systems): 사용자(클라이언트)와 서버가 여기에 속함액세스 네트워크: 가정용 케이블, DSL, WiFi, 4G/5G 등 다양한 접속 기술을 사용네트워크 코어(Core):라우터(router) 및 스위치(switch): 패킷(데이터 조각)을 서로 전달하며, 여러 네트워크를 연결패킷 스위칭: 데이터가 패킷 단위로 전송되어 각 경로를 통해 전달되는 방식주요 포인트인터넷의 분산성: 수많은 액세스 네트워크와 ISP들이 연결되어 있으며, 중앙집중식 구조가 아님경제적 및 정책적 요인: 네트워크 연결..
[Spring] Spring Transaction 핵심 요약
·
Spring
1. 트랜잭션 적용 확인@Transactional로 선언적 트랜잭션을 사용하면, 실제로 트랜잭션이 적용되는지 확인하기 어렵다.스프링은 AOP 프록시를 이용해 트랜잭션을 적용한다. 따라서 실제 객체가 아닌 프록시 객체가 주입된다.트랜잭션이 활성화되었는지 확인하려면 TransactionSynchronizationManager.isActualTransactionActive() 등을 사용할 수 있다.로그 설정(logging.level.org.springframework.transaction.interceptor=TRACE)을 통해 트랜잭션 시작/종료를 자세히 확인 가능하다.2. 트랜잭션 적용 위치@Transactional을 클래스와 메서드에 동시에 붙이면, 메서드 레벨이 우선순위가 더 높다(더 구체적인 곳이 우..
[Spring] 스프링의 데이터 접근 예외 추상화와 JdbcTemplate
·
Spring
JDBC 체크 예외 문제와 인터페이스서비스 계층은 특정 기술에 종속되지 않고 순수성을 유지하는 것이 좋다. 하지만 JDBC를 사용할 때 SQLException이라는 체크 예외가 발생하여 인터페이스가 특정 기술에 종속되는 문제가 생긴다. 이를 해결하려면 체크 예외를 런타임 예외로 전환하여 처리하는 방법을 사용한다.런타임 예외로 전환하는 이유체크 예외(SQLException)를 사용하면 인터페이스에도 이 예외를 명시해야 해서 특정 기술(JDBC)에 종속된다.런타임 예외를 사용하면 인터페이스에 별도 선언 없이 예외를 던질 수 있어 서비스 계층이 특정 기술에 종속되지 않게 된다.직접 만든 런타임 예외 적용법MyDbException이라는 런타임 예외를 만들어 SQLException을 감싼다.public class..
[Java] JDBC 정리
·
Java
JDBC 개요JDBC 등장 배경일반적으로 애플리케이션이 데이터베이스와 통신하려면 다음 과정을 거친다커넥션 연결: TCP/IP를 사용하여 DB에 연결SQL 전달: 애플리케이션에서 SQL을 DB에 전송결과 응답: DB가 SQL을 실행하고 결과를 반환그러나, 데이터베이스마다 커넥션 방식, SQL 전달 방식, 응답 처리 방식이 달라 개발자는 매번 새로운 DB에 맞춰 코드를 변경해야 하는 문제가 있었다..=> 이를 해결하기 위해 JDBC(Java Database Connectivity)가 등장JDBC 표준 인터페이스JDBC는 자바에서 데이터베이스에 접속할 수 있도록 설계된 표준 API애플리케이션과 데이터베이스 사이의 의존성 역전을 적용한 것JDBC에서 제공하는 표준 인터페이스java.sql.Connection: ..
[Algorithm] 그래프와 순회 유형 모음
·
Algorithm
경로 찾기 문제특정 노드에서 다른 노드로의 경로가 존재하는지 확인예: 미로 탈출, 두 지점 사이의 연결 여부기본적인 DFS를 통해 특정 정점에서 도달 가능한 정점을 찾는다거나, 도달 가능한 정점의 수를 세는 것이 가능하다.단순히 그 점에서 DFS를 한 번 수행하면 된다.예제 문제 - 바이러스백준 2606번: 바이러스(S3)public class Main { static ArrayList[] graph; static boolean[] visited; static int ret = 0; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inp..
[Algorithm] 이분 탐색 유형 모음
·
Algorithm
Lower BoundLower Bound는 정렬된 배열에서 특정 값(= 키 값) 이상이 처음으로 나타나는 위치를 찾는다.=> 즉, 주어진 값 이상인 첫 번째 원소의 인덱스를 반환한다. 특징중복된 값이 존재할 때, 가장 처음 등장하는 위치를 반환값이 존재하지 않으면 삽입될 첫 번째 위치를 반환import java.util.Arrays;public class LowerBoundExample { public static void main(String[] args) { int[] arr = {1, 2, 4, 4, 4, 7, 9}; int target = 4; int index = lowerBound(arr, target); System.out.println..
[Algorithm] 동적 프로그래밍(Dynamic Programming) 기초 유형 모음
·
Algorithm
필자는 모든 문제를 Top-Down 방식으로 풀이했다.계단 오르기계단 오르기(S3) 동적계획법(DP)를 연습하는 데에 좋은 문제라고 생각이 되어 가져와봤다. 내용 자체는 어렵지 않지만, 조건을 제대로 만족하는 식을 작성해내지 못한다면 매우 어렵게 느껴질 수 있다. 규칙은 다음과 같다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시 밟아야 한다.여기서 특히 2번 조건을 잘 고려하여 재귀호출 식을 작성해야 한다.전체코드를 보기 보다는 핵심이 되는 재귀호출을 할 함수를 보자코드static int game(i..
[Algorithm] 완전 탐색(Brute Force) 유형 모음 feat. Java
·
Algorithm
순열(Permutation)여러 개의 요소 중에서 순서를 고려하여 특정 개수를 뽑는 문제로, 완전 탐색의 대표적인 유형이다.보통 '백트랙킹'을 사용하여 구현한다백준 - 모든 순열(S3, 10974번)을 예제로 코드를 살펴보자.최적화 전import java.util.*;public class Main { static int N; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); N = sc.nextInt(); permutation(new ArrayLis..