분류 전체보기
-
(2023-11-20 TIL) 프로그래머스 2문제, 1:N, N:1, N:M 관계TIL 2023. 11. 20. 21:39
1:N 관계, N:1 관계, 그리고 N:M 관계 https://yoosup0920.tistory.com/17 1대N, N대1, N대M 관계에 대해 알아보자 앞서 Entity를 만들고 ERD를 그려보면서 서로 다른 두 데이터의 연관관계에 대해 살펴보았습니다. 이번엔 그 연관관계의 심화과정이라 할 수 있는 1대N, N대1, 그리고 N대M관계에 대해 알아보겠습니 yoosup0920.tistory.com 오늘 푼 프로그래머스 2문제 https://yoosup0920.tistory.com/15 프로그래머스 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 ..
-
1대N, N대1, N대M 관계에 대해 알아보자프로그래밍 언어/Spring 2023. 11. 20. 21:36
앞서 Entity를 만들고 ERD를 그려보면서 서로 다른 두 데이터의 연관관계에 대해 살펴보았습니다. 이번엔 그 연관관계의 심화과정이라 할 수 있는 1대N, N대1, 그리고 N대M관계에 대해 알아보겠습니다. 1대N 관계 우리가 휴게소에서 음식을 주문한다고 가정해봅시다. 고객이 음식을 주문할 때, 주문 정보는 고객 테이블에 들어가야할까요? 아님 음식 테이블에 들어가야할까요? 일단, 한 명의 고객이 여러 음식을 시킬 수 있으니 고객이 1, 음식을 N으로 하고 1대N 관계가 성립한다고 볼 수 있습니다. 아래 표와 같이 주문이 들어왔다고 생각해봅시다. 주문번호id 이름 음식id order0001 민수 food0001 order0002 영희 food0001 order0003 민수 food0002 고객 테이블에 주..
-
Spring MVC 간단 정리프로그래밍 언어/Spring 2023. 11. 20. 13:53
MVC란 Model View Controller의 준말로 코드를 model, view, controller로 각각의 역할을 분리하는 디자인 패턴입니다. 여기서 디자인 패턴이란 효율적으로 소프트웨어를 개발하기위한 여러가지 방법들을 일컫습니다. 간단하게, Model은 데이터와 비지니스 로직을 담당하고, View는 사용자와 상호작용하는 인터페이스를, Controller는 Model과 View를 조정하고 제어하는 중간다리 역할을 합니다. MVC패턴의 이점은 프로그램의 구성요소를 3가지로 분리함으로써 코드의 재사용성과 유지보수성을 높이고, 개발자들의 협력을 좀 더 용이하게 합니다. 그래서 현재까지 많은 개발자들과 회사들이 MVC패턴을 디자인 패턴으로 이용하고 있습니다. 그렇다면 Spring MVC는 무엇일까요? ..
-
프로그래머스 핸드폰 번호 가리기코딩테스트 문제 2023. 11. 20. 10:45
문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 코딩 문제를 풀면서 느낀 점이지만, 자바와 파이썬의 차이 중 가장 몸에 와닿는 것은 문자열을 다루는 방법같다. 파이썬에서는 한없이 쉽게 풀리던 문제도 자바에서 풀려고하면 바로 방법이 떠오르지 않는다. 아직 자바에 익숙하지 못해서 생긴 이슈라고 생각해야겠다. 서론이 길었다. 내가 생각한 이 문제의 핵심은 문자열 자르기이다. 사용한 메서드들은 아래와 같다. substring String str = "abcd"; //문자열을 원..
-
프로그래머스 음양 더하기코딩테스트 문제 2023. 11. 20. 10:31
문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 쉽게 말해서 절댓값을 모은 정수 배열 absolutes와 그 absolutes배열의 순서대로 부호를 담은 signs배열을 사용해 새로운 배열 요소들의 총 합을 구하는 문제이다. 처음보자마자 어떻게 풀어야 할지 답이 나온 문제지만, 구현까지는 생각보다 시간이 들어갔다. 마지막에 내가 속시원하게 풀었다고 생각한 풀이는 삼항 연산자를 사용한 풀이였다. 삼항연산자는 피연산자를 3개를 가지는 조건연산자인데, 말로 설명하면 어려우니 아래 문법을 보도록..
-
(2023-11-10 TIL) Bean 수동등록, 인증과 인가, 쿠키세션인증방식, 그리고 JWTTIL 2023. 11. 10. 17:45
Bean 수동등록에 들어가기 앞서서 평소라면 @Component를 사용하면 @CommponentScan에 의해 자동으로 스캔되어 해당 클래스를 Bean으로 등록해준다. 그리고 일반적으로, @Component를 사용한 자동등록이 많이 사용되고 훨씬 효율적이다. 왜 Bean 자동등록이 효율적일까? 1. 프로젝트 규모가 커질 경우 Bean을 자동으로 등록하는 것이 훨씬 편하다. 2. 비지니스 로직 관련 클래스들은 그 수가 많아 @Controller, @Service, @Repository annotation을 사용해 Bean으로 등록하고 관리하는것이 개발생산성에 유리하기 때문이다. 그렇다면, Bean을 굳이 수동등록해야할 때와 이유에 대해 알아보자. Bean을 수동등록할 때는, 공통 로그 처리 등등 부가적이고..
-
(2023-11-08 TIL) IoC와 DI에 대하여프로그래밍 언어/Spring 2023. 11. 8. 17:23
건설업계에서는 튼튼한 건물을 짓기 위해 굉장히 엄격한 설계원칙과 디자인 패턴을 고수한다고 한다. 이는 한 사람의 단시간에 생각해 낸것이 아니라 여러 사람의 노하우와 기술이 합쳐져서 나온 최적의 건설 이론이라고 볼 수 있다. 코딩에서도 마찬가지로 튼튼하고 유지보수가 좋은 코드를 만들기 위해서 지켜야할 몇가지 설계원칙과 디자인 패턴이 있다. 오늘의 TIL 주제인 IoC(Inversion of Control)와 DI(Dependency Injection)이다. IoC(제어의 역전)이란? 애플리케이션의 흐름 조정(management of an application's flow)이 애플리케이션의 다른 부분으로 이전되는 경우, 연결성(pluggability), 테스트 가능성(testability), 유용성(usab..
-
(2023-11-07자 TIL) 3계층 아키텍쳐에 대해 알아보자프로그래밍 언어/Spring 2023. 11. 7. 21:43
1주차 강의를 들으며 memo 어플리케이션을 만들던 도중, 이런 생각이 들었다. 'Controller.java 파일에 이렇게 많은 기능들이 있어도 될까?' 강의를 수강하며 만든 내 Controller에는 CRUD와 그밖의 여러가지 기능들이 혼잡해 있어 코드가 한눈에 들어오지 않았다. 이는 과거의 개발자들이 절대 용납하지 않는 직관성과 가독성을 해치는 '안좋은 코드'의 예시에 부합한다. 그렇다면, 이 복잡한 기능을 가진 Controller를 어떻게 단순하고 명료하게 만들었을까? 여기서부터가 2주차 Spring강의의 첫번째 키워드, '3계층 아키텍쳐'(3 Layer Architecture)이다. IBM에서 정의한 3계층 아키텍쳐란, 1. 애플리케이션을 프레젠테이션 계층 또는 사용자 인터페이스, 2. 데이터가..