선형 탐색 (Linear Search)이진 탐색 (Binary Search)점프 탐색 (Jump Search)보간 탐색 (Interpolation Search)지수 탐색 (Exponential Search)깊이 우선 탐색 (Depth-First Search, DFS)너비 우선 탐색 (Breadth-First Search, BFS) 점프 탐색점프 탐색은 정렬된 배열에서 원하는 값을 찾기 위해 고안된 알고리즘으로, 데이터의 특정 구간을 건너뛰며 탐색하여 효율성을 높입니다. 이진 탐색보다 비교 횟수가 적으며, 특히 매우 큰 배열에서 유용하게 사용됩니다. 1. 특징구간 탐색: 탐색 과정에서 배열을 작은 블록 단위로 나누고, 일정한 크기로 건너뛰며 목표값을 찾습니다.정렬된 데이터 필요: 점프 탐색은 데이터가 오..
선형 탐색 (Linear Search)이진 탐색 (Binary Search)점프 탐색 (Jump Search)보간 탐색 (Interpolation Search)지수 탐색 (Exponential Search)깊이 우선 탐색 (Depth-First Search, DFS)너비 우선 탐색 (Breadth-First Search, BFS) 이진 탐색이진 탐색은 정렬된 배열이나 리스트에서 원하는 값을 효율적으로 찾기 위해 사용하는 알고리즘입니다. 배열을 절반씩 나누어 탐색 대상을 좁혀가며 빠르게 원하는 값을 찾을 수 있으며, 특히 대규모 데이터셋에서 유용합니다. 1. 특징분할 정복 방식: 탐색 범위를 계속해서 절반으로 줄여 나가는 방식입니다. 매번 중간 값을 기준으로 탐색 범위를 좁혀가므로 탐색 속도가 빠릅니다...
선형 탐색 (Linear Search)이진 탐색 (Binary Search)점프 탐색 (Jump Search)보간 탐색 (Interpolation Search)지수 탐색 (Exponential Search)깊이 우선 탐색 (Depth-First Search, DFS)너비 우선 탐색 (Breadth-First Search, BFS) 선형 탐색선형 탐색은 탐색 알고리즘 중 가장 간단한 형태로, 배열이나 리스트 등의 자료구조에서 원하는 값을 찾을 때 처음부터 끝까지 순차적으로 비교하면서 찾는 방식입니다. 다른 복잡한 알고리즘에 비해 구현이 쉽고 직관적이어서 소규모 데이터셋에서 자주 사용됩니다. 1. 특징순차적 탐색: 시작 위치에서 끝까지 모든 요소를 순서대로 탐색하므로, 값이 배열의 앞에 있든 끝에 있든 일..
제네릭(Generic)과 메소드 오버로딩(Overloading)은 자바에서 자주 사용하되는 강력한 기능 중 하나입니다. 하지만 이 두가지가 결합될 때, 컴파일 시점과 런타임 시점에서의 동작 방식에 차이가 생깁니다. 이번 포스팅에서는 간단한 예제를 통해 그 차이를 알아보겠습니다. ※ 제네릭 : 컴파일 시점에 타입을 지정하지 않고, 런타임에 구체적인 타입이 확정되는 방식으로 타입 안정성을 보장합니다. ※ 오버로딩 : 같은 이름의 메서드를 매개변수의 타입이나 개수에 따라 여러 개 정의하고, 호출 시점에 적합한 메서드를 선택하는 기능입니다. 1. 예제 코드class GenericOverloadingExample { public static void main(String[] args) { ne..
Vue.js 는 심플하면서도 확정성이 높은 프레임워크로 개인 프로젝트나 대규모 엔터프라이즈 애플리케이션에서도 효율적으로 사용할 수 있습니다. Vue.js를 사용하면 더 직관적이고, 가독성 좋은 코드를 작성하면서도 빠르고 매끄러운 웹 애플리케이션을 구현할 수 있습니다. PC에 Vue.js를 설치하는 방법과 간단한 예제(Todo List)를 통해 사용방법에 대해 알아보겠습니다. 1. nodejs 설치아래 URL로 접속합니다.https://nodejs.org/en/download/prebuilt-installer 2. Vue CLI 설치cmd 창을 열고 npm을 사용해 전역으로 설치합니다.npm install -g @vue/cli설치 후, vue --version 명령어를 통해 정상설치 되었는지 확인 가능합니..
MongoDB는 NoSQL 데이터베이스로, 비관계형 데이터베이스 모델을 사용하는 것이 가장 큰 특징입니다. 스키마리스 구조로 고정된 스키마가 없기 때문에 데이터의 구조를 유연하게 관리할 수 있을뿐더러 샤딩을 통해 데이터를 여러 서버에 분산해 저장하고, 이를 통해 대량의 데이터를 처리할 수 있는 수평적 확장을 지원합니다. 윈도우에 MongoDB 를 설치하는 방법과 SpringBoot를 통해 MongoDB를 사용하는 방법에 대해 알아보겠습니다. 1. 윈도우 MongoDB 설치아래 경로로 접속하여 커뮤니티 버전을 다운로드합니다.https://www.mongodb.com/try/download/communityComplete : 기본Custom : 사용자설정저는 Complete로 진행하였습니다.원하는 경로로 지..
AOP(Aspect-Oriented Programming)는 핵심 비즈니스 로직과 분리되는 부가적인 기능, 즉 '횡단 관심사'를 분리해 코드의 가독성과 유지 보수성을 높여줍니다. 대표적인 예로 로깅, 트랜잭션 관리, 보안 등이 있는데, 이 중에서도 메서드 호출에 대한 로깅은 애플리케이션의 동작을 추적하고 디버깅하는 데 큰 도움이 됩니다. 이번 포스팅에서는 Spring Boot의 AOP를 활용해 프로젝트 내 모든 메서드 호출 시마다 자동으로 로그를 남기는 방법을 알아보겠습니다.Spring logback 설정은 블로그 포스팅 을 참고해주세요. 1. 라이브러리 추가// AOPimplementation 'org.springframework.boot:spring-boot-starter-aop' 2. LogAop...
Spring Data JPA는 쿼리를 메서드 이름만으로 작성할 수 있는 강력한 기능을 제공합니다. 복잡한 SQL을 작성하지 않고도 데이터를 쉽게 조회, 수정, 삭제할 수 있는 이 기능은 개발 생산성을 크게 향상시킵니다. 이번 포스팅에서는 findBy, countBy, deleteBy 등의 다양한 키워드와 그 조합을 알아보고, 실제 예제를 통해 활용 방법을 소개하겠습니다. 1. findBy특정 조건을 만족하는 엔티티(혹은 엔티티의 리스트)를 조회할 때 사용// username으로 User 리스트를 조회List findByUsername(String username); 2. existsBy데이터베이스에 존재하는지 체크// 이메일이 데이터베이스에 이미 존재하는지 확인boolean existsByEmail(St..
이번 포스팅에서는 Spring Boot 환경에서 JPA와 Criteria API를 활용하여 여러 테이블을 Join 하는 방법을 소개하겠습니다. 특히, Criteria API를 사용하면 동적 쿼리 작성이 간편해지고, 복잡한 쿼리를 객체지향적으로 관리할 수 있습니다.이번 예제에서는 users, orders, products 테이블을 기준으로 사용자별 주문 내역을 조회하는 과정을 살펴보겠습니다. VO를 활용하여 데이터를 매핑하고, 실무에서 많이 사용하는 Join 예제를 통해 보다 효과적으로 JPA의 활용 방법을 익히실 수 있습니다.JPA를 처음 사용하시는 분이나 Criteria API를 활용해보고 싶은 분들에게 도움이 되길 바랍니다. 그럼 시작해보겠습니다!전체소스는 Github를 참고해 주세요. 1. 테이블 ..
오늘은 SpringBoot와 Apache Kafka를 활용하여 간단한 메시징 예제를 만들어보겠습니다. Apache Kafka는 분산 스트리밍 플랫폼으로, 대규모 데이터 처리 및 실시간 데이터 스트리밍에 강력한 도구입니다. 1. Apache Kafka 소개Apache Kafka는 분산형 스트리밍 플랫폼으로, 대량의 실시간 데이터를 처리하고 저장하는 데 특화된 시스템입니다. LinkedIn에서 개발되어 현재 Apache Software Foundation에서 관리하고 있으며 아래와 같은 특징을 가지고 있습니다.메시지 브로커: Kafka는 생산자(Producer)와 소비자(Consumer) 사이에서 메시지를 전송하는 역할을 합니다. 데이터를 토픽(Topic)으로 구분하여 관리하고, 각 토픽은 여러 파티션(P..
- Total
- Today
- Yesterday