Programming
-
[SpringBoot] MVC패턴 + REST API + JPA 프로젝트 설계Programming/SpringBoot 2023. 12. 7. 14:09
MVC + JPA 프로젝트 설계 Form을 사용한 웹 설계는 아래와 같습니다. REST API를 사용하지 않는다면 응답을 뷰 템플릿으로 하게 됩니다. MVC + REST API + JPA 프로젝트 설계 REST API를 사용하면 요청과 응답 데이터가 대표적으로 JSON을 사용하여 통신하게 됩니다. 클라이언트와 서버 간 처리 흐름은 크게 4가지로 나눌 수 있습니다. - MVC (Model-View-Controller) : 서버 역할을 분담해 처리하는 기법 - JPA (Java Persisitence API) : 서버와 DB간 소통에 관여하는 기술 - SQL (Structured Query Language) : DB데이터를 관리하는 언어 - HTTP (HpyterText Transfer Protocol) :..
-
[SpringBoot] Spring ContainerProgramming/SpringBoot 2023. 12. 2. 16:36
Spring Contiainer에 대해 알아보기 전 서지식이 필요합니다! 아래 포스팅을 참고해주세요. [SpringBoot] 스프링 vs 스프링부트 스프링(Spring)은 프레임워크이며, 스프링 부트(Spring boot)는 스프링을 기반으로 한 도구입니다. 스프링에서 스프링 프레임워크로 개선한 사항으로는 다음과 같습니다. - 개발 환경 설정을 간소화 : code-space.tistory.com [SpringBoot] MVC패턴 Model :데이터 관리 애플리케이션이 포함해야 할 데이터가 무엇인지를 정의합니다. 데이터의 상태가 변경되면 모델은 이를 뷰에게 알립니다. 컨트롤러에게 알리기도 합니다. View : 화면 애플리케 code-space.tistory.com Spring Boot에서는 Spring C..
-
[SpringBoot] MVC패턴Programming/SpringBoot 2023. 12. 2. 13:54
뷰 템플릿 View Template은 화면을 담당하는 기술로, 웹 페이지(view)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여 줍니다. 이 기술로 사용자 마다 웹 페이지를 만드는 것이 아니라 한 페이지에 변수만 바꿔서 사용자마다의 화면을 보여주게 됩니다. 생성 위치 뷰 템플릿은 src > main > resources > templates 디렉터리에 만듭니다. MVC패턴 Model :데이터 관리 애플리케이션이 포함해야 할 데이터가 무엇인지를 정의합니다. 데이터의 상태가 변경되면 모델은 이를 뷰에게 알립니다. 컨트롤러에게 알리기도 합니다. View : 화면 애플리케이션에서 실제로 보이는 부분을 말합니다. 웹 브라우저에서 데이터를 보여주는 방식을 정의한 것입니다. ..
-
[SpringBoot] 스프링 vs 스프링부트Programming/SpringBoot 2023. 12. 2. 12:35
Spring스프링의 가장 큰 특징은 POJO프로그래밍을 지향하는 것입니다.(POJO(Plain Old Java Object) : 순수 Java만을 통해서 생성한 객체) POJO는 순수 Java만을 사용하여 만든 객체이므로 특정 기술이나 환경에 종속되지 않습니다. 따라서, 외부 기술이나 규약의 변화에 얽매이지 않아 유연하게 변화와 확장에 대처할 수 있습니다.이러한 POJO를 사용하여 비즈니스 로직을 구현하면 객체지향 설계를 제한없이 적용할 수 있으며, 코드가 단순해져 테스트와 디버깅이 쉬워집니다. 이처럼 비즈니스 로직을 구현하는데 POJO를 적극적으로 활용하는 프로그래밍 패러다임을 POJO프로그래밍이라고 합니다. POJO프로그래밍을 위해 스프링이 지원하는 기술인 IoC, DI, AOP, PSA,가 있습니다..
-
[c++] Value Category ( lvalue, prvalue, xvalue ) , decltype함수Programming/c++ 2023. 10. 20. 16:16
타입과 value category는 다른 개념입니다! Value Category c++에서는 5가지의 값 카테고리가 존재합니다. - lvalue ( left value ) : 좌측값 - rvalue (right value ) : 우측값 - prvalue ( pure rvalue ) : 순수 우측값 - xvalue ( expiring value) : 소멸하는 값 - glvalue ( generalized lvalue) : 일반화된 좌측값 즉, 값 카테고리는 좌측값/우측값을 말합니다. 값 카테고리를 구분하기 위해 2가지 조건이 있습니다. - 정체를 알 수 있는가? : 해당 식이 다른 식과 같은지 다른지 구분할 수 있다. 일반적인 변수라면 주소값을 취해서 구분할 수 있고, 함수의 경우라면 이름만 확인하면 된다..
-
[c++] std::moveProgramming/c++ 2023. 10. 20. 14:58
1. 함수 원형 move 할당 연산자를 호출하는 move 생성자 // Move constructor. MemoryBlock(MemoryBlock&& other) noexcept : _data(nullptr) , _length(0) { *this = std::move(other); } // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; 2. std::move move 할당 연산자 메모리, 파일 핸들 및 소켓과 같은 리소스를 해제하여 리소스 누수를 방지할 수 있습니다. std::move함수는 lvalue를 rvalue로 변환합니다. std::move된 객체를 함수에 ..