함량 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

인기글

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

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

운영체제 2023.05.30 0

[백준/DP] 다이나믹 프로그래밍의 간단한 개념

1. Overlapping Subproblem - 큰 문제와 작은 문제를 같은 방법으로 풀 수 있다. - 문제를 작은 문제로 쪼갤 수 있다. 2. Optimal Substructure - 문제의 정답을 작은 문제의 정답을 합하는 것으로 구할 수 있다. 3. Dynamic Programming - 다이나믹 프로그래밍에서 각 문제는 한 번만 풀어야 한다. - 정답을 어딘가에 메모해놓는다. => Memoization - 모든 문제를 풀어야 한다. - 모든 문제는 1번만 플어야한다. - 두 가지 구현방식 1. Top-down : 큰 문제를 작은 문제로 나누어서 풀어간다(재귀) 2. Botton-up : 가장 작은 문제를 통해서 큰 문제를 풀어간다(반복문) 4. 다이나민 문제 풀이 전략 글로 점화식의 정의를 세운..

DP 2021.07.13 0

[백준/브루트포스] 14500 테트로미노(Python, 파이썬)

www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 이 문제 또한 그냥 다 해보면 된다. 나올 수 있는 폴리오미노는 대칭과 회전을 허용하므로 총 19개이다. 따라서 이 19가지의 경우의 수를 모두 확인하여 가장 큰 값을 출력하면 된다. 참고로 이 문제는 정말... 집중해서 풀어야한다. 문제가 어렵다기보다는 디버깅이 매우 힘들기 때문이다. 이 문제에서는 오류를 찾는 것이 매우 힘들기 때문에 처음에 코드를 작성할 때 최대한 집중해서 작성하는 것이 좋다. import..

브루트포스 2021.05.12 0

[React] ant-design/ column이 바뀌는 동적 Table

오늘은 컬럼이 바뀌는 동적 테이블을 만들어야한다. 서버에서 받아오는 JSON의 형태는 다음과 같다. 여기서 바뀌는 것은 cols의 개수와 cols의 안에 있는 요소들의 개수이다. 즉 column의 개수와 명칭이 유동적으로 바뀌게 되는 것이다. name이 column의 명칭이 되고 value값이 해당 column의 값으로 들어가야 한다. [ { "cols": [ { "name": "name1", "value": "value1" }, { "name": "name2", "value": "value2" }, { "name": "name3", "value": "value3" } ] }, { "cols": [ { "name": "name1", "value": "value4" }, { "name": "name2", ..

React 2021.03.19 0

[ant-design] React를 활용한 Chart 만들기

간단한 그래프를 만들 것이다. 1. 터미널에 다음을 입력해 라이브러리를 받는다. npm install @ant-design/charts 2. column기준으로 만들기 위해 을 사용했다. 컴포넌트는 다음과 같이 작성하면 된다. import React, {Component} from "react"; import {Column} from '@ant-design/charts'; class Graph extends Component { constructor(props) { super(props); this.data = [ { type: 'test1', value: 38, }, { type: 'test2', value: 52, }, { type: 'test3', value: 61, }, { type: 'test4..

React 2021.03.08 0