728x90

분류 전체보기 173

Rails Query 성능 향상기

Rails 특정 부분에서 Where + Count 말고 Exist? 를 써야 하는 이유 우리가 기존의 쓰던 중복로직 검사를 하던 코드는 아래와 같다. where(condition).count 조합 위와 같은 로직을 작성하면 돌때 아래와 같은 쿼리가 나간다. 차이점? 저 위의 로직으로만 보면 언뜻 비슷해보이나 크나큰 차이가 있다. 아래와 같은 예시를 보자 예약 스케쥴과 - 예약에 관한 예약정보를 읽어온다고 해보자. 전제 조건은 아래와 같다 하나의 예약에는 여러가지 예약 일정이 걸려있을 수 있다. 하나의 배송에는 여러가지 주문이 걸려있을 수 있다. 예를 들면 아래와 같은 상태일것이다. 만약 여기서 1번 쿼리 where(:reservation_id => 1).count query 를 날려본다고 해보자. 위와 ..

Ruby On Rails 2021.09.20

회사코드 DeadLock 처리 정리

Deadlock Error 처리 에러 발생 위와 같이 DeadLock 이 나는 경우가 종종 잦아지는데 이유는 위와 같이 동일 요청이 두번오게 되는데 이 시점에 데드락걸릴 확률이 상당히 높습니다. 일단 간단히 데드락이 나는 이유를 위해서 코드를 봐야하는데 코드는 대략적으로 아래와 같은 구조입니다. 문제 해당 푸시 토큰과 같은 로우면를 업데이트 하고, 아니면 INSERT 해라 (INSERT... ON DUPLICATE KEY UPDATE) 해당 푸시 토큰과 유저 아이디가 같은 로우를 찾는 쿼리 푸시 토큰을 넘겨받았으면 nil 로 바꿔라 (어플리케이션 로직) 같은 푸시 토큰을 가지고 있는 로우가 있는데 유저가 다르다면 있다면 그건 nil 로 바꿔버려라 즉 위의 코드를 봤을때 중복 요청이 들어오면 충분히 데드락..

Linked List

Linked List Linked List 란 그들의 메모리 주소값으로 연결되는 선형적인 데이터 collection 이라고 할 수 있습니다. 그러므로 모든 Node 는 next position 을 가집니다. 대부분 data 와 nextnode 의 reference 를 가집니다. Node 를 python code 로 표현하면 아래와 같습니다. class Node(object): def __init__(self, data): self.data = data self.next = None LinkedList 는 여러가지 자료구조 형태가 있습니다 SingleLinkedList, Doubly Linked List 등등 Queue 를 구현하는 자료구조로 이용되기도 합니다. LinkedList 는 선형적인 구조를 지니..

자료구조 2021.09.20
728x90