전체 글 493

[Spring] 디렉터리 패키지 구조 구성하는 방법

스프링으로 프로젝트를 시작하려고 하는데, 어떻게 패키지의 계층 구조를 나눠야 효율적인지 궁금해졌습니다. 그래서 어떤 방법이 좋을지를 찾아보았는데, 이와 관련해 내용을 정리하려고 합니다. 계층형 디렉토리 패키지 구조 계층형 디렉토리 패키지 구조는 아래와 같이 3가지로 구분됩니다. 1. Web Layer: 사용자의 요청과 이에 대한 응답을 반환하는 처리가 일어나는 Layer 2. Service Layer: 실제 비지니스 로직이 일어나는 Layer로 Web Layer와 Repository Layer 사이에 있는 Layer 3. Repository Layer: DB와 통신하는 Layer 계층형 구조의 장점 1, 전체적인 프로젝트의 구조를 빠르게 파악할 수 있습니다. 계층형 구조의 단점 1. 각각 패키지 디렉토리..

백엔드/Spring 2023.03.13

[JPA] N+1 문제를 해결하기 위한 fetch

오늘 포스팅에서는 fetch = Lazy에서 발생할 수 있는 N+1 문제를 해결하기 위해 등장한 fetch join의 장점과 한계를 정리해보는 시간을 가지겠습니다. 1. JPA에서 N+1 문제의 발생 코드 Team teamA = new Team(); teamA.setName("teamA"); em.persist(teamA); Team teamB = new Team(); teamB.setName("teamB"); em.persist(teamB); Member member1 = new Member(); member1.setUsername("member1"); member1.changeTeam(teamA); em.persist(member1); Member member2 = new Member(); membe..

백엔드/JPA 2023.03.06

[백준/python] 13549번 숨바꼭질 풀이

이번 포스팅에서는 13549번 숨바꼭질을 풀어보겠습니다. 이 포스팅에서는 정답풀이와 오답풀이의 차이점을 기준으로 문제를 해결해보겠습니다. 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K..

카테고리 없음 2023.03.01

[백준] 1062번 가르침 파이썬 풀이

이번에는 백트래킹 골드4문제인 1062번 가르침을 어떻게 해결하였는지를 작성하는 시간을 가져보도록 하겠습니다. 정답풀이 import sys n, k = map(int, input().split()) # k 가 5보다 작으면 어떤 언어도 배울 수 없음 if k < 5: print(0) exit() # k 가 26이면 모든 언어를 배울 수 있음 elif k == 26: print(n) exit() answer = 0 words = [set(sys.stdin.readline().rstrip()) for _ in range(n)] learn = [0] * 26 # 적어도 언어 하나는 배우기위해 a,c,i,n,t 는 무조건 배워야함 for c in ('a', 'c', 'i', 'n', 't'): learn[ord..

카테고리 없음 2023.02.17

[백준] 10971 외판원 순회 2

정답코드 # 외판원 순회 2 # 복습 횟수:0, 00:45:00, 복습필요O import sys si = sys.stdin.readline N = int(si()) graph = [list(map(int, si().split())) for i in range(N)] visited = [0 for i in range(N)] answer = sys.maxsize def dfs(first, start, count, sumi): global answer if count == N-1: if graph[start][first] == 0: return answer = min(answer, sumi + graph[start][first]) return for i in range(N): if visited[i]: con..

카테고리 없음 2023.02.16

[네트워크] DNS를 통한 IP 주소 확인 과정

DNS 서버의 기본 동작은 클라이언트에서 조회 메시지를 받고 조회의 내용에 응답하는 형태로 정보를 회답하는 일입니다. 그렇다면 조회 메세지에 포함된 정보는 무엇일까요? 그리고 DNS를 통해 IP주소를 어떻게 확인할 수 있을까요? 조회 메시지에 포함된 정보 (a) 이름 서버나 메일 배송 목적지(메일 주소에서 @뒷부분의 이름)와 같은 이름입니다. (b) 클래스 DNS의 구조를 고안했을 때 인터넷 이외에도 네트워크에서의 이용까지 검토하여 이것을 식별하기 위해 클래스라는 정보를 준비합니다. 그러나 지금은 인터넷 이외의 네트워크가 소멸되어서 클래스는 항상 인터넷을 나타내는 ‘IN’이 됩니다. (c) 타입 이름에 어떤 타입(종류)의 정보가 지원되는지를 나타냅니다. 예를 들어 타입이 A이면 이름에 IP 주소가 지원되..

