select문 말고 오랫만에, DDL문을 해 봅시다. 데이터를 삭제하는 명령어는 delete from 하고, drop table이 있는데요. 이 둘이 어떤 차이점이 있는지 간단하게 알아보도록 하겠습니다. 먼저, t2 테이블에 있는 내용을 봅시다. 그러면, a, b, c, d라는 레코드가 있음을 알 수 있어요. 여기에서, delete from AA where BB 명령어는 AA 테이블에 있으면서, BB 조건을 만족하는 레코드를 모두 삭제하라는 의미입니다. 그러면, AA가 t2이고 BB가 str = 'a'인 경우에는 어떨까요? 이 때에는 t2 테이블에서, str 필드가 'a'인 것을 모두 삭제하라는 의미입니다. str 필드가 'a'인 record가 삭제될 겁니다. 그러면 남은 것은 'b', 'c', 'd'일..
전체 글 검색 결과
임계 영역이 무엇일까요? 이것은 둘 이상의 쓰레드 (worker)가 동시에 접근하면 안 되는, 공유 영역에 접근하는 코드를 말합니다. 다시 말해, 둘 이상의 worker가 동시에 접근하면 문제를 일으킬 수 있는 코드들을 말합니다. 예제 하나를 보면서, 같이 분석해 보도록 하겠습니다. 먼저 ACCOUNT 클래스입니다. remain이라는 필드가 있어요. 이것은 남은 돈을 의미합니다. 이 클래스에는, put_money, 그러니까 입금하는 메서드와 get_money, 출금하는 메서드가 있어요. 이들은 각각 x만큼 넣고 빼는 일을 합니다. 그리고 우리는 Worker의 w1과, Worker2의 w2를 동시에 실행합니다. 이들은 start 메소드가 있는 걸로 보아서는 Thread를 상속했을 거 같네요. run() 메..
오늘은 간단하게 문자열 리터럴만 올리도록 하겠습니다. "chogahui", "xi" 이런 것들을 우리는 리터럴이라고 합니다. 그러면, 이것들은 어디에 어떻게 저장이 되길래, 이들을 바꾸려고 하면 RTE가 뜰까요? 예제 프로그램 1을 봅시다. 4번째 줄에 보면 "chogahui" 라는 리터럴이 있습니다. 이것을 p가 가리키고 있어요. 그리고 p[0]에 'x'를 넣습니다. 6번째 줄에 p를 출력하는데요. "xhogahui"라는 내용이 출력될 거 같아요. 그런데, Seg fault가 뜹니다. 어떻게 된 걸까요? 이 상황을 다시 그려봅시다. p가 "chogahui"를 가리키고 있어요. 그러면 p[0]은 "chogahui"의 1번째 요소인 'c'일 겁니다. 이것을 'x'로 바꾸는 연산은, 메모리의 어느 영역에 '..
안녕하세요. chogahui05입니다. sort 함수의 비교 함수를 작성하실 때, strict weak ordering을 만족하게 작성하여야 한다는 말을 많이 들으셨을 거에요. 그렇게 작성하지 않으면 어떻게 될까요? 라는 질문은 사실 별로 의미가 없어 보입니다. 비교 함수가 무조건 true를 리턴하게 작성이 되었을 때 어떤 일이 일어날까요? 너무 멍청한 코딩인가요? 처음 비교함수를 작성하실 때, 이런 식으로 코딩하시지 않으셨나요? 위와 같이 작성이 되었을 때, 어떤 일이 일어날까요? 사실 배열에 들어간 데이터들을 보았을 때, 이 경우도 무조건 compare 함수가 true를 리턴하게 되어 있어요. 똑같은 상황인 셈입니다. se.cpp입니다. 이 프로그램의 내용을 봅시다. 이 경우에 프로그램이 어떻게 실행..
포인터에 const가 붙으면 상당히 헷갈립니다. 이것들은 대체 무엇을 의미하는 것일까요? 먼저 아래와 같이 선언된 것을 봅시다. 이것은 p가 const char형을 가리키는 포인터임을 의미합니다. strcpy나, strcat 등의 인자가 이런 식으로 선언이 많이 되어 있음을 볼 수 있을 거에요. 예를 들면 이런 식입니다. 이는 original data인, 원본 문자열이 변경되면 안 되기 때문이에요. 12번째 줄은, *(ori+1)을 변경하려고 시도하는데요. ori가 const char형을 가리키는 포인터입니다. 이는 변경 불가능한 Read Only data입니다. *(ori+1) 또한, Read Only이고, 이를 변경하려고 하기 때문에, 오류가 발생합니다. const char *pat은, pat이 가리..
최근댓글