CodeStates_BE_44/TIL

CodeStates_BE_44/TIL

[Spring] Spring Framework 핵심 개념_DI

1. DI 1-1. DI란? (Dependency Injection) DI는 IoC라는 원칙을 구현하기 위해서 사용되는 방법 중 하나로 의존성 주입을 말한다. 지금까지는 우리가 직접 설정 파일을 통해 의존성 주입을 했는데 지금부터는 스프링에서 지원하는 DI를 위한 내용을 알아보자. 1-2. 스프링 컨테이너(Spring Container) 스프링 컨테이너는 내부에 존재하는 애플리케이션 빈의 생성, 관리 제거 등 생명 주기를 관리한다. 스프링 컨테이너는 XML, 애너테이션 기반의 자바 설정 클래스로 만들 수 있으며 서로 다른 빈을 연결해 애플리케이션 빈을 연결하는 역할을 한다. ApplicationContext라는 인터페이스를 스프링 컨테이너라고 한다. 정확히 말하면 BeanFactory와 BeanFacto..

CodeStates_BE_44/TIL

[Spring] Spring Framework

1. Framework 1-1. Framework란? “소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것” 이라고 정의하고 있지만, 이 문장만으로 소프트웨어 관점에서 Framework의 의미를 이해하기는 쉽지 않다. 하나의 애플리케이션을 건물이라고 가정한다면, Frame은 건물의 구조라고 생각하면 된다. 즉, 소프트웨어 관점에서의 Framework는 어떤 애플리케이션을 만들기 위한 틀 혹은 구조를 제공하는 것이다. 그렇다면 Framework를 사용했을 때 장점과 단점은 무엇일까? 장점 효율적으로 코드를 작성할 수 있다. 서로 다른 애플리케이션 간의 통신이나, 데이터를 데이터 저장소에 저장하는 등의 다양한 기능들은 Framework에서 라..

CodeStates_BE_44/TIL

[DB] 데이터베이스 설계

1. 관계형 데이터베이스 구조화된 데이터는 하나의 테이블로 표현할 수 있습니다. 사전에 정의된 테이블을 relation이라고도 부르기 때문에 테이블을 사용하는 데이터베이스를 관계형 데이터베이스(Relational database)라고 합니다. 데이터(data): 각 항목에 저장되는 값 테이블(table 또는 relation): 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적된다. 칼럼(column 또는 field): 테이블의 한 열 레코드(record 또는 tuple): 테이블의 한 행에 저장된 데이터 키(key): 테이블의 각 레코드를 구분할 수 있는 값으로 기본키(primary key)와 외래키(foreign key)가 있다. 2. 관계 종류 1:1 관계 하나의 레코드가 다른 테이블의..

CodeStates_BE_44/TIL

[DB] SQL, NoSQL

SQL SQL이란? SQL(Structured Query Language)은 데이터베이스 언어로 주로 관계형 데이터베이스에서 사용하며 구조화된 쿼리 언어라고 할 수 있습니다. SQL은 아래와 같은 언어적 특성을 갖습니다. 대소문자를 구분하지 않는다. (서버 환경이나 DBMS 종류에 따라 데이터베이스 또는 필드명에 대해 구분하기도 한다.) 반드시 세미콜론(;)으로 끝나야 한다. 고유의 값은 따옴표(’’)로 감싸줘야 한다. 객체를 나타낼 때는 백틱(``)으로 감싸줘야 한다. 한 줄 주석은 문장 앞에 --를 붙여서 사용하고 여러 줄 주석은 /* */로 감싸준다. SQL의 종류 데이터 정의어 (DDL; Data Definition Language) 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어 CREA..

CodeStates_BE_44/TIL

[네트워크] HTTP

