LostCatBox

LostCatBox

내 생각을 자유롭게 만들 때까지

TDD-테스트코드 도입기
왜? 회사 내에서 테스트 코드는 시간아깝고 필요없다는 말을 팀장님에게 듣고, 화가나서 듣는 테코 강의들 정리 TDD란? RED : 실패하는 테스트를 먼저 작성한다 GREEN : 실패하는 테스트를 성공시킨다. BLUE : 리펙토링한다. TDD 특징 및 장점 깨지는 테스트를 먼저 작성 -> 메서드(행동) 및 인터페이스에 대한 생각 강제된다. What/Who 장기적인 관점에서 개발 비용 감소 TDD 도입 고민점들 무의미한 테스트 -> 핵심적인 비즈니스 로직이 아닌 부분들은 구지 할 필요없다. 모든 메서드에 대한...
Virtual Thread VS CompletableFuture
왜? 면접 질문에서 Vertual Thread 에 대한 질문을 받음. 답변하지 못함. CompletableFuture는 기존 사용하던 비동기 API 였다. 둘을 비교해보고 특성을 정리해본다 참조 망나니 개발자님 블로그 Vertual Thread VS CompletableFuture 차이 OS Thread VS JAVA Thread 기존 CompletableFuture 특징 비동기 작업 — 결과를 기다리는 동안 메인 스레드를 차단하지 않습니다. 콜백 — future가 완료될 때 실행할 콜백을 등록할 수 있습니다. 연...
단일책임원칙이란?
왜? SOLID 원칙 중에 하나 면접에서 설계도를 리뷰하며, 단일 책임 원칙에 따라 기존 코드가 어떻게 변경되어야하는지 정확히 대답하지 못했다. 따라서 예시를 통해 재학습하기로 결정했다. 참고 출처1 단일 책임 원칙이란? 하나의 클래스로 너무 많은 일을 하지 말고 딱 한 가지 책임만 수행하라는 뜻이다 변경 사항이 일어났을 경우, 단일책임원칙을 지켰다면, 하나 클래스 내용만 변경될 것이다. 잘못된 예시 회계팀, 인사팀, 기술팀이 사용하는 메서드는 모두 calulateExtraHour() 에 의존적이다. 만약 인사팀에서 해...
2024 hashmap
https://www.grepiu.com/post/9 자료 구조 hashmap linkedhashmap 해시 충돌과 완화 방법으로 hashmap은 separate chaining 기법을 사용하며, 한 버킷에 중복되는 index를 가진 entry를 나열한다. -> 단점으로는 최대 O(n)이 일어날수있다. 하지만 버킷이 많이없으므로 메모리 비용을 아낄수있다. hashset linkedhashset arraylist linkedlist https://velog.io/@95qwer/%EC%9E%90%EB%B0...
1:N 관계 간의 중복 데이터 쿼리 성능 개선
왜? 팝업 테이블에는 1:N 관계로 이용권, 장치, 이미지 등이 존재하였다. 요구사항 매번 팝업을 등록 시 기존에 중복되는 팝업 valid (이용권+기간+장치를 체크, 중복되는 팝업이 없는지 체크) poc / 이용권 / 기간 하나라도 겹치는것이 있다면 노출 불가 전체(all) 등록시 -> [전체(all), 유료(paid) 이용권별, 무료(free)] 노출기간 중복 체크 무료(free) 등록시 -> [전체(all), 무료(free)] 노출기간 중복 체크 유로(paid) 등록시 -> [전체(all), 유료(...
spring-cache에 대해서
왜? 캐시를 활용할때 어떤 차이가 있으며, 어떤 효과를 지녔는지? spring-cache + ehcachebuild.gradle123456//ehcacheimplementation 'org.springframework.boot:spring-boot-starter-cache'implementation 'org.ehcache:ehcache:3.10.0'// JSR-107 API를 사용하기 위함implementation 'javax.cache:cache-api...
스프링 핵심 원리 고급편(AOP 포함)(작성중)
왜? AOP 등등 다양한 기술을 spring 에 접목하기위함 크게 5가지 기술과 디자인 패턴한다. 쓰레드 로컬 패턴들(템플릿 메서드 패턴, 콜백 패턴, 프록시 패턴, 데코레이터 패턴) 동적 프록시 기술 빈 후처리 AOP 로그추적기V0 (가장 단순한 구조) C-S-R123456789101112@RestController@RequiredArgsConstructorpublic class OrderControllerV0 { private final OrderServiceV0 orderService; @GetM...
2023년을 마무리 하며...(2024년 목표)
2023년 목표 체크리스트 달성률개발 목표 달성률 (57%), 비개발 목표 달성률 (63%) 이젠, 내가 원하는 길을 정확히 걷는 느낌이다.2022년 정말 열심히 공부하여, java spring 백엔드 개발자로써 2023년 01월 엠앤XX를 합격하였다. 하지만 만족스럽지 못했다. 3개월 동안 RPA(코딩X, drag&drop), gitlab CI/CD 를 개발하며 단순히 코더가 된 느낌이였다. 내가 지금까지 공부한 java, CS, spring, docker, 아키택처, 알고리즘, 자료구조 등을 전혀 활용할 기회가 없었...
DB에 대한 전반적인 개념(SQL,NoSQL)
DB에 대한 전반적인 개념참조1참조2참조3참조4참조5참조6 왜? DB에는 크게 SQL 과 no-SQL이있다는것을 알고있었지만, DB의 세부적인 구분과 각 DB의 장단점을 알아야 추후 프로젝트를 진행할때 필요하여 작성하게 되었다. DB를 자세히 알기전 용어정리후 큰그림부터 탑다운으로 내려가는 것으로 학습하였다. 먼저 RDB 위주의 개념 설명 추후: index, 쿼리, explain관련 내용 추가, marina db, progresql vacuum알아보기 RDB위주의 데이터 베이스(DB) 용어 관계형 데이터베이스(RDB): 여러...
(핵심요약)스프링 부트와 JPA 활용2
왜?JPA 실전편 2편에서 계속 업그레이드하자.. JPA 지식이 부족하다 회원 등록 API Entity와 DTO를 나누자..당연 (의존성 없애야함. 확장성도 필요) 당연히 Entity를 파라미터로 받아도안된다. 회원 수정 API controller 단 12345678910@PutMapping("/api/v2/members/{id}")public UpdateMemberResponse saveMemberV2( @PathVariable("id") Long id, @RequestBod...
avatar
lostcatbox
내 생각을 자유롭게 만들 때까지
FRIENDS
friendA friendB