java 11부터 String에 strip 메소드를 지원합니다. leading, trailing 화이트 문자들을 제거해 줍니다. Character.isWhitespace가 참인 문자들을 제거해 줍니다. 공백이라고 생각되는 문자들을 제거하지 못하는 경우도 있음에 유의하세요. 밑에서 다시 이야기 해 드리겠습니다. 이 글을 읽으시기 전에 trim 메서드에 대해서 간단하게 이해하시면 좋습니다. [관련글] trim 메서드에 대해 제대로 알아봅시다. 먼저, Character.isWhitespace가 참인 codepoint를 모두 출력해 보겠습니다. 9, 10, 11, 12, 13, ... 총 10 + 15 = 25개입니다. 이 중 코드 포인트가 32 이하인 것의 갯수는 10개입니다. 32인 것은 공백입니다. 이제 ..
Java 검색 결과
7월 18일에 제가 운영한 2회 코딩테스트가 열렸습니다. 이 중에, 1번 문제는 다중 정렬을 이용한 문제였습니다. 백준에서 정렬 분류로 치면 나오는 문제들을 풀 수 있다면 풀 수 있게 해서 그런지, 정답자 수가 많은 편에 속하는 문제가 되었습니다. 그 이후에도 사람들이 꾸준히 많이 풀어주셨는데요. 저는 name과 확장자, os에서 확장자를 인식하는지 여부를 3개의 플래그로 만들어서 관리했습니다. 그런데, 다른 분이 Comparator와 람다를 잘 이용하면, 코드도 줄일 수 있고, 단순화 된다는 조언을 주셨습니다. 먼저, myFile 클래스를 보겠습니다. name과 ext만 필드에 있습니다. 생성자는 name과 ext를 받아서, 확장자와 네임을 생성이 될 때 채워넣습니다. 그 이후로 setName, set..
카톡방에서 python은 'abc' * 5와 같은 문법이 있는데 자바에는 없는지 물어보셨습니다. java 8에서는 어떻게 쓰는지 잘 모르겠습니다. 아마, 이런 식으로 쓰지 않을까 싶습니다. "abc"를 10번 반복하기 위해서, StringBuilder의 append 메소드를 썼습니다. abc를 10번 반복한다는 것이, abc를 10회 뒤에 추가하는 concat과 같기 때문입니다. 다음에, StringBuilder를 toString으로 변환한 다음에, 출력합니다. 4 ~ 5줄 정도에 구현할 수 있습니다. 실행 결과는 위와 같이 나옵니다. 그런데, java 11부터는 이렇게 하지 않으셔도 됩니다. repeat 메서드는 반복 횟수만 넣으면 됩니다. 6번째 줄의 s.repeat(10)은 문자열 s를 10번 반복..
Arrays의 BinarySearch는 정렬된 배열에서 이진 탐색을 할 수 있습니다. 저는 여태까지 자바의 바이너리 서치가 값이 없으면 단순히 -1을 리턴하는 줄 알고 잘 써먹지 않았습니다. 그런데, 설명을 보니 그러지 않아도 되겠다는 것을 알 수 있었습니다. 공식 설명을 먼저 보겠습니다. 이 메서드는 아시다시피, sorted가 되어야 동작하는 알고리즘입니다. 리턴 값에 대한 설명을 봅시다. 해당 key를 찾으면 그 위치를 리턴하고, 그렇지 않으면 -Insertion point-1 값을 리턴합니다. Insertion point가 어떻게 정의되는지도 위에 나와 있는데요. key보다 greater한 최초의 위치라고 되어 있어요. 이는 Collections의 binarySort나 Arrays의 binarySo..
이번 시간에는 RestController에서 Request를 받을 때 마다 그것을 처리하는 쓰레드가 같은지, 다른지. 다르다면 어떤 식으로 쓰레드 들이 request를 처리하는지 실험해 보도록 하겠습니다. 이 글에서는 내장 톰캣을 이용하였습니다. 먼저, 프로젝트 구조는 위와 같습니다. 컨트롤러 역할을 하는 testController가 있습니다. 그리고 설정 값을 저장해 놓은 properties 파일이 하나 있습니다. 포트는 7780으로 설정해 놓았습니다. testController에는, /test로 get 요청을 받으면, 처리할 메소드인 test가 있습니다. 현재 쓰레드의 이름만 리턴하게 됩니다. 예를 들자면, Main과 같은 이름을 말합니다. Thread.currentThread()는 현재 실행중인 쓰..
최근댓글