분류 전체보기 676

[컴퓨터구조] 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

[Spring] 스프링 핵심 원리 - 컴포넌트 스캔

컴포넌트 스캔 컴포넌트 스캔: 설정 정보가 없어도 자동으로 스프링 빈을 등록 @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록 (@Configuration안에도 Component어노테이션이 있기 때문에 컴포넌트 스캔의 대상이 됨) @Autowired: 의존관계 자동 주입 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. 컴포넌트 스캔을 쓰면 빈이 자동으로 등록되는데, 의존관계를 설정해줄 수 없으므로(이전 Appconfig 처럼 의존관계를 수동으로 등록 불가) 생성자에 @Autowired를 사용해 생성자의 매개변수 타입에 맞는 빈 객체를 스프링이 찾아 자동으로 주입해준다. 정리: 1. @ComponentScan은 @Component가 붙은 ..

BACK/SPRING 2024.01.31

[Spring] 스프링 핵심 원리 - 싱글톤 컨테이너

스프링 없는 순수한 DI 컨테이너 AppConfig는 고객이 요청하는 만큼 객체를 생성해 반환 - 메모리 낭비 싱글톤: 클래스의 인스턴스가 딱 1개만 생성되는 디자인 패턴 private 생성자를 사용해 외부에서 임의로 new 키워드를 사용하지 못하도록 함 public class SingletonService { private static final SingletonService instance = new SingletonService(); // JVM이 맨처음 실행할 때 static 영역을 초기화 하면서 딱 한번 객체를 하나 생성 public static SingletonService getInstance(){ // 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용 return ..

BACK/SPRING 2024.01.30

[Spring] 스프링 핵심 원리 - 스프링 컨테이너와 스프링 빈

스프링 컨테이너 생성 스프링 컨테이너 생성 -> 스프링 빈 등록 -> 의존 관계 설정 1. 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); // 구현체 ApplicationContext: 스프링 컨테이너, 인터페이스 스프링 컨테이너는 xml or 애노테이션 기반의 자바 설정 클래스(AppConfig)로 생성 가능 AppConfig.class로 구성 정보 지정 2. 스프링 빈 등록 설정 클래스에 @Bean 이 붙은 메서드 이름을 키로 해서 객체를 스프링 빈으로 등록 *빈이름 직접 부여 가능: @Bean(name=”memberService2”) *빈 이름은 항상 ..

BACK/SPRING 2024.01.30

[Spring] 스프링 핵심 원리 - 객체 지향 원리 적용(+ DI, IoC, 스프링 컨테이너)

memberRepository 인터페이스를 두 repository가 구현한다. memberService는 memberRepository 인터페이스만 의존하도록 한다. package com.hello.core.member; public class MemberServiceImpl implements MemberService{ //private final MemberRepository memberRepository = new MemoryMemberRepository(); // 실제 할당하는 부분이 구현체를 의존 // 인터페이스, 구현체 모두 의존 => dip 위반 private final MemberRepository memberRepository; // 추상화에만 의존하도록 한다. public MemberS..

BACK/SPRING 2024.01.30