danbibibi
article thumbnail
Interceptor
WEB/back-end 2023. 4. 22. 12:22

Interceptor : Request 객체를 컨트롤러의 핸들러로 도달하기 전에 낚아채서 개발자가 원하는 추가작업을 한 후 핸들러로 보낼 수 있도록 해주는 것 추가적인 작업 로그인 체크, 권한 체크 등 관련 메소드 preHandle() 컨트롤러가 호출되기 전에 실행 false를 반환하면 request를 바로 종료 postHandle() 컨트롤러 수행 후 호출 비동기적 요청 처리 시에는 처리되지 않음 preHandle()에서 리턴 값이 false인 경우 미실행 적용 중인 인터셉터가 여러개인 경우, preHandle() 역순으로 호출 afterCompletion() view를 통해 클라이언트에 응답을 전송한 뒤 실행 요청 처리 중에 사용한 리소스를 반환해주기 적절한 메소드 preHandle()에서 리턴 값이..

article thumbnail
AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
WEB/back-end 2023. 4. 22. 12:03

AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심 관심 사항과 공통(부가) 관심 사항으로 나누어 모듈화 핵심 관심 사항 : 적용하고자 하는 핵심 비즈니스 로직 공통(부가) 관심 사항 : 핵심 로직을 실행하기 위해 행해지는 부가적인 로직 ex) DB 연결, 로깅 등 분리한 부가 기능을 Aspcet라는 독특한 모듈 형태로 만들어서 설계하고 개발 (공통 모듈을 손쉽게 적용 가능) 💡 한 마디로 AOP란? 부가기능을 Aspcet로 정의하여, 핵심기능에서 부가기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념 (실무에서는 호불호가 갈린다고 한다) 💡 AOP 등장 배경 기존 OOP에서 공통관심사항을 여러 모듈에..

article thumbnail
Spring
WEB/back-end 2023. 4. 21. 11:51

Spring 자바 기반의 엔터프라이즈 급 어플리케이션을 만들 수 있는 Framwork JEE가 제공하는 다양한 기능을 제공하는 것 뿐만 아니라, DI나 AOP같은 기능도 지원 개발자가 복잡하고 실수하기 쉬운 Low Level에 신경 쓰지 않고, Business Logic 개발에 전념할 수 있도록 해줌 프레임워크와 라이브러리의 차이점 "제어 흐름이 어디에 있는가" 프레임워크는 전체적인 흐름을 쥐고 있으며 애플리케이션의 코드는 프레임워크에 의해 사용됨 (프레임워크) 라이브러리는 개발자가 전체적인 흐름을 만들며 라이브러리를 가져다 씀 (개발자) IoC (Inversion of Control, 제어의 역전) 객체지향 언어에서 Object 간의 연결 관계를 런타임에 결정 객체 간의 관계가 느슨하게 연결됨 (loo..

article thumbnail
BOJ 11438번: LCA 2
문제 풀이/백준 2023. 4. 20. 22:25

문제 문제 바로가기> BOJ 11438번: LCA 2 11438번: LCA 2 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정 www.acmicpc.net 풀이 N이 최대 100,000이고, M 또한 최대 100,000이므로 두 노드의 공통조상을 찾기 위해 하나씩 올라가면서 비교하다보면, O(NM)으로 시간초과가 발생한다. 따라서, 두 노드의 공통조상을 찾을 때, 조금 더 빠르게 찾아줄 수 있어야 하는데, 이를 위해 2^k 번째 조상까지 저장하는 ancestor 배열을 만들어주었다!! ex ) ancestor[8][22] : 22번 노드의 2^8번째 조상..

article thumbnail
식별관계 비식별관계
CS/데이터베이스 2023. 4. 17. 23:10

식별 관계 부모 테이블의 기본키를 자식테이블의 기본키로 이용하는 방법 반드시 부모테이블에 데이터가 존재해야 자식테이블에 데이터를 입력할 수 있음 (데이터 정합성 보장) 실선으로 표시 💡 데이터 정합성 (Data Consistency) : 어떤 데이터들이 값이 서로 일치하는 상태 💡 데이터 무결성 (Data Integrity) : 데이터 값이 정확한 상태 ex) 중복 데이터가 다 틀린 값으로 일치하는 경우 = 정합성 O, 무결성 X 비식별 관계 부모 테이블의 기본키를 자식테이블의 외래키로 이용하는 방법 부모테이블에 데이터가 없어도 자식테이블에 데이터를 입력할 수 있음 (데이터 정합성 보장 x) 점선으로 표시 💡 비식별 관계 장점 1. 구조 변경 용이 2. 부모 테이블과의 의존성 제거 3. 과도한 인덱스 제거

