전체 글
  • 이진 탐색 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 - 탐색 범위를 반으로 좁혀가면서 탐색 - 이진 탐색을 하기 위한 전제 조건(precondition) : 탐색을 실시하기전에 오름차순 정렬이 되어있어야 한다. 동작 예시 0) 오름차순 정렬된 데이터 중에서 값이 4인 원소를 찾아보자. 1) 시작점 0, 끝점 9, 중간점 (9 / 2 = 4) 2) 중간점보다 4가 작으므로 시작점 0, 끝점 3, 중간점 1 3) 중간점보다 4가 크므로 시작점 2, 끝점 3, 중간점 2 예제코드 import java.util.Scanner; public class M14_이진탐색 { public static void main(String[] args) { Scanner sc = new Sc..

    Read more
  • 들어가기전, 큐 https://devfunny.tistory.com/710 큐 (Queue) 큐 - 선입선출 : 먼저 들어 온 데이터가 먼저 나가는 형식 예제코드 import java.util.LinkedList; import java.util.Queue; /** * Queue */ public class M2_Queue { public static void main(String[] args) {.. devfunny.tistory.com BFS - 너비 우선 탐색 - 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. - 큐 자료구조를 이용한다. [수행 과정] 1) 탐색 시작 노드를 큐에 삽입하고 방문 처리를 합니다 2) 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드..

    Read more
  • 큐 (Queue)

    큐 - 선입선출 : 먼저 들어 온 데이터가 먼저 나가는 형식 예제코드 import java.util.LinkedList; import java.util.Queue; /** * Queue */ public class M2_Queue { public static void main(String[] args) { Queue queue = new LinkedList(); queue.offer(5); // push 5 queue.offer(3); // push 3 queue.offer(2); // push 2 queue.poll(); // pop 5 queue.offer(1); // push 1 queue.poll(); // pop 3 while (!queue.isEmpty()) { System.out.printl..

    Read more

    큐 (Queue)

  • 들어가기전, 스택 (Stack) https://devfunny.tistory.com/708 스택 (Stack) 스택 1) 선입후출 : 먼저 들어온 데이터가 나중에 나가는 형식 예제코드 import java.util.Stack; /** * Stack */ public class M1_Stack { public static void main(String[] args) { Stack stack = new Stack.. devfunny.tistory.com DFS - 깊이 우선 탐색 - 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. - 스택 또는 재귀함수를 사용한다. [수행 과정] 1) 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 2) 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라..

    Read more
  • 스택 1) 선입후출 : 먼저 들어온 데이터가 나중에 나가는 형식 예제코드 import java.util.Stack; /** * Stack */ public class M1_Stack { public static void main(String[] args) { Stack stack = new Stack(); stack.push(5); // push 5 stack.push(3); // push 3 stack.push(8); // push 8 stack.pop(); // pop 8 stack.push(2); // push 2 stack.pop(); // pop 2 while(!stack.isEmpty()) { System.out.println(stack.peek()); // 최상위 데이터 peek stack...

    Read more
  • 구현 구현이란, 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. (구현 유형) - 완전 탐색 : 모든 경우의 수를 다 계산하는 해결 방법 - 시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 구현에서의 까다로운 문제 유형 1) 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 2) 특정 소수점 자리까지 출력해야 하는 문제 3) 문자열이 입력으로 주어졌을 대 한 문자 단위로 끊어서 리스트에 넣어야 하는 문제 4) 어떻게 풀면 될지 대략 감은 오는데, 막상 코드로 옮기려니 무엇부터 작성해야 할지 모른다. 5) 적절한 라이브러리를 찾아서 사용해야 하는 문제

    Read more
  • 그리디 알고리즘 그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구하며, 이러한 그리디 해법은 그 정당성 분석이 중요하다. 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토해야한다. 문제 유형을 분석하기 어렵다면, 해당 문제가 그리디 알고리즘으로 풀이할 수 있는게 아닌건지 생각해봐야한다. 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 것이므로 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 알게모르게 제시해준다. 문제 상황 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶다. 1) 일반적인 상황에서 그리디 알고..

    Read more
  • @JobScope와 @StepScope 개념 - 해당 어노테이션이 선언되면 생성이 어플리케이션 구동 시점이 아닌 빈의 실행 시점에 이루어진다. 스프링의 @Bean 어노테이션은 스프링이 초가화되는 시점에 빈이 생성된 후 관리된다. 스프링 배치에서 @JobScope, @StepScope 어노테이션은 어플리케이션이 실제로 실행되는 시점에 생성된다. - 스코프를 프록시 모드를 기본값으로 하기 때문에, 어플리케이션 구동 시점에는 빈의 프록시 객체가 생성되어 실행 시점에 실제 빈을 호출해준다. @JobScope - Step 선언시에 사용한다. - @Value : jobParameters, jobExecutionContext 만 사용 가능하다. @StepScope - Tasklet 이나 ItemReader, Item..

    Read more
  • 1) 연관관계 적용 Member member = new Member(); member.setUsername("kimseohae"); member.setAge(10); Team team = new Team(); team.setName("team1"); team.setName("team"); member.setTeam(team); em.persist(team); em.persist(member); em.flush(); em.clear(); 2) Join 예제 - Inner TypedQuery query = em.createQuery("select m from Member as m inner join m.team t", Member.class); List resultList = query.getResultLi..

    Read more
  • 예제코드 Member.java package jpql; import javax.persistence.*; @Entity @Table(name="MEMBER") @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String username; private int age; ... } Main.java package main.paging; import jpql.Member; import javax.persistence.*; import java.util.List; public class JpaMain { public static void main(String[] args) { EntityManagerFactory..

    Read more
  • 테스트 코드 작성 로그 -2 TODO - POST 메서드 호출 - @RequestBody param 전송 - DTO(Object) 를 Json String 으로 변환 (with Jackson) - API Response 의 "data" 특정 key 값의 결과만 꺼내오기 - Json String 을 List 로 변환 (With jackson) 테스트 코드 import com.couchbase.client.java.json.JsonObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databin..

    Read more
  • 테스트 코드 작성 로그 -1 로그인 API - 테스트 코드를 위한 포스팅으로, 상세 로그인 로직은 생략 package com.api.shop.modules.controller; import com.api.shop.common.Output; import com.api.shop.modules.form.LoginForm; import com.api.shop.modules.form.MemberForm; import com.api.shop.modules.repository.MemberRepository; import com.api.shop.modules.service.AuthService; import com.api.shop.modules.service.MemberService; import io.swagger...

    Read more
  • 들어가며 SimpleJob, FlowJob 에서 각 STEP의 결과 상태값에 따라 BATCH_JOB_EXECUTION, BATCH_STEP_EXECUTION 테이블의 EXIT_CODE, STATUS 컬럼에 어떻게 셋팅되어지는지 확인해보자. 명칭 설명 STATUS (batchStatus) JobExecution, StepExecution의 속성 값으로, JOB, STEP의 최종 결과 상태를 가진다. EXIT_CODE (ExitStatus) JobExecution, StepExecution의 속성 값으로, JOB, STEP의 실행 이후 어떤 상태로 종료되었는지정의한다. SimpleJob package com.spring.batch.flowjob; import lombok.RequiredArgsConstruc..

    Read more
  • Job 재실행 Job의 재실행에 대해서는 아래 포스팅을 참고하자. https://devfunny.tistory.com/680 SpringBatch 에서 JobInstance, JobExecution 의 관계 들어가기전 JobInstance, JobExecution 의 개념은 알고가자. https://devfunny.tistory.com/476?category=820618 [스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) 잡의 실행 잡.. devfunny.tistory.com JOB을 재실행하면 FAILED 상태로 끝난 STEP만 실행 대상이 되는데, allowStartIfComplete(true)를 사용하여 COMPLETED로 끝..

    Read more
  • 테이블 구조 부모테이블 자식테이블 식별자 클래스 ParentA.java ChildA.java ParentAId.java ParentB.java ChildB.java ParentBId.java @IdClass 1) ParentA.java package com.book.jpa.chapter07.identifying.idClass; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; @Entity @IdClass(ParentAId.class) public class ParentA { @Id @Column(name = "PARENT_I..

    Read more
  • Copyright 2024. GRAVITY all rights reserved