본문 바로가기

반응형

기초이론

(24)
[인프런]스프링 핵심원리 기본편_스프링으로 전환하기 스프링 적용 드디어 본격적으로 스프링을 적용해볼 것이다. 먼저 이전에 작성했던 소스 중 AppConfig에 어노테이션을 추가한다. @Configuration : 스프링 컨테이너가 이 어노테이션이 붙어있는 클래스는 빈(Bean)을 구성하기 위한 클래스임을 알려준다. 이를 사용하면 자동으로 빈으로 등록하고 @Bean이 있는메소드를 찾아서 빈(Bean)을 생성한다. @Bean : 개발자가 직접 작성한 메소드를 통해 반환되는 객체를 Bean으로 만든다. @Component : 개발자가 직접 작성한 클래스를 빈으로 만든다. 먼저 AppConfig에 어노테이션을 추가한다. import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscoun..
[인프런]스프링 핵심원리 기본편_IoC, DI, 그리고 컨테이너 제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다. 1. 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 2. 즉 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 3. 반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 4. 이를 통해 프로그램의 제어 흐름은 AppConfig가 가져가게 된다. 5. 예를 들어 ~ServiceImpl 들은 필요한 인터페이스를 호출하지만 그에 대해 어떤 구현 객체들이 실행될지는 모른다. AppConfig로 분리하기 이전 코드 : private final Test..
파일시스템(File System) 목차 1. 파일 시스템의 정의 2. 데이터 저장 과정 3. 데이터 찾는 과정 4. 파일 시스템의 종류 1) FAT(File Allocation Table) 2) FAT12 3) FAT32 4) exFAT(Extended File Alocation Table) 5) NTFS(New Technology File System) 6) ext 7) ext4 8) APFS(Apple File System) 5. 파일 시스템의 기능 6. 파일 시스템을 사용하는 이유 파일 시스템(File System) 저장 매체에 파일을 저장할 때 쓰는 시스템 중 하나를 말한다. 저장매체란 SSD, USB, 클라우드 등을 말한다. 파일 시스템은 메타(META)와 데이터(DATA) 영역으로 나뉜다. META 영역은 파일명, 권한, 크기..
[인프런]스프링 핵심원리 기본편_좋은 객체 지향 설계의 5가지 원칙(SOLID) 좋은 객체 지향 설계의 5가지 원칙(SOLID) SOLID란, 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것을 말한다. 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 2. OCP(Open-Closed Principle) : 개방-폐쇄 원칙 3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 5. DIP(Dependency Inversion Principle) : 의존관계 역전 원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙 한 클래스는 하나의 책임만..
[인프런]스프링 핵심원리 기본편_좋은 객체 지향 프로그램이란? 객체 지향 특징 추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 객체 지향 관점에서 클래스를 정의하는 것을 말한다. 캡슐화 : 객체가 맡은 역할을 수행하기 위한 하나의 목적을 묶는 것으로, 특정 기능을 위한 함수를 작성하는 것을 말한다. 상속성 : 상위 개념의 특징을 하위 개념이 물려받는 것이다. 다형성 : 객체 지향에서 가장 핵심적인 부분으로, 오버라이딩을 예시로 들 수 있다. 객체 지향 프로그래밍이란 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위인 "객체"들의 모임 으로 파악하려 하는 것 이다. 각각의 객체는 메시지를 주고받고 데이터를 처리할 수 있다. 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. (= 다형..
[인프런]스프링 핵심원리 기본편_스프링이란? 스프링이란 스프링이란 여러 기술들의 모음을 말한다. 여기서 여러 기술들이란 필수적인 기술과 선택적인 기술로 나뉘는데, 몇개의 예시를 가져오자면 다음과 같다. 필수 : 스프링 프레임워크, 스프링 부트 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 이에 대해 간략하게 정리했다. 스프링 데이터 : CRUD를 좀 더 편하게 할 수 있도록 도와주는 것이다. ex) spring Data JPA 스프링 세션 : 세션 기능을 더 편하게 쓸 수 있도록 도와주는 것이다. 스프링 시큐리티 : 보안과 관련된 기술이다. 스프링 Rest Docs : API 문서화를 편리하게 해 주는 것이다. 스프링 배치 : 배치 처리에 특화된 기술이다. (배치 처리란, 데이터가..
동기(synchronous)와 비동기(asynchronous), 블로킹(blocking)과 논블로킹(non_blocking) 동기(synchronous) 요청과 결과가 동시에 일어나는 것으로, 요청을 하게되면 결과가 나올때까지 아무것도 못하고 대기해야하는 작업입니다. 하나의 작업이 완전히 끝난 후에만 또 다른 작업을 진행할 수 있습니다. 얘를 들어 컴퓨터를 킨다고 가정해보자. 컴퓨터가 켜지기 전까지 사용자는 인터넷을 사용하거나 다른 프로그램들을 실행시킬 수 없다. 컴퓨터가 완전히 켜지기 전까지 기다리기만 해야하는 것이다. 비동기(asynchronous) 요청과 결과가 동시에 일어나지 않는 것으로, 요청을 한 후에 결과를 기다리지 않고 다른 요청이나 활동을 해도 되는 작업입니다. 요청을 한 후에 결과가 도출되는 시간 동안 다른 작업을 수행할 수 있습니다. 동기(synchronous)와 비동기(asynchronous)의 차이점 처..
인덱스(Index)와 힌트(Hint) 인덱스(Index) 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 특정 컬럼에 인덱스를 생성하면 해당 컬럼에 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 쿼리문에 인덱스가 생성된 컬럼을 WHERE 조건으로 걸어주면 옵티마이저가 판단하여 생성된 인덱스를 탈 수 있다. 옵티마이저 : 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다. 목차와 같은 역할을 한다. 인덱스(Index)의 구조 자료 구조에는 배열, 리스트, 스택, 큐, 해시, 트리 등 수많은 종류가 존재한다. 그 중에서도 인덱스에서 가장 많이 쓰이는 구조는 트리구조이며, 그 중에서도 'B Tree' ..