분류 전체보기 679

[Spring] 스프링 핵심 원리 - 빈 스코프

스코프: 빈이 존재할 수 있는 범위 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입(초기화 메서드까지) 까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 클라이언트에게 빈을 반환하고, 스프링 컨테이너는 이후에 빈을 관리하지 않음(이후에는 클라이언트가 관리) 컨테이너에 요청할 때마다 새로 생성 스프링 컨테이너에서 빈을 조회할 때 생성되고, 초기화 메서드도 실행 종료 메서드가 호출되지 않음 (클라이언트가 직접 해야함) 프로토 타입 스코프, 싱글톤 빈 함께 사용 시 문제점 public class SingletonWithPrototypeTest1 { @Test void prototypeFin..

BACK/SPRING 2024.03.04

[Spring] 스프링 핵심 원리 - 빈 생명주기 콜백

스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존 관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링 종료 스프링은 의존 관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려줌스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줌 💡 객체의 생성과 초기화(무거운 동작)를 분리하자  빈 생명주기 콜백 지원 3가지 인터페이스(InitializingBean, DisposableBean) InitializingBean 은 afterPropertiesSet() 메서드로 초기화를 지원한다.DisposableBean 은 destroy() 메서드로 소멸을 지원한다.잘 사용 X  설정 정보에 초기화 메서드, 소멸 메서드 지정설정 정보에 @Bean(i..

BACK/SPRING 2024.03.04

[운영체제] 교착 상태(Deadlock)

식사하는 철학자 문제 1. 일정 시간 생각을 한다. 2. 왼쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 3. 오른쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 4. 양쪽의 포크를 잡으면 일정 시간만큼 식사를 한다. 5. 오른쪽 포크를 내려놓는다. 6. 왼쪽 포크를 내려놓는다. 7. 다시 1번으로 돌아간다. 만약 모든 철학자들이 동시에 자신의 왼쪽 포크를 잡는다면, 모든 철학자들이 자기 오른쪽의 포크가 사용 가능해질 때까지 기다려야 한다. 그런데 모든 철학자들이 그러고 있다. 이 상태에서는 모든 철학자가 영원히 3번 상태에 머물러있어 아무것도 진행할 수가 없게 되는데, 이것이 교착(Deadlock)상태이다. 철학자: 프로세스 / 스레드 포크: 자원..

CS/운영체제 2024.02.08

[컴퓨터구조] 메모리(RAM), 캐시 메모리

메모리 데이터를 저장하는 기억 장치 RAM 주기억장치 특징 RAM에는 실행할 프로그램의 명령어와 데이터가 저장 RAM은 휘발성 저장 장치이고, 보조 기억 장치는 비휘발성 저장 장치 보조기억장치에는 CPU가 실행하고 싶은 프로그램을 저장하고, 이를 RAM으로 복사해 저장 후 실행 데이터 읽는 속도가 보조기억장치에 비해 빠름 CPU와 주기억장치에 캐시 메모리가 존재 용량과 성능 RAM 용량이 크면 많은 데이터를 미리 보조기억장치에서 가져와 미리 RAM에 저장 가능 RAM 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는 데 유리 용량이 필요 이상으로 커졌을 때 속도가 그에 비례해 증가하지는 않음 종류 DRAM(Dynamic RAM) : 시간이 지나면 저장된 데이터가 사라지는 RAM. 주기적으로 데이터를 ..

CS/컴퓨터구조 2024.02.08

[컴퓨터구조] CPU의 구성 요소, 작동 원리

1. CPU란? CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치이다. CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있다. 2. CPU의 구성 요소 ALU 계산하는 부품 레지스터로부터 받아들인 피연산자와 제어장치로부터 받아들인 제어 신호로 연산을 수행 연산 결과와 플래그(추가적인 상태 정보)를 내보내 레지스터에 저장 제어장치 제어 신호를 내보내고, 명령어를 해석하는 부품 클럭 신호, 명령어 레지스터로부터 해석할 명령어, 플래그 레지스터 속 플래그 값, 제어 버스로 전달된 외부로부터 전달된 제어 신호를 받아들인다. CPU 내부에 제어 신호 내보냄(ALU, 레지스터에 전달) ALU에는 수행할 연산을 ..

CS/컴퓨터구조 2024.02.08

[DB] 프로시저, 트리거, 사용자 정의 함수

프로시저 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 특정 기능을 수행하는 일종의 트랜젝션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL작업을 수행한다. 프로시저 구성 DECLARE : 프로시저의 명칭, 변수, 인수, 데이터 타입을 정 의하는 선언부 (필수) BEGIN / END : 프로시저의 시작과 종료를 의미 (필수) CONTROL : 조건문 또는 반복문이 삽입, 순차적 처리 SQL : DML, DCL이 삽입돼, 조회, 추가, 수정, 삭제 작업을 수행 EXCEPTION : 구문 실행 중 예외 발생 시 처리 방법 정의 TRANSACTION : 작업들을 DB에 적용할지 취소할지 결정 하는 처리부 프로시저 생성 CREATE PROCEDURE 프로시저명(파라미터) BEGIN ..

DB 2024.01.31

[DB] 데이터베이스 키(Key)의 개념 / 종류

관계형 데이터베이스에서 키(key)는 데이터베이스 테이블에서 각 행을 유일하게 식별하는 데 사용되는 필드나 필드의 조합을 말한다. 기본키(Primary key) 유일성과 최소성을 만족하는 키이다. 중복된 값을 가질 수 없다. Null 값을 가질 수 없다. 유일성: 하나의 키 값으로 하나의 튜플만을 유일하게 식별 최소성: 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성 ex) 사용자 테이블에서의 사용자 ID 후보키(Candidate key) 기본키가 될 수 있는 후보들이며 유일성과 최소성을 모두 만족해야 한다. 후보키의 조합 중에 기본키를 선택한다. ex) 사용자 테이블의 이메일 주소, 전화번호 대체키(Alternate key) 후보키가 둘 이상일 때 기본키로 선택되지 않고 남은 키이다. e..

