Arrays의 BinarySearch는 정렬된 배열에서 이진 탐색을 할 수 있습니다. 저는 여태까지 자바의 바이너리 서치가 값이 없으면 단순히 -1을 리턴하는 줄 알고 잘 써먹지 않았습니다. 그런데, 설명을 보니 그러지 않아도 되겠다는 것을 알 수 있었습니다. 공식 설명을 먼저 보겠습니다. 이 메서드는 아시다시피, sorted가 되어야 동작하는 알고리즘입니다. 리턴 값에 대한 설명을 봅시다. 해당 key를 찾으면 그 위치를 리턴하고, 그렇지 않으면 -Insertion point-1 값을 리턴합니다. Insertion point가 어떻게 정의되는지도 위에 나와 있는데요. key보다 greater한 최초의 위치라고 되어 있어요. 이는 Collections의 binarySort나 Arrays의 binarySo..
전체 글 검색 결과
이번 시간에는 리눅스 mkdir 명령어에 대해서 알아보겠습니다. 이 명령어는 디렉토리를 만듭니다. 새 폴더를 만들어요. cho의 홈 디렉토리에는 폴더가 요렇게 있어요. fonts와 jo_test, snap 등등이 있네요. 제 홈 디렉토리에 mkdir a 명령어를 입력해 보겠습니다. 그러면, 제 홈 디렉토리에 a라는 폴더가 추가됩니다. 이게 다입니다. 몇 가지 옵션이 더 있긴 하지만, 저는 옵션 없이 많이 쓰곤 했습니다. 이렇게만 끝나면 시시하니, 공식 문서 (특히 세팅, 설치 가이드) 등에서 많이 볼 수 있는 것에 대해서 설명을 하겠습니다. 보통 폴더를 만든 후에, 해당 폴더로 이동하게 됩니다. a라는 디렉토리를 만들고, a로 이동하는 경우가 압도적으로 많은데요. 이 때 보통 mkdir a 명령어를 입력..
프로그램을 만들다 보니, 로그를 잘 남기는 것이 중요하다는 것을 알게 되었습니다. 그래서 로깅도 몇 편 정도 쓸 듯 싶습니다. 이번 시간에는 logging.level에 대해서 알아보겠습니다. 문서를 보시면, 로그 레벨은 총 6단계임을 알 수 있어요. TRACE, DEBUG, INFO, WARN, ERROR, FATAL. 제가 낸 문제 중에 lv의 최댓값이 6까지 나올 수 있다는 조건은 이것을 바탕으로 해서 만들어 졌습니다. 프로젝트 구조를 보겠습니다. controller, 그리고 application.properties만 건드렸습니다. testController를 보시면, test를 호출하면 Exception을 throw 하게 만들었습니다. /test는 GET 메서드로만 받고요. application.p..
이번 시간에는 RestController에서 Request를 받을 때 마다 그것을 처리하는 쓰레드가 같은지, 다른지. 다르다면 어떤 식으로 쓰레드 들이 request를 처리하는지 실험해 보도록 하겠습니다. 이 글에서는 내장 톰캣을 이용하였습니다. 먼저, 프로젝트 구조는 위와 같습니다. 컨트롤러 역할을 하는 testController가 있습니다. 그리고 설정 값을 저장해 놓은 properties 파일이 하나 있습니다. 포트는 7780으로 설정해 놓았습니다. testController에는, /test로 get 요청을 받으면, 처리할 메소드인 test가 있습니다. 현재 쓰레드의 이름만 리턴하게 됩니다. 예를 들자면, Main과 같은 이름을 말합니다. Thread.currentThread()는 현재 실행중인 쓰..
python의 Collections에는 자주 쓰일 법한 유용한 자료 구조들이 있습니다. 파이썬의 Queue 대신에 쓸 수 있는 deque도 있습니다. 이것은 다음에 언급하도록 하고요. 이 중에서 이번 시간에는 Counter를 어떻게 쓰는지 간단하게 알아보도록 하겠습니다. 먼저 예제 1번을 보겠습니다. 3번째 줄에서, cs[1] += 2가 있습니다. 이는, 키 1이 나오는 빈도를 2만큼 증가시킨다는 의미입니다. 4번째 줄에 cs[1]이 있는데요. 이는 키 1의 빈도를 가져옵니다. 2가 되겠네요. 다음에 5번째 줄에서는 cs.pop(1)이 있는데요. 이는 키 1을 제거한다는 의미입니다. 이전에 key 값이 1이고, v가 2인 정보가 있었어요. 키 1을 pop 메서드로 제거하면, 이 정보가 사라집니다. 그러면..
최근댓글