본문 바로가기

기타107

[자료구조] 코드로 알아보는 java의 TreeMap 안녕하세요. 오늘은 코드로 알아보는 java의 자료구조 시간입니다. 오늘 알아볼 자료구조는 TreeMap입니다. 바로 그러면 알아보도록 하겠습니다. TreeMap 기본적으로 TreeMap은 내부의 값들을 key 값을 기준으로 정렬하여 가지고 있습니다. 정렬된 순서를 알 수 없는 HashMap과는 차이가 있습니다. 아래 예제 코드를 한번 보도록 하겠습니다. @Test public void treeMapTest() { TreeMap map = new TreeMap(); map.put(3, "val"); map.put(7, "val"); map.put(8, "val"); map.put(9, "val"); map.put(10, "val"); map.put(11, "val"); map.put(12, "val");.. 2021. 1. 20.
[spring + 객체 지향 원칙] Spring에서의 의존성 역전의 원칙(Dependency Inversion Principle) 안녕하세요. 오랜만에 포스팅을 올리게 되네요. 새해가 되서 책한권 읽어야지 했는데... 생각보다 오래 걸렸습니다. 그 책을 다 읽고 이제 포스팅을 하려고 합니다. 아쉽지만 책과 관련된 내용은 아닙니다. 책을 읽다가 이거 포스팅하면 좋겠다 싶었던 부분이 있었거든요. 오늘 여러분들께 알려드릴 것은 객체 지향 5가지 원칙 중 하나인 의존성 역전의 원칙(Dependency Inversion Principle)입니다. 사실 객체 지향의 5가지 원칙에 대해서는 2년정도 전에 한번 일괄적으로 포스팅을 했었습니다. 해당 원칙에 대해서 생소하신 분들은 객체지향 설계의 5가지 원칙 S.O.L.I.D 포스터를 참고해주시면 도움이 될 것입니다. 오늘은 java Spring을 사용할 때의 예를 들어 DIP에 대해서 좀 더 이해.. 2021. 1. 10.
[UNIT-TEST] Webflux Reactor 유닛 테스트 하기 안녕하세요. 오늘은 여러분들과 함께 알아볼 내용은 Webflux에서 채택하고 있는 Reactive Stream 프로젝트인 Reactor를 유닛 테스트하는 방법입니다. Reactive Stream의 경우 기존의 일반적인 로직과 다르게 Publisher(생산)와 Subscriber(구독)로 나누어져 있으며 각각이 서로를 의식하지 않은채 약한 결합으로 돌아갑니다. 그렇기 때문에 기존 우리가 짜던 구성으로는 테스트가 쉽지 않습니다. 따라서 테스팅을 용이하게 하기위한 구성 방법 및 테스팅 방법에 대해서 오늘 여러분들과 함께 공유하고자 합니다. 이번 포스팅에서 테스팅 프레임워크로 Spock을 사용하도록 하겠습니다. JUnit 5와 Reactor 테스팅 방법의 차이는 없으므로 동일하게 사용하셔도 좋습니다. 의존성 w.. 2020. 12. 17.
[자료구조] 코드로 알아보는 java의 EnumMap 안녕하세요. 오늘은 코르로 알아보는 java의 자료구조 시간으로 돌아왔습니다. 오늘 여러분들께 소개시켜드리고자 하는 자료구조는 EnumMap입니다. 이름에서 알 수 있듯이 Enum을 Key로 하는 자료구조인데요. HashMap을 평소에 사용하다 Sonar Lint의 정적분석에서 Enum을 Key로 사용한다면 EnumMap을 사용하는 것을 추천하기에 저도 EnumMap의 존재를 알게 되었습니다. 오늘은 제가 EnumMap 자료구조를 사용한 상황과 EnumMap은 HashMap과 어떻게 다른지 알아보는 시간을 가져보도록 하겠습니다. 문제의 상황 아래 소스는 제가 진행하고 있는 프로젝트의 코드 중 일부입니다. Game에 여러 Review를 남길 수 있도록 DB의 구조가 되어있습니다. 여기서 아래 메서드는 Re.. 2020. 12. 6.
[java/Design Pattern] 싱글톤의 Early 초기화 안녕하세요. 이전시간에 저희들은 싱글톤의 Lazy 초기화에 대해서 알아보는 시간을 가졌었습니다. 포스팅에서 싱글톤 객체의 초기화 시점에는 Lazy와 Early가 있다고 말씀드렸었는데요. 오늘은 Eager 시점의 초기화에 대해서 알아보는 시간을 가져보도록 하겠습니다. 먼저 저번 포스팅에서 말씀드린 객체 초기화 방법에 대해서 다시한번 보겠습니다. Eager initialization: 클래스 인스턴스 생성을 실제로 사용되기전에 먼저 진행 Static block initialization Enum singleton Lazy initialization: 클래스 인스턴스의 생성을 처음 실제로 사용될 때 진행 Thread safe singleton Bill Pugh singleton Eager initializat.. 2020. 11. 29.
[java/Design Pattern] 싱글톤의 Lazy 초기화 안녕하세요. 오랜 만에 여러분들과 Design 패턴에 대해서 알아보는 시간을 가져보려고 합니다. 이전에 저희들은 Singleton 패턴에 대해서 [Spring & Design Pattern] Spring에서 발견한 디자인패턴_Singleton Pattern 시간에 알아본적이 있습니다. 그때 Singleton을 초기화 할때 아래와 같은 코드로 초기화를 진행했습니다. 하지만 사실 이렇게 초기화 하는 것은 문제점을 안고 있습니다. public class Government { private static Government government; private Government() {} public static Government election() { if(government == .. 2020. 11. 28.
[자료구조] 코드로 알아보는 java의 LinkedHashMap 안녕하세요. 오늘은 오랜만에 다시 돌아왔습니다. 코드로 알아보는 java의 자료구조의 5번째 시간입니다. 오늘 알아볼 자료구조는 LinkedHashMap입니다. LinkedHashMap 이란 어떤 자료구조인지 HashMap과는 어떻게 다른지 알아보고 Java에서는 어떻게 구현되어 있는지 코드로 함께 확인하는 시간을 가지도록 하겠습니다. 해당 포스팅을 이해하기위해서는 먼저 HashMap에 대한 이해가 필요합니다. HashMap에 대해서 잘 모르시는 분들은 제가 이전에 포스팅한 HashMap의 자료구조를 한번 보시기바랍니다. HashMap을 순차적으로 읽으면 어떤 순서로 읽는가 ? HashMap은 Node를 꺼낼 때 넣은 순서를 보장하지 않는다고 합니다. 그렇다면 Node 순회에 대해서 읽는 순서는 어떻게 .. 2020. 10. 19.
[AWS] SQS(Simple Queue Service)의 다양한 설정들 안녕하세요. 오늘은 여러분들과 AWS의 SQS에 대해 공유드리고자 합니다. 많은 분들이 AWS의 SQS 서비스를 사용하고 있으실 거라고 생각합니다. SQS는 AWS의 서비스 중 하나로 Queue를 구현하고 있는 서비스입니다. 이 서비스는 UI로 매니징 할 수 있도록 되어있고 Java에서도 사용하기 쉽게 SDK를 제공합니다. 오늘은 가볍게 SQS 사용에 필요한 간단한 동작 원리 및 설정에 대해서 알아보는 시간을 가져보도록 하겠습니다. SQS(Simple Queue Service)란 SQS는 AWS(Amazon Web Service)에서 제공하는 Simple Queue Service의 약자로 분산 큐(Distributed Queues) Saas 서비스입니다. SQS의 요소에는 3가지가 있습니다. 사용하는 서.. 2020. 10. 15.
[Tistory] 티스토리 Open API 이용하기 - 2020년 9월 1일 tistory 정책 변경 이후 (Implicit 인증 제거) 안녕하세요. 오늘은 평소와는 다른 주제를 가지고 왔습니다. 2020년 9월 1일자로 티스토리에서 Open API Oauth인증에 대해서 Implicit 방식을 제거했습니다. 이에 따라서 token 발행은 Authorization Code Grant Type 방식으로만 가능합니다. 오늘은 chrome을 통해서 token 값을 취득하는 방법에 대해서 알아보도록 하겠습니다. Client Key 발급 Tistory Open API를 사용하기 위해서는 Open API 사용하기 위한 App 등록을 진행해야합니다. 앱등록은 Tistory Open API 사이트에서 진행하실 수 있습니다. 서비스명, 설명, 로고등록의 정보는 Open API를 사용하는데 영향을 주지않습니다. CallBack URL은 OAuth2.0 인증.. 2020. 9. 9.
[Spock] Spock Framework 이용하기 - Where [Spock] Spock Framework 이용하기 - 개론편 [Spock] Spock Framework 이용하기 - 실습편 [Spock] Spock Framework 이용하기 - Mock [Spock] Spock Framework 이용하기 - Where 안녕하세요. 오늘은 Spock Framework의 4번째 시간입니다. 오늘 Spock Framework의 Where에 대해서 배워보도록 하겠습니다. Spock의 Where을 잘 사용할 수 있게 되면 데이터가 다르고 로직이 동일한 테스트에 대해 발생하는 중복 코드를 많이 제거할 수 있습니다. Introduction Math.max가 정상적으로 동작하는 지 검증하는 테스트 메서드를 작성해보도록 하겠습니다. 아래와 같이 2개의 파라미터 중 더 큰값이 정상적으.. 2020. 9. 4.
[Spock] Spock Framework 이용하기 - Mock [Spock] Spock Framework 이용하기 - 개론편 [Spock] Spock Framework 이용하기 - 실습편 [Spock] Spock Framework 이용하기 - Mock [Spock] Spock Framework 이용하기 - Where 안녕하세요. 오늘은 Spock Framework의 3번째 시간입니다. 이전 포스팅, [Spock] Spock Framework 이용하기 - 개론편과 [Spock] Spock Framework 이용하기 - 실습편에서는 이론과 실전을 하나하나 살펴보았습니다. 오늘은 좀 더 나아가 Spock Framework에서 Mock과 Stub을 어떻게 사용하고 활용할 수 있는지에 대해서 알아보는 시간을 가지도록 하겠습니다. Mock이란 개념에 생소하신 분들은 What .. 2020. 9. 2.
[Spock] Spock Framework 이용하기 - 실습편 [Spock] Spock Framework 이용하기 - 개론편 [Spock] Spock Framework 이용하기 - 실습편 [Spock] Spock Framework 이용하기 - Mock [Spock] Spock Framework 이용하기 - Where 안녕하세요. 오늘 포스팅할 주제느 Spock Framework 이용하기 Block편입니다. Spock Framework는 Spock Framework 이용하기 - 개론편에 이어서 2번째 시간인데요. 저번 시간에는 개론에 집중했다면 오늘은 실제로 Spock Framework를 이용하여 테스트를 만들어보고 사용해보는 시간을 가지려고 합니다. 실제 테스트는 Spock Framework의 Feature Methods 요소를 이용합니다. feature metho.. 2020. 8. 26.