본문 바로가기

개발기술/Java

(17)
Java 리플렉션, 제네릭 Class클래스 자체도 객체로 표현한 것으로, 특정 타입(T)의 Class 객체를 의미해요. 해당 클래스의 정의(필드, 메서드 등)에 대한 정보를 담은 객체를 반환합니다.Class clazz = String.class;System.out.println(clazz.getName()); // java.lang.StringSystem.out.println(clazz.getDeclaredFields()); // 필드 정보들 리플렉션클래스, 필드, 메서드, 생성자 등의 정보를 런타임에 동적으로 조회하거나 조작할 수 있게 해주는 기능즉, Java에서 "클래스나 메서드 등의 정보를 코드로 다루는 기능"이에요.이 모든 건 Class 객체를 통해 시작됨정적(static) 인스턴스 생성 방식컴파일 타임에 타입이 명확히 정..
Java Blocking I/O vs non-Blocking I/O 1.. JDBC (Database Access)java복사편집String name = jdbcTemplate.queryForObject("SELECT name FROM users WHERE id = ?", String.class, 1); 🔒 Blocking behavior:The current thread sends the SQL query over the network to the DBThe thread waits (blocks) until the DB returns a responseNo other work happens on that thread until the DB reply is received📌 JDBC is a blocking API, always🔸 2. RestTemplate (HT..
Java 코딩구현 - Java NIO, Spring Multipart java.nio = New I/OIt was introduced to improve performance, scalability, and flexibility in Java I/O operations.Here’s what it covers:Featurejava.io (Old I/O)java.nio (New I/O)📚 StyleStream-basedBuffer & channel-based📁 File handlingFilePath, Files🔁 I/O typeBlocking onlyBlocking & Non-blocking⚙️ PerformanceGood for simple tasksBetter for large data or high load📂 Directory walkManualBuilt-in (..
예외처리 & Logging 예외정상적인 프로그램 흐름을 방해하는 비정상적인 상황 즉, 프로그램 실행 도중 발생할 수 있는 에러 상황을 객체로 표현한 것예외처리란 이러한 예외 상황이 발생했을 때, 적절히 대응하는 것 예외처리의 목적서비스 안정성 확보 :예외가 발생하더라도 전체 애플리케이션이 완전히 중단되지 않도록 보호하는 게 1차 목표.@Scheduled 배치에서 예외 터지고 잡지 않으면 스케줄러 자체가 멈춤 (Spring에서는 실제로 발생)사용자 경험 보호 (UX 보호)에러가 발생했을 때 친절한 메시지로 알려주고, 최대한 정상적인 흐름처럼 보여주는 게 중요해. 사용자에게 ‘500 에러’ 같은 시스템 메시지를 그대로 노출하지 않음.“비밀번호가 틀렸습니다.” vs “Internal Server Error”문제 진단 용이성 확보개발자나..
Java의 메모리 영역과 static의 의미 Java는 실행 중에 프로그램의 데이터를 저장하고 관리하기 위해 JVM(Java Virtual Machine) 내부에서 여러 메모리 영역으로 나누어 관리합니다. 주요 메모리 영역은 다음과 같습니다:1. 메모리 영역의 구성Method Area (메서드 영역):클래스 로더(Class Loader)에 의해 로드된 클래스와 관련된 메타데이터, static 변수, 상수, 메서드 코드, 클래스 정보 등이 저장됩니다.특징:모든 스레드가 공유.클래스 수준의 데이터를 저장하므로, 클래스가 한 번 로드되면 해당 데이터는 프로그램 종료 시까지 유지.Heap (힙 영역):모든 객체와 배열이 저장되는 영역.JVM의 Garbage Collector에 의해 관리되며, 참조되지 않는 객체는 자동으로 제거됩니다.특징:모든 스레드가 공..
Java 코딩구현 심화 : 스트림,람다식 특수 클래스 : Inner Class내부클래스 : 클래스 in 클래스 (클래스 안에 선언한 클래스) 내부클래스의 종류 : 정적 클래스 (static)OuterClass는정적(static)이 될 수 없습니다. 때문에 정적클래스는 내부클래스만을 지칭합니다외부 클래스와 논리적 관계만 있음, 독립 사용 가능외부에서 직접생성가능 내부클래스의 종류 : 인스턴스 내부 클래스 (non-static)외부 클래스의 인스턴스에 종속적인 내부 클래스입니다. 이러한 클래스는 외부 클래스의 인스턴스가 생성된 후에야 인스턴스화 될 수 있으며, 외부 클래스의 인스턴스 변수 및 메소드에 직접적으로 접근할 수 있는 권한을 가집니다. 주로 외부클래스 인스턴스의 필드멤버처럼 다루어지며, 인스턴스멤버들과의 작업을 위해 만들어짐.외부 ..
Java 멀티쓰레드 쓰레드 개념정립 스레드는 어떻게 생성되는가?   자바에서는 모든 것과 마찬가지로 스레드도 객체로 다룬다. 자바는 실행 시점에 `main` 이라는 이름의 스레드를 만들고 프로그램의 시작점인 `main()` 메서드를 실행한다.   스레드를 생성하는 코드는 새로운 스레드 객체를 생성한 후 , 스레드 인스턴스의 start() 메서드를 시작한다. 그러면, JVM이 OS system call을 통해 새로운 스레드를 위한 별도의 스택 공간을 할당한다. 새로운 스레드는 이어서 스레드 인스턴스 내에 정의되어 있는 작업인 `run()` 메서드를 실행하여 정의된 작업을 실행한다. 여기까지가 스레드의 start() 동작이다. main 스레드는 새로운 스레드의 start() 메소드를 동작 완료 후 새로운 스레드의 생성을 기다리..
웹 스크래핑 Jsoup 스크래핑 활용분야  여러 쇼핑몰의 데이터를 스크래핑해서 쇼핑몰간의 가격비교사이트, 특정 카테고리에 해당하는 아이템 모아서 한번에 보여주는 사이트, 여러회사의 취업공고를 모아서 보여주는 사이트, 업무 자동화, 핀테크 회사에서 사용자대신 공공데이터를 스크래핑 후 서류제출과정 대신하여 간편화, 무궁무진한 활용가능함 스크래핑 정책  main페이지의 robot.txt(https://finance.yahoo.com/robots.txt)을 조회하면 해당 사이트의 스크래핑 정책을 확인할 수 있다. 스크래핑을 허용한다고하여도 해당 사이트에 부하가 걸리지 않는 정도에서 운영하여야한다.  스크래핑  Jsoup library는 beautiful Soup의 java버전으로 해당 라이브러리를 사용한다.개발자는 자신의 서비스가 의..