Programming
-
[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된 객체를 함수에 ..
-
[C++] 공용체 UnionProgramming/c++ 2023. 9. 13. 21:55
Union 공용체는 하나의 정해진 데이터형이 아니라 int, float 같이 여러개의 데이터타입을 사용해야 할 때 유용합니다. 개체가 많고 메모리가 제한된 경우 메모리를 절약하는데 유용할 수 있지만, 주의해서 사용해야 합니다. 구조체와 비슷하지만 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점에서 다릅니다. union은 내부에 여러개의 데이터 타입의 멤버 변수를 선언하지만 실제 사용시에는 하나의 멤버 변수만 사용할 수 있습니다. 공용체는 크기가 가장 큰 멤버 변수의 크기로 메모리를 할당받습니다. Example 1 union uData { char c;// 1byte int i;// 4byte short s;// 2byte long l;// 4byte float f;// 4byte double d;/..
-
[c++] trim( ), 공백, 개행, 탭 제거 (whitespace 제거)Programming/c++ 2023. 6. 15. 14:06
java에서는 trim( ) 함수를 제공하지만 C++에서는 boost 라이브러리 사용하지 않으면 제공하지 않습니다. 그래서 trim( )처럼 사용하기 위한 예제들을 포스팅하겠습니다~ 문자열의 왼쪽(선행), 오른쪽(후행)에 whitespace가 있다면 제거하는 방법입니다. Whitespace 문자 유니코드 이름 약칭 U+0020 space SPC \t U+0009 horizontal tab TAB \n U+000A newline LF \v U+000B vertical tab VT \f U+000C feed FF \r U+000D carriage return CR ASCII Code 이름 10진 16 문자 horizontal tab 9 0x09 HT newline 10 0x0A LF vertical tab ..
-
[Python] DequeProgramming/Python 2023. 6. 3. 15:55
list를 이용해서 queue처럼 사용할 수 있습니다. queue = [1, 2, 3] queue.append(4) #[1, 2, 3, 4] queue.pop(0) #[2, 3, 4] queue.insert(0, 5) #[5, 2, 3, 4] 하지만 list를 queue처럼 사용하는 것은 성능 측면에서 추천되지 않습니다. list는 Random Access에 최적화된 자료구조이기 때문에 pop(0), insert(0, x)는 성능적으로 매우 불리한 연산입니다. 이 연산의 시간 복잡도는 O(n)입니다. Deque collections 모듈의 deque를 사용해서 queue, stack 자료구조를 구현할 수 있습니다. collections에 queue도 있지만 Deque가 훨씬 빠르니 코딩테스트에서는 Deq..