일단 씻고 나가자
23.04.26 본문
2023. 04. 26 수요일
- [DB] ORDER BY를 SELECT에서 선언한 이름 그대로 가져오지 않고 편리하게 쓰는 법?
: SELECT P.PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT) AS SALES의 경우
ORDER BY SUM(P.PRICE * O.SALES_AMOUNT) DESC, P.PRODUCT_CODE ASC;처럼
길게 선언하여 정의한 컬럼명을 그대로 사용하지 못하고 SELECT에서 선언한 이름 그대로 다시 작성해야 하는 불편함이 있다.
이때 SELECT에서 정의한 컬럼을 순서대로 1, 2.. 로 치환하여
ORDER BY 2 DESC, 1 ASC;처럼 순서에 맞게 선언해주면 동일하게 실행된다.
- 자카드 유사도란?
: 두 집합 간의 유사도를 표현하는 방법론. 교집합 크기 / 합집합 크기로 정의한다.
예를 들어 A = {1,2,3}, B = {2,3,4}일 경우 교집합 = {2,3} 합집합 = {1,2,3,4}이므로
자카드 유사도는 2/4 = 0.5가 된다.
이는 원소의 중복을 허용하는 다중 집합에 대해서도 확장할 수 있으며, 문자열의 경우 첫 문자부터 2글자씩 끊어 하나의 원소로 정의하여 값을 구할 수도 있다.
- 동기화 이슈는 어떻게 왜 일어나는지 컴퓨터 구조의 관점으로?
: 어떠한 공유자원을 여러 스레드가 접근할 때 처리 중 CPU를 다음 스레드에 넘겨줄 때 발생한다. CPU는 어떤 자원을 연산할 때, 우선 자원의 값을 내부 레지스터로 불러서 값을 저장하고 연산 후 결괏값을 다시 해당 메모리에 최신화하는 방식으로 동작한다. 이때 레지스터에 불러온 후 context switch가 걸리게 되면 연산 후의 값을 최신화하지 못한 상태에서 최신화를 하게 되므로 다음 스레드가 다른 연산을 하고 최신화하여 값이 제대로 적히지 못하는 것이다.