SY 개발일지
article thumbnail
[백준 9213] 꽤 좋은 수 - Java 문제풀이
Java/자바와 Spring 2024. 5. 11. 15:08

문제 링크: https://www.acmicpc.net/problem/9213 문제완전수는 자기 자신을 제외한 약수의 합이 자기 자신이 되는 자연수이다. 예를 들어, 6의 약수는 1, 2, 3인데 1+2+3은 6이기 때문에 완전수이고, 28도 1+2+4+7+14 = 28이기 때문에 완전수이다.어떤 자연수의 나쁨이란 자기 자신을 제외한 약수의 합과 자기 자신과의 차이이다.꽤 좋은 수는 자연수의 나쁨이 어떤 특정한 값보다 크지 않은 수이다. 예를 들어, 나쁨을 2까지 허용한다면, 100보다 작은 수 중에 꽤 좋은 수는 11가지 2, 3, 4, 6, 8, 10, 16, 20, 28, 32, 64)가 있다. 이 나쁨의 기준을 0으로 바꿔버리면 완전수의 정의와 같아진다.허용하는 나쁨의 최댓값이 주어졌을 때, 꽤 ..

article thumbnail
[Java] 어노테이션(Annotation) 이란?
Java/자바와 Spring 2024. 5. 9. 16:09

Java 언어로 프로젝트를 하며 다음과 같이 어노테이션을 이용하여 어떠한 상황을 명세하는 경우가 많습니다. 특히 스프링을 이용해 프로젝트를 한다면 어노테이션을 통해 Controller나 Service등을 명시하여 빈으로 등록하여 사용합니다. 그렇다면 이러한 어노테이션은 무엇이고, 어떻게 작동하는 걸까요 ? 어노테이션이란 ?자바에서 어노테이션은 사전적 의미로 주석이라는 뜻을 가지고 있습니다. 자바의 어노테이션은 소스코드에 추가하여 사용할 수 있는 일종의 메타데이터입니다. 여기서 메타데이터란, 애플리케이션이 처리해야할 데이터가 아니라 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야하는지를 알려주기 위한 추가 정보입니다. JDK 1.5 버전 이상, 자바 8버전부터 사용 가능하며, 자바 어노테이션은 클래스 ..

article thumbnail
[Spring] AOP(Aspect Oriented Programming)이란?
Java/자바와 Spring 2024. 5. 6. 16:33

스프링의 특징을 생각해보면 보통 DI와 IoC, 그리고 AOP를 주로 큰 특징으로 떠올립니다. 이번 포스팅에서는 AOP가 무엇인지에 대해 중점적으로 알아보도록 하겠습니다. AOP란?AOP(Aspect Oriented Programming)이란, 관점 지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍입니다. 여기서 관점(Aspect)이란, 부가 기능과 그 적용처를 적용하고 합쳐서 모듈로 만든 것입니다.Java는 OOP(Object Oriented Programming) 언어로서, OOP 에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 관점 Aspect 입니다. 따라서 어떠한 행위의 이전 시점, 이후 시점, 해당 시점 등이 중요합니다. 이러한 Aspect는 여..

article thumbnail
[Java] 가비지 컬렉션이란 ?
Java/자바와 Spring 2024. 5. 4. 19:31

가비지 컬렉션이란가비지 컬렉션이란 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중 더 이상 필요없게 된 영역을 해제하는 기능입니다.  여기서 더 이상 필요없게 된 영역이란, 아래 그림과 같이 재할당 등의 사유로 어떤 변수도 가리키지 않게 된 영역을 의미합니다.  자바에서의 가비지 컬렉션가비지 컬렉션이란, 자바의 메모리 관리 방법 중 하나로, JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말합니다.자바에서는 가비지 컬렉터가 메모리 관리를 대신 해주기 때문에 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 해주고, 개발자 입장에서 메모리 관리, 메모리 누수 문제에..

article thumbnail
[Java] Synchronized 동기화란
Java/자바와 Spring 2024. 5. 2. 18:18

스레드 동기화란?하나의 프로세스는 스레드와 데이터, 그리고 자원으로 구성됩니다. 하나의 프로세스내의 스레드들은 각자의 PC와 register를 지니고 있지만, 자원과 데이터는 공유하여 사용합니다.싱글스레드 환경에서는 공유 데이터에 대해 하나의 스레드만 접근하여 사용하므로 동기화에 대해 문제가 발생하지 않습니다. 그러나 멀티스레드 환경에서 둘 이상의 스레드가 공유 데이터에 동시에 접근하게 되면 문제가 발생할 수도 있습니다.이러한 문제를 막기 위해 스레드 동기화를 해야 합니다.동기화를 하지 않는다면 ?동기화를 하지 않는 경우를 먼저 그림을 통해 생각해보도록 하겠습니다.다음은 예금 인출 방법입니다.  가장 이상적인 예시로는 여러번의 요청이 와도 차례대로 처리가 되어 잔액이 마이너스가 되거나, 중간에 요청이 겹..

article thumbnail
[Java] 리플렉션이란?
Java/자바와 Spring 2024. 4. 29. 17:25

리플렉션이란리플렉션이란 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API입니다.컴파일 시간이 아닌 런타임 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이라고 할 수 있습니다. 언제 사용동적으로 클래스를 사용해야 할 때 사용합니다.다시말해, 작성 시점에는 어떠한 클래스를 사용해야 할지 모르지만, 런타임 시점에서 가져와 실행해야하는 경우에 사용됩니다.프레임워크나 IDE에서 이러한 동적 바인딩을 이용한 기능을 제공합니다.리플렉션 사용 예시Intellij 의 자동 완성 기능스프링 어노테이션스프링 어노테이션에서 리플렉션을 적용하는 방법은 추후 추가할 예정입니다. 리플렉션을 사용하여 가져올 수 있는 정보리플렉션을 통해 가져올 수 있..

[자바 ORM 표준 JPA 프로그래밍 - 기본편] 0-1. JPA란?
Java/자바와 Spring 2023. 12. 15. 22:06

JPA? → JPA: Java Persistence API 과거에는 순수 JDBC 시절에는 쿼리문을 직접 작성을 해야했다.String sql = "SELECT * FROM MEMBER WHERE ID = ?"; 그 후, JDBC 템플릿이나 마이바티스와 같은 SQL 맵퍼가 등장하여 개발 코드는 많이 줄었지만, 여전히 개발자가 sql문을 직접 작성해야 했다.String sql = "SELECT MEMBER_ID, USERNAME, PHONE_NUMBER FROM MEMBER WHERE ID = ?"; JPA가 등장하여 sql문을 이제 더이상 작성하지 않아도 되게 되었다.public class MembeerDAO { @PersistenceContext EntityManager jpa; ..