안녕하세요. 코딩개입니다. 이번 시간에는 java에서 string에 들어있는 문자들을 어떻게 hex 값으로 보는지 알아보도록 하겠습니다. 저번 시간에 replace랑 replaceAll이랑 비교한 부분 기억하실 거에요. 출력은 같아 보이는데, 사실 다른 문자열이라고 했습니다. 왜? 출력이 되지 않는 문자가 포함되어 있기 때문이에요. 정말 그것이 포함되어 있는지 디버그를 해 보기 위해서 string에 저장 되어 있는 문자들을 차례대로 hex로 출력해 봅시다. Format 문자열에 대한 설명을 봅시다. Conversions 단락을 보면, 몇 가지 카데고리로 나뉜다고 되어 있습니다. General은 어떠한 type도 받아들인다는 것을 의미합니다. 3번의 Numeric은 몇 개의 type만 잡는데요. Integ..
Java 검색 결과
안녕하세요. 이번 시간에는 java의 replace와 replaceAll에 대해서 간단하게 짚고 넘어가도록 하겠습니다. 사실 저는 문자 c1을 문자 c2로 바꾸기 위해서 replaceAll을 주로 이용하는 편이였어요. 그런데, 아시다시피 replaceAll은 내부에서 정규식을 위한 트리를 만들어서 생각보다 느려요. 모든 문자 c1을 c2로 바꾸는 메서드는 없냐? 라고 물으신다면, replace가 있어요. 예제만 간단하게 보겠습니다. "maple story 205"가 있어요. 저는 공백을 '|'로 바꾸려고 해요. 그러면 oldChar는 ' '가 되고, newChar는 '|'가 되겠죠? replace의 1번째 인자에는 ' '를, 2번째 인자에는 '|'을 넣으면 되어요. 실행 결과는 위와 같아요. 그런데 왜 ..
leading zero, leading space 이런 문제들은 string을 다루다 보면 한 번 정도는 보실 문제들입니다. 10개의 width에 string 값을 오른쪽 정렬을 하고 남은 공간들은 space로 채운다고 했을 때, 이렇게 코딩했었습니다. 예를 들어 string이 길이가 10 이하라고 해 보겠습니다. cho를 오른쪽 정렬하면 " cho"가 되고, 왼쪽으로 정렬하면 "cho "가 됩니다. 이걸 저는 padding 길이를 구하고 그 길이만큼 padding이 되는 문자열을 만든 다음에 왼쪽, 혹은 오른쪽에 붙이는 식으로 하였습니다. repeated는 캐릭터 하나와 얼마만큼 반복할 것인지를 나타내는데요. 내부에는 그냥 StringBuilder 등으로 이어 붙여버립니다. 결과는 요래 잘 나옵니다. ..
java에서 map, set 계열을 다룰 때 전체 원소들을 순회해야 할 때가 있습니다. 이 때 어떻게 해야 하는지 간단하게 알아보겠습니다. 보통 map 계열 중에서는, treemap과 hashmap의 사용 빈도가 꽤 높은 편인데요. 이는 hash 계열은 equal 쿼리에, tree 계열은 range 쿼리에 매우 유리한 구조이기 때문입니다. 그리고 저는 농담처럼 자바에서는 TreeMap만 알고 있으면 풀 수 있는 코딩테스트 문제가 상당히 많을 거다. 라는 말도 하는데요. equal 쿼리도 성능이 그렇게 썩 나쁜 편이 아니기 때문입니다. 로그 복잡도로 찾아도 나름 빠르기도 하고요. 먼저, Map에서의 Key, Value 쌍을 모두 순회하기 위해서는, keySet을 이용해야 합니다. 이것은 Map에 있는 ke..
최근에 제 토이 프로젝트를 손 보면서, 바꾼 것이 몇 가지 있습니다. 이 중에서 UserService 단에서 예외 처리하는 부분을 추가하였습니다. 해당 부분은 여기서 볼 수 있어요. 현재 제 토이 프로젝트 레포에 있는 예외 처리 코드들이 살짝 비대한 경향이 있어서 추가적인 리팩토링을 할 예정입니다. 그 부분은 나중에 언급할 기회가 있을 듯 싶습니다. 이 글에서 설명할 부분은 이 문서와 일맥 상통한 내용이니 간단하게 읽어보시면 도움이 될 듯 합니다. 원래 regUser는 위와 같이 구현이 되어 있었습니다. 그리고 예외가 발생하면 Service 단에서도, Controller 단에서도 처리가 되지 않는 구조였습니다. 제 도서관 api의 db에 저장되어 있는 user_name은 위와 같습니다. 'cho'가 있으..
최근댓글