함량 100%

함지의 개발일기

분류 전체보기 56

[Spring] 스프링 MVC와 DispatcherServlet 전략

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

PROGRAMMING/SPRING 2023.06.30

[백준/구현] 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

[백준/수학] 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

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

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

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

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

[프로그래머스/해시] 전화번호 목록(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

[프로그래머스/해시] 폰켓몬(Java, 자바)

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 배열의 중복값을 제거한 뒤 값을 비교하면 되는 간단한 문제이다. HashSet은 Set 인터페이스에서 지원하는 구현클래스로 중복을 허용하지 않는다. 또한 순서도 없다. import java.util.HashSet; class Solution { public int solution(int[] nums) { HashSet hashSet = new HashSet(); fo..

알고리즘/해시 2023.02.04

[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..

SPA(Single Page Application)와 웹프론트 기술

현재 사용하고 있는 웹 프론트 기술에 대해서 정리가 필요할 듯하여 포스팅해본다. 개발자로 취업하고 제일 먼저 React를 개발했지만 사실 누군가 React가 뭐냐고 물어본다면 설명하기가 어렵다. 내가 쓰는 기술을 제대로 설명도 못한다니....😥 기술 하나하나에 대해 심도깊은 이해보다는 전반적으로 살펴보기 위한 것이다. 부족한 내용이 있다면 앞으로 계속 채워나갈 예정이다. 1. SPA(Single Page Application) 전통적인 웹 전통적인 웹에서 페이지 이동을 하면 서버에 요청을 하면 서버가 HTML 파일을 만들어서 클라이언트에 보내주고, 브라우저가 HTML을 반영해서 보여주기 전 새로고침이 일어난다. 이를 정적 웹 페이지라고 하는데 이는 '클라이언트에게 제공하기 위해 미리 작성되어 서비스되는 ..

Front-end/React 2022.01.06