CS/네트워크 2023.01.09

[네트워크] 네트워크 통신 과정 기초

이번 시간에는 네트워크 통신과정의 기초부분과 HTTP 리퀘스트 및 도메인 동작과정에 대해 이야기해보는 시간을 갖도록 하겠습니다. 네트워크 통신 - 간단한 과정 1. 웹 브라우저가 메시지를 만든다. 2. TCP/IP의 데이터를 전기 신호로 만들어서 보낸다. 3. 전기 신호가 케이블의 LAN을 통해 이동한다. 4. 액세스 회선을 통해 인터넷 내부로 접근한다. 5. 서버측의 LAN으로 접근한다. 6. 전기 신호가 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다. 네트워크 통신 - HTTP 리퀘스트 브라우저는 웹 서버에 보내는 리퀘스트 메시지를 작성하기 위해 URL을 해독합니다. URL을 해독하고 나면 브라우저는 HTTP 프로토콜을 사용하여 웹 서버에 액세스합니다. URL이 "무엇을"에 해당한다면 HT..

CS/네트워크 2023.01.04

[디버깅] AWS CloudFront 사용 중 발생한 이슈 정리

AWS CloudFront를 접근하지 못하는 이슈, Get 방식만 적용되고 다른 방식은 통신이 적용되지 않는 이슈, Session에 값이 들어가지 않는 이슈 등 CloudFront를 사용하며 여러 이슈들을 만났었는데 그 이슈들의 해결과정을 정리하려 합니다. 1. AWS CloudFront 이슈1 - 502 접근 불가 이슈 문제 상황: googling을 통해 똑같이 적용을 했음에도 불구하고, CloudFront에 접속할 수 없다는 에러가 발생하였습니다. 해결 과정: Cookie 방문 기록 초기화 후 어느정도 해결하였으나 특정 페이지의 접근이 불가능한 에러가 여전히 있었습니다. 그래서 f12를 눌러보니 CloudFront가 https로 접근하려고 하는 것을 확인하였습니다. 그래서 환경설정을 수정하기 위해 원..

IT/디버깅 2022.12.07

[AWS] EC2, CloudFront, Route53 연결하기

오늘은 EC2와 Route53을 연결한 뒤 과정으로 CloudFront를 통해 CDN 설정을 하는 법을 정리하겠습니다. 보통 웹사이트를 배포하면 용량이 큰 resources 때문에 페이지 로딩이 느린데, 보통 이러한 문제를 CDN을 통해 해결합니다. AWS에서는 CDN을 활용할 수 있도록 CloudFront를 제공합니다. 1. CloudFront 생성하기 2. EC2 주소 입력하기 원본 도메인에 EC2의 public 주소를 입력합니다. 참고로 이 부분에는 탄력적 IP의 고정 주소값을 입력할 수 없습니다. 3. 대체 도메인을 입력하기 대체 도메인을 입력하기 위해서는 반드시 SSL 인증서가 필요합니다. 4. 인증서 요청하기 인증서 유형은 퍼블릭 인증서 요청으로 하고, 도메인 이름은 기존에 받은 도메인으로 입..

백엔드/AWS 2022.12.04

[AWS] ec2에 domain Route53 설정하기

오늘은 Free Domain을 받고 ec2의 주소에 routing을 해보는 실습을 정리해보겠습니다. 1. free 도메인 받기 https://www.freenom.com/ Freenom - A Name for Everyone Cost Price Free Special www.freenom.com freenom에서 도매인발급 받는 방법은 생략하겠습니다. 2. Route53 생성하기 3. Freenom 사이트의 도메인에 들어가 네임 서버 등록하기 4. EC2 Public 주소 연결하기 이렇게 하면 원하는 Domain을 입력하면 우리가 생성해둔 EC2의 주소로 라우팅이 됩니다.

백엔드/AWS 2022.12.04
728x90