분류 전체보기 80

[스프링 핵심 원리 - 기본편] 의존관계 자동 주입 1

다양한 의존 관계 주입 방법 의존 관계 주입 4가지생성자 주입수정자 주입(setter 주입)필드 주입일반 메서드 주입 1. 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입받는 방법이다.생성자 호출 시점에 딱 한번만 호출되는 것을 보장한다.불변, 필수 의존 관계에 사용한다.@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRe..

Spring 2024.11.05

[JAVA] Grabage Collection Basics

가비지 컬렉터의 수거 대상은 무슨 근거로 판단할까?왜  heap 은 여러 영역으로 나눠져 있을까? 다음과 같은 궁금증이 생겨 해당 내용을 포스팅하게 되었습니다.  가비지 컬렉션이란?힙영역에서 사용 중인 객체와 사용 중이지 않는 객체를  식별하고 사용하지 않는  객체를 수거하여 메모리를  관리하는 기법입니다. 가비지 컬렉션의 루트 - 모든 객체 트리에 근원  가비지란 사용하지않는 객체를 말한다. 사용하지 않는 객체란 무엇일까?  사용하지 않는 객체란 GC Root와 관계가 있다. 어떤 객체가 유효한 참조가 존재한다면 'Reachable'그렇지 않으면 'Unreachable'이라 하며 'Unreachable'  한 객체는 GC의 대상이 된다.객체는 다른 여러 객체를 참조하고 그 객체들도 다른 객체들을 참조하..

JAVA 2024.11.05

[JAVA] Error 와 Exception

예외 클래스의 계층 구조자바에서는 실행 시 발생할 수 있는 오류 (Excepton과 Error)를 클래스로 정의하였다.모든 클래스의 조상인 Object  클래스가 최상단에 있고 Exception과 Error 클래스의 자손이 있다, 모든 예외의 최고 조상은 Exception 클래스이며 Exception 은 Checked Exception과 Uncheked Exception으로 나눌 수 있다.Error 대부분의 에러는 프로그램 밖에서 발생하고 메모리 부족과 같은 복구 불가능한 경우이다.Error는 프로세스에 영향을 주어 프로그램이 멈춰 버릴 수 있고 비정상적인 종료를 막을 수 없다. Excepton 대부분의 Exception 들은 프로그램 내에서 발생하고 복구 가능하다.예외가 발생하더라고 프로그래머가 적절한..

JAVA 2024.11.01

백준 12886 돌 그룹 [JAVA]

해당 문제는  bfs , dfs로 모두 풀이가 가능하다.모든 경우의 수를 따져봐야하지만 세 수의 합이 3의 배수일 때  세 수가 같아질 수 있다는 특징을 가지고 있다.또한 세 수의 합은 언제나 같으므로 3차원이 아니 2차원만으로도 방문여부를 확인할 수 있다.3차원으로 선언해 버리면 메모리 초과 오류가 발생해 버린다. bfs 풀이import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;class Main{ public static void main(String[] args) throws Exception { ..

알고리즘 2024.10.31

[JAVA] staic 과 final

staic과 final 은 둘 다 java에서 사용되는 키워드로 서로 다른 목적과 역할을 가지고 있습니다.static 이란?  정적 키워드로, 참조를 고정해 줍니다. 참조를 고정해 주기 위해서는 해당 객체가 없어지거나 재생성되면 안 되겠죠?그래서 gc 가 발생하는 힙이 아니라 메타스페이스에 할당을 해서 객체를 유지시켜 줍니다. 클래스가 로드될 때 메모리에 메타스페이스에 할당돼서 프로그램 시작부터 종료까지 남아있습니다. 즉 메모리가 항상 상주하고 있는 영역입니다.때문에 인스턴스 생성 없이도 접근 가능하면 모든 인스턴스에 공유됩니다. 즉 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드를 선언하고자 할 때 사용합니다.static 변수를 선언하면 클래스 로딩 시점에 메모리에 할당되고 모든 객체에서..

JAVA 2024.10.29

[스프링 핵심 원리 - 기본편] 컴포넌트 스캔 2

탐색 위치와 기본 스캔 대상탐색할 패키지의 시작 위치 선정모든 자바 클래스를 다 컴포넌트 스캔하면 시간이 오래 걸립니다. 그래서 꼭 필요한 위치부터 탐색하도록 시작 위치를 지정할 수 있습니다. @ComponentScan( basePackages = "hello.core.member")basePackges : 탐색할 패키지의 시작위치를 지정해 줍니다. 이 패키지를 포함해서 하위 패키지를 모두 탐색합니다.basePackages = {"hello.core", "hello.service"}  이렇게 여러 시작 위치를 지정할 수도 있습니다.basePackageClasses : 지정한 클래스의 패키지를 탐색 시작 위치로 지정한다.만약 지정하지 않으면 @ComponentScan 이 붙은 설정 정보 클래스..

Spring 2024.10.28

[JAVA] InnerClass 클래스 안의 클래스

내부 클래스는 주로 AWT 나 Swing과 같은 GUI 애플리케이션의 이벤트처리 외에는 잘 사용하지 않을 정도로 사용빈도가 높지 않다.때문에 내부클래스의 기본 원리와 특징을 이해하는 정도까지만 학습해도 충분하다.내부 클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 아래와 같이 클래스가 두개가 있다고 하여 내부 클래스는 아니다.package hello.core.godofjava.inner;public class PublicClass {}class JustNotPublicClass {}  Nested 클래스class A {}class B {}A 와 B 두 개의 독립적인 클래스를 아래와 같이 바꾸면 B는 A의 내부클래스가 되고 A는 B의 외부클래스가 된다.이때 내부 클래스 B ..

카테고리 없음 2024.10.27

백준 16928 뱀과 사다리 게임 [JAVA]

https://www.acmicpc.net/problem/16928  시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초512 MB47405173931329833.847%문제뱀과 사다리 게임을 즐겨 하는 큐브러버는 어느 날 궁금한 점이 생겼다.주사위를 조작해 내가 원하는 수가 나오게 만들 수 있다면, 최소 몇 번만에 도착점에 도착할 수 있을까?게임은 정육면체 주사위를 사용하며, 주사위의 각 면에는 1부터 6까지 수가 하나씩 적혀있다. 게임은 크기가 10×10이고, 총 100개의 칸으로 나누어져 있는 보드판에서 진행된다. 보드판에는 1부터 100까지 수가 하나씩 순서대로 적혀져 있다.플레이어는 주사위를 굴려 나온 수만큼 이동해야 한다. 예를 들어, 플레이어가 i번 칸에 있고, 주사위를 굴려 나온 수가 4라..

알고리즘 2024.10.26

== 와 equals 차이 , hashcode

equals(Object obj)Object 클래스가 가지고 있는 equals 메서드는 객체의 참조변수를 받아서 비교하여 그 결과를 boolean으로 알려주는 역할을 한다. equals 메서드의 실제 코드   public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }    }  위에 코드에서 알 수 있듯이 두 객체의 같고 다름을 참조변수 값으로 판단한다그렇기 때문에 서로 다른 두 객체를 equals 메서드로 비교하면 항상 false 인 결과로 얻게 된다. public class Test {      public static void main(String[] args) {    ..

JAVA 2024.10.24

백준 16234 인구 이동 [JAVA]

문제N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다.오늘부터 인구 이동이 시작되는 날이다.인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다.국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다.위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다.국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은 연합이라고..

알고리즘 2024.10.23