본문 바로가기

전체 글130

[스프링 프레임워크] 회원가입 이메일 인증 구현하기 이번 포스팅에서는 회원가입 이메일 인증을 구현하는 방법을 소개하겠습니다. 그 외의 프로젝트 세팅이나 게시판 구현 등은 아래의 포스팅을 참고해주시길 바랍니다. 2021.07.05 - [Programming/Spring] - [스프링 프레임워크]게시판 만들기 #1 : 프로젝트 생성 및 셋팅 [스프링 프레임워크]게시판 만들기 #1 : 프로젝트 생성 및 셋팅 본 포스팅은 스프링 프레임워크를 이용하여 기본적인 게시판을 만드는 방법을 설명합니다. 안녕하세요. 이번 포스팅은 Spring Framework를 이용하여 게시판 만드는 방법을 설명합니다. Spring Framework hyunipad.tistory.com 우선 제가 구현한 회원가입 폼입니다. 1인 1 아이디를 구현하기 위해서 이메일 인증을 도입했고, 다른 .. 2022. 1. 23.
오라클 쿼리 튜닝 가이드 - 기본 대용량 데이터 베이스를 다루다 보면 쿼리의 미세한 차이로 성능이 달라지는 경우가 더러 있습니다. SQL 튜닝 전문가가 있어도 모든 쿼리를 튜닝해줄 수 없기 때문에 개발자가 기본적으로 좋은 쿼리를 짜는 방법을 알고 있는 것이 좋습니다. 쿼리를 튜닝하기 전에 좋은 쿼리를 짜기 위한 몇 가지 팁들을 소개합니다. 1. WHERE절 내의 JOIN 조건절 위치 SQL Parser에 의해 쿼리가 해석될 때 WHERE내의 조건은 밑에서 부터 위로 해석됩니다. 따라서 JOIN 조건절이 제일 위에 작성되었을 때 아래에서 처리건수를 줄여주기 때문에 효율적이게 됩니다. 처리건수나 통계정보에 따라 옵티마이저가 실행 경로를 다르게 실행할 수 있기 때문에 실행계획을 보는 것이 좋습니다. 1) 비효율적인 경우 SELECT ... F.. 2022. 1. 23.
[자바] 단순 선택 정렬과 단순 삽입 정렬 단순 선택 정렬 단순 선택 정렬이란 배열중 가장 작은 요소를 선택해 알맞은 위치로 옮겨서 정렬하는 단순한 알고리즘입니다. 아래의 배열에서 가장 작은 요소인 1을 선택해 첫 번째 위치인 6과 교환합니다. 그다음 작은 요소인 4를 선택해 두 번째 위치는 5와 교환합니다. 아직 정렬하지 않은 요소중에서 가장 작은 값을 선택합니다. 선택한 가장 작은 값과 아직 정렬하지 않은 부분의 첫 번째 위치의 요소와 교환합니다. 단순 선택 정렬은 위와 같은 작업을 N-1회 반복하여 정렬하는 알고리즘입니다. 단순 선택 정렬을 코드로 구현해보겠습니다. package selectionsort; public class selectionSort { static void swap(int[] a, int idx1, int idx2) {.. 2022. 1. 22.
[자바] 버블 정렬(Bubble Sort) 버블정렬 버블 정렬이란 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복하는 단순한 알고리즘입니다. 예시를 들어 버블 정렬에 대해 알아보겠습니다. 먼저 끝에 있는 두 요소 9와 8부터 대소를 비교합니다. 이때 오름차순이라면 왼쪽의 값이 작아야 하고 내림차순이라면 왼쪽의 값이 더 커야 합니다. 오름차순으로 정렬을 할 것이기 때문에 9와 8을 교환하면 아래와 같은 배열이 됩니다. 그다음 1와 8을 비교합니다. 1은 8보다 작기 때문에 교환할 필요가 없습니다. 따라서 그 다음 요소를 비교하교 이렇게 첫 번째 요소까지 작업을 계속한다면 아래와 같은 순서로 정렬이 되게 됩니다. 요소의 개수가 N개인 배열에서는 N-1회를 비교하게 되고 끝에서 끝까지 교환하는 작업을 패스(pass)라고 합니다. 그리고 패스가 한번.. 2022. 1. 21.
[자바] 큐(Queue) - 선입선출(FIFO : First In First Out)의 자료구조 큐 Queue(대기줄) 큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조입니다. 하지만, 스택과 다른 점은 선입선출(FIFO : First In First Out)의 자료구조로 되어있습니다. Queue(대기줄)이라고 불리는 이유는 선입선출의 구조가 은행에서 차례를 기다리는 대기열이나 마트에서 계산을 기다리는 대기열과 비슷하기 때문입니다. 큐는 선형 큐 또는 원형 큐를 구현할 수 있습니다. 선형 큐는 데이터가 디큐 되었을 때 데이터를 하나씩 앞쪽으로 옮겨야 하는 구조이고 원형큐는 첫 번째 요소와 마지막 요소를 식별하기 위한 변수 프런트(front)와 리어(rear)를 사용하여 데이터를 앞쪽으로 옮기지 않고 사용하는 자료구조입니다. 이번 포스팅에선 원형 큐를 구현해보도록 하겠습니다. Que.. 2022. 1. 20.
[백준 알고리즘][자바] 7568번 : 덩치 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 어떤 사람의 몸무게가 x kg이고, 키가 y cm 라면 이 사람의 덩치는 (x, y)로 표시됩니다. 두 사람 A와 B의 덩치가 각각 (x, y) , (p, q)라고 할 때, x > p 그리고 y > q이라면 A의 덩치가 B보다 더 크다고 말합니다. 덩치는 키와 몸무게 모두 커야하며 한쪽만 클 때는 덩치가 크다는 것으로 인정하지 않습니다. N명의 집단에서 자신보다 더 큰 덩치의 사람이 .. 2022. 1. 9.
[자바] 후입선출(LIFO, Last In First Out)의 자료구조 - 스택(Stack) 스택 Stack(겹겹이 쌓다.) 스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 후입 선출(LIFO, Last In First Out)로 잘 알려져 있습니다. 스택은 배열 또는 링크드 리스트로 구현할 수 있습니다. 두가지의 차이점은 배열은 스택의 용량이 정해져 있지만, 링크드 리스트는 용량이 정해져 있지 않습니다. 이번 포스팅에서는 배열로 구현을 하지만, 기회가 있다면 링크드 리스트를 이용하여 배열을 구현해보도록 하겠습니다. IntStack 생성자 package stack; public class IntStack { private int max; // 스택 용량 private int ptr; // 스택 포인터 private int[] stk; //.. 2022. 1. 9.
[백준 알고리즘][자바] 2231번 : 분해합 https://st-lab.tistory.com/98 [백준] 2231번 : 분해합 - JAVA [자바] www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다 st-lab.tistory.com 분해합이란 자연수 N과 N을 이루는 각 자리수의 합을 의미합니다. 예를들어, 216의 분해합은 216 + 2 + 1 + 6 = 225입니다. 이때 어떤 자연수 M(216)의 분해합이 N(225) 인 경우, M(216)을 N(225)의 생성자라고 합니다. 이때 첫째 줄에 자연수 N이 주어졌을 때 생성자를 출력합니다. 자연수 N의 생.. 2022. 1. 9.
[자바] 가장 빠른 정렬 알고리즘 - 퀵 정렬 (Quick Sort) 퀵 정렬 Quick(빠른) + Sort(정렬) 퀵 정렬은 가장 빠른 정렬 알고리즘으로 잘 알려져 있습니다. 퀵 정렬은 데이터 그룹에서 그룹을 나누는 기준인 피벗(pivot)을 선택하고, 피벗을 기준으로 그룹을 나누는 것을 반복하여 각 그룹이 1개가 되면 정렬을 마칩니다. 아래의 그림을 통해 자세하게 살펴보겠습니다. 왼쪽 끝에 커서를 pl, 오른쪽 끝의 커서를 pr, 중간의 x 화살표를 피벗이라고 하겠습니다. 양쪽 끝의 커서는 피벗과 비교할 숫자를 가리키게 됩니다. [pl] >= x 가 성립하는 데이터를 찾을 때까지 pl을 오른쪽으로 스캔합니다. [pr] pivot) { // data[pr] 값이 pivot보다 작은 수 탐색 pr--; } if (pl pivot) { // data[pr] 값이 pivot보.. 2022. 1. 1.
반응형