전체 글
-
[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++Coding Test/programmers 2023. 11. 17. 18:07
문제 설명 문제 바로가기 제한 사항 3 ≤ board의 길이 ≤ 100 3 ≤ board의 원소의 길이 ≤ 100 board의 원소의 길이는 모두 동일합니다. 문자열은 ".", "D", "R", "G"로만 구성되어 있으며 각각 빈 공간, 장애물, 로봇의 처음 위치, 목표 지점을 나타냅니다. "R"과 "G"는 한 번씩 등장합니다. 입출력 예 board result ["...D..R", ".D.G...", "....D.D", "D....D.", "..D...."] 7 [".D.R", "....", ".G..", "...D"] -1 풀이 #include #include #include using namespace std; int n, m; int dist[6] = {1,0,-1,0,1}; queue Q; ve..
-
[프로그래머스] 오픈채팅방 C++Coding Test/programmers 2023. 10. 25. 14:13
문제 설명 문제 바로가기 제한 사항 record는 다음과 같은 문자열이 담긴 배열이며, 길이는 1 이상 100,000 이하이다. 다음은 record에 담긴 문자열에 대한 설명이다. 모든 유저는 [유저 아이디]로 구분한다. [유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 - "Enter [유저 아이디] [닉네임]" (ex. "Enter uid1234 Muzi") [유저 아이디] 사용자가 채팅방에서 퇴장 - "Leave [유저 아이디]" (ex. "Leave uid1234") [유저 아이디] 사용자가 닉네임을 [닉네임]으로 변경 - "Change [유저 아이디] [닉네임]" (ex. "Change uid1234 Muzi") 첫 단어는 Enter, Leave, Change 중 하나이다. 각 단어는 공백으..
-
[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++Coding Test/programmers 2023. 10. 13. 23:38
문제 설명 문제 바로가기 제한 사항 picks는 [dia, iron, stone]과 같은 구조로 이루어져 있습니다. 0 ≤ dia, iron, stone ≤ 5 dia는 다이아몬드 곡괭이의 수를 의미합니다. iron은 철 곡괭이의 수를 의미합니다. stone은 돌 곡괭이의 수를 의미합니다. 곡괭이는 최소 1개 이상 가지고 있습니다. 5 ≤ minerals의 길이 ≤ 50 minerals는 다음 3개의 문자열로 이루어져 있으며 각각의 의미는 다음과 같습니다. diamond : 다이아몬드 iron : 철 stone : 돌 입출력 예 picks minerals result [1, 3, 2] ["diamond", "diamond", "diamond", "iron", "iron", "diamond", "iron"..