DB 2024.01.31

[DB] 데이터베이스 용어 정리

데이터베이스 : 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음 DBMS(DataBase Management System) : 데이터베이스를 제어, 관리하는 통합 시스템 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 query를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 또한 데이터베이스는 실시간 접근과 동시 공유가 가능하다. DataBase 용어 Entity : 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사 : 현실 세계에서 구별할 수 있는 실제 객체나 사물을 나타내는 개념 일반적으로 엔티티는 데이터베이스의 테이블에 대응되며, 테이블에 저장된 각각의 레코드는 엔티티의 하나의 인스턴스에 해당한다. Relation : 데이터베이스에서 정보를 구..

DB 2024.01.31

[네트워크] HTTP (무상태성, 비연결성)

HTTP HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 hypertext 문서 간의 링크를 통해서 연결할 수 있는 html을 전송하는 프로토콜로 시작 지금은 html 텍스트 뿐만 아니라 http 메시지에 모든 것을 전송 http1/1.1 이 가장 많이 사용되는 버전 2, 3은 성능 개선에 초점 1.1이나 2는 tcp 프로토콜 위에서 동작 3은 udp 기반으로 개발됨 tcp 프로토콜이 속도가 느리기 때문에 성능 개선을 위해 udp 프로토콜 위에 애플리케이션 레벨에서 최적화도록 새로 설계된게 HTTP3 클라이언트 서버 구조 HTTP는 클라이언트 서버 구조로 되어있다. 양쪽이 독립적으로 진행할 수 있게 된다. Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대..

CS/네트워크 2024.01.31

[Spring] 스프링 핵심 원리 - 의존관계 자동 주입

의존관계 주입 방법 의존관계 주입 방법은 크게 네가지가 있다.참고로 의존관계 자동 주입은 스프링 컨테이너과 관리하는 스프링 빈이어야 동작한다. 1. 생성자 주입 @Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository..

BACK/SPRING 2024.01.31
반응형