안녕하세요. wrong time no see. 이번 시간에는 부동 소수점 연산에서 분배 법칙이 성립하지 않는 데이터를 만들어 보고자 해요. 먼저 결론부터 보여주는 것이 속 편하겠군요. a가 1.5이고, b는 1.0 + 1/2^52, c는 1/2^52입니다. 이 때, a(b+c)와 ab + ac의 값이 다르게 나옵니다. 더 정확하게 말하면, ab + ac를 계산하는 과정에서 오차가 생깁니다. 결과 값으로 나온 d와 e의 비트 표현을 보겠습니다. 어랏? 다르다는 것을 한 번에 알 수 있어요. 왜 다를까요? 하나 하나 tracing을 해 봅시다. 먼저 b, c, b+c를 보겠습니다. b, c, b+c를 비트로 표현하면 요래 되는데요. 먼저, 011 1111 1111과 011 1100 1011은 52만큼 차이남..
전체 글 검색 결과
retainAll이라는 메소드의 시간 복잡도에 대해서 질문이 들어왔습니다. AbstractCollection에 있는 메소드인데요. 결론부터 말씀드리겠습니다. 간단하게 정리하면, 인자로 넘어가는 Collection의 contains에 따라서 갈리게 됩니다. 그런데, retainAll이 따로 재정의된 케이스도 있기 때문에 시간 복잡도를 분석하실 때 주의가 필요합니다. 밑에서 후술하겠습니다. 먼저 이 메서드의 설명을 봅시다. Collection에서 retainAll을 호출할 때 이 메서드를 볼 일이 적지 않기 때문입니다. c에 있는 원소들만을 획득한다. 라고 설명이 되어 있네요. 그리고, UnsupportedOperation 예외를 떨굴 수도 있다고 하는데요. 삭제 연산을 지원하지 않는다면 떨어트려지게 됩니다..
저번에 controller에서 UserLoginInfo로 들어오는 정보를 User로 convert 해서 서비스 단에 보내는 로직을 작성하였습니다. 이것을다른 데서 하게 하면 어떨까요? mapping을 손쉽게 하기 위해서 mapstruct를 이용했는데요. 문제는 비밀 번호가 담겨진 것은 가입 로직에서는 encoding 해서 service 단에 넘겨야 한다는 것입니다. 그 전에, 가입과 로그인 로직부터 간단하게 도식화 해서 그려보겠습니다. 먼저 가입 로직이에요. userName과 Email, password를 json 형식으로 받으면 패스워드만 bcrypt로 암호화를 해요. 나머지 필드인 userName과 Email은 User 객체를 생성할 때 그대로 넣고요. 그 다음에 User 객체를 service lay..
이번 시간에는 오랫만에 코딩 테스트가 아닌, 제가 출제한 문제에 대해서 간단하게 해설해 보겠습니다. 사실, 이 문제는 선린고 대회 문제로 출제하려고 했지만, 모종의 이유로 반려된 문제입니다. 그렇지만, 백준에 낼 가치는 충분히 있다고 판단되어 올리게 되었습니다.이 자리를 빌어, 제 문제를 검수해 주신 분들에게 감사드립니다. 아마, 이 블로그의 글들을 유심히 보셨던 분들이라면 제가 키움과 롯데 자이언츠 팬임은 아실 수 있을 겁니다. 이 문제에 나타난 7월 28일을 제가 굳이 언급한 이유는 쓰리런으로 끝내기를 치신 그 분 때문입니다. 각설하고 가희가 9회 말을 보기 위해 풀어야 하는 수학 문제를 보도록 합시다. n개의 수가 최소 공배수가 L이고, 최대 공약수가 G인 가짓수를 구해야 하는 게 목표입니다. 보기..
안녕하세요. 오랫만입니다. 토이 프로젝트를 하다가 controller에서 mapping하는 로직이 있었습니다. 예를 들어, bookController에 있는 addBook 메서드를 보겠습니다. BookRegInfo 객체를 받아서, Book 객체에 넘겨 받은 객체에 대한 정보를 넣습니다. 그리고 이 객체를 service 단으로 넘겨 버립니다. 사실 이게 끝이긴 합니다. 그런데, 만약에 book의 필드가 많아지면 어떨까요? 컨트롤러 안의 addBook에서 mapping을 하는 로직을 어떻게 뺄지 고민을 했어요. 혹은, 이러한 일련의 작업들을 쉽게 해 주는 것이 없나? 도 찾아보았어요. 찾아보니 mapstruct가 있었는데요. 이번 시간에는 이 친구에 대해 간단하게 알아 보겠습니다. mapstruct와 map..
최근댓글