Home
kimcno3
Cancel

[CS 스터디] 자료구조 2

11. 재귀함수에 대해 설명해 주세요. 함수 본인을 내부적으로 다시 호출하면서 동일한 동작을 반복 수행하는 함수를 의미합니다. 장점 함수의 코드가 단순해집니다. 코드상에서 변수를 여러개 선언하지 않아도 됩니다. 단점 함수 호출 후, 이전 함수로의 복귀 과정에서 Context S...

[CS 스터디] 자료구조 1

1. 시간복잡도와 공간복잡도에 대해 설명해 주세요. 상대 속도 / 하드웨어에 따라 시간은 다를 수 있어 처리 횟수로 봐야 한다. 시간 복잡도 : 알고리즘이 주어진 입력 크기에 따라 소요되는 시간, 즉 처리 횟수의 총량을 의미 공간 복잡도 : 알고리즘이 주어진 입력 크기에 따라 소요되는 메모리 공간의 총량을 의미 알고리즘의 최적화 ...

JWT 인증 방식이 세션 인증 방식을 대체할 수 있는지에 대한 의문

시작하며 JWT 인증 방식은 세션 인증 방식과 다르게 인증 대상에 대한 정보를 DB에 저장하지 않고 토큰만으로 로그인 여부와 같은 인가 처리를 할 수 있다고 알려져 있습니다. 이러한 특징은 stateful한 세션과 다르게 stateless한 성격을 가지기 때문에 더 가벼운 방식으로 동일한 기능을 구현할 수 있습니다. 하지만 JWT 인증 방식만을 사용...

JPA 일대일 연관관계 매핑 시 고려사항

해당 글을 JPA를 사용하면서 일대일(1:1) 관계를 매핑하는 방식과 이를 통해 발생할 수 있는 문제점을 파악하고 이에 따른 해결방법을 고민해보기 위한 글입니다. 일대일 관계에 대한 문제를 알아보기 전에 일대다 또는 다대일 관계 매핑의 경우는 일대일과 어떻게 다른지 알아보도록 하겠습니다. 일대다 단방향보단 다대일 단방향, 필요에 따라서는 다대일 양...

트랜잭션&격리수준

트랜잭션 트랜잭션은 작업의 완전성을 보장하는 것을 의미합니다. 논리적인 작업 셋이 정상적으로 모두 처리가 완료되었다면 그 때 커밋을 통해 데이터 변경을 이뤄지도록 하거나 중간에 하나의 쿼리라도 에러가 발생했다면 작업 시작 이전의 상태로 원복시키는 것이 트랜잭션의 역할입니다. 즉, 논리적인 작업 셋의 내용이 완전히 적용되거나 그렇지 않다면 아예 적용되지...

Kotlin 기초 1

1. 코틀린에서 변수를 다루는 방법 변수 타입 종류 var : 가변 변수 val : 불변 변수 (= final) 변수 특성 var, val 모두 최초 한번은 초기값 할당이 가능하다. val의 경우, element 추가는 가능하다.(final List 객체에서 add...

AWS 리소스를 활용한 도메인 연동

요구사항 기술 지원 업무의 일환으로 AWS 리소스를 활용한 도메인 연동 기능에 대한 관리 및 유지보수 업무를 담당하게 되었습니다. 제대로된 이해 없이 해당 업무를 진행할 경우, 예상치 못한 에러 케이스를 마주할 때 정확한 원인 파악과 대처가 불가능하게 때문에 AWS 내에서 해당 기능의 설계 및 동작 원리에 대해서 이해가 필요했습니다. 우선 기능 구현...

Spring Batch

요구사항(문제점) 배치 코드가 Spring Batch로 구현되어 있었고 Spring Batch에 대한 전반적인 이해가 필요했습니다. Spring Batch Spring Batch는 대량의 데이터를 처리하는 일괄 처리(Batch Processing) 작업을 구현하는데 사용되는 Spring 기반 프레임워크 입니다. 일괄 처리 작업은 주로 데이터베이스 ...

팩토리 메소드 패턴 & 템플릿 메소드 패턴 적용

요구사항(문제점) 기존에 제공하던 쿠폰은 상품 가격에 대한 할인가 적용만 가능했으며 VOC(Voice of Customer, 고객이 비즈니스, 제품 또는 서비스에 대해 말하는 것을 포착한 것) 중 가장 많은 요구사항으로 뽑히는 배송비 무료 쿠폰을 구현해야 하는 업무를 진행하게 되었습니다. 문제는 기존 코드의 구현 방식은 온전히 상품 가격에 대해서만...

[football] Setter를 사용하지 않고 환경변수 호출을 위한 고민

문제점 Redis 구성을 위해 application.yml에서 host, port, node 주소 등의 환경변수를 가져오는데 있어 @ConfigurationProperties는 Setter를 기반으로 바인딩을 하게 됩니다. 이로 인해 외부에서 node 값에 대해 조작해 데이터가 변경될 가능성이 있었습니다. 또한 @Value로 변수를 가져오는 방식...