본문 바로가기

전체 글84

정규표현식 (개념정리, Dangling meta character) 개인적으로 사용하려고 하면 헷갈려 항상 검색하게 만드는 것 중 하나입니다.😂🤣 그래서 이번기회에 한번 정리하기 위해서 작성하게 되었습니다. 또한 TDD 학습 중 JAVA에서 Dangling meta character 에러가 발생하여 해당 내용까지 한번 알아보도록 하겠습니다. https://github.com/phantom08266/java-racingcar-playground/blob/practice_game/src/main/java/AddCalculator.java 일반적인 패턴 정리 소문자 한 개 : [a-z] 대문자 한 개 : [A-Z] 숫자 한 개 : [0-9], \d 특수문자 한 개 : \( 특수문자를 찾을 때는 역슬래쉬 2개를 사용하여 여는 괄호 하나를 찾는다. 특수문자, 공백 한 개 : \w.. 2022. 6. 15.
java Stream API는 for-loop보다 정말 느릴까? 개인적으로 TDD 학습 공부를 하고 있었는데요! 해당 학습을 진행 하던 중 JAVA 8에서 제공하는 Stream에 대해서 학습하던 중 Stream이 for-loop보다 느리다라는 말을 들었습니다. 이때 나름의 이유는 있었지만 좀 더 명확하게 정리하고 싶어 글을 작성하였습니다. 우선 정말로 차이가 있는지 코드로 한번 알아보겠습니다. for vs foreach vs Stream 성능 비교 1~100만을 더하여 성능을 측정해보았는데요! for의 성능이 foreach, Stream보다 더 나은 성능을 보여주는 것을 확인할 수 있었습니다. 그렇다면 Stream이 성능이 가장 안 좋은데 왜 사용해야 할까요? 🤔Stream API이 성능이 왜 가장 낮을까요? 어떠한 개념을 알기 위해서는 해당 개념이 왜 생겨났는지를 .. 2022. 6. 15.
CQRS 패턴 CQRS 패턴이란? Command Query Responsibility Segregation의 약자로 ‘명령 조회 책임 분리’라고 합니다. 즉 명령과 조회를 분리하는 패턴인데요! 이 둘을 왜 분리를 해야 하는지 분리를 했을 때 이점은 무엇인지 알아보겠습니다. 명령과 조회를 분리한 이유 마틴 파울러는 명령과 조회를 분리한 이유가 비즈니스의 복잡도가 증가하여 이를 줄이고자 나온 개념이라고 합니다. 개발을 하다보면 많은 도메인 로직들이 생겨나고 복잡도가 증가하게 됩니다.(C, U, D) 또한 이에 따른 다양한 Read 방식도 제공해야 합니다. (R) 따라서 서로 다른 책임을 가지고 있으므로, 이를 분리하여 처리를 하면 성능 상 이점을 가져갈 수 있습니다. 분리를 할 경우 이점 명령 부분과 조회 부분을 분리하면.. 2022. 6. 15.
Java Random 클래스(Feat ThreadLocalRandom, SecureRandom) TDD 학습을 진행하던 도중 Random으로 값을 뽑아야 할 일이 생겼습니다. JAVA 에서는 Random에 대한 다양한 클래스들을 제공하고 있는데요! 이에 대해 하나씩 살펴보는 시간을 가져볼까 합니다. 우선 첫번째로 알아볼 Random 클래스 입니다. JAVA 1.0때부터 존재했었는데요! 역사가 있는 클래스 입니다. 본문 내용을 읽어보면 아래와 같은 내용을 확인하실 수 있습니다. 대략 요약하자면 이렇습니다. Random은 다중 스레드 환경에서는 스레드간 경합이 발생하여 성능저하가 발생하니 ThreadLocalRandom을 사용하는 것이 좋습니다. Random에서 만드는 의사난수는 보안적으로 안전하지 않으니 SecureRandom을 사용해야 합니다. 그럼 하나씩 살펴보도록 하겠습니다. Random vs .. 2022. 6. 15.