본문 바로가기

Backend53

[Java] Annotation 정의 자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종 보통 @ 기호를 앞에 붙여 사용 JDK 1.5 버전 이상에서 사용 가능 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동 종류 표준(내장) 어노테이션 : 자바가 기본적으로 제공해주는 어노테이션 메타 어노테이션 : 어노테이션을 위한 어노테이션 사용자 정의 어노테이션 : 사용자가 직접 정의하는 어노테이션 배경 자바 코드는 변경돼도 설정 파일은 업데이트되지 않는 문제 설정과 코드가 분리되어 있어, 개발에 대한 어려움 ➡️ 어노테이션 통해 하나의 파일에서 코드와 설정 관리 가능해짐 표준 어노테이션 @Override @Deprecated @Suppr.. 2023. 12. 5.
[Java] Exception 예외(Exception) 사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하나, 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태 유지시킬 수 있음 종류 일반 예외(Checked Exception) 실행 예외(Unchecked Exception) 개발자가 반드시 직접 예외 처리해야 함 Exception 클래스 자체는 Checked exception 개발자가 직접 예외 처리하지 않아도 됨 명시적 예외 처리가 강제되지 않기에 Unchecked Exception 클래스의 자식 클래스 중 RuntimeException 클래스는 Unchecked 실행 예외(Unchecked Exception)의 종류 Runt.. 2023. 12. 5.
[Java] Enum 정의 Enum이란 Enumeration의 앞 글자로, 열거라는 의미 관련된 상수들의 집합 자바에서는 final 로 String 과 같은 문자열이나 숫자들을 나타내는 기본 자료형의 값 고정 가능 = 이렇게 고정된 값이 상수(constant) 어떤 클래스가 상수만으로 작성되어 있으면 반드시 class 로 선언할 필요는 X 이럴 때 클래스로 선언된 부분에 enum 이라 선언 시, 이 객체는 상수의 집합임을 명시적 표현하는 것 배경 기존에는 인터페이스나 클래스 내에서 상수 선언 후 관리해옴 클래스 내에서 선언 시, 네이밍이 겹치거나 불필요하게 상수가 많아지는 단점 있음 인터페이스로 관리 시 위 단점이 일부 상쇄되나, 여전히 IDE의 적극적 지원 부족 및 타입 안정성이 떨어진다는 단점 있었음➡️ 이를 보완하며 나.. 2023. 12. 5.
[Java] Pass by Value vs. Pass by Reference 메모리 할당 어떤 변수 선언 = 메모리 할당 변수를 선언하기 위해 할당되는 메모리로는 크게 스택과 힙이 있음 스택(Stack) 영역 함수의 호출과 함께 지역 변수 / 매개 변수 등이 할당됨 정렬된 방식으로 메모리 할당 및 해제됨 힙(Heap) 영역 클래스 변수나 인스턴스 변수 / 객체 등이 할당됨 우연하고 무질서하게 메모리 할당됨 ➡️ JVM 은 무질서하게 관리되는 힙 영역을 위주로, GC 통해 메모리 해제 관리함 (인스턴스 변수로 존재하는 원시 변수는 힙 영역에서 관리됨) 원시 변수(Primitive Value)의 메모리 할당 자바에서 변수는 객체가 아닌 실제 값들인 int, double, float boolean 등과 같은 원시 값(Primitive Value)들이 존재 public void test.. 2023. 12. 5.
[Java] 기본 자료형 & 참조 자료형 자료형 종류 기본 자료형(Primitive Type) 참조 자료형(Reference Type) 기본 자료형 자바 컴파일러에 의해 해석되는 자료형 총 8가지의 기본형을 미리 정의 및 제공 사용 전, 반드시 선언(Declared)되어야 함 OS (운영체제)에 따라 자료형 길이 달라지지 않음 비객체 타입이기에 null 값을 가질 수 없음. 만약 기본형에 null 을 넣으려면 Wrapper Class 활용 스택(Stack) 메모리에 저장됨 동적타이핑(Dynamic typing) 정적타이핑(Static typing) 코드 작성 시간 빠름 코드 실행 속도 느림 코드 내용 및 로직 파악 쉬움 속도 중요한 작업에는 다소 부적합 / 작고 단순한 프로젝트에 적합 동적 타이핑 언어 : Python, Ruby, PHP 등 코.. 2023. 12. 5.
Spring Security Architecture / 스프링 시큐리티 구조 Authentication vs Authorization Authentication the process of validating your credentials (such as User username and password) to verify your identity and whether you are the person you claim to be, or not. Or simply put, Authentication is about knowing who you are. Authorization the process to determine whether the authenticated user has access to a particular resource. Or simply put, Authoriza.. 2023. 11. 20.
Spring Bean Life Cycle / 스프링 빈 생명주기 What is a Spring Bean? A Spring bean is a Java object managed by the Spring IoC container. Why Understand the Spring Bean Life Cycle? A solid grasp of the bean life cycle empowers you to effectively manage resources, configure beans, and ensure proper initialization and cleanup. With this knowledge, you can optimize your application’s performance, prevent memory leaks, and implement custom logic.. 2023. 11. 7.
[자바의 신] 29장 (ongoing) 29장 - 이제 주요 API도 알아봤으니 정리해봅시다 자바의 예약어 타입 관련 예약어 byte short int long float double char boolean 클래스, 메서드, 변수 선언, 객체 생성과 관련된 예약어 package import interface abstract class enum implements extends private protected public final synchronized void static return assert native new null strictfp super this transient volatile instanceof 조건 및 반복문과 관련 있는 예약어 if else switch case default for do while continue br.. 2022. 8. 31.
[자바의 신] 28장 (ongoing) 28장 - 다른 서버로 데이터를 보내려면 어떻게 하면 되나요? 네트워킹(networking) 사용자들이 바로 옆에 있는 장비와 데이터를 주고 받는 작업 p.756 +++ 네트워크의 일반적인 레이어 +++ osi 7 layer TCP (Transmission Control Protocol) UDP (User Datagram Protocol) 연결 기반 프로토콜 상대방이 데이터를 받았는지 확실히 보장해줌 But 내부적으로 처리되는 절차 매우 복잡 UDP보다 비싸고 느리며 무거움 다른 장비가 데이터를 제대로 받았는지에 대한 보장 x 이번에 데이터를 받지 않아도 다음에 받는 데이터를 사용해도 되는 경우에 사용(데이터 유실이 있어도 문제 없을 때) 자바로 TCP 통신 시, 자바에서 제공하는 API 사용 = 애플리.. 2022. 8. 31.
[자바의 신] 27장 (ongoing) 27장 - Serializable과 NIO도 살펴 봅시다 Serializable 정의 Serializable 인터페이스 java.io 패키지 인터페이스의 API에 선언된 변수나 메서드 없음 용도 생성한 객체를 파일로 저장하거나 저장한 객체를 읽거나 객체를 다른 서버로 보내거나 다른 서버에서 생성한 객체를 받을 때 역할 Serializable 인터페이스 구현(implements) 시 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있게 해줌 serialVersionUID Serializable 인터페이스 구현 후 serialVersionUID라는 값 지정해주는 것을 권장함(별도 지정 안 하면 자바 소스가 컴파일될 때 자동으로 생성됨) static final long serialVersionUID .. 2022. 8. 18.
[자바의 신] 26장 (ongoing) 26장 - 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠 I/O 역할 파일 읽거나 저장할 때 다른 서버나 디바이스로 보낼 때 I/O I = Input / O = Output 입력과 출력 통칭하는 용어 JVM을 기준으로 읽을 때 Input / 파일로 쓰거나 외부로 전송 시 Output 용어 사용 여기서의 Input과 Output : JVM 기준임을 꼭 기억해두기 초기 I/O JDK 1.4 ~ Java 7 ~ java.io 패키지에 있는 클래스만 제공 바이트 기반의 데이터 처리 위해 여러 종류의 스트림(Stream) 클래스 제공 읽기 = InputStream / 쓰기 = OutputStream 자바의 스트림 = 끊기지 않는 연속적인 데이터 바이트 아닌 char 기반 문자열로만 된 파일 작업 시 Reader.. 2022. 8. 18.
[자바의 신] 25장 (ongoing) 25장 - 쓰레드는 개발자라면 알아두는 것이 좋아요 단일 쓰레드(Thread) java라는 명령어 실행 시 결과 출력하고 끝냄 ➡ 한 번 실행해 놓고, 계속 기능들 제공하는 프로그램 ex) JSP, Servlet 프로세스가 시작되는 과정 자바 프로그램 사용해 뒤에 클래스 이름 붙이고 엔터 치면 적어도 하나의 JVM 시작됨 보통 이렇게 JVM 시작되면 자바 프로세스(Proceses)가 시작됨 이 프로세스라는 울타리 안에서 여러 개의 쓰레드가 실행됨 위의 순서로 하나의 프로세스 내에 여러 쓰레드가 수행됨 But 여러 프로세스가 공유하는 하나의 쓰레드가 수행되는 일은 없음 java 명령어 사용해 클래스 실행시키면 자바 프로세스 시작 main() 메서드 수행되며 하나의 쓰레드가 시작됨 만약 많은 쓰레드 필요 시.. 2022. 8. 18.