함량 100%

함지의 개발일기

최신 글

more

[Spring] 스프링 MVC와 DispatcherServlet 전략

이 글은 토비의 스프링의 내용을 정리한 것입니다. Spring 스프링은 집착에 가까울 정도로 모든 기능을 다양한 방법으로 확장하도록 설계되어 있다. 스프링이 제공하는 유연하고 확장성이 뛰어난 구조를 이용해서 각 프로젝트에 맞는 최적화된 구조를 만들어내고, 관례를 따라 빠르게 개발 가능한 스프링 기반의 프레임워크를 만들어서 사용해야한다. 스프링은 특정 기술이나 방식에 매이지 않으면서 웹 프레젠테이션 계층의 각종 기술을 조합, 확장해서 사용할 수 있는 매우 유연합 웹 애플리 케이션 개발의 기본 틀을 제공해준다. DispatcherServlet과 MVC 아키텍처 DispatcherServlet은 스프링의 웹 기술을 구성하는 다양한 전략을 DI로 구성해서 확장하도록 만들어진 스프링 서브릿/MVC의 엔진과 같은 ..

SPRING 2023.06.30 0

[백준/구현] 10431 줄세우기(Java, 자바)

https://www.acmicpc.net/problem/10431 10431번: 줄세우기 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1 www.acmicpc.net 단순하게 생각하면 금방 풀 수 있다. 예를 들어 6 2 3 7 5 1 4 로 주어졌을 때, 각 학생이 옮겨지는 횟수는 자신보다 앞에 있는 수 중에서 자신보다 큰 수의 개수이다. 위의 예시로 봤을 때 다음 표와 같이 된다. 키 6 2 3 7 5 1 4 옮겨지는 횟수 0 1 1 0 2 5 3 여기서 옮겨지는 횟수를 모두 더하면 된다. 코드로 옮겨보면 간단하다. int cnt = 0; for (int i =..

구현 2023.06.29 0

[백준/수학] 10158 개미(Java, 자바)

https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 이 문제는 시간복잡도가 아주 중요한 문제이다. 단순하게 생각하면 금방 풀 수 있지만, 그러면 대다수는 시간복잡도에 걸린다. 내가 처음으로 제출한 코드는 다음과 같다. static void pro() { int deltaX = 1; int deltaY = 1; while (t-- > 0) { if (p == w) deltaX = -1; if (p == 0) deltaX = 1; i..

수학 2023.06.28 0

[운영체제] 데드락(Dead Lock, 교착상태)

1. 데드락이란 - 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태입니다. - 즉, 무한히 다음 자원을 기다리는 상태입니다. - 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생합니다. 2. 발생조건 - 데드락의 발생 조건은 다음 네가지 입니다. 네개를 모두 만족하는 경우에 데드락이 발생하며, 이 중 하나라도 만족하지 않는다면 데드락이 일어나지 않습니다. 1) 상호배제 : 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다. 2) 점유대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다. 3) 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 ..

운영체제 2023.05.30 0

[자료구조] 배열 & 리스트 & 연결리스트

1. Array(배열) - index로 빠르게 값을 찾는 것이 가능 - 데이터가 계속 증가하는 경우, 최대 사이즈를 알 수 없어 부적절 2. ArrayList(리스트) - Array처럼 처음부터 크기를 정하지 않아도 됨. 나중에 크기를 줄이거나 늘릴 수 있음 - index를 가지고 있어 빠른 검색 가능 - 순차적으로 정렬을 해야하므로 데이터 삽입 및 삭제가 느림 3. LinkedList(연결리스트) - 한 노드에 연결 될 노드의 포인터 위치를 가르키는 방식 - index가 없기 때문에 검색이 느림 - 데이터의 삽입 및 삭제가 빠름

자료구조 2023.05.30 0

인기글

[AWS] Ubuntu-LTS 18.04에 MariaDB 설치하기(+특정버전 설치하기)

set password for 'root'@'localhost' = password('1234'); 1. apt 업그레이드 apt는 Advanced Packaging Tool의 약자로 패키지들을 관리(설치, 삭제, 업데이트)해주는 툴이다. sudo apt update 2. MariaDB 설치 아래 명령어를 쳐서 DB를 설치해준다. sudo apt-get install -y mariadb-server 특정버전을 설치할 경우 1) 아래 사이트에 접속해서 원하는 버전을 선택한다. https://mariadb.com/downloads/ MariaDB Products & Tools Downloads | MariaDB Find MariaDB downloads, connectors, and tools includin..

[백준/수학] 10158 개미(Java, 자바)

https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 이 문제는 시간복잡도가 아주 중요한 문제이다. 단순하게 생각하면 금방 풀 수 있지만, 그러면 대다수는 시간복잡도에 걸린다. 내가 처음으로 제출한 코드는 다음과 같다. static void pro() { int deltaX = 1; int deltaY = 1; while (t-- > 0) { if (p == w) deltaX = -1; if (p == 0) deltaX = 1; i..

수학 2023.06.28 0

[프로그래머스/해시] 전화번호 목록(Java, 자바)

https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에는 loop를 생각했는데 주제가 해시다보니 해시로 풀었다. 실전에서는 이렇게 문제 유형이 나오지 않을텐데 걱정이다 ㅠ HashSet을 사용해도 되나 사용하지 않은 이유는 HashMap에 비해 느리다는 단점이다. 간단히 HashSet과 HashMap 의 차이점을 짚고넘어가자. - HashSet : 순서의 의미를 두지 않으며 데이터의 중복이 없다. 오직 객체만 저장가능하..

해시 2023.02.04 0

[백준/DP] 15990 1, 2, 3 더하기 5 (Python, 파이썬)

https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 문제의 조건 - 정수 n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제 - 단 같은 수를 두 번 이상 연속해서 사용하면 안된다. - n=4 - 1+2+1 - 1+3 - 3+1 * 조건 때문에 점화식을 그대로 사용할 수 없다. -> 그 조건을 점화식에 넣기 D[i][j] = i를 1, 2, 3의 합으로 나타내는 방법의 수, 마지막에 사용한 수는 j ... + 1 = i -> D[i][1] = D[i-1][2] + D[i-1][3] .....

DP 2021.08.01 0

[백준/DP] 1463 1로 만들기 (Python, 파이썬)

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 이 문제는 큰 문제를 작은 문제를 통해 풀 수 있으므로 DP를 이용해 풀 수 있다. 예를 들어보면, 4가 입력 되었을 때 4 -> 2 -> 1 이므로 정답은 2가 된다. 이번에는 12가 입력된다면 12/3 = 4이므로 4를 입력으로 했을 때의 정답에서 1을 더하면 된다. 이와 같이 이 문제는 작은 문제들을 통해 큰 문제를 해결 할 수 있다. 또한 큰 문제를 작은 문제로 쪼갤 수 있다. D[N] = N을 1로 만드는 최소 연산 횟수 n = int(input()) dp = [0] * (n+1) dp[1] = 0 f..

DP 2021.07.13 0