오랫만에 글을 씁니다. 이번 시간에는 파일 포인터를 넘겨주면 파일 디스크립터를 돌려주는 fileno 함수를 배워보겠습니다. 사실 빠른 입출력을 위해 많이 쓴다는 fastio의 write를 배우기 위해서, 배운다는 건 비밀이지만요. 이 함수의 원형은 다음과 같습니다. stdio.h에 선언이 되어 있는 함수입니다. FILE 포인터를 넘겨주면, 그것과 연관된 파일 디스크립터를 돌려주는 역할을 합니다. stdio.h에 보시면 bits/types/FILE.h가 보이는데요. 무엇인지 모르겠지만, 저기에 무언가가 있을 듯 싶으니, 타고 들어가 보겠습니다. 그러면, _IO_FILE이라는 것을 FILE로 재정의를 한 무언가가 보이는데요. 글쎄요. 일단, 이것도 타고 들어가 보겠습니다. 그러면 _IO_FILE 구조체가 보..
전체 글 검색 결과
안녕하세요. chogahui05입니다. 자바의 해시맵은 hashCode를 기반으로 버킷의 어디에 들어갈지를 계산합니다. 그런데, putVal을 자세히 보셨다면 아시겠지만, hash function의 리턴값을 인자로 넣는 것을 알 수 있습니다. 이것은 어떻게 된 일일까요? java8에서 모 자료구조 코드를 조금씩 뜯어봅시다. get 메서드를 보시면, getNode를 호출합니다. 그리고, 이 메서드는 hash(key)를 인자로 삼습니다. 이것은 put도 마찬가지입니다. 내부적으로 putVal을 호출하고, 이것 역시 hash(key)를 호출합니다. 내부를 보시면, key.hashCode 값을 h에 넣습니다. 여기서, 해시코드는, 오버라이딩이 된 hashCode 값입니다. 그리고 이것과 다른 값을 비트 xor을..
fopen을 하고 난 뒤에는 fclose를 호출하라고 합니다. 사실, fopen과 fclose는 한 쌍처럼 따라다닌다고 봐도 무난하긴 하겠네요. 만약에, 닫지 않으면 어떤 일이 일어날까요? 저는, 1.txt를 열기만 하고 닫지는 않을 겁니다. fclose.c를 보겠습니다. 1000번 fopen 함수를 수행합니다. 닫는 것을 호출하지 않습니다. 그리고 나서, file open end를 찍고 계속 루프를 돕니다. 이 정도로 해석하시면 될 듯 싶습니다. 이제 코드를 컴파일 해서 실행시켜 보겠습니다. 그리고 다른 터미널에서 fclose에 대한 것을 보면, pid가 4810임을 알 수 있습니다. proc/4810/fd로 가서, ls를 쳐 보겠습니다. 그러면, 꽤 많은 무언가가 출력됨을 알 수 있습니다. 1.txt..
mysql에서 timestamp 자료형이 있습니다. 이것은 datetime 이랑 비교해서 어떠한 차이점을 가질까요? mydb에는 2개의 테이블이 있습니다. 하나는 dt, 다른 하나는 ts입니다. 각각 datetime과 timestamp를 저장합니다. ts와 dt에 현재 시간인 now()를 저장해 보겠습니다. 사실 이 함수는 CRUD를 구현할 때 상당히 많이 쓰는 것 중 하나가 됩니다. 예를 들어서, 게시판에서 글을 등록할 때도, 보통은 작성 날짜를 표시해 줍니다. 그러니, now와 같이 작성할 당시에 '시간'을 구해주는 것이 필요합니다. 그리고 dt와 ts에 저장된 내용을 보니, 2020년 8월 30일 48분 17초, 48분 23초가 저장되어 있습니다. 현재 system의 time zone을 보니, KS..
HashMap 클래스는 내부적으로 RB tree를 씁니다. 이것을 적용하기 위해서는 compare, 즉 비교를 할 수 있는 비교자가 재정의가 되어야 하는데 (대표적으로 TreeMap, TreeSet 등이 있는데, 비교체 구현 없이 써 보면 어떤 일이 일어날지는..) , 우리는 굳이 그것을 정의하지 않고도 쓸 수 있었습니다. 어떻게 그런 일이 가능했을까요? 답은 tieBreakOrder 메소드에 있었습니다. 이 메서드에 대해 이해하기 전에, 아래 두 글을 읽고 오시는 것을 권장드립니다. [관련글] 왜 equals를 재정의하면 hashCode도 같이 재정의 해야 할까요? hashCode가 모두 같을 때 어떤 일이 일어날까요? 먼저 임의의 객체 하나를 만들어 보겠습니다. 이름은 MyObj라고 짓겠습니다. eq..
최근댓글