분류 전체보기 30

MVC 패턴

MVC 패턴의 탄생 배경 MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나입니다. 소프트웨어 개발 분야에서 초기 단계인 1960년대와 1970년대엔 사용자 인터페이스와 비즈니스 로직이 서로 긴밀하게 결합되어 있어서, 소프트웨어의 구조가 비교적 단순하고 모듈화되지 않았습니다. 이로 인해 코드의 가독성이 낮고 확장하기 어렵고 또 유지보수가 어렵다는 문제가 발생했습니다. 이러한 문제에 대한 해결책으로 1970년대에 처음 소개된게 바로 MVC패턴입니다. MVC 패턴은 각 역할에 따라 모델(Model), 뷰(View), 컨트롤러(Controller)로 구분하여 각각의 역할을 분리함으로써 소프트웨어를 더 모듈화하고 유연하게 만들었습니다. 이렇게 구조화된 MVC 패턴은 코드의..

NoSQL & RDBMS

NoSQL과 RDBMS의 개념이 나오게 된 배경 RDBMS (관계형 데이터베이스 관리 시스템) RDBMS는 초기부터 데이터 일관성과 무결성을 강조했습니다. 데이터를 테이블 형태로 구조화하고, 테이블 간의 관계를 통해 정형화된 데이터를 처리하는 데 중점을 두었습니다. ACID 특성을 통해 안정적인 트랜잭션 처리를 제공하여 신뢰성을 확보했어요. NoSQL NoSQL은 대규모 데이터와 다양한 데이터 모델에 대응하기 위해 등장했습니다. 스키마가 유연하며, 수평적 확장이 가능한 특성을 가지고 있어 대용량 및 분산 데이터 처리에 효과적입니다. NoSQL은 비정형 데이터와 유연한 확장성을 강조하여 RDBMS의 한계를 극복하려는 노력에서 출발했어요. 이렇게 두 시스템은 각자의 강점과 한계를 가지고 있어, 프로젝트의 요..

World of Dev/DB 2024.01.08

이렇게도 되네

231212CW 크기가 작은 부분 문자열 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. H풀이 public class 크기가_작은_부분문자열H ..

Entity…나는 응답한다…!

