본문 바로가기

전체 글

(186)
[260304수] NoSQL데이터베이스의 유형에는 어떤 것들이 있나요? 키-값 데이터베이스- 구조 단순- 빠른 읽기 및 쓰기 성능 제공- Redis, Amazon, DynamoDB 문서 지향 데이터베이스- JSON, BSON, XML등의 형식으로 데이터 저장- 유연한 스키마- 복잡한 데이터 구조를 쉽게 표현- MongoDB, CouchDB- ex. 콘텐츠 관리 시스템, 사용자 프로필 저장 열 지향 데이터베이스- 대량의 데이터 처리에 적합- 행마다 각기 다른 수의 열와 여러 데이터 유형을 가질 수 있음- Apache Cassandra, HBass 그래프 데이터베이스- 복잡한 관계 표현- 레이블(그룹화된 노드)을 통해 쿼리를 쉽게 작성, 효율적으로 실행- ex. 소셜 네트워크 분석, 추천 시스템 시계열 데이터베이스- 시간에 따라 변화하는 데이터 저장- 타임스탬프가 있는 매트릭,..
[260303화] 템플릿 메서드 패턴이란 무엇인가요? 기능의 뼈대와 구현을 분리하는 행위 장점- 공통 로직을 상위 클래스에 모아 중복 코드를 줄일 수 있다.- 코드의 재사용성 단점- 하위 클래스를 개발할때까지 어떤 방식으로 동작할지 예측 어려움 - 상위 클래스 수정 시 모든 하위 클래스를 변경해야 한다. // 상위 클래스 - 뼈대(알고리즘 순서) 정의abstract class Beverage { // 템플릿 메서드 - 전체 흐름을 고정 // final로 하위 클래스가 순서를 바꾸지 못하게 막음 final void makeBeverage() { boilWater(); // 공통 brew(); // 하위 클래스가 구현 pourInCup(); // 공통 ad..
[260302월] 논리 삭제와 물리 삭제의 차이점은 무엇인가요? 데이터베이스에서 데이터를 삭제하는 방법이다. - 물리 삭제 : DELETE명령어를 통해 직접 세이터 삭제- 논리 삭제 : UPDATE명령어를 통해 삭제 여부를 나타내는 컬럼을 수정 물리 삭제논리 삭제장점- 저장 공간 확보- 검색 속도 향상- 데이터 복구에 용이- 비즈니스 의사결정에 사용단점- 데이터 복구 어려움- 데이터가 비즈니스 의사결정에 사용되기 어려움- 성능 악영향- 조회 실수 등
[260227금] 어떤 예외가 발생하면 트랜잭션을 롤백하나요? Checked Exception - 컴파일 시점에 예외 처리를 강제 -> 개발자가 적절히 처리 가능- 기본적으로 트랜잭션 롤백 XUnchecked Exception - 트랜잭션 롤백 O @Transactional의 rollbackFor나 noRollbackFor속성을 사용하여 특정 Checked Exception에 대해서도 롤백을 유도하거나, 반대로 롤백하지 않도록 설정할 수 있다. 자바(EE)환경에서는 컨테이너가 관리하는 트랜잭션(CMT)과 개발자가 직접 관리하는 프로그래밍 방식의 트랜잭션 제어 모두 존재
[260226목] 스레드 풀 포화 정책이란 무엇인가요? 자바의 ThreadPoolExcutor를 기준으로 설명말 그대로 스레드 풀이 포화 상태인 경우의 행동을 결정하는 정책이다.- corePollSize : 상시 유지하느 스레드 수- workQueueSize : 작업 대기열 크기- maxPoolSize : 스레드를 추가할 수 있는 최대 수포화 상태란? 스레드가 maxPoolSize까지 늘어나고 대기열까지 꽉 찬 상태 포화 정책의 종류 1. AbortPolicy : RejectedExecutionException 발생2. DiscardPolicy : 신규 요청을 무시3. DiscardOldestPolicy : 작업 대기열에서 가장 오래된 요청을 버리고 신규 요청을 추가4. CallerRunsPolicy : 요청 스레드에서 해당 작업을 시행
[260225수] ThreadLocal에 대해 설명해주세요. Java에서 각 스레드마다 독립적인 변수를 저장할 수 있도록 도와주는 클래스보통 여러 스레드가 공유 자원을 사용하면 동시성 문제가 발생할 수 있는데, ThreadLocal을 사용하면 스레드별로 데이터를 분리할 수 있어 동기화 없이 안전하게 사용 가능하다. 각 스레드는 자신만의 ThreadLocalMap을 가지고 있고, ThreadLocal을 키로 사용하여 값을 저장한다. 하나의 스레드에서 여러 개의 ThreadLocal을 사용할 수 있으며, ThreadLocal은 현재 스레드의 ThreadLocalMap을 제어하는 역할을 한다. Spring생태계에서는 ThreadLocal을 사용하여- 트랜잭션 동기화 관리- 사용자 인증 정보 관리- 웹 요청의 attribute관리 등의 기능을 제공 장점각 스레드는 Th..
[260224화] Gradle에 대해 설명해주세요. Java, Kotlin, Scala 등 JVM에서 실행되는 언어에서 자주 사용되는 빌드 자동화 도구기존 Ant와 Maven의 단점을 보완하여 증분 빌즈, 빌드 캐시, 데몬 프로세스를 활용해 빌드 속도를 최적화하고, 멀티 프로젝트를 쉽게 관리할 수 있도록 설계 빌드 자동화 도구를 왜 사용하는가?- 컴파일, 테스트, 패키징, 배포와 같은 반복 작업을 자동화 -> 개발 생산성을 높임- 일관된 빌드 환경을 제공. 어떤 환경에서나 동일한 빌드 결과를 보장할 수 있다.- 외부 라이브러리를 자동으로 관리하여 의존성 버전 충돌을 줄일 수 있다. Maven / Gradle의 차이점 - 빌드 스크립트 작성 방식과 빌드 속도 MavenGradle빌드 스크립트XMLGroovy/Kotlin DSL빌드 속도느림빠름의존성 관리기..
[260223월] JPA Fetch Join과 페이징을 함께 사용할 때 주의점을 설명해 주세요.