전체 글 112

[J2KB] MVC와 템플릿 엔진

** 인프런 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 기반으로 작성합니다. MVC와 템플릿 엔진 * 요즘 가장 많이 사용하는 웹 서버 패턴 MVC [Model & View & Controller 구조] View : 화면을 그리는 것에 모든 역량 집중 Controller & Model : 내부적인 것을 처리하는 것을 위주로 !! 과거에는 Controlller와 View가 분리되어 있지 않고 View에서 모든걸 다 해결했음 jsp php 등등을 템플릿 엔진이라 한다. 서버에서 프로그래밍을 해서 html을 동적으로 바꾸어 실행시키는 것이다. controller -> model -> view 순으로 진행된다. > 정적컨텐츠와 차이점 정적컨텐츠 : 파일을 그대로 전달하기..

[J2KB] 정적 컨텐츠

** 인프런 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 기반으로 작성합니다. 정적 컨텐츠 서버에서 뭐 하는 것 없이 파일을 그대로 웹브라우저로 내려주는 것 스프링부트는 정적컨텐츠를 기본으로 제공 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content Spring Boot Features Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow)..

HashTable / HashMap

1. HashTable / HashMap 이란 HashTable이란 원소가 저장될 자리가 원소의 값에 의해 바로 결정되는 자료구조이다. key와 value의 쌍으로 데이터를 저장하는 방법으로 HashMap이라고도 한다. 예시로, 파이썬의 Dictionary를 떠올리면 편하다. 2. HashTable의 특징 삽입, 삭제, 검색 모두 평균 시간복잡도 O(1) 시간 매우 빠른 응답을 요구하는 응용에 사용됨 다른 연산은 지원 X ex) 이진 탐색 트리는 최소 값, 특정 값 바로전의 값, 바로 다음의 값 등을 확인 가능 but, hashTable은 그런 연산은 할 수 없음 수정 가능 key는 중복 x, value는 중복 o key를 통해 value값 얻기 3. Hash Function / Hashing (해시함수..

알고리즘 2023.02.07

Spring Persistence (영속성)

Persistence를 영어 그대로 해석한다면, 고집, 지속성, 집요 등으로 해석할 수 있다. 하지만 Spring에서 Persistence는 다르다. Spring Persistence란 데이터를 영구적으로 저장하는 것을 의미한다. 데이터 액세스 레이어 (데이터 접근 계층) 여기도 모르는 단어가 참 많다. 단어 먼저 정리하고 넘어가자. 💡ORM(Object Relational Mapping ,객체-관계 매핑) 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것 객체지향프로그래밍은 클래스를 사용해서 객체 위주로 코드를 작성하며, 관계형 데이터베이스는 테이블을 사용하는데 이때, 객체 모델과 관계형 모델 간에 불일치가 존재할 수 있다. 이를 ORM이 해결해주는데, ORM을 통해 객체 간의 관계..

[J2KB] Spring View 환경설정

Spring을 통해 웹페이지를 생성해본다. Spring에서는 기본적인 페이지들에 관련한 코드들을 홈페이지에서 제공한다. 예를 들어, Hello와 같은 기본 index.html 파일은 아래 페이지에서 검색하여 확인할 수 있다. https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web Template Engines 템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어 (즉, 지정된 템플릿 양식 + 데이터 => html문서 출력) 이와 같은 Template engines들도 위 페이지에서 확인 가능하다. 그중, 가장 자주 사용하는 thymeleaf에 대해서도 확인가능하다. Thymeleaf v..

[J2KB] SPRING 라이브러리

spring 프로젝트를 시작하면, build.gradle에 포함된 라이브러리들을 확인할 수 있다. 기본적으로 처음에 다운받은 라이브러리들이 build.gradle dependencies에 담겨있다. 하지만, 이 소수의 라이브러리만 다운되어있는 것은 아니다. 실제로 좌측 External Libraries를 확인해보면, 기본적으로 기본 라이브버리가 다운되어 있다. gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 예를들어, starter-web 을 다운받으면, starter-web 라이브러리가 필요로 하는 다른 라이브러리들 까지 모두 다운받는다. 기본적인 스프링 부트 라이브러리 Spring-boot-starter-web spring-boot-starter-tomcat : 웹서버 spring-w..

[J2KB] 프로젝트 환경설정

** 인프런 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 기반으로 작성합니다. 프로젝트 설정 Java 11 설치 IDE : IntelliJ 최근 개발자들 사이에서는 Eclipse보다 IntelliJ를 자주 사용하는 추세이기 때문에 가급적 IntelliJ를 사용하길 권한다. Maven - Gradle 차이 Maven과 Gradle 모두 빌드관리도구이다. 최근에는 Maven보다 Gradle로 많이 넘어온 상황 (= Gradle이 최근이기 때문에 성능, 사용성 면에서 훨씬 뛰어남) 환경 설정 https://start.spring.io/ 최근 spring 프로젝트는 위 사이트에서 설정을 한 뒤 생성한다. 하지만, IntelliJ에서도 File > New > Project ..

스프링 프레임워크

** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 post입니다. 스프링 프레임워크란? 자바 애플리케이션 개발을 위한 경량 프레임워크 💡 '프레임워크'란? 기본적인 기능이 담겨있어서 개발할 때 도움을 주는 틀 ex ) 중복되는 작업들, 이미 상용화 되있는 코드들 을 쉽게 가져다 쓸 수 있도록 모아놓은 것 💡 '경량'이란 ? 프레임워크 코드가 적다는 의미 x 프레임워크 외의 코드에 최소한의 영향만 준다는 의미 제어의 역전 (Spring Inversion of Control, IoC) 프로그램의 흐름을 개발자가 아닌 외부에서 제어 및 관리해주는 것 만약 프레임워크 없이 개발을 한다면, 객체의 생성, 설정, 초기화, 호출, 소멸 등을 모두 개발자가 직접 관리..

백엔드 엔지니어링이란?

** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 post입니다. 백엔드 엔지니어링이란 ? 특강을 듣기 전까지 내가 알고 있던 백엔드 엔지니어링이란 "프론트엔드는 아니고,,, db를 다루며,,, 서버를 다루는,,,기술,,개발,,? " 정도 였다. 백엔드 엔지니어링을 진로로 선택했지만 사실 정확히 그 분야가 어떤 엔지니어링을 하는지 정확히 알기 어려웠다. 특강을 계기로 그 분야에 대해 세부적으로 알 수 있었고 그 부분에 대해 설명하고자 한다. 일단 용어 설명부터 하고 시작하겠다. LB (Load Balancer) 트래픽이 몰릴 경우를 대비하여 여러 대의 서버로 일을 분산하여 처리해주는 서비스 사용자가 인터넷을 사용할 때는 실상 웹서버를 통해 databas..

웹 프로그래밍이란?

** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 post입니다. 웹프로그래밍이란 ? 과거 : 웹사이트나 웹 페이지를 만드는 과정 현재 : 주로 웹 애플리케이션을 만드는 과정 과거에는 프론트엔드 / 백엔드 부분이 모호했다면 현재는 그 분야가 나뉘었고 상호작용하여 하나의 애플리케이션을 만들어 나가는 과정을 "웹 프로그래밍"이라 한다. 웹 사이트(web site) 와 웹 애플리케이션(web application)의 차이점은? ** 좀 애매모호하긴 함! 하지만 개념적 차이가 있고 "흐름에 따라 발전되어왔다" 정도만 알고 지나가면 좋을 듯하다. 웹사이트 ? 정보제공을 위한 "정적"인 사이트 사이트에서 사용자가 정보를 얻어가는 흐름 ! (수동적) ex ) 위키피..