1. 알고리즘 문제풀이
1)사용했던 기능 정리
- 재귀 함수를 이용한 최대공약수 구하기
- Collections.frequency를 통해 해당 원소가 배열에서 몇개인지 확인
- 배열의 원소값들을 정렬하고 바뀌기 전 배열의 인덱스 값을 바뀐 배열에 맞춘 인덱스 값으로 리턴하는 메서드 작성
- 배열에서 원하는 값 찾기
- list.contaiins 로 원하는 값 있는지 확인하기
- stringbuilder 사용하기
- 정규식 활용하기
- fill(),setall()을 이용해 배열 채우기
2)배운 이론
- Interger와 int의 차이
- set과 treeset, hashmap 의 차이
- ArrayList와 LinkedList의 장단점
- stack과 queue
- generics
2. Generics
- 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능
- 객체 타입을 컴파일 시에 체크하기 때문에 타입 안정성을 노이고 형변환의 번거로움을 줄임
- 저강된 객체를 꺼낼 때 형변환이 필요없어 코드가 간결해지고 편하다
- JRE : Java Runtime Environment / 자바 실행 환경
- JVM : Java Virtual Machine / 자바 가상 기계
3. 웹 동작방식 이해하기
1)웹의 동장 방식의 구성 요소
- IP주소 : 컴퓨터 각가의 주소
- 브라우저 : 웹페이지와 필요한 컨텐츠를 송/수신하고 표현해주는 소프트웨어
- DNS : 일반적인 IP주소가 아닌 www.naver.com 같은 도메인
- HTTP : 프로토콜 종류 중 하나
- API : 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
- Interface : 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템
- RESTful API : API 작동 방식에 부과하는 소프트웨어 아키텍처
*바이트코드 : 고급 언어로 작성된 소스 코드를 가상머신이 이해할 수 있는 중간 코드로 컴파일 한것
*컴파일(build라고도함) : 주어진 언어로 장성된 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스
4. SpringBood 및 서버 이해
1)소프트웨어 디자인 패턴 계층 요소
- Presentation 계층 : 사용자와 상호 작용 처리 계층
- Domain 계층 : 서비스/시스템의 핵심 로직
- Data Access 계층 : Database/Message Queue/외부 API와의 통신 처리
2)Controller, Service, Repository
5. Database와 SQL
1)Database
- 데이터의 집합
- DMBS(Database Management System) : 데이터베이스를 관리하고 운영하는 소프트웨어
- RDBMS(Realation DBMS) : 관계형 데이터베이스, 테이블이라는 최소 단위로 구성 ex)MySQL, PostgreSQL,Oracle Database 등이 있다.
- 인메모리 DB : 서버가 작동하는 동안에만 저장하고 멈추면 삭제 ex)H2
- MVC(Modle/View/Controller)가 이 계층에 속한다.
2)SQL
- Structured Query Language 의 약자로 RDMBS에서 사용되는 언어
ㄱ. DDL(Data Definition Language) : 테이블이나 관계의 구조를 생성하는데 사용
ㄴ. DCL(Data Control Language) : 데이터의 사용 권한을 관리하는데 사용
ㄷ. DML(Data Manipulation Language) : 테이블에 데이터를 검색,삽입,수정,삭제하는데 사용
6. HTTP 구조와 메세지
ㄱ. HTTP Message 기본 구조
- start line : 실행할 요청또는 요청 수행에 대한 성공과 실패가 들어감, 항상 첫 번째 줄에 위치
- HTTP header : 요청에 대한 설명 혹인 메세지 본문에 대한 설명
- Body : 요청과 관련된 내용이 옵션으로 들어가거나, 응답과 관련된 본문이 들어간다.
- 헤드(head) = Start Line + HTTP header // Body = pay Load 로 불린다.
ㄴ. HTTP Method
- 요청과 응답 데이터를 전송하는 방식
- 서버가 수행해야할 동작을 지정
메소드명 | 요청바디 유무 | 응답 바디 유무 | 서버 영향 | 기능 |
GET | △ | ○ | X | 리소스 조회 (Read) |
POST | ○ | ○ | ○ | 리소스 생성 (Create) |
PUT | ○ | ○ | ○ | 리소스 수정 (Update) |
PATCH | ○ | ○ | ○ | 리소스 수정 (Update) |
DELETE | △ | ○ | ○ | 리소스 삭제 (Delete) |
- GET(read) : 리소스 조회, 데이터를 퀴리스팅으로 주고 받음
- POST(Create) : 리소스 생성, 요청 데이터를 바디에 담아서 전달
- PUT(update) : 기존에 데이터가 있으면 대체하고, 없으면 새로 생성
- PATCH(update) : 데이터의 일부분을 변경, 기존에 데이터 없으면 불가
- DELETE(delete) : 리소스 삭제
ㄷ. HTTP Status Code
7. Spring Controller
1)MVC(Model-View-Controller) 패턴
ㄱ. Model : 데이터의 가공을 책임진다.
ㄴ. View : 사용자에게 보여지는 부분, 유저 인터페이스(User Interface)를 의미한다
ㄷ. Controller : 브릿지, 모델과 뷰 사이를 이어주는 역할을 한다.
2)Spring MVC(Model-View-Controller)
- Spring Framework의 하위 모듈
- Model, View, Controller를 명확하게 분리해서 매우 유연하고 확장성이 좋다
8. JPA 기초
1)어플리케이션이 DB를 직접 다룰 때 문제점
ㄱ. 번거로운 단계를 거친다.
ㄴ. SQL의존적이라 변경에 취약
ㄷ. 객체지향 모델과 관계형 데이터베이스의 패러다임 불일치가 발생
2)ORM(Object Relational Mapping), JPA(Java Persistence API)의 등장
ㄱ. ORM : 객체와 DB의 테이블이 매핑을 이루는 것, 객체가 테이블이 되도록 매핑 시켜주는 것
ㄴ. JPA : 자바 ORM 기술에 대한 API 표준 명세
3)DB의 연관관계, JAP 연관관계
ㄱ. DB 연관관계
- 관계형 데이터베이스는 테이블끼리 관계를 맺을 수 있다.
- 관계는 논리적으로 연관이 있는 두 테이블 사이의 연결을 설정한다.
- 테이블 구조를 정제하고 중복 데이터를 최소화 하는 것을 도와준다.
ㄴ. JPA 연관관계
관계 | 코드 선언 |
일대다(1:N) | @OneToMany |
다대다(N:1) | @ManyToOne |
일대일(1:1) | @OneToOne |
다대다(N:N) | @ManyToMany |
4)Spring Data JPA
- Spring framework에서 JPA를 편리하게 사용할 수 있도록 지원
- CRUD 처리를 위한 공통 인터페이스 제공
- repository 개발 시 인터페이스만 작성하면 싱행 시점에서 스프링 데이터 JPA 가 구현 객체를 동적으로 생성해서 주입
- 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발 완료하도록 지원
- 공통 메서드는 스프링 데이터 JPA가 제공하는 org.springframework.date.jpa.repository.JpaRepository 인터페이스에 count, delete, deleteAll, deleteAll, deleteById, existsById, findById, save .. 등이 있다.
- 관계는 논리적으로 연관이 있는 두 테이블 사이의 연결을 설정한다.
- 테이블 구조를 정제하고 중복 데이터를 최소화 하는 것을 도와준다.
9. Spring MVC 이해
1)스프링 MVC
ㄱ. 정적(static) 웹페이지
- Client의 요청을 Model로 받아 처리
- Client에게 View(정적 웹페이지, HTML)를 내려줌
- 빠르다 : 요청에 대한 파일만 전송함으로 추가적인 작업 없음
- 비용이 적다 : 마찬가디로 웹 서버만 구축하면 됨
- 서비스가 한정적 : 저장된 정보만 보여줌
- 관리가 힘들다 : 추가/수정/삭제의 작업 모두 수동
ㄴ. 동적(dynamic) 웹페이지
- Client의 요청을 Model로 받아 처리
- Template engine에게 View(동적 HTML 파일), Model(View에 적용할 정보들) 전달
- Template engine이 View에 Model 적용> 동적 웹페이지 생성
- Client에게 View(동적 웹페이지, HTML)를 내려줌
- 서비스가 다양: 다양한 정보를 조합하여 동적으로 생성하여 제공 가능
- 관리가 쉽다 : 웹 사이트 구조에 따라서 추가/수정/삭제 등의 작업이 용이
- 상대적으로 느림 : 사용자가 웹 페이지를 전달하기 전에 처리하는 작업이 필요
- 추가 비용 발생 : 웹 서버외에 추가적으로 처리를 위한 어플리케이션 서버(web application server) 필요
2)Spring MVC 동작 원리
- Client -> DispatcherServlet(FrontContoller)
- API를 처리해 줄 Controller를 찾아 요청 전달
- Controller가 Client에게 받은 API 요청 처리, Model과 View 정보를 다시 전달
- ViewResolver를 통해 View에 model 적용, view를 Client에게 응답으로 전달