전체 글

블로그 이전 중입니다..!
· Backend/Java
배열import java.util.*;int[] arr = {1,3,5,2,4};Arrays.sort(arr); // 배열 정렬Arrays.sort(arr, Comparator.reverseOrder()); // 비교자를 전달할 수도 있다.Arrays.asList(arr); // 배열을 전달하면 바로 리스트를 만들 수 있다.Arrays.asList(1,2,3); // 인자를 여러개 전달하여 리스트를 만들 수 있다.return new int[] {-1}; // 새로운 배열 만들고 바로 반환하는 법// 배열 출력 방법System.out.println(Arrays.toString(arr)); // 1차원 배열System.out.println(Arrays.deepToString(arr)); // 다..
Locking 식당에서 각 의자에는 한 사람만 앉아서 식사를 할 수 있다. 하지만 식당 내의 빈 공간은 빈 자리가 생길 때까지여러 손님들이함께 머무를 수 있다. 독점 락(exclusive lock) 트랜잭션에서 갱신을 목적으로 데이터 항목을 접근할 때 공유 락(shared lock) 트랜잭션에서 읽을 목적으로 데이터 항목을 접근할 때 공유 로크가 걸려있는 데이터 항목에 대해 독점로크를 요청하거나, 독점 로크가 걸려있는 항목에 대해 독점 로크나 공유 로크를 요청하는 경우에는 로크를 허용해서는 안 된다. 트랜잭션이 데이터 항목에 대한 접근을 끝낸 후에 lock을 해제한다. Dead Lock 정의 여러 트랜잭션이 서로가 보유하고 있는 lock을 요구하면서 무한정 대기하고 있는 상황을 의미한다. 해결책 예방 각..
정의 조작된 쿼리문이 DB에 그대로 전달 되서 비정상적인 명령을 실행시키는 방법 공격 예시 로그인 기능을 제공한다고 가정하자. Statement를 사용하면 아래와 같은 문법으로 작성하게 된다. String sql = "SELECT * FROM user WHERE id ="+id+" AND password="+password; 사용자가 id에 1을 입력했다면 sql은 "SELECT * FROM user WHERE id=1 AND password="+password 가 된다. 사용자가 id에 1이 아닌 "1 OR 1=1 --"을 입력했다고 가정하자. password에는 1을 입력했다고 가정하자. 그러면 SQL문은 다음과 같이 된다. SELECT * FROM user WHERE id=1 OR 1=1 -- AN..
정의 분산 DB 환경에서 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance) 셋 모두를 만족시킬 수는 없다. 용어 Consistency 어떤 노드와 통신하는 지 상관없이 항상 같은 데이터를 조회할 수 있는 것 Availablity 시스템이 중단되는 일 없이 언제든지 사용 가능한 상태 Partition Tolerance 시스템 내 분할(노드 간 통신이 끊긴 상태)이 생겼을 때 시스템이 여전히 작동하는 것 Reference https://onduway.tistory.com/106 CAP 이론 소개 - 데이터베이스 초보자용 밑에 세줄요약 있음 살펴보기 CAP 이론이란? MongoDB의 CP 시스템과 Cassandra의 AP 시스템 CAP란? 분산..
클러스터링 동일한 데이터베이스를 여러 대의 서버가 관리하도록 운영하는 방법. 한 서버에 장애가 발생할 시 다른 서버를 이용해 정상적인 운영이 가능하다(fail-over 방식). active-active 방식 두 서버 모두 active 상태이므로, 한 서버 장애 시 빠른 장애 회복 가능 부하를 효과적으로 줄일 수 있음 한 database를 공유하므로 더 많은 병목 현상이 발생할 수 있음 active-standby 방식 병목 현상이 비교적 덜 함 부하 절감 효과가 비교적 적음 active 서버에 장애 발생 시 stanby 서버가 active가 되는 시간 동안은 서비스 사용 불가 Replication 복제본 데이터베이스를 운영하는 방법이다. 원본 db를 master db, 복제본 db를 slave db라고 부..
파티셔닝이란? 데이터베이스를 여러 부분으로 분할하는 것이다. 하나의 dbms에 너무 큰 테이블이 들어가면 용량이나 성능 부분에서 이슈가 있으므로, 큰 테이블이나 인덱스를 작은 파티션 단위로 나누어 관리하는 기법을 의미한다. 장점 DML 수행 시, full scan할 때 보다 데이터 access 범위를 줄여 속도가 빠르다. 대용량 insert 및 update 수행 시, 여러 partition을 대상으로 병렬적으로 수행이 가능하기 때문에 빠르다. 단점 join 비용 증가 대용량 데이터가 아닐 경우, 이점이 딱히 없다. 파티셔닝의 종류 수평 파티셔닝 하나의 테이블의 각 행을 다른 테이블에 분산시키는 것 스키마를 복제하고 샤드키를 기준으로 데이터를 나누는 것을 의미한다. (추가) 샤딩 같은 스키마를 가진 데이터..
정의 RDB에서 조회 속도 개선을 위해서 사용하는 방법입니다. 자주 조회되는 column에 대한 index table을 따로 만들어서 데이터 조회 시 실제 데이터의 위치를 들고 있는 index table을 먼저 조회하게 함으로써 탐색 속도를 높이는 방법입니다. 자료 구조 특징 일반 트리는 최대 2개의 자식노드를 가질 수 있지만, b-tree는 n개의 자식 노드를 가질 수 있습니다. 일반 트리의 경우 좌우 자식간의 균형이 맞지 않으면, 매우 비효율적인데, b-tree는 이렇게 되지 않도록 균형을 유지하는 tree입니다. 사용 이유 B+tree는 리프 노드에 이르기 까지에 대한 자식 노드에 포인터가 저장되어 있다. 즉, B+트리의 검색은 루트 노드에서 어떤 리프 노드에 이르는 한 개의 경로만 검색하면 되므로..
정의 JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 결과 집합으로 표현해주는 수단 종류 Inner Join: ‘기준 테이블’과 ‘조인 테이블’ 모두 데이터가 존재 해야 조회되는 방식의 join Outer Join: ‘기준 테이블’에만 데이터가 존재하면 조회되는 방식의 join left join right join full outer join 드라이빙, 드리븐 테이블 드라이빙 테이블: join시에 먼저 엑세스 되는 테이블. 드리븐 테이블: 나중에 엑세스되는 테이블은 드리븐 테이블. 만약 찾고자 하는 조건에 맞는 행이 A테이블에 5000만건, B테이블에 1000만건이 있을 때 where A.no = B.no 를 수행한다고 하면 단순 레코드 수 비교 A테이블이 드라이빙이면 A테이..
정의 더 이상 분해가 불가능한 업무의 최소단위. 트랜잭션을 통해 무결성과 동시성 제어, 회복 이렇게 3가지 효과를 얻을 수 있습니다. Transaction의 4가지 특징 (aka. ACID) Atomic(원자성) 전부 처리되거나 아예 하나도 처리되지 않는 전략(All or Noting) - 계좌 이체계좌 이체 도중 시스템이 다운된 상황. 미림씨 계좌에서 돈이 빠져나간 것을 rollback - 급여 인상 Consistency(일관성) 트랜잭션 수행 전과 후의 일관된 상태를 유지한다. Isolation(고립성) 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료 되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 한다. Durability(영속성) 트랜잭션이 일단 그 실행을 성공적..
메모리 관리 단일 프로그램만 쓰는 것이 아니라 다수의 프로세스를 수용시켜야 하기 때문에 이를 어떻게 메모리에 적재할 것인지 따져야 한다. 메모리 할당 메모리는 일반적으로 두 영역으로 나뉜다. OS 상주 영역(커널) 사용자 프로세스 영역 연속 할당: 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것 고정 분할 방식(fixed partition allocation) 가변 분할 방식(variable partition allocation) 불연속 할당: 프로세스를 구성하는 주소 공간을 쪼개서 메모리의 여러 영역에 분산시켜 올리는 기법 페이징(paging) 세그먼테이션(segemtation) 메모리 단편화 내부 단편화 프로세스가 사용하는 메모리 공간 중 남는 부분 프로세스가 요청한 양보다 더 많은 메..
hi-june
June & Directory