티스토리 뷰

TIL(Today I Learned)

21.02.22 TIL

nauni 2021. 2. 22. 21:25

- SQL

solved 1 SQL problem ✔

 

- Algorighm

 

I tried to solve kakao Algorithm which I tried few days ago. I couln't solve it....😥 thesedays, I am quiet confused that I am going on the right way. Maybe problem would be much difficult than I could solve. It could be cause of losing confidence. 😥 Anyway, keep trying to work on studying algorithms. 💻 

 

- Woowa Tech Course (Lotto Mission Step2)

 

It tooks much hours than I thought. Refactored step1 review and Implemented step2 to create Pull Request. I could learn a lot while refactoring and developing. I think adding new requirements on previous system makes me learn a lot.


학습로그

[Java] BigDecimal - 1

내용

  • BigDecimal에서 사칙연산은 BigDecimal을 반환한다. 따라서 새로 더한 값으로 덮어쓰고 싶다면 반환값을 재할당 해주어야 한다.
    private BigDecimal getTotalPrize() {
        BigDecimal localPrize = BigDecimal.ZERO;

        for (Map.Entry<Rank, Integer> result : resultMap.entrySet()) {
            localPrize = localPrize.add(
                result.getKey().getPrize()
                    .multiply(BigDecimal.valueOf(result.getValue()))
            );
        }
        return localPrize;
    }

이 부분에서 총 합계가 계산이 잘 안되서 원인을 한참동안 찾았다ㅠㅠ

링크

BigDecimal javadocs

[TDD] DTO, VO - 4

내용

  • ✨가능한 모든 도메인에 속하는 코드에 대해 테스트코드를 작성하자!
  • Result 클래스는 DTO라고 생각하여 테스트하지 않았는데 생각치 못한 버그가 발생함 (Result도 수익률 계산이라는 로직을 담고 있으므로 순수한 DTO 객체라고 하긴 어려운듯 싶다.)
  • DTO와 VO의 차이
    • DTO : Entity(Domain)과 View 사이의 통신하며 Presentation Logic이 있는 객체. 로직을 가지고 있지 않는 순수한 데이터 객체. 여기저기 흩어진 값들을 모으는 역할도 하는 듯 싶다. 호출하는 메소드를 줄이기 위해 만든 객체라고도 할 수 있다.
    • VO : 값 객체. 원시값을 포장하는 객체 같은 것들을 의미함.

[Java] Builder패턴 - 3

내용

  • 생성자 여부만 늘어나는 것이 있다면 Builder 패턴을 사용하면 좋다.
  • 꼭 필요한 값은 Builder를 만들때 초기화 해주고, 추가적인 값들은 체이닝을 통해 선택할 수 있다. 계층적으로 설계된 클래스와 함께 사용하기 좋다고 한다.
  • 2개 이상의 this() 생성자 체이닝이 이루어질때, 사용하면 유용할 듯 하다.
  • Builder를 사용하는데 대한 의견
    Builder를 구현해보았으나, 선택적 매개변수를 사용할 때 의미가 있는 것 같다. 결국 Result라는 객체는 WinningNumbers와 LottoTickets가 필수적으로 필요하기 때문에 Builder 패턴을 사용하면 오히려 필요한 정보가 누락되는 상황이 발생할 수 있다. 대신 생성자의 입력값을 더 간단하게 수정할 수 있었다.

[Java] EnumMap -3

내용

  • 단순히 HashMap을 EnumMap으로 바꾸는 것 이외에 아무 차이가 없어 보였기에 어떤 효과가 있을지 공부해보았다.

      1. Performance
      : performance optimization, like a quicker hash computation since all possible keys are known in advance.  
      2. Functionality
      : EnumMap is an ordered map, in that its views will iterate in enum order.
    
      출처:https://www.baeldung.com/java-enum-map

    Key 값으로 가지고 있기 위해서는 hashing 작업이 이루어지는데 EnumMap은 이미 알고있는 키이기 때문에 빠른 해싱이 가능하다고 한다. 정확한 내부구현은 어려운 듯 싶으니 해싱이 간편해진다는 요점을 알자.
    또다른 기능은 EnumMap은 orderedMap이다. Enum에 명시된 순서를 유지한다.

링크

EnumMap 설명 참고한 페이지


 

Today is the first day of writing TIL in English. 😎 More reading is needed. Lots of books beside of me. 📖

'TIL(Today I Learned)' 카테고리의 다른 글

21.02.24 TIL  (0) 2021.02.24
21.02.23 TIL  (0) 2021.02.23
21.02.21 개발공부일지(주간회고 포함)  (2) 2021.02.21
21.02.20 개발공부일지  (0) 2021.02.20
21.02.19 개발공부일지  (0) 2021.02.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함