no image
병합정렬
병합정렬 병합 정렬은 분할 정복 알고리즘의 일종으로 배열을 반으로 나눈 후 각 부분에서 재귀적으로 정렬을 수행하는 알고리즘입니다. 여러 번 반복하여 배열이 충분히 작아질 때까지 이 작업을 진행한 후, 병합 정렬을 사용하여 두 부분을 합치면서 정렬을 완성합니다. 병합 정렬과 분할 정렬의 관계 분할정렬 배열을 반으로 나누어 각 부분에서 재귀적으로 정렬을 수행합니다. 배열이 충분히 작아 더 이상 나눌 수 없을 때까지 이 과정을 반복합니다. 병합정렬 정렬된 두 개의 한위 배열을 하나로 합칩니다. 정렬된 하위 배열을 합치는 과정에서 정렬 순서를 유지하며, 작은 값을 순서대로 새로운 배열에 병합합니다. 병합 정렬 동작 과정 분할 주어진 배열을 반으로 나눕니다. 배열의 중간 지점을 찾고, 왼쪽과 오른쪽으로 나눕니다...
2023.12.14
no image
엔티티 매핑
@Entity JPA를 사용해 테이블과 매핑할 때는 @Entity 어노테이션을 필수로 붙여주어야 하며 @Entity 어노테이션을 클래스 위에 붙여 해당 클래스가 데이터베이스의 테이블과 매핑된 것을 명시합니다. @Entity가 붙게 되면 JPA가 관리하게 됩니다. @Entity public class User { @Id private Long id; private String username; private String email; } @Entity 주의사항 기본 생성자는 필수입니다. final 클래스, enum, interface, inner클래스는 사용 불가능 합니다. 저장 필드에 final을 사용하면 안 됩니다. @Table 엔티티 클래스가 매핑되는 데이터베이스의 테이블을 지정할 때 사용됩니다. 이 ..
2023.12.13
no image
MyBatis
MyBatis 자바 언어용으로 개발된 오픈소스 ORM프레임 워크입니다. 데이터 베이스와 객체 지향 프로그래밍 언어 간의 관계를 매핑해 주는 역할을 합니다. MyBatis는 SQL 쿼리와 객체를 매핑하기 위한 XML이나 애노테이션 기반의 설정을 통해서 동작합니다. 특징 SQL 객체 매핑 XML 또는 어노테이션 기반 매핑으로 SQL 쿼리를 XML 파일 또는 어노테이션을 통해 정의하고, 이를 자바 객체와 매핑하여 데이터 베이스 조작이 가능하게 합니다. ORM 지원으로 데이터 베이스 레코드와 자바 객체 간의 매핑을 쉽게 수행할 수 있습니다. 유연성 간결성 SQL과 자바 코드 분리로 인해 XML 또는 어노테이션을 통해 SQL을 작성하고, 자바 코드와 분리하여 유지 보수 및 관리를 용이하게 합니다. 동적 SQL 지..
2023.12.12
no image
퀵 정렬
퀵 정렬 레코드의 자료 이동을 최소화하며 배열을 정렬하는 퀵 정렬은 선택한 피벗을 중심으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할하여 정렬하는 방식입니다. 피벗을 정하고, 작은 값은 피벗 왼쪽으로, 큰 값은 오른쪽으로 이동시키는 과정을 반복하며 서브 파일을 만들어 나가며 정렬합니다. 이 재귀적 분할 정복 과정을 통해 전체 배열을 정렬합니다. 정렬 과정 정복 분할된 부분 배열에 대해 재귀적으로 퀵 정렬을 수행합니다. 이는 각 부분 배열에 대해 위의 과정을 반복하는 것을 의미합니다. 각 부분배열은 피벗을 기준으로 다시 분할되고 정렬됩니다. public void quickSort(int[] array, int left, int right) { if(left >= right) return; // 분할 int..
2023.12.11
no image
삽입정렬
Insertion Sort 삽입 정렬은 가장 간단한 정렬 방식이며 이미 순화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬합니다. 정렬 과정 배열의 첫 번째 요소는 이미 정렬된 부분으로 간주합니다. 두 번째 요소부터 시작하여 배열의 끝까지 순회합니다. 각 요소마다 현재 요소를 key에 저장하고, 이전 위치의 요소들과 비교하며 적절한 위치를 찾게 됩니다. key보다 큰 요소들을 오른쪽으로 한 칸씩 이동시키면서 삽입할 위치를 찾게 됩니다. key를 적절한 위치에 삽이하여 정렬된 부분을 확장 시킵니다. 삽입 정렬 코드 public class InsertionSort { public static void insertionSort(int[] arr) { int n = arr.length; for (i..
2023.12.08
no image
403....Error
403 ... 대체...뭐가 잘못된거지...............하...................................... Spring에서 발생하는 403 에러는 Forbidden을 의미합니다. 이는 클라이언트가 요청을 보냈지만 해당 요청을 수행할 권한이 없음을 나타냅니다.(Token 값이 없거나? 코드가 잘못되었거나?.....) Spring Security에서는 기본적으로 권한 부여(Authorization)를 관리합니다. 사용자가 특정 리소스에 접근하려고 할 때 해당 사용자가 그 작업에 필요한 권한을 가지고 있지 않을 때 403 에러가 발생할 수 있습니다. 403 에러를 해결하기 위한 접근 방법 1. 권한 설정 확인 사용자에게 필요한 권한이 있는지 확인합니다. Spring Security..
2023.12.08
no image
Validation
Spring Validation 스프링 프레임워크에서 지원하는 기능으로 주로 입력 데이터나 외부 데이터의 유효성을 검증하는 데 사용됩니다. 이를 통해 잘못된 데이터가 시스템으로 들어가는 것을 방지하고 안전성을 높일 수 있습니다. 의존성 주입 @Validation javax.validation.constraints 패키지에 있는 어노테이션들을 필드에 적용하여 해당 필드의 제약조건을 정의합니다. @NotNull, @Size, @Email등을 사용하여 필드에 대한 유효성을 정의할 수 있습니다. Validation Interface Validator 인터페이스는 실제로 객체를 유효성 검사하는 데 사용됩니다. 스프링에서는 이 인터페이스를 구현하여 커스텀한 유효성 검사 로직을 작성할 수 있습니다. 스프링 MVC에서..
2023.12.06
no image
선택 정렬
선택 정렬 선택정렬은 n개의 레코드 중에서 최솟값을 찾아 첫 번째 레코드 위치해 놓고, 나머지 (n-1) 개중에 다시 최솟값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식입니다. 정렬 과정 배열의 첫 번째 요소부터 시작하여 그다음 요소들과 비교합니다. 현재 위치의 요소를 기준으로, 그 이후의 모든 요소들과 비교하여 최솟값을 찾습니다. 최솟값을 찾으면 해당 값과 현재 위치의 값을 교환합니다. 이러한 과정을 배열의 마지막 요소까지 반복합니다. Java Code public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length; // 배열의 모든 요소를 순회하며 정렬 수행 for (int ..
2023.12.05
no image
binSearch
문제 이진 검색 과정을 자세히 출력하는 프로그램 작성하세요 각 행의 맨 왼쪽에 현재 선택한 요소의 인덱스를 출력하고, 검색 범위의 첫 요소위에 , 현재 선택한 중양 요소위에 +를 출력하세요. package Basic.Chap03; import java.util.Scanner; public class BinSearch2 { static int binSearch(int[] a, int n, int key) { System.out.print(" |"); for (int k = 0; k < n; k++) { System.out.printf("%4d", k); } System.out.println(); System.out.print("---+"); for (int k = 0; k < 4 * n + 2; k++){..
2023.12.04