F-Lab 66

[F-Lab 모각코 페이백 26일차] 스프링 트랜잭션 (Spring Transaction) -2

학습 목표 스프링 트랜잭션 (Spring Transaction) TIL 스프링 트랜잭션 (Spring Transaction) 스프링 트랜잭션 (Spring Transaction) Spring Framework는 데이터베이스 트랜잭션 관리를 위한 독특한 방식을 제공합니다. Spring에서의 트랜잭션 관리는 크게 두 가지 방법으로 나뉘어집니다: 선언적 트랜잭션 관리(Declarative Transaction Management)과 프로그래밍적 트랜잭션 관리(Programmatic Transaction Management). 1. 선언적 트랜잭션 관리: 이 방식은 비즈니스 로직 코드와 별개로 트랜잭션 관리를 수행합니다. 주로 어노테이션(`@Transactional`)을 사용하거나 XML 구성을 통해 트랜잭션의..

[F-Lab 모각코 페이백 25일차] ORM, Spring MVC (작동과정과 컴포넌트)

학습 목표 ORM Spring MVC TIL ORM Spring MVC ORM ORM은 Object-Relational Mapping의 약자로, 객체지향 프로그래밍 언어를 사용하여 호환되지 않는 유형 시스템 간에 데이터를 변환하는 프로그래밍 기법입니다. 일반적으로 이는 관계형 데이터베이스와 객체 지향 프로그램 사이의 데이터 변환을 의미합니다. ORM의 주요 장점 중 하나는 개발자가 SQL을 직접 작성하는 대신 더 고차원의 객체 중심 코드로 데이터베이스 작업을 수행할 수 있다는 것입니다. 이렇게 함으로써, 데이터베이스 설계와 비즈니스 로직 간의 간극을 줄이고 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 예를 들어, Python의 SQLAlchemy나 Django ORM, Java의 Hibernate..

[F-Lab 모각코 페이백 24일차] 팀코칭 질문 정리 (인터뷰 준비, 개념 학습) 쿠키, 세션, JDBC, 트랜잭션

학습 목표 팀코칭 질문 답변 TIL 쿠키와 세션 JDBC 트랜잭션 쿠키와 세션 쿠키와 세션은 웹에서 클라이언트의 상태 정보를 서버 측에서 관리하는 데 사용되는 기술입니다. 1. 쿠키(Cookie) 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다. 이름, 값, 만료 날짜(쿠키 저장 기간), 경로 정보가 포함됩니다. 클라이언트의 웹 브라우저가 웹 서버에 요청을 보낼 때마다 쿠키의 값을 함께 전송합니다. 쿠키는 주로 사용자가 사이트를 방문했을 때 사용자의 선호 설정 등을 기억하는 데 사용됩니다. 2. 세션(Session) 세션은 서버에서 관리하는 클라이언트의 정보입니다. 클라이언트가 웹 서버에 접속해 웹 브라우저를 통해 특정 웹 사이트를 사용하면 해당 서버에서는 클라이언트에게 유일한 세..

[F-Lab 모각코 페이백 23일차] 팀코칭 질문 정리(인터뷰 준비, 개념 학습)

학습목표 팀코칭 질문 답변 TIL 개념 학습 시스템 캐시 (L1, L2, L3) 데몬 스레드와 유저 스레드 차이 Serializable 인터페이스 UDP 와 TCP의 차이 NI/O Try with resource 시스템 캐시에 대하여 설명해주세요. (L1, L2, L3) 캐시(cache)는 CPU와 주기억장치 사이에서 빠르게 데이터를 저장하고 가져오기 위한 중간 저장소입니다. CPU가 필요한 데이터를 찾을 때, 캐시에 먼저 접근하게 되는데, 이는 캐시가 주기억장치에 비해 훨씬 빠르게 접근할 수 있기 때문입니다. 필요한 데이터가 캐시에 있을 경우 (이를 캐시 히트라고 합니다), CPU는 매우 빠르게 해당 데이터를 가져올 수 있습니다. 그러나 필요한 데이터가 캐시에 없을 경우 (이를 캐시 미스라고 합니다),..

[F-Lab 모각코 페이백 22일차] 스프링 트랜잭션 (Spring Transaction)

학습 목표 스프링 트랜잭션 (Spring Transaction) TIL 스프링 트랜잭션 스프링 트랜잭션 (Spring Transaction) Spring Framework에서 제공하는 Transaction 관리는 웹 애플리케이션에서 데이터 일관성을 보장하는 매우 중요한 부분입니다. Spring Transaction은 두 가지 방식으로 처리할 수 있습니다. 1. 선언적 트랜잭션(Declarative Transaction): 이 방식은 XML 설정이나 어노테이션(@Transactional)을 통해 트랜잭션을 관리합니다. 이는 코드와 설정을 분리하므로 코드의 가독성을 높이고 유지 보수를 용이하게 합니다. `@Transactional` 어노테이션을 메소드나 클래스에 추가하여 해당 메소드나 클래스에 포함된 작업이..

[F-Lab 모각코 페이백 21일차] 어댑터 패턴, SOLID 원칙, 스프링 프레임워크, 스프링 부트

