HTTP Hyper Text Transfer Protocol - 하이퍼텍스트(HTML) 문서 교환을 위해 만들어진 프로토콜 (통신 규약) - TCP/IP 기반 - request(요청)/response(응답) 구조 🙁 문제점 - 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않음 => 데이터 유출, 도난 위험 발생 😎 해결 방법 - HTTP 통신 과정에서 데이터를 암호화해서 전송해보자 => HTTPS를 사용하자! HTTPS Hyper Text Transfer Protocol Secure Socket Layer - HTTP 통신 과정에서 데이터를 암호화하여 전송하는 방식 - 대칭키, 비대칭키 방식 혼용하여 사용 🔸 대칭키 방식 - 양쪽이 공통의 비밀 키를 공유 => 데이터를 암호화/복호화하는 것 🔸 비대..
🍃 Spring MVC Spring에서 지원하는 모든 기능을 포함해서 Spring Framework 라고 한다. Spring의 모듈 중에서는 웹 계층을 담당하는 몇 가지 모듈이 있는데, 그 중에서 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있다. 우리는 이것을 spring-webmvc 라고 한다. 이는 Spring Web MVC, Spring MVC, Spring MVC 프레임워크라고 불리고 있다. 간단히 정리하면 Spring MVC 는 다음과 같다. ✔️ Spring MVC 클라이언트 요청을 편리하게 처리해주는 프레임워크이다. ✔️ 우리가 만들게 될 샘플 애플리케이션은 Spring MVC가 제공해주는 기능을 이용해서 만든다. 서블릿(Servlet)이란? - 클라이언트의..
순수 자바 코드로 구현한 프로그램을 스프링 프레임워크를 사용하여 전환해보자. DI를 통해 객체들 간 의존 관계를 연결하고 있는 AppConfigurer 클래스가 있다. package com.codestates.burgerqueenspring; import com.codestates.burgerqueenspring.discount.Discount; import com.codestates.burgerqueenspring.discount.discountCondition.CozDiscountCondition; import com.codestates.burgerqueenspring.discount.discountCondition.DiscountCondition; import com.codestates.burger..
Query란? 직역하면 질의문 가장 친숙한 예시로는 검색창에 적는 검색어도 Query의 일종이다. 저장되어 있는 정보를 필터하기 위한 질문 SQL이란? Structured Query Language 구조화된 Query 언어 데이터베이스 용 프로그래밍 언어 데이터베이스에 Query를 보내 원하는 데이터만 뽑아올 수 있다. 데이터베이스가 필요한 이유 In-memory - 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터 베이스 관리 시스템 - 내부 최적화 알고리즘이 단순하여 적은 CPU 명령을 실행 - RAM의 휘발성으로 인해 전원이 소실되면 저장된 데이터는 손실됨 File I/O - 파일을 입력하고(Input), 출력한다(Output)는 뜻을 가짐 - 원하는 데이터만 가져올 수 없고 항상 모..
Framework란? 소프트웨어의 구체적인 부분에 해당하는 설계, 구현을 재사용에 용이하게끔 일련의 협업화된 형태로 클래스를 제공하는 것 우리는 Java에서 Framework의 의미를 찾아볼 수 있다. 바로 Collections Framework인데, 이건 Map, Set, List 등의 Collection 들은 주로 데이터를 저장하기 위해 널리 알려져 있는 자료구조를 바탕으로 비슷한 유형의 데이터를 가공 및 처리하기 쉽도록 표준화된 방법을 제공하는 클래스의 집합이다. "왜 Java의 Collection에 Framework라는 용어를 붙였을까?" Java 클래스 유형 중, 기본적인 뼈대로만 구성되어 있는 것은 추상메서드만 정의되어 있는 인터페이스(Interface)이다. Java에서의 Collection..
회고 코스 45기 백엔드를 지금까지 약 한 달 동안 진행하면서 느낀 점을 회고하고자 한다. 개인적으로 자기 객관화를 잘하기 위해서는 꾸준히 회고하면서 나의 부족한 점을 돌아봐야 한다고 생각한다. 나보다 나를 더 잘 아는 사람은 없듯이 현재 나의 수준과 코딩 실력을 확실히 깨닫고 메꿔나가야 진정으로 성장하는 것이 아닐까 하는 생각이 든다. 먼저 나에게 가장 묻고 싶은 첫 번째 질문은 "맨 처음 코스를 시작했을 때의 마음가짐과 지금이 어떻게 변화했느냐?"이다. IT 학과를 전공하면서 프로그래밍에 관한 전반적인 개념들을 이해하고 있었다고 생각했지만, 실제로 개념을 적용하면서 코드를 작성하다 보니 부족한 점을 많이 느꼈다. 지금껏 이론적인 개념에만 취우져서 공부하고 있던 건 아닌지 싶은 마음과 함께 조급한 마음..
1. 클래스(Class)와 객체(Object) 2. 필드(Field)와 메서드(Method) 3. 생성자(Constructor) 4. 내부 클래스(Inner Class) 1. 클래스(Class)와 객체(Object) 클래스 객체를 설계한 설계도 또는 틀 객체를 생성하는 데 사용 인스턴스 클래스를 통해 생성된 객체 인스턴스화 클래스로부터 객체를 만드는 과정 객체와 인스턴스의 차이 객체: 모든 인스턴스를 포괄하는 넓은 의미 인스턴스: 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조 클래스의 네 가지 요소 필드: 클래스 속성을 나타내는 변수 ex- 차 모델명, 컬러, 바퀴 수 메서드: 클래스 기능을 나타내는 함수 ex- 시동하기, 가속하기, 정지하기 생성자: 클래스 객체를 생성하는 역할 이너 클래스: 클래..
최근 들어 스프링이나 알고리즘을 공부하면서 수정된 코드들 기록하기 위해 내 깃허브에 커밋하고 푸시하곤 했다. 지금까지는 인텔리제이에 내 깃허브를 연동시켜 놓았기 때문에 단순 단축키만으로도 코드를 푸시할 수 있었다. 그러나 사실상 Git과 Github가 의미하는 바가 무엇인지, 그리고 Git bash에서 어떤 명령어를 통해 커밋하고 푸시하는지에 대한 자세한 방법에 대해선 깊게 생각해보지 않았다. 이번 수업을 통해 혼자서 Git bash 명령어를 통해 CLI 창에서 직접 코드를 푸시하는 방법을 익힐 수 있었다. 특히 사람들과 함께 협업할 때 사용하는 Git의 버전관리 기능을 활용하는 부분에선 정말 무지했던 내용들을 새롭게 깨닫게 되는 시간이었다. 원격으로 관리하기 위해 Local Repository와 Rem..