전체 글
-
예외 처리Computer Science/JAVA 2021. 8. 12. 22:38
1️⃣ 프로그램 오류컴파일 에러 : 컴파일 시에 발생하는 에러런타임 에러 : 실행 시에 발생하는 에러논리적 에러 : 실행은 되지만, 의도와는 다르게 동작하는 것 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 (스택오버플로, 메모리부족)예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 2️⃣ 예외 클래스 계층 구조 Checked Exception 컴파일러가 예외처리를 확인하는 Exception 클래스컴파일 단계에서 발생무조건 예외처리 해야된다예외 발생 트랜잭션 처리 시 롤백은 하지 않아도 됨Unchecked Exception (런타임 익셉션)컴파일러가 예외처리를 확인하지 않는 Exception 클래스런타임 단계에서 발생반드시 예외처리를 해야 되..
-
인덱싱이란데이터베이스 2021. 8. 12. 22:38
1️⃣ 인덱스란 무엇인가💡인덱스란 데이터 베이스에서 원하는 데이터를 빨리 찾기 위해 튜플의 키 값에 대한 물리적 위치를 기록해둔 자료구조입니다.인덱스의 가장 큰 목적은 대용량 데이터 조회 시 select문의 조회 속도를 향상시키는 것입니다. 이를 위해서 Insert, Update, Delete문의 성능을 희생시키는 측면도 있습니다. 대용량 데이터가 아니라면 인덱스의 메리트가 크지 않을 수 있습니다. 인덱스의 장점Full Scanning에 비해서 테이블을 조회하는 속도를 크게 향상시킬 수 있습니다. 인덱스의 단점인덱스를 유지하기 위한 별도 저장 공간이 필요합니다. (테이블의 10% 정도), 또한 카디널리티나 여러 요인들을 고려하여 인덱스를 생성하지 않으면 오히려 성능이 저하되는 현상이 발생할 수 있습니다...
-
트랜잭션 - 회복데이터베이스 2021. 8. 11. 15:07
💡회복은 데이터베이스에 장애가 발생했을 때 데이터베이스를 일관성 있는 상태로 되돌리는 DBMS의 기능입니다.1️⃣ 트랜잭션과 회복트랜잭션은 데이터베이스 회복의 단위입니다. 트랜잭션은 데이터의 변경 내용을 한순간에 모두 데이터베이스에 기록하지 않고, 일단 변경한 내용을 로그에 기록한 후 데이터베이스에 반영합니다. DBMS의 회복 관리자는 트랜잭션의 ACID 성질 중 원자성과 지속성을 보장하여 장애로부터 데이터베이스를 보호합니다 트랜잭션 수행 과정트랜잭션이 시작하면 수행 상태가 됩니다정상적으로 수행되면 COMMIT문을 만나 부분 완료됩니다부분 완료 후 버퍼의 내용을 데이터 베이스에 기록하면 트랜잭션이 최종 완료됩니다.만약 수행 중 문제가 생겨 완료 전에 실패하면 취소 과정을 거쳐 이제까지 진행한 작업을 거꾸..
-
트랜잭션 - 고립 수준데이터베이스 2021. 8. 11. 15:07
락은 두 트랜잭션이 (쓰기, 쓰기) 상황일 때 해결하기 위한 것입니다. 하지만 (읽기, 쓰기) 상황일 때는 갱신손실 같은 심각한 문제는 발생하지 않기 때문에 락을 이용해서 처리하기에는 아쉬운 점이 있습니다. (락으로 해결하면 두 트랜잭션의 동시 진행 정도를 과도하게 막게 됩니다.) 1️⃣ 트랜잭션 동시 실행 문제오손 읽기반복 불가능 읽기유령 데이터 읽기 오손 읽기읽기 작업을 하는 트랜잭션 1이 쓰기 작업을 하는 트랜잭션 2가 작업한 중간 데이터를 읽기 때문에 생기는 문제입니다. 작업 중인 트랜잭션 2가 어떤 이유로 작업을 롤백할 경우 트랜잭션 1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출합니다. 트랜잭션 2가 age를 21로 변경했다가 롤백을 했습니다. 하지만 트랜잭션 1은 롤백을 하기 전 바뀐..
-
트랜잭션 - 동시성 제어데이터베이스 2021. 8. 10. 15:46
💡트랜잭션이 동시에 수행될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능을 동시성 제어라고 합니다.트랜잭션을 수행할 때, 한 트랜잭션이 끝난 다음 다음 트랜잭션을 수행시킨다면 데이터베이스의 일관성을 유지할 수 있습니다. 하지만 데이터베이스는 가능한 많은 트랜잭션을 동시에 수행시켜야 합니다. 2개 이상의 트랜잭션이 같은 테이블에 동시에 접근하게 되면 여러 문제가 발생할 수 있습니다.2개의 트랜잭션이 읽기만 하는 경우는 문제가 발생하지 않지만, 쓰기 작업을 할 경우 오손 읽기, 반복 불가능 읽기, 유령 데이터 읽기, 갱신 손실 등의 문제가 발생합니다. 1️⃣ 갱신손실💡갱신손실 문제는 두 개의 트랜잭션이 한 개의 데이터를 동시에 갱신할 때 발생합니다.초기값 X = 1000원이 ..
-
트랜잭션 - 개념데이터베이스 2021. 8. 10. 15:45
1️⃣ 트랜잭션의 개념 💡 DBMS에서 데이터를 다루는 논리적인 작업의 단위, 장애 발생 시 데이터를 복구하는 작업의 단위, 여러 작업이 동시에 같은 데이터를 다룰 때 이 작업을 분리하는 단위 트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 합니다. 예를 들어, A계좌에서 B계좌로 10,000을 이체할 경우 START TRANSACTION 1. A 계좌에서 10,000원을 인출하는 쿼리 2. B 계좌에 10,000원을 입급하는 쿼리 COMMIT 만약 1번 쿼리가 수행된 다음 시스템에 문제가 생기거나 다른 UPDATE문이 끼어들어 A 계좌에서 돈을 동시에 인출하게 되면, A 계좌와 B 계좌의 잔액이 의도하지 않는 값이 될 수 있습니다. 따라서 1번 쿼리와 2번 쿼리는 모두 수행되거나 아예 수행되지 ..
-
프록시 서버란WEB 2021. 8. 9. 13:10
1️⃣ 프록시💡클라이언트가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버, 서버와 클라이언트 사이에서 대리로 통신을 수행해주는 것을 프록시라고 하고 그 기능을 하는 서버를 프록시 서버라고 한다 프록시의 역할필터 역할캐싱접근 제어익명화로드밸런싱 2️⃣ 포워드 프록시💡Forward Proxy는 클라이언트 대신 서버에 요청을 보내주는 역할을 수행합니다.로컬 네트워크와 인터넷 사이에 오가는 트래픽을 제어할 수 있습니다클라이언트의 요청을 캐싱합니다클라이언트의 요청을 먼저 필터링할 수 있습니다. 3️⃣ 리버스 프록시💡Reverse Proxy는 서버 대신 클라이언트에 응답을 보내주는 역할을 수행합니다.웹 서버를 향하는 모든 요청을 처리할 수 있습니다.웹 서버의 보안 기능을 추가하거나, 캐시 ..
-
[백준]1654. 랜선 자르기 (Java)알고리즘/백준 2021. 8. 8. 23:49
💡 문제 분석 이분 탐색을 하면서 N개의 랜선을 만들 수 있는 최대 길이를 찾아나갑니다 int, long 범위 주의 ⌨️ 코드 JAVA import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; // 정리 public class Q1654 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTok..