본문 바로가기

Java

BFS and DFS with Java BFS(Breadth-First Search, 너비 우선 탐색)와 DFS(Depth-First Search, 깊이 우선 탐색)는 그래프를 탐색하는 두 가지 기본적인 방법입니다. 너비 우선 탐색 (BFS) BFS는 그래프의 가장 가까운 노드부터 탐색하는 방식입니다. 즉, 시작 노드로부터 거리에 따라 순차적으로 탐색합니다. BFS는 큐(Queue)를 사용하여 구현합니다. 특징: 모든 노드를 방문할 때까지 각 노드를 거리 순으로 방문합니다. 사용 경우: 최단 경로를 찾거나, 그래프의 모든 노드를 방문하는 경우에 유용합니다. 깊이 우선 탐색 (DFS) DFS는 그래프의 노드를 깊이 우선으로 탐색하는 방식입니다. DFS는 스택(Stack) 또는 재귀 함수를 사용하여 구현합니다. 특징: 하나의 경로를 끝까지 탐색한.. 더보기
BFS and DFS with Java BFS(Breadth-First Search, 너비 우선 탐색)와 DFS(Depth-First Search, 깊이 우선 탐색)는 그래프를 탐색하는 두 가지 기본적인 방법입니다. 너비 우선 탐색 (BFS) BFS는 그래프의 가장 가까운 노드부터 탐색하는 방식입니다. 즉, 시작 노드로부터 거리에 따라 순차적으로 탐색합니다. BFS는 큐(Queue)를 사용하여 구현합니다. 특징: 모든 노드를 방문할 때까지 각 노드를 거리 순으로 방문합니다. 사용 경우: 최단 경로를 찾거나, 그래프의 모든 노드를 방문하는 경우에 유용합니다. 깊이 우선 탐색 (DFS) DFS는 그래프의 노드를 깊이 우선으로 탐색하는 방식입니다. DFS는 스택(Stack) 또는 재귀 함수를 사용하여 구현합니다. 특징: 하나의 경로를 끝까지 탐색한.. 더보기
Blocking IO 와 Non-Blocking IO Blocking I/O Blocking I/O는 I/O 작업이 완료될 때까지 해당 스레드가 대기하는 방식입니다. 예를 들어, 파일에서 데이터를 읽는 작업을 수행하는 경우, 데이터 읽기가 완료될 때까지 스레드는 블록되어 다른 작업을 수행할 수 없게 됩니다. 스레드의 상태 Blocking I/O 작업 중에는 스레드가 "Blocked" 상태가 되며, 이 상태에서는 CPU가 해당 스레드를 실행하지 않습니다. 스레드는 I/O 작업이 완료될 때까지 대기합니다. CPU의 상태 스레드가 블록된 동안 CPU는 다른 스레드나 프로세스의 작업을 실행할 수 있습니다. 만약 다른 실행 가능한 스레드가 없다면, CPU는 유휴 상태가 될 수 있습니다. CPU 유휴 상태 방지 CPU의 유휴 상태를 방지하기 위해서는 Non-Block.. 더보기
Java Heap 메모리 할당 과정 시퀀스 Client가 JVM에게 새 객체를 생성하라는 요청을 합니다. JVM은 HeapMemory에 충분한 메모리가 있는지 확인합니다. 만약 메모리가 충분하지 않다면, HeapMemory는 GarbageCollector를 호출하여 불필요한 객체를 제거하고 메모리를 회수합니다. 메모리 회수 후, HeapMemory는 JVM에게 메모리가 충분함을 알립니다. JVM은 HeapMemory에 객체를 할당하고 초기화합니다. 마지막으로, JVM은 Client에게 객체의 참조를 반환합니다. 더보기
Spring boot Private field and method Test ReflectionTestUtils를 이용하여 private field or method 를 테스트 할 수 있다. public class Student { private int id; private String getFirstNameAndId(){ return getFirstName() + " " + getId(); } } @SpringBootTest class StudentTest { @Autowired Student student; @BeforeEach void studentBeforeEach(){ student.setFirstName("Eric"); student.setLastName("Roby"); student.setEmailAddress("asdfa@asdf.com"); student.setS.. 더보기
Spring boot Throwing Exception test @SpringBootTest class StudentRepositoryTest { @Autowired Student student; @Autowired StudentGrades studentGrades; @MockBean private StudentRepository studentRepository; @Autowired private StudentService studentService; @Autowired private ApplicationContext context; @DisplayName("Throw runtime error") @Test void throwRuntimeError() { Student nullStudent = (Student)context.getBean("Student"); doTh.. 더보기
Spring boot @MockBean Example @SpringBootTest class StudentRepositoryTest { @Autowired Student student; @Autowired StudentGrades studentGrades; @MockBean private StudentRepository studentRepository; @Autowired private StudentService studentService; @BeforeEach void beforeEach() { student.setFirstName("Eric"); student.setLastName("King"); student.setEmailAddress("eric.roby@asdf.com"); student.setStudentGrades(studentGrades); .. 더보기
Spring boot Mockito Example - @Mock & @InjectMocks @SpringBootTest class StudentRepositoryTest { @Autowired Student student; @Autowired StudentGrades studentGrades; @Mock private StudentRepository studentRepository; @InjectMocks // inject mock dependencies private StudentService studentService; @BeforeEach void beforeEach() { student.setFirstName("Eric"); student.setLastName("King"); student.setEmailAddress("eric.roby@asdf.com"); student.setStud.. 더보기