Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 Comparable Comparable 인터페이스를 살펴보면 compareTo라는 추상 메소드 하나만 존재한다. public interface Comparable { public int compareTo(T o); } 이름과 같이 매개변수로 들어온 것과 자신을 비교하는 것이다. 아래 차이점을 제외하면 Object.equals()와 동일한 기능을 한다. 단순 동치성 비교 순서 비교 + 제네릭 즉, Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서(natural order)가 있음을 뜻한다. public class ComparableTest ..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 간혹 우리는 기존 객체의 값을 그대로 가진 새로운 객체를 생성해 사용해야할 경우가 있다. 이럴 때, clone() 메소드를 이용하면 효율적으로 생성할 수 있지만, 해당 메소드는 Object 클래스 내부에 선언되어 있다. public class Object { @IntrinsicCandidate protected native Object clone() throws CloneNotSupportedException; } @IntrinsicCandidate란, 구현을 JVM 상에서 해주는 부분을 명시하는 어노테이션이다. 즉, JVM 종류에 따라 구현이 달라지게 되고, nat..
테스트 환경 🛠️ Java : Amazon corretto 17 BFS(Breadth-First Search)란? 해석 그대로 너비를 우선으로 탐색하는 알고리즘이며, 주로 미로 찾기와 같이 최적의 해를 구하는 용도로 사용한다. 즉, 한 노드에서 방문할 수 있는 모든 노드를 탐색하는 알고리즘이다. BFS 사용법 미로 찾기를 예시로 BFS를 이해해보자! 아래 표는 미로의 일부분이며, 1은 이동할 수 있는 길, 0은 벽이다. (1, 1)에서 시작해서 (6, 4)까지 가는 최소 루트를 구해보자. 구분 [1] [2] [3] [4] [5] [6] [1] 1 0 1 1 1 1 [2] 1 0 1 0 1 0 [3] 1 0 1 0 1 1 [4] 1 1 1 0 1 1 1. 지도 그리기 우선 위 그래프가 문제로 주어질 때, ..
Bean 스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체(POJO; Plain Old Java Object)를 의미한다. IntelliJ로 스프링 개발을 하다보면 @RestController, @Service 등의 어노테이션을 붙여 사용한다. 이러한 어노테이션을 붙인 클래스의 왼쪽을 보면 조그만한 콩(🫘) 같은걸 볼 수 있다. 즉, 해당 클래스를 스프링 빈에 추가했다는 것이다. 그러면 왜 빈을 등록해서 사용하는 것일까? 우리가 @RestController 어노테이션을 빼고 실행하면, 해당 컨트롤러에 있는 API는 사용이 불가능해진다. 스프링 애플리케이션 실행과 빈이 어떤 관계가 있는지 살펴보자! Spring Container 스프링 컨테이너의 주요 역할은 빈의 생명 주기 관리, 생성된 빈에게 추가..
Java 대학교에서 처음 Java를 공부할 때 들었던 이야기는 WORA(Write Once Run Anywhere)라는 내용이다. 솔직히 요즘 세상에 어떤 언어로 작성하던 어디서든 돌릴 수 있다고 생각했다. 이 부분을 대해서 자세히 알기 위해서는 Compile, Interpreted를 알아야한다. Compile 우리가 흔히 컴파일 타임이라고 부르는 이 용어는 프로그래밍 언어로 코드를 작성한 뒤, 실행하기 전에 미리 컴퓨터가 읽을 수 있는 언어로 번역 작업을 해두는 것을 의미한다. public class Post { private String title, content; public Post() { } } 위와 같이 간단한 코드가 컴파일 되면 아래와 같은 바이트 코드로 변환된다. // class versi..
🛠️ 개발 환경 🍃 Spring : Spring Boot 3.1.3 🛠️ Java : Amazon corretto 17 🛠️ 구현 Jsoup 적용 우선 Jsoup 공식 문서에 적힌 글을 확인해보자! jsoup is a Java library for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors. Jsoup이란, 실세계 HTML과 연동하기 위한 자바 라이브러리로, HTML5 DOM method와 CSS selector 등을 사용하여 URL 가져오..