- 계획
- 베이직반 1,2강 듣고 공부
- 이해가 되었다면 입문 강의 진행
- 문제점
- 보완할 점
- 궁금한 점 내일 튜터님 찾아뵙고 여쭤보기
- 공부 더 해보기
- 내일 계획
- 오늘의 공부
1. 배열
1) 한 번 생성 시 배열 크기 변경 x
2) 정확한 크기 알고, 변경이 필요 없는 경우에 유용. 활용이 어려움
3) 연속된 메모리 공간 사용(캐시친화적)
2. Collection
1) 배열보다 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 포함
2) List
- 순서가 '있는' 데이터 집합 => 데이터가 추가된 순서대로 저장, 인덱스를 통해 요소 접근 가능
- 데이터 중복 허용, 크기 변경이 가능
- ArrayList = 배열과 같은 형태, 각 데이터의 index값을 가짐, 추가 삭제에 불리, 데이터 한 번에 접근 용이
- LinkedList = 양뱡향의 연결 리스트로 구성, 정방향 <-> 역순의 조회 가능, 검색 속도 느림, 추가 삭제 용이
3. Queue
1) 먼저 들어온 요소가 먼저 나가는 구성(FIFO, First-in-First-Out)
2) 데이터 순서에 민감, 대기열이나 버퍼 등 구현에 적합
3) 프린터 인쇄 대기열, 고객 대기번호
4. Set
1) 순서가 없는 데이터 집합, 중복 허용 X (값이 유일)
2) 아이디, 로또 번호 등
5. Map
1) Key와 Value 쌍으로 이루어진 데이터 집합. 키값은 유일(중복 X)
2) Set과 달리 중복키값으로 데이터 저장 시 기존 값이 새 값으로 갱신
3) 사용자 아이디와 정보 등
6. Exception
1) 예외처리(비정상적 조건), 개발자의 실수 또는 예상치 못한 조건에 의해 발생
2) try-catch 블록으로 처리하거나 메소드 선언부에 throws 키워드를 사용해 명시적 선언하여 사용
3) java에서는 try-catch블록을 사용해 처리
4) 반드시 처리 해야하는 Exception은 Checked Exception / 컴파일 시점에서 발생, 반드시 처리해야함
5) 선택적 처리 가능한 Exception은 UnChecked Exception / 리스트 범위 초과, 객체를 선언하고 생성을 안한 경우 등
7. Error
1) 시스템 레벨의 심각한 문제, JVM레벨에서 발생
2) 개발자가 처리할 수 없는 경우가 다수
8. Spring
- Spring Boot : 과제 때 클릭해서 웹서버를 구현한 것(?)
- Spring Framework : 웹 서버 전체를 통틀어서 부름(?)
- Spring Data : JDBC, JPA 등 ?
1) Spring Framework
ㄱ. MVC(Model View Architecture)
- model : 컨트롤러와 데이터를 연결하는 그 중간 단계(@Service 식으로 사용)
- View : 사용자 인터페이스 담당, FE로 나눠서 개발함
- Controller : 사용자 요청을 처리, 모델과 뷰 사이 연결 단계. (@Controller 식으로 사용)
ㄴ. Bean 관리
하나도 이해가 안됨(강의영상 내 사용된 단어 처음 들어봄.. 개념 조차 확립되지 않은 상태라 이해가 안됨, 내일 물어볼 것)
ㄷ. URL 매핑 : Method에 매핑 어노테이션만 넣으면 매핑이 자동으로 되었음. (Get, Put 등등)
9. 웹 흐름 기초
1) URL 분석
예시 : https://google.com/search?q=hello&hl=ko
- 프로토콜 : https 프로토콜을 사용함을 의미(기본 포트 번호 443을 사용)
- 호스트명 : 사이트 주소(웹페이지를 호스팅하는 서버 주소) / google.com
- 패스 : /search - 서버에서 어떤 리소스를 요청하는지 나타내는 경로 / q = hello, hl = ko
2) DNS 조회
브라우저는 DNS를 사용해 호스트명을 IP주소로 변환 (ex. google.com -> 61.41.153.2)
3) HTTP 요청
- 보안 등을 통과 후 서버에게 웹페이지를 요청함. Get메서드는 URL에 지정된 리소스 요청
4) DispatcherServlet 수신
- 모든 요청은 Spring의 DispatcherServlet에 도달. 요청을 적절한 컨트롤러에 전달하는 역할
5) 핸들러 매핑
- 적절한 컨트롤러를 찾기 위해 핸들러 매핑을 사용
6) 컨트롤러 실행
- 요청이 매핑된 컨트롤러에 도달하면 Spring Framework는 해당 컨트롤러의 메서드 호출
7) 비즈니스 로직 처리
8) 모델 채우기
- 서비스 계층의 처리 결과를 컨트롤러가 다시 받아 모델 객체에 데이터를 채움. 요청에 대한 응답 데이터를 포함
9) 응답 생성 및 전송
- 서버는 Html 또는 Json 응답 데이터를 브라우저로 전송
10) 콘텐츠 렌더링
- 브라우저는 받은 Html, Css, JavaScript 등을 해석하여 웹페이지를 보여주기 위해 렌더링
11) 추가 리소스 로딩
- html문서 내 추가 리소스(이미지, 시트, 스크립트 등)이 있을 경우, 이들도 각각 요청을 로드하고 처리
=> 솔직히 다 외우거나 이해는 못하겠음.. 흐름같은데 하다보면 익숙해질 것 같음. 당장 머리에 때려박고 외울만큼 중요한가..?
10. HTTP 기초
서버와 클라이언트 간의 소통을 원활하게 하는걸 목표로 작성
클아이언트<-> 서버 == 손님 <-> 가게
1) HTTP 요청의 종류
- Get : 무언가를 보여달라는 요청 / ex. 메뉴판 좀 보여주세요
- Post : 새로운 정보를 보내거나 주문하는 요청 / ex. 주문 할게요
- Put : 이미 있는 정보를 바꾸고 싶을 때 사용 / ex. 주문 변경할게요
- Delete : 무언가를 지우고 싶을 때 사용 / ex. 주문 취소할게요
* 주문 전체를 삭제할 때 : Delete / 주문 내용 중 일부만 삭제할 때 Put
2) HTTP 상태코드
- 2xx : OK
- 4xx : 주문하신 것은 우리 매장에 없습니다.
- 5xx : 죄송합니다. 내부문제로 진행이 어렵습니다.
3) HTTP 구조
사진이 안올라간당...
11. HTTP Method
1. Get : 서버로부터 정보 조회, 데이터 불러오기
2. Post : 데이터 생성에 사용. 새로운 게시물 또는 폼 데이터 제출 시 사용
3. Put : 서버 자원 전체를 교체하기 위해 사용. 기존 내용을 새로운 내용으로 전체 교체 할 시 사용
4. Delete : 서버에 있는 자원 삭제에 사용
5. Patdch : Put과 비슷하게 사용됨, 특정 원하는 내용만 변경할 때
6. Head : Get과 비슷. HTTP구조 내 헤더내용 조회에 사용
7. Options : 내가 사용가능한 옵션 조회
8. Connect : 현재 배우는 단계에서는 존재만 확인
9. Trace : 현재 배우는 단계에서는 존재만 확인
12. HTTP 상태 코드 더 알아보기
- 2xx(성공) : 클라이언트의 요청이 성공적으로 처리
- 3xx(리다이렉션) : 요청을 완료하기 위해 추가적 조치가 필요
- 4xx(클라이언트 오류) : 클아이언트의 요청이 잘못됨을 표시
- 5xx(서버 오류) : 서버가 유효한 요청을 처리하지 못했음을 표시
13. Spring Boot의 설정
- Build.gradle이 매우 중요
- 빌드 프로세스를 전체적으로 제어, 프로젝트 구성 요소를 일관되게 관리
- 빌드 과정을 프로젝트에 맞게 맞춤설정 가능
=> 대충 이런 기능이라는데 아직 무슨 말인지 잘 모르겠음