본문 바로가기
카테고리 없음

230130~230204 WIL

by hbIncoding 2023. 2. 5.

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) 웹페이지

  1. Client의 요청을 Model로 받아 처리
  2. Client에게 View(정적 웹페이지, HTML)를 내려줌
  • 빠르다 : 요청에 대한 파일만 전송함으로 추가적인 작업 없음
  • 비용이 적다 : 마찬가디로 웹 서버만 구축하면 됨
  • 서비스가 한정적 : 저장된 정보만 보여줌
  • 관리가 힘들다 : 추가/수정/삭제의 작업 모두 수동

 ㄴ. 동적(dynamic) 웹페이지

  1. Client의 요청을 Model로 받아 처리
  2. Template engine에게 View(동적 HTML 파일), Model(View에 적용할 정보들) 전달
  3. Template engine이 View에 Model 적용> 동적 웹페이지 생성
  4. Client에게 View(동적 웹페이지, HTML)를 내려줌
  • 서비스가 다양: 다양한 정보를 조합하여 동적으로 생성하여 제공 가능
  • 관리가 쉽다 : 웹 사이트 구조에 따라서 추가/수정/삭제 등의 작업이 용이
  • 상대적으로 느림 : 사용자가 웹 페이지를 전달하기 전에 처리하는 작업이 필요
  • 추가 비용 발생 : 웹 서버외에 추가적으로 처리를 위한 어플리케이션 서버(web application server) 필요

 2)Spring MVC 동작 원리

  1. Client -> DispatcherServlet(FrontContoller)
  2. API를 처리해 줄 Controller를 찾아 요청 전달
  3. Controller가 Client에게 받은 API 요청 처리, Model과 View 정보를 다시 전달
  4. ViewResolver를 통해 View에 model 적용, view를 Client에게 응답으로 전달