NooRoongZi
close
프로필 배경
프로필 로고

NooRoongZi

  • 분류 전체보기 (59)
    • Java (15)
      • SpringBoot (4)
      • JPA (2)
      • Juinit (1)
      • Design Pattern (2)
    • DB (4)
      • MySQL (1)
      • InfluxDB (2)
    • OpenSource (5)
      • Load Test (1)
    • Computer Science (2)
    • Algorithm (29)
    • 독후감 (4)
  • 홈
  • 태그
  • 방명록

[디자인 패턴] 02. 팩토리 메서드 패턴 (1600Line -> 600Line으로 줄이기)

0. 들어가며최근 사내 프로젝트에서 마주한 엑셀다운로드기능은 하나의 클래스에 모든 로직이 때려 박혀 1600줄이 넘어가고 있었고, 새로운 엑셀 양식을 추가할 때마다 중복코드가 만연해지고 있었습니다. 오늘은 이 코드를 팩토리 메서드 패턴(Factory Method Pattern)을 적용해 600줄까지 줄이고, 구조적 유연함까지 챙긴 리팩토링 경험을 공유하려 합니다. 1. 팩토리 메서드 패턴(Factory Method Pattern)이란? 팩토리 메서드 패턴의 핵심은 "객체 생성을 서브 클래스에 위임하는 것"입니다. 즉, 구체적인 클래스(Concrete Class)에 의존하지 않고, 인터페이스(`Interface`)에 의존하도록 만드는 것입니다. 왜 쓰는가?비슷한 종류의 객체(여기서는 다양한 엑셀 양식)가..

  • format_list_bulleted Java/Design Pattern
  • · 2026. 1. 23.
  • textsms

[디자인 패턴] 01. 싱글톤 패턴

0. 들어가며Java를 공부하며 정리했던 디자인 패턴을 블로그에도 드디어 정리하기로 생각했습니다. 일주일에 최소 하나 이상 글을 적으려고 하고있고 요즘 구체적인 코드 구현보다 전체 적인 구조를 더 효율적으로 고민해야한다고 생각해 디자인 패턴을 다시한번 복기하며 정리해보겠습니다 1. 싱글톤 패턴이란?싱글톤 패턴은 오직 한개만 제공하는 패턴을 의미합니다.시스템 런타임, DB 연결 모듈등 시스템내 여러곳에 쓰이며 인스턴스가 여러개 일 때 문제가 생길 수 있는 경우가 있습니다.따라서 인스턴스를 오직 한개만 허용하여 제공하는 클래스가 필요하다면 좋은 선택이 될 수 있습니다.주의점단순히구현하는경우 멀티스레드 환경에서 문제가 발생할 수 있습니다.public class Settings { private stati..

  • format_list_bulleted Java/Design Pattern
  • · 2026. 1. 4.
  • textsms

[Selenium] 셀레니움 개발과 배포

0. 들어가며Selenium을 사용해 프로젝트를 진행할때 겪었던것들에 대해 기록하겠습니다.1. Selenium이란?웹 애플리케이션의 자동화를 위한 Opensource입니다. 주로 브라우저 기반 테스트를 자동화하거나 웹 크롤링등의 기능을 구현할때 사용됩니다. 저는 크롤링 기능을 구현하기위해 사용했습니다.2. Selenium 개발 과정먼저 로컬환경에서 크롬드라이버를 다운받고, Spring boot에 Selenium 라이브러리를 추가하여 아래와 같이 크롤링을 구현했습니다.WebDriver driver = new ChromeDriver();Wait wait = new WebDriverWait(driver, Duration.ofSeconds(10));driver.get("TARGET_URL");List dtoLi..

  • format_list_bulleted OpenSource
  • · 2025. 1. 19.
  • textsms

[프로그래머스] LV 3 파괴되지 않은 건물

https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 접근 방법문제를 읽으며, 일반 적인 브루트포스 기반의 구현을 생각했지만, 데이터의 크기 상 불가능했다.다른 방법을 시도했으나 시간 초과였고, 결국 해설을 읽고 문제를 풀었다. 해설에서는 누적합을 기반으로 문제를 해결했다.skill 배열을 순회하며 board에 적용할 마스크를 만들고 마지막에 더해주는 방법이다.1차원 배열에서 마스크를 만드는 방법[1,3,5,23,5,9]의 배열에서 1 ~ 3번 원소에 -4, 0 ~ 5번 원소에 +2를 한다고 가정..

  • format_list_bulleted Algorithm
  • · 2024. 11. 29.
  • textsms

[프로그래머스] LV 3 경주로 건설

https://school.programmers.co.kr/learn/courses/30/lessons/67259?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법보드의 크기 n 이 25이하이고 입력에서 걱정할 부분이 없기때문에 BFS를 생각했다.BFS를 하며 Cost를 기록하고, 이를 활용해서 최소값만을 계산하려고했다.하지만 문제가 있었다.(1,0)에서 2000코스트이고, (1,1)으로 직진 후 아래로 코너를 돈다(0,1)에서 1700코스트이고, (1,1)으로 아래로 코너를 돈 후 직진을 한다위 두가지 경우에서 1번이 (1,1)에 2100, 2번에 (1,1)이 2400코..

  • format_list_bulleted Algorithm
  • · 2024. 11. 21.
  • textsms

[OpenSource] Testcontainers로 테스트 환경 구축하기

0. 들어가며테스트 환경을 구축할 수 있는 오픈소스 Testcontainers에 대하여 알아보겠습니다. 1. Testcontainers란?Java, go 등 여러 언어에서 사용할 수 있는 Test 환경 구성 오픈소스입니다.프로젝트 유닛, 통합 테스트를 진행할때 DBMS, Kafka, Nginx등의 외부 서비스와는 격리하여 테스트를 작성하는 경우가 많습니다.테스트를 하더라도, test 수행으로 인해 환경이 오염되고 깨지는 문제가 발생할 수 있죠.예를 들어 운영 환경에서, Postgre SQL을 쓰지만 test 환경에서 인메모리 H2 Database를 사용할 수 있는데, 이는 정확한 환경 일치라고 할 수 없습니다. 개발자 입장에서 PostgreSQL의 새롭고 좋은 기능을 발견해도, H2 Database에 구..

  • format_list_bulleted OpenSource
  • · 2024. 11. 19.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 10
  • navigate_next
공지사항
  • 안녕하세요!
전체 카테고리
  • 분류 전체보기 (59)
    • Java (15)
      • SpringBoot (4)
      • JPA (2)
      • Juinit (1)
      • Design Pattern (2)
    • DB (4)
      • MySQL (1)
      • InfluxDB (2)
    • OpenSource (5)
      • Load Test (1)
    • Computer Science (2)
    • Algorithm (29)
    • 독후감 (4)
최근 글
인기 글
최근 댓글
태그
  • #독후감
  • #GOF
  • #MySQL
  • #Java
  • #티스토리챌린지
  • #오블완
  • #spring boot
  • #influxdb
  • #JPA
  • #프로그래머스
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바