학습 목표 어댑터 패턴 SOLID 원칙 스프링 프레임워크 & 스프링 부트 TIL 어댑터 패턴 SOLID 원칙 단일 책임 원칙 개방 폐쇄 원칙 리스코프 치환 원칙 인터페이스 분리 원칙 의존 역전 원칙 스프링 프레임워크 스프링 부트 어댑터 패턴 어댑터 패턴(Adapter Pattern)은 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환하는 디자인 패턴입니다. 어댑터는 호환되지 않는 인터페이스 문제를 해결하여 서로 다른 클래스들이 함께 작동하도록 만들 수 있습니다. 어댑터 패턴에는 두 가지 유형이 있습니다: 클래스 어댑터와 객체 어댑터. 1. 클래스 어댑터: 이 패턴은 상속을 사용하여 두 인터페이스를 연결합니다. 타겟 인터페이스와 어댑터 클래스가 하나로 결합되고, 어댑터는 상속을 통해 아답티..

[F-Lab 모각코 페이백 20일차] 싱글톤 패턴, 팩토리 패턴

학습 목표 디자인 패턴 싱글톤 팩토리 TIL 싱글톤 Lazy Initialization(지연 초기화) Bill Pugh Singleton (Initialization on Demand Holder idiom) (Holder)(내부 클래스) 팩토리 단순 팩토리 패턴 팩토리 메서드 패턴 추상 팩토리 패턴 싱글톤 싱글톤 디자인 패턴은 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 패턴입니다. 이 패턴은 전역 변수를 사용하지 않고도 클래스의 인스턴스를 전역적으로 접근 가능하게 만들기 때문에 유용합니다. 이 패턴은 특히 자원이 제한적인 상황에서 유용하며, 여러 곳에서 동일한 객체에 접근해야 할 때도 사용됩니다. 예를 들어, 로그 파일 작성기, 데이터베이스 연결, 파일 시스템 등의 작업에서 싱글톤 패턴을 사용..

[F-Lab 모각코 페이백 19일차] 팀코칭 질문 정리(인터뷰 준비, 개념 학습)

학습 목표 팀코칭 질문 정리 TIL 자바 개념 해시맵에 대해 설명해주세요 컬렉션의 한 자료구조이고 해시맵은 맵이라는 인터페이스를 구현한 자료구조로 키-값 쌍을 저장하는 데 사용됩니다. 해시 함수를 이용하여 해시를 생성하여 이를 활용하여 저장을 하고 찾을 때도 해시로 위치를 찾습니다. concurrenthashmap이 테이블과 비교하면 어떻게 보완이 되었을까요? ConcurrentHashMap은 기존 해시맵이 가지고 있는 동시성 문제를 해결하기 위해 나온 자료구조입니다. 해시테이블도 동기화 매커니즘을 제공하지만 이와는 다른 동시성을 위한 세그먼트라는 개념을 도입해 동시성 문제를 해결하였습니다. 추가적으로 ConcurrentHashMap은 해시맵이 제공하는 체이닝 방법 이외에 리사이징이라는 방법도 제공합니다..

[F-Lab 모각코 페이백 18일차] 팀코칭 질문 (인터뷰 준비 및 개념 학습), MVVM 패턴, MVP 패턴

학습 목표 팀코팅 질문 답변 MVVM 패턴 MVP 패턴 TIL MVVM View Model 데이터 바인딩 Command 패턴 Pull 방식 MVP Presenter Push 방식 동기화 문제는 왜 발생하나요? 동기화 문제는 주로 여러 프로세스나 스레드가 동시에 실행될 때 데이터를 공유하거나 통신할 때 발생하는 문제를 말합니다. 동기화 문제의 원인으로는 경쟁 조건, 데드락, 자원 스타베이션 ,동시성 문제가 있습니다. i++은 단일 연산 같은데 왜 동기화 문제가 발생하나요? i++ 같은 연산은 보통 단일 연산으로 생각될 수 있지만, 실제로는 여러 단계로 이루어진 복합 연산입니다. 메모리에서 변수 i의 현재 값을 읽습니다. 그 값을 증가시킵니다. 증가된 값을 메모리에 다시 씁니다. 임계 영역에 대해서 설명해주..

[F-Lab 모각코 페이백 17일차] 팀코칭 질문 정리 (인터뷰 준비, 개념 학습)

학습목표 팀코칭 질문 답하기(개념 학습) TIL 모니터락 SOLID 원칙 모니터 락(monitor lock) 자바에서 모니터 락(monitor lock)은 동시성 제어를 위해 사용되는 특별한 유형의 락입니다. 자바에서 모든 객체는 기본적으로 내장된 락을 가지고 있으며, 이를 intrinsic lock 또는 monitor lock이라 부릅니다. 이것은 동시에 여러 스레드가 같은 객체에 액세스하려고 시도할 때 발생할 수 있는 데이터 경쟁 조건을 방지하는 데 사용됩니다. 모니터 락은 synchronized 키워드를 사용하여 획득할 수 있습니다. synchronized 키워드가 붙은 메서드를 호출하거나 synchronized 블록을 진입하려는 스레드는 해당 객체의 모니터 락을 획득해야 합니다. 이미 다른 스레드..