전체 글 80

익명 클래스

익명 클래스 - 시작익명 클래스(anonymous class)는 지역 클래스의 특별한 종류의 하나이다.익명 클래스는 지역 클래스인데,  클래스의 이름이 없다는 특징이 있다. 앞서 만들었던 지역 클래스 예제 코드인 코드를  ` LocalOuterV2 `  다시 한번 살펴보자. package nested.local;public class LocalOuterV2 { private int outInstanceVar = 3; public void process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { int value = 0; @Override ..

JAVA 2024.12.24

중첩 클래스, 내부 클래스 2

지역 클래스 - 시작 지역 클래스 (Local class)는 내부 클래스의 특별한 종류의 하나이다. 따라서 내부 클래스의 특징을 그대로 가진다. 예를 들어서 지역 클래스도 내부 클래스이므로 바깥 클래스의 인스턴스 멤버에 접근할 수 있다. 지역 클래스 예class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); } } 지역 클래스의 특징지역 클래스는 지역 변수처럼 코드 블록 안에 클래스를 선언한다.지역 클래스는 지역 변수에 접근할 수 있다.package nested.local;publ..

JAVA 2024.12.24

중첩 클래스, 내부 클래스 1

중첩 클래스, 내부 클래스란? for (...) { //중첩 for문for (...) { } }다음과 같이 for 문 안에 for 문을 중첩하는 것을 중첩 (Nested) for 문이라 한다.  class Outer { ... //중첩 클래스 class Nested { ... } }다음과 같이 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스라 한다.중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 중첩 클래스의 분류     중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스내부 클래스지역 클래스익명 클래스 중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다. 변수의 선언 위치정적 변수 (클..

JAVA 2024.12.23

자바 정규식 Reqular Expression

만약 숫자로만 이루어져 있는지, 대문자, 소문자를 포함하고 있는지 검사하고 싶다면 요소 하나하나를 비교하는 방법도 있지만 정규식을 이용하며 간단하게 확인할 수 있다.   정규식 문법 기호 모음 정규식 기본 기호기호설명예제.임의의 문자 1개를 의미 ^시작을 의미한다[] 괄호 안에 있다면 일치하지 않는 부정의 의미로로 쓰인다^a : a로 시작하는 단어[^a] : a가 아닌 철자인 문자 1개$$앞의 문자열로 문자가 끝나는지를 의미한다a$ : a로 끝나는 단어[][] 괄호 안의 문자가 있는지를 확인한다[ab][cd] : a,b중 한 문자와 c,d중 한 문자→ ac ad bc bd [^][] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함- 대괄호 안에 ^ 가 쓰이면 제외의 뜻- 대괄호 밖에 ^ 가 쓰이면 시작점의 ..

JAVA 2024.12.23

Blocking Non-Blocking, Sync ASync

Blocking Non-Blocking, Sync ASync는 무엇이고 어떤 차이를 가지고 있을까? 코드를 실행하는 어떤 제어권 관점에서 보았을때 동기와 비동기 방식의 차이는 제어권을 그 스레드가 가지고 있냐 아니면 다른 스레드에 넘기냐로 표현할 수 있다. 블록킹과 넌 블럭킹은 말 그대로 그 스레드가 멈추나 아니면 멈추지 않고 계속해서 다음 코드를 실행하냐의 맥락이다.즉 호출한 코드가 호출된 코드가 완료 될 때까지 기다리는지 유무이다.  그림을 보면 sync/blocking 은 리턴되고  aync/blocking  은  콜백으로 호출된다. 동기 + 블로킹즉 sync/blocking 은 제어권을 넘겨주지 않고 호출한 함수가 계속 제어권을  들고 있는 것이다. (블로킹) 새로운 작업을 요청하게 되면 해당 작..

CS 2024.12.13

공통 인터페이스 기능

순수 JPA 기반 리포지토리 만들기 순수한 JPA 기반 레파지토리를 만들기기본 CRUD저장변경 -> 변경감지 사용 삭제 전체 조회단건 조회 카운트 참고 : JPA 에서 수정은 변경감지 기능을 사용하면 된다.트랜잭션 안에서 엔티티를 조회한 다음에 데이터를 변경하면 , 트랜잭션 종료 시점에 변경 감지 기능이 작동해서 변경된 엔티티를 감지하고 update sql 을 실행한다. 순수 JPA 기반 리포지토리 - 회원package study.data_jpa.repository;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import jakarta.persistence.TypedQuery;import org..

JPA 2024.12.07

양방향 연관관계와 연관관계 주인

연관관계의 주인 (Owner)양방향 매핑 규칙객체의 두 관계 중 하나를 연관관계의 주인으로 지정연관관계의 주인만이 외래키를 관리 (등록, 수정)주인이 아닌 쪽은 읽기만 가능 주인은 mappedBy 속성 사용 X주인이 아니면 mappedBy  속성으로 주인 지정외래키가 있는 곳은 Many 인 특징이 있다.즉 다 쪽이 무조건 연관관계의 주인이 된다.import jakarta.persistence.*;import lombok.Getter;import java.time.LocalDateTime;import java.util.ArrayList;import java.util.List;@Entity@Getterpublic class Member { @Id @GeneratedValue @Column(name..

JPA 2024.12.05

[JAVA] 리플렉션

리플렉션이란?구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API이다. 리플렉션이 어떤 경우에 사용될까?코드를 작성할 시점에 어떤 타입의 클래스를 사용할지 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우 사용된다.프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공합니다. intelliJ의 자동완성 기능, 스프링의 어노테이션이 리플렉션을 이용한 기능이라 할 수 있습니다.  클래스와 메타데이터 클래스가 제공하는 다양한 정보를 동적으로 분석하고 사용하는 기능을 리플렉션 (Reflection)이라 한다.리플렉션을 통해 프로그램 실행 중에 클래스, 메서드, 필드 등에 대한 정보를 얻거나, 새로운 객체를 생성하고..

JAVA 2024.11.27

[JAVA] 자원 정리 (try-catch , try-with-resources) 2

네트워크 프로그램 4 - 자원 정리 1 자원정리를 네트워크 프로그램에 도입해서, 네트워크 프로그램이 안전하게 자원을 정리하도록 개발해 보다.먼저 ` finally ` 를 사용해서 자원을 정리해 보고, 이후에 참 ` try-with-resources ` ` 를 도입해 보자.try-with-resources  항상 사용할 수 있는 것은 아니고 finally에서 직접 자원을 정리하는 경우가 많이 있다.  우선 소켓과 스트림을 종료하기 위해 간단한 유틸리티 클래스를 생성하자package thread.control.network.tcp;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.So..

JAVA 2024.11.26

[JAVA] 자원 정리 (try-catch , try-with-resources)

자원 정리 1 자원 정리를 이해하기 위해 간단한 예제 코드를 만들어보자package thread.control.network.tcp.autocloseable;public class CallException extends Exception{ public CallException(String message) { super(message); }} package thread.control.network.tcp.autocloseable;public class CloseException extends Exception{ public CloseException(String message) { super(message); }} package thread.control.ne..

JAVA 2024.11.26