etc/Today, I Learned 6

캐시(Cache)와 쿠키(Cookie)

📌 저장 위치 캐시(Cache) - 브라우저의 메모리나 하드 디스크에 저장됩니다. 쿠키(Cookie) - 사용자의 컴퓨터에 저장됩니다. 📌 사용 목적 캐시(Cache) - 이미지, 스크립트, 스타일 시트 등 웹 페이지의 자원을 저장하고, 다시 요청 시 서버에서 받아오는 대신 캐시에서 바로 제공합니다. 이를 통해 웹 페이지의 로딩 속도를 빠르게 합니다. 쿠키(Cookie) - 웹 사이트에서 사용자의 로그인 정보, 선호 설정 등을 저장하고, 다음 방문 시에도 이를 유지합니다. 📌 유지 기간 캐시(Cache) - 브라우저를 종료하면 캐시도 함께 삭제됩니다. 쿠키(Cookie) - 브라우저를 종료해도 사용자의 컴퓨터에 저장되어 있으며, 만료 기간을 설정할 수 있습니다. 📌 보안 캐시(Cache) - 브라우저에 ..

싱글톤(Singleton) 패턴이란?

📌 싱글톤 패턴이란? 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 이러한 패턴은 주로 프로그램 내에서 하나로 공유를 해야하는 객체가 존재할 때 해당 객체를 싱글톤으로 구현하여 모든 유저 또는 프로그램들이 해당 객체를 공유하며 사용하도록 할 때 사용됩니다. 📌 싱글톤 패턴의 사용하는 이유(장점) 1. 메모리 측면의 이점 싱글톤 패턴을 사용하게 된다면 한 개의 인스턴스만을 고정 메모리 영역에 생성하고, 추후 해당 객체를 접근할 때 메모리 낭비를 방지할 수 있다. 2. 속도 측면의 이점 생성된 인스턴스를 사용할 때는 이미 생성된 인스턴스를 활용하여 속도 측면에 이점이 있다. 3. 데이터 공유의 이점 전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하며 사용할 수 있다. 하지..

JVM 구조와 JAVA의 동작 원리

# JDK 자바 개발 환경으로 자바 어플리케이션을 개발하기 위해 필요한 도구를 제공한다. 자바 언어를 바이트 코드로 컴파일 해주는 자바 컴파일러(javac), 자바 클래스 파일을 해석해주는 역 어셈블리어(javap) 등이 있다. # JRE JRE는 자바 실행 환경으로 JVM,자바 클래스 라이브러리, 기타 자바 어플리케이션 실행에 필요한 파일들을 포함한다. # JVM - JVM은 자바 가상 머신으로 자바 어플리케이션을 실행하는 가상 머신이다. 실제 컴퓨터로 부터 JAVA 어플리케이션 실행을 위한 메모리를 할당 받아 Runtime Data Area를 구성한다. JVM은 인터프리터와 JIT 컴파일러를 통해 바이트 코드를 각 운영체제에 맞는 기계어로 해석시켜 실행시키고, 가비지 콜렉터를 통해 어플리케이션의 동적..

스택(Stack) & 큐(Queue)

1. 스택 (Stack) 스택(stack)이란 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 📌스택의 특징 스택은 위의 사진처럼 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 자료를 삭제할 때도 top을 통해서만 가능하다. 스택에서 top을 통해 삽입하는 연산을 'push' , top을 통한 삭제하는 연산을 'pop'이라고 한다. 따라서 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭..

DI & IoC

1. DI 의존 관계 주입 기능 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결 직접 객체 생성 X, 외부에서 생성 후 주입 시키는 방식 1. 코드가 단순해진다. 2. 모듈간의 결합도가 낮아지고, 유연성이 높아진다. 3. 코드 중복을 방지할 수 있다. 4. 유지보수의 용이하다. DI는 생성자 삽입, 수정자 삽입, 필드 주입이 있다. 생성자 주입은 생성자 호출시점에 딱 1번만 호출되는 것을 보장하며 불변, 필수 의존관계에 사용한다. 수정자 주입은 선택, 변경 가능성이 있는 의존관계에 사용되며 빈을 선택적으로 주입이 가능하다. 필드 주입은 외부에서 변경이 불가능하여 테스트 하기 힘들다. DI 프레임워크 없이는 작동하기 힘들며, 주로 애플리케이션과 관계없는 테스트코드나 @Configuration 같은 ..

@Transactional

Transaction 이란? 데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 예시) 어떤 사람과 거래를 하고 있는 상황이다. 물건을 받기 위해 상대방에게 선입금을 했다. 그런데 벽돌이 도착했다. 사기당한 사실을 깨닫고 나면, 시간을 되돌리고 싶지 않을까? 트랜잭션 개념은 이를 가능하게 한다. 상대방에게 입금하는 작업이 성공했더라도 원하던 물건을 받지 못했다면 입금이 취소되었을 것이다. 모든 작업들이 성공적으로 완료되어야 작업 묶음의 결과를 적용하고, 어떤 작업에서 오류가 발생했을 때는 이전에 있던 모든 작업들이 성공적이었더라도 없었던 일처럼 완전히 되돌리는 것이 트랜잭션의 개념이다. 데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 ..