231207W 여느날과 같이 오늘도 강의와 함께 아주 RestFull~ 한 API 작성 공부를 하는 도중, 어느 순간 ResponseEntity라는 녀석을 소개받았다. 이후로 한결같이 대면하며 즐거운 나날(ㅎ)을 보내는 도중 문득 이 녀석에 대해 궁금해졌다. 사실 공부하는 도중에 알게 된 녀석이기에 분명 설명도 들었을 터인데, 일단 쓰고, 또 일단 쓰고 …가 반복되다보니 잊어버린 듯 하다. 덩달아 이전에 쓰던 녀석도 가물가물해져 이번 기회에 알아보기로 했다. 일단 ResponseEntity를 알기 전에 API를 작성할 땐 이러했다. @PostMapping("/products") public ProductResponseDto createProduct(@RequestBody ProductRequestDto ..

문법/JAVA 2023.12.08

가운데 글자 가져오기 - ing

오늘의 코드 테스트 메뉴는 - 가운데 글자 가져오기 문제 - 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 내가 푼 코드 package programmers.level1; public class 가운데_글자_가져오기 { public static String solution(String s) { if (s.length() % 2 == 1) { //문자열 길이가 홀수 일시 //문자열 지정 부위 잘라오기 {(s길이 절반 *소수점 날아감) 부터 (s길이 절반+1) 까지} return s.substring(s.length() / 2, s.length() / 2 + 1);..

:PP

231127W 오늘도 Spring Boot와 함께하는 싱나는 코딩중, 수정에 관련된 API를 작성하려던 도중이었다. 수정에 관련해 @Put 과 @Patch 가 있는데, 둘은 같은 듯 비슷한 듯 다른 듯 한 녀석들이라고 들었는데 제대로 이해하진 못한 상태였다. @Put은 전체수정, @Patch는 부분수정 이라는 정도? 이전까진 수정에 관한 API면 묻고 @Put으로 갔었는데, 이번엔 좀 더 이해를 하고 필요에 맞춰서 써보고 싶었다. 일단 당시의 생각대로 작성해봤던 코드다. //프로필 수정 @PatchMapping("/profile/{userId}") public ResponseEntity updateProfile(@PathVariable Long userId, @RequestBody UserUpdatePr..

코딩/JAVA 2023.11.27

Size is matters.

231126W 며칠 간 이어진 스프링 시큐리티를 이용한 프로젝트. 내가 맡아 구현해야 할 API는 회원가입, 로그인, 비밀번호 수정, 프로필 수정 이렇게 네 가지 였는데, 그 중에서 ‘프로필 수정’을 작업 중이었다. Client로 부터 요청 값을 받을 ‘UserRequestDto’를 작성하고 있었는데, 프로필에 들어갈 자기소개용 필드 ‘content’ 하나를 마련했다. 그런데 언젠가 다른 웹사이트에서 글을 작성하다 글자 수 500자였나 1500자였나 제한이 걸렸던 적이 있었던게 생각나서 이번에 적용해 보기로 했다. 제일 처음 생각난 건 ‘정규식’ 이었다. 회원가입 API를 만들며 작성한 RequestDto에서 ‘username’과 ‘password’필드를 선언했었는데, 각각 제한을 걸어줬었다. @Gett..

코딩/JAVA 2023.11.26

가막눈 쑤준

231115CW 오늘도 어김없이 밤시간 까지 열심히 Spring 공부를 하던 와중이었다. 상품을 저장하는 웹페이지를 구현하려 API를 작성 중 이었는데, 어느 순간 거슬리는 상황이 발생했다. 상품을 모두 조회하는 API를 작성 중이었는데, return값으로 productService를 주려는 중이었다. VSCode와 마찬가지로 IntelliJ또한 여러 단축키, 자동완성 등 편리한 기능들을 지니고 있는데, 이번에도 “그렇지 착한녀석.” 하면서 Enter를 탁 쳤다. 이젠 빨간줄 뜬다고 무조건 쫄진 않는다. 훗. 해당 productService Class에 메서드 생성을 위해 Alt+Enter를 탁탁! 그런데 어, 예상키론, 제일 하단에 얌전히 뜩, 하고 생성되야 하는데 뭔 자신감인지 필드 바로 아래서 존재..

문법/JAVA 2023.11.16

짝수와 홀수

231115CW 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 - num은 int 범위의 정수입니다. - 0은 짝수입니다. ...란다. 처음에 작성한 코드 Personal public static String solution(int num) { String answer = ""; if (num % 2 == 1) { answer = "Odd"; } else if (num % 2 == -1) { answer = "Odd"; } else if (num % 2 == 0) { answer = "Even"; } else { answer = "Even"; } return answer; } 아주 하나하나 쭉쭉 작성해놨다. 원래는 -..

NoErrorMessege

231106W 응 그냥 그렇다고. 한참 Spring의 기초를 배우던 중 이었다. 열심히 이것 저것 설정도 하고 코드 작성 후 실행도 해보고 메모도 하면서 공부 중 이었는데, 갑자기 흠칫 하게 됐다. 강사 쌤의 터미널이랑 내 터미널의 메세지가 다른 것. 분명 원하는 값은 나왔는데, 저 네모 안의 메세지가 추가로 있다. 이전 IntelliJ와 Github간 연결해볼 때 몇 번 재설치를 한 경험 후로 사소한걸로 흠칫 흠칫 거리게 되서 바로 검색해봤…더니 별거 아니란다. 빌드시에 나타나는 경고인데, 그냥 단순히 현재 내가 사용하는 Gradle 버전이 낮아 보내는 메세지란다. 고로 그냥 Gradle을 버전업 만 시켜주면 된다는 것. “올? 그냥 너가 쓰는 Gradle 버전 낮은데? 응. 그냥 그렇다고.” 일단 검..

코딩/JAVA 2023.11.06