월별로 주문 횟수를 출력하세요. 혹은 요일별로 주문 횟수를 출력하세요. 정도는 많이 나오는 쿼리 중 하나입니다. 오늘은 이 중, 요일별로 주문 횟수를 출력하는 방법을 알아보도록 하겠습니다. sakila 데이터 베이스에는 rental 테이블이 있습니다. 오늘은 그것을 가지고 놀아보겠습니다. 먼저, 두 함수를 보도록 하겠습니다. date를 넘겨주면, dayofweek는 수를, dayname은 요일 이름을 돌려줍니다. 예를 들어서, date가 '2020-03-20'이라고 한다면, 후자의 리턴 값은 'Friday'가 됩니다. 문제는 dayofweek가 리턴하는 정수 값입니다. 위 표는 해당 date가 무슨 요일 (오른쪽) 일 때, 어떤 값을 리턴하는지 (왼쪽) 나타낸 것입니다. 만약에, '2020-03-20'이..
전체 글 검색 결과
네트워크 프로그래밍 시간에, htonl 이런 함수들을 배울 거에요. 리틀 엔디안 순서면, 빅 엔디안 순서로 바꿔버리는, 뭐 그러한 메소드입니다. 더 정확히 말하면, 이런 변환을 해야 합니다. uint32_t를 리틀 엔디안으로 표현한 것이 ABCD라고 해 봅시다. 이걸 빅 엔디안으로 바꾸면 DCBA입니다. 여러 방법이 있지만, c언어의 공용체를 이용해서 쉽게 처리하는 방법을 배워보도록 하겠습니다. 공용체의 멤버들은 같은 메모리 공간을 공유합니다. 구조체는, 멤버들이 같은 메모리 공간을 공유하지 않습니다. 그러면 아래와 같이 선언하면 어떻게 될까요? moo 변수인 t를 할당할 때 메모리에 어떻게 그려지는지 보겠습니다. 이렇게 될 겁니다. 중요한 것은 num과 char형 배열인 x는 메모리 공간을 공유한다는 ..
재미있는 프로그램을 몇 개 만들어 보겠습니다. 제가 정의한 MObj는 아래와 같습니다. 평범한 getter 메소드가 있습니다. 그리고 더 평범한 equals 메소드가 있습니다. 그리고 hashCode가 있는데요. 리턴값이 0부터 1999까지의 정수 중에서 Random하게 뽑은 값입니다. 딱 봐도 뭔가 이상하다는 것을 알 수 있습니다. 이 이상해 보이는 프로그램을 왜 예시로 들었는지는 천천히 설명해 보도록 하겠습니다. 저번에 가비지는, 도달 불가능한 객체라고 하였습니다. 이것은 gc가 알아서 회수를 할 겁니다. 문제는, 필요 없는 객체인데, 참조 (흔히, Strong reference)가 되는 경우가 있을 수 있습니다. 이 경우에, 그 객체는 gc의 수거 대상이 되지 않습니다. 예를 하나 들어보겠습니다. ..
stop 메서드로 쓰레드를 강제 종료하면 위험하다고 했습니다. 그러면 어떻게 종료하면 좋을까요? 몇 가지 방법이 있는데요. 그 중 하나는 Interrupt 메소드를 쓰는 것입니다. worker Thread가 vector에 수를 넣는 연산을 한다고 해 봅시다. 그런데, 중간에 sleep을 넣어놓았습니다. 이 때 worker Thread에 Interrupt를 걸면 어떻게 동작하는지 봅시다. Main이 단위시간 1동안 sleep를 하고, Int를 출력합니다. 그리고 w1에 Interrupt를 보내는데요. 공식 문서에 나온 이 함수의 설명을 빌리면, 아래와 같습니다. 여기서 중요한 키워드를 뽑아보면, blocked, 인터럽트 status, receive, 인터럽트 예외 정도가 있습니다. wait나 join, s..
안녕하세요. chogahui05입니다. 유니온 파인드 (Union find)는 2가지 연산을 지원하는 자료구조입니다. a와 b를 같은 집합에 넣는 것은 merge 연산으로 합니다. 같은 집합에 있는지 검사하기 위해서, find 함수를 호출합니다. 이 둘을 수행하는 구조인데요. 이 중에서 오늘은 경로 압축에 대해서 알아보겠습니다. 이것만 적용해도 상당히 빠르게 수행할 수 있습니다. 얼마나 빠르게 수행하는지는, 추후에 작성을 하도록 하겠습니다. 먼저 find 함수부터 보겠습니다. 되게 간단해 보이는데요. 여기서, p[x]는 x에서부터 타고 올라갔을 때, Root를 의미합니다. x의 부모가 x라면, 즉 자기 자신이라면, -1입니다. 3번째 줄은, 기저 조건입니다. 만약에 x의 부모가 -1인 경우에 바로 x를 ..
최근댓글