본문 바로가기

분류 전체보기56

DB | DB Locking과 Optimistic Lock/Pessimistic Lock 락 락은 데이터의 일관성과 무결성을 유지하기 위해 DBMS가 사용하는 공통적인 방법이다. DB와 같은 시스템은 같은 데이터를 동시에 접근하는 경우가 생길 수밖에 없는데, 이럴 경우 데이터가 오염될 수 있다. 락의 크기 락의 크기는 어느 정도의 범위를 잠글 것인지 나타낸다. 로우 락(Row Lock), 페이지 락(Page Lock), 테이블 락(Table Lock)이 있다. 만약 락을 걸어야 하는 페이지가 너무 많다면, 차라리 테이블 전체에 락을 거는 것이 잠금 비용의 손실을 줄일 수 있다. 잠금 비용: 잠금을 거는 과정에서 발생하는 성능 손실을 말한다. 페이지 락 여러 개를 테이블 하나로 대체한다면 잠금 비용은 낮아지겠지만, 대신 동시성 비용은 높아질 것이다. 동시성 비용: 락을 걸면서 동시성이 낮아져서.. 2023. 9. 20.
DB | Join Join이란? 데이터베이스에서 두 개 이상의 테이블을 연결하여 하나의 결과의 테이블로 만드는 것을 의미 이를 통해 데이터를 효율적으로 검색하고 처리하는데 도움을 준다. Join을 사용하는 이유 데이터베이스에서 테이블을 분리하여 데이터 중복을 최소화하고 데이터의 일관성을 유지하기 위함 Join의 종류 INNER JOIN 조인하는 테이블의 ON 절의 조건이 일치하는 결과만 출력 SELECT u.userid, name FROM usertbl AS u INNER JOIN buytbl AS b ON u.userid=b.userid WHERE u.userid="111" -- join을 완료하고 그다음 조건을 따진다. inner join 함축 구문 단순히 from 절에 콤마 쓰면 inner join 으로 치부된다. .. 2023. 9. 20.
알고리즘 | 점화식과 알고리즘 복잡도 분석 점화식 어떤 함수를 자신보다 더 작은 변수에 대한 함수와의 관계로 표현한 것 자기호출을 사용하는 함수의 복잡도를 구하는데 유용하게 쓰인다. 병합 정렬의 수행 시간 수행시간의점화식 T(n) = 2T(n/2) + 오버헤드 크기가 n인 병합 정렬 시간은 크기가 n/2인 병합 정렬을 두 번하는 시간과 나머지 오버헤드(두 개 정렬 결과를 병합하는 시간)를 더한 시간이다. 점화식의 점근적 분석 방법 1. 반복 대치 더 작은 문제에 대한 함수로 반복해서 대치해 나가는 해법 2. 추정후 증명 결론을 추정하고 수학적 귀납법으로 이용하여 증명하는 방법 3. 마스터 정리 형식에 맞는 점화식의 복잡도를 바로 알 수 있다. 반복 대치 예시 1: 팩토리얼 C부분이 오버헤드라고 할 수 있다. 예시 2 해당 크기 만큼(n) 오버헤드.. 2023. 9. 12.
Java | Stream에 대하여 Stream에 대해서 설명해주세요. 스트림(Stream) 자바8에 새롭게 추가된 기능으로, 선언형으로 데이터(컬렉션, 배열, 파일, iterate...)를 처리할 수 있습니다. Stream을 사용하면 데이터를 쉽게 필터링, 변환, 집계할 수 있습니다. Stream은 병렬처리가 가능하도록 설계되었으므로 멀티 코어 프로세서를 활용하여 처리 속도를 높일 수 있습니다. Stream의 특징 Stream은 데이터 구조가 아닙니다. Stream은 데이터를 저장하지 않습니다. Stream에서 요소를 추가하거나 제거할 수 없습니다. Stream은 생성, 중간, 최종 작업으로 나뉩니다. 아래에서 더 자세히 알아보겠지만, 대부분의 Stream 작업은 또 다른 새 Stream을 반환하며 함께 연결되어 작업 파이프 라인을 형성.. 2023. 8. 28.
Java | interface와 abstract class차이에 대해서 설명해주세요. interface와 abstract class차이에 대해서 설명해주세요. 추상 클래스(abstract class) 추상 클래스(abstract class) abstract 키워드로 선언된 클래스 하나 이상의 추상 메서드를 포함하는 클래스 반드시 사용되어야 하는 메서드를 추상 클래스에 추상 메서드로 선언해 놓으면, 해당 클래스를 상속받는 모든 클래스에서는 이 추상 메서드를 반드시 재정의해야 한다. 추상 메서드(abstract method) 정의: 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메서드 오버라이딩(Overriding): 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메서드로 다시 정의하는 것 문법 abstract class 클래스이름 { .. 2023. 8. 28.
DB | 트랜잭션, 동시성 제어, 회복 Chapter 08 트랜잭션, 동시성 제어, 회복 트랜잭션 트랜잭션의 개념 DBMS에서 데이터를 다루는 논리적인 작업의 단위이다. 트랜잭션은 장애 발생 시 데이터를 복구하는 작업의 단위가 된다. 트랜잭션은 여러 작업이 동시에 같은 데이터를 다룰 때, 이를 서로 분리하는 단위가 된다. 중요한 점 데이터베이스의 데이터는 하드디스크에 저장되어 있다. 처리를 위해서는 반드시 주기억장치 버퍼로 사본을 읽어와야 한다는 점이다. 예) 계좌이체 트랜잭션 수행과정 START TRANSACTION /* 1. 박지성 계좌를 읽어온다. */ /* 2. 김연아 계좌를 읽어온다. */ /* 3. 예금인출 박지성 */ UPDATE Customer SET balance=balance-10000 WHERE name='박지성'; /* .. 2023. 8. 28.