Rest API 웹 애플리케이션에서는 HTTP 메서드를 이용해 서버와 통신합니다. HTTP 메서드를 사용해 요청과 응답을 할 때 제대로 보내고 받을 수 있는 일종의 규약이 존재하는데 이것을 REST API라고 합니다. 좋은 REST API를 디자인하는 방법 아래는 리차드슨의 REST 성숙도 모델을 구조화한 것입니다. 총 4단계(0단계~3단계)로 나누어지는데 실제로는 2단계가지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우 HTTP API라고 부릅니다. 0단계 - HTTP 사용 단순히 HTTP 프로토콜을 사용하는 것입니다. 물론 이 경우, 해당 API를 REST API라고 할 수는 없으며 좋은 REST API를 작성하기 위한 기본 단계입니다. 1단계 - 개별 리소스와의 통신 준수 앞서 RES..

CodeStates_BE_44/TIL

[네트워크] 웹 애플리케이션 작동 원리

1. 웹애플리케이션에 대한 이해 특정 기기에 설치해서 사용하는 애플리케이션을 네이티브 애플리케이션(Native-application)이라고 한다. 네이티브 애플리케이션은 Apple iOS, Android OS, Windows와 같은 특정 실행 환경에 종속된다. 웹 브라우저를 통해 접근이 가능한 애플리케이션을 웹애플리케이션이라고 한다. 2. 네트워크를 만드는 기술 2-1. TCP/IP 기본 LAN과 WAN 우리의 컴퓨터는 인터넷 제공업체에서 제공한 인터넷 라우터를 통해 연결되어 있다. 유선이 되었든 무선이든 라우터에 연결이 되어있지 않다면 인터넷을 사용할 수 없다. 이러한 좁은 범위에서 연결된 네트워크를 LAN(Local Area Network)이라고 부른다. 그리고 수많은 LAN들이 모여 세계의 네트워크..

CodeStates_BE_44/TIL

Day 18. [Java] 스레드, JVM

Chapter 1. 스레드(Thread) 1. 프로세스(Process)와 스레드(Thread) 프로세스는 실행 중인 애플리케이션을 의미한다. 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 만큼의 메모리를 할당 받아 프로세스가 된다. 프로세스는 데이터, 컴퓨터 자원, 스레드로 구성되는데 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다. 즉, 스레드는 하나의 코드 실행 흐름이라고 볼 수 있다. 메인 스레드(Main thread) 메인 스레드는 main 메서드의 코드를 처음부터 끝까지 순차적으로 실행시키며, 코드의 끝을 만나거나 return 문을 만나면 실행을 종료한다. 메인 스레드에서 또 다른 스레드를 생성하여 실행시킨다면 해당 애플리케이션은 멀티 스레드로 동작하게 된다. ..

CodeStates_BE_44/TIL

Day 17. [Java] 파일 입출력

1. InputStream, OutputStream 스트림은 단방향으로만 데이터를 전송할 수 있기 때문에 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요하다. 입출력 스트림은 어떤 대상을 다루느냐에 따라 종류가 나뉜다. File을 다룰 경우 FileInputStream/FileOutputStream을 사용하고 프로세스를 다룰 때는 PipedInputStream/PipedOutputStream을 사용한다. FileInputStream import java.io.FileInputStream; public class FileInputStreamExample { public static void main(String args[]) { try { FileInputStream fileInput = ne..

CodeStates_BE_44/TIL

Day 16. [Java] 애너테이션, 람다, 스트림

애너테이션(annotation) 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소이다. public class ExampleClass implements ExampleInterface { @Override public void example() { } } 여기서 보이는 @Override 가 바로 애너테이션이다. 애너테이션 종류 표준 애너테이션 : JDK에 내장되어 있는 일반적인 애너테이션이다. @Override 메서드 앞에만 붙일 수 있는 애너테이션으로, 선언한 메서드가 상위 클래스의 메서드를 오버라이딩하거나 추상 메서드를 구현하는 메서드라는 것을 컴파일러에게 알려주는 역할을 한다. class SuperClass { public void example(..

조화이트
'CodeStates_BE_44/TIL' 카테고리의 글 목록