String에는 getBytes 메서드가 있습니다. 이것이 대체 무엇을 하는 함수일까요? 간단하게 말해서, 어떠한 문자열을 aaa 라는 형식으로 인코딩 해서, 그 결과를 byte 배열로 리턴하는 함수입니다. 그런데, getBytes에 아무런 인자도 넣지 않고 호출하는 경우가 있는데요. 이 경우에 어떻게 동작하는지 간단하게 먼저 봅시다. 상세한 부분은 레퍼런스 분석에서 이야기 하도록 하겠습니다. F5로 호출되는 함수들을 간단하게 봅시다. 먼저, 이 함수 안에 들어가면 StringCoding 클래스의 encode 메소드를 호출합니다. 그러면, 우리는 이런 합리적인 의심이 가능합니다. 이거 encode 하는 함수 아니야? 네. 맞습니다. xxx 라는 형식으로 인코딩 하라는 이야기입니다. 이 함수 내부로 들어가..
전체 글 검색 결과
병합 정렬 (merge sort)는, 분할을 하고, 정복하는 단계에서 정렬된 두 배열을 합치는 식으로 동작합니다. 추가적인 공간이, 배열 크기만큼 필요하다는 것을 생각해 본다면, 메리트가 없을 수도 있어요. 실제로, Quick이 merge보다 빠르다는 이야기도 있을 정도이니까요. 그런데, Quick이 최악의 경우에 제곱에 비례하는 시간이 걸리는 반면에, merge는 그렇지 않아요. depth가 logn이기 때문입니다. 실제로 머지는 최악이던 최선이던 O(nlogn)에 동작합니다. 버블이나, insertion, selection sort에 비하면 꽤 빠릅니다. 일단 정렬이 된 두 부분 배열이 있다고 해 봅시다. 즉, le에서 mid까지 정렬이 되어 있고, mid+1부터 ri까지 sorting이 되어 있습니..
리눅스에는 심볼릭 링크와 하드 링크가 있습니다. 이것들을 설명하기 위해서는 i_node라는 친구를 알아야 하는데요. 여기에서는 그냥 실제 디스크에 저장되어 있는 내용을 가리키는 무언가라고 생각하는 게 좋을 듯 싶네요. 나중에 자세히 언급할 듯 싶습니다. 먼저 폴더 안에 1.txt랑 2.txt를 생성합니다. 1.txt에는 chogahui is my dog라는 내용이 들어가 있습니다. 그리고 2.txt에는 그가 maltize라는 내용이 들어가 있습니다. 여기까지는 어렵지 않습니다. 저는, 1.txt를 심볼릭 링크로 연결하는 일명 soft랑, 2.txt를 하드 링크로 연결하는 hard를 생성하였습니다. 이것을 a 옵션과, l, i 옵션을 붙인 ls 명령어로 봅시다. 그러면 대충 이렇게 나오는 것을 볼 수 있는..
두 문자열을 비교하려고 합니다. 어떻게 하면 좋을까요? 이렇게 비교하면 어떨까요? 실제로는 not equal이 뜹니다. 왜 그럴까요? 실제로 p1과 p2는 다른 위치에 메모리상에 할당되어 있기 때문입니다. 정확히는 p1은 p1 배열이 시작하는 주솟값을, p2는 p2배열이 시작하는 주솟값을 가지고 있을 겁니다. 이 둘은 다르기 때문에, p1과 p2를 비교하면 다르다고 출력이 됩니다. 내용이 같음에도 불구하고요. 이것을 손쉽게 하는 방법이 없을까요? 안에는 strcmp 함수가 있습니다. 이 함수는 다음과 같습니다. int strcmp(const char *str1,const char *str2); str1이 str2보다 사전순으로 앞서면 음수를, 같으면 0을, 뒤이면 양수를 리턴합니다. 보통, 어떠한 문자열..
오늘은 비슷한 것 같지만 완전히 다른 Thread의 sleep 함수랑 Object의 wait 함수를 이야기 해 보도록 하겠습니다. 이 둘은 쓰레드를 자게 하는 거니까, 왠지 같을 것 같은데, 실제로는 차이가 있어요. 예제 프로그램을 봅시다. 먼저 저는 My_object 객체 a와 b를 생성했어요. 그리고, worker를 200개 생성했는데요. 이 클래스의 내부를 봅시다. 이것은, Thread를 extend한 것인데요. 일단 My_object를 참조하는 레퍼런스 타입이 안에 들어있네요. 그리고, run 안에는 a.foo() 라는 친구를 수행하는데요. 그러면 My_object라는 클래스도 봐야 겠네요. 이 안에는 그냥 x가 start 되었다는 것과 끝났다는 것을 출력해 주기만 합니다. 그런데 내부에 wait..
최근댓글