article thumbnail
Index, View, Transaction (인덱스, 뷰, 트랜잭션)
CS/데이터베이스 2023. 4. 12. 17:11

Index (인덱스) 테이블에서 데이터 조회 시 동작속도를 높여주는 자료구조 (컬럼의 값, 레코드 저장 주소) 를 key와 value의 쌍으로 저장 MYI (MySQL Index) 파일에 저장 Index 장점과 단점 장점 테이블 조회 시 속도와 성능이 향상 시스템의 전반적인 부하 감소 가능 💡 Index를 사용하면 좋은 경우 1. 규모가 큰 테이블 2. 삽입, 삭제, 수정 작업이 적은 경우 3. 데이터 중복도가 낮은 경우 4. WHERE, ORDER BY, JOIN 등이 자주 사용되는 경우 💡 데이터 중복이 많은 경우, INDEX 사용이 비효율적인 이유 ex) 이름, 나이, 성별 세 가지 컬럼을 갖고 있는 테이블 이름 - 다양한 경우의 수 나이 - INT 타입 성별 - 남, 녀 (2가지) 이 경우, 이름..

article thumbnail
Key (후보키, 기본키, 슈퍼키, 대체키, 외래키)
CS/데이터베이스 2023. 4. 12. 15:44

키 (Key) 란? : 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 튜플들을 서로 구분할 수 있는 기준이 되는 속성 Key 종류 후보키 (Candidate Key) 기본키로 사용할 수 있는 속성들 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 하나의 릴레이션 내 중복된 튜플들이 있을 수 없으므로, 모든 릴레이션에는 반드시 하나 이상의 후보키 존재 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족 💡 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별 가능 💡 최소성 : 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성만으로 구성 기본키 (Primary Key) 후보키 중에서 선택한 주 키 (Main Key) 한 릴레이..

article thumbnail
BOJ 1799번: 비숍
문제 풀이/백준 2023. 4. 6. 10:10

문제 문제 바로가기> BOJ 1799번: 비숍 1799번: 비숍 첫째 줄에 체스판의 크기가 주어진다. 체스판의 크기는 10이하의 자연수이다. 둘째 줄부터 아래의 예와 같이 체스판의 각 칸에 비숍을 놓을 수 있는지 없는지에 대한 정보가 체스판 한 줄 단위로 www.acmicpc.net 풀이 문제의 핵심은 "비숍의 이동 방식(체스판의 색깔)" 이다. 비숍은 대각선으로만 이동 가능하고, 이는 이동 전과 이동 후의 체스판의 색깔이 같음을 의미한다. 이 부분이 왜 핵심인가!! 그 이유는, 같은 색깔에 있는 비숍끼리만 영향을 끼칠 가능성이 있기 때문!! 이다. 따라서 전체 경우의 수인 2^(N*N)을 한번에 모두 탐색하는 것이 아닌, 검은색, 흰색으로 나누어 2번 탐색 + backtracking 하여, 2(검은색,..

article thumbnail
BOJ 23291번: 어항 정리

문제 문제 바로가기> BOJ 23291번: 어항 정리 23291번: 어항 정리 마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이고, 한 변의 길이는 모두 1이다. 상어가 가지고 있는 어항은 N개이고, 가장 처음에 어항은 일렬로 바 www.acmicpc.net 풀이 어항을 쌓는 부분을 제외한 나머지 부분의 구현은 평이한 편이다.. 다만 어항 쌓느라 1시간 넘게 쓴 것 같다 ... 어항 쌓기 규칙을 찾아주는 게 어려웠다 ... 조금 .... 많이 ... 💡 어항 쌓기 규칙 총 5가지 변수를 이용해서 규칙을 찾았다. cnt : 그냥 1, 2, 3, 4, ... monotonic 하게 증가 idx : cnt가 짝수인 경우 1 증가한다. pivot이 증가할 때 pivot+=..

article thumbnail
BOJ 3055번: 탈출
문제 풀이/백준 2023. 4. 5. 16:31

문제 문제 바로가기> BOJ 3055번: 탈출 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 BFS를 이용하여 문제를 해결했다. 물이 매 분마다 비어있는 칸으로 확장하고, 다음 시간에 물이 찰 예정인 칸으로 고슴도치가 이동할 수 없으므로 고슴도치의 이동 전에, 물의 확장을 먼저 처리해주었다. (분이 바뀔 때 마다 처리해주기 위해서 now 변수를 이용) import java.io.*; import java.util.*; public class Main { static final int[] dy = {-1, 1, 0,..

article thumbnail
BOJ 23289번: 온풍기 안녕!

문제 문제 바로가기> BOJ 23289번: 온풍기 안녕! 23289번: 온풍기 안녕! 유난히 추운 날씨가 예상되는 이번 겨울을 대비하기 위해 구사과는 온풍기를 설치하려고 한다. 온풍기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기 www.acmicpc.net 풀이 벽을 고려해야해서,, 온풍기에서 바람이 나오는 부분을 구현하는 게 힘들었다 ,, 다음과 같은 규칙성을 가진다!! 규칙성이 필요한 BFS 였다,, ("같은 온풍기에서 나온 바람이 여러 번 도착"해도 온도를 여러번 상승시키지 않기 위해 visited 배열을 이용해주었다.) 벽은 4차원 배열을 이용해서 그 정보를 저장해주었다!! (코드 input 함수 참조) 비록 시간은 엄청 오래 걸렸지만 .... 2~3시..

article thumbnail
BOJ 2458번: 키 순서
문제 풀이/백준 2023. 4. 4. 19:52

문제 문제 바로가기> BOJ 2458번: 키 순서 2458번: 키 순서 1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여 www.acmicpc.net 풀이 인접 리스트를 이용하여 간접적으로 대소 비교가 가능한지 확인해 주었다! import java.io.*; import java.util.*; public class Main { static int N, M; static boolean[][] check; static List[] small, big; private static int solution() { ArrayDeque q = new ArrayDeque()..

article thumbnail
BOJ 6087번: 레이저 통신
문제 풀이/백준 2023. 4. 4. 12:05

문제 문제 바로가기> BOJ 6087번: 레이저 통신 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 풀이 한 단계 더 발전한 BFS 느낌이었다. 핵심은 4차원 방문 배열 + Prioirty Queue 이용이다. 💡 최단 거리가 아닌, 최소로 거울을 활용하는 횟수를 구하므로, Priority Queue를 이용하여 가장 적은 거울이 필요한 경우부터 탐색해주었다. 💡 visited[y][x][before_dir][next_dir] : 위치 (y, x) , 이전 방향 before_dir , 다음 방향 ne..

article thumbnail
SWEA 2382번: 미생물 격리
문제 풀이/SWEA 2023. 4. 3. 16:17

문제 문제 바로가기> SWEA 2382번: 미생물 격리 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 .... 정말... 국어를 잘해야한다. 주의할 점 1. 군집이 동시에 움직인다. 처음에 번호순서대로 움직여서 답이 이상하게 나왔다 ^^,, 이를 위해 tmpMap 배열을 이용해주었다! 2. "이동 후 두 개 이상의 군집이 한 셀에 모이는 경우 군집들이 합쳐지게 된다." 이 부분에서 구현 실수가 있었다. 예를 들어 군집 A=3, B=4, C=5라고 해보자. A, B, C 순서로 동일 칸에 도착했을 때, C의 방향이 해당 군집의 방향이 되어야 한다. 그런데 만약 A < B 이니까, B의 크기를 7 로 저장을..

article thumbnail
SWEA 2112번: 보호 필름
문제 풀이/SWEA 2023. 4. 2. 18:59

문제 문제 바로가기> SWEA 2112번: 보호 필름 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 "성능검사를 통과하기 위한 최소 약품투입 횟수"를 구하기 위해 부분 집합을 이용해 문제를 풀었다! #include #define MAX_Y 14 #define MAX_X 21 using namespace std; int Y, X, K; int ans = 0; bool film[MAX_Y][MAX_X]; void input() { cin >> Y >> X >> K; for (int i = 0; i > film[i][j]; } a..