목록Backend/자바 (52)
개발 무지렁이

𐂂 값으로 귀결될 수 있는 일급 자바 시민 클래스를 인스턴스화한 결과는 '값'으로 귀결되자만 클래스나 클래스 안의 메서드는 그 자체로는 값이 아니다. 이 때 값으로 귀결되지 못하는 클래스나 메서드는 이급 자바 시민이라 한다. ⚠️ int, double, ..., 객체 모두 그 자체가 값이거나 값으로 귀결되는 일급 자바 시민(일급값)이다. 메서드는 어떻게 해도 값이 아니다. 하지만 메서드를 일급 자바 시민(값)으로 만들면 프로그래밍에 유용하게 활용할 수 있다. ☕ 자바8 : 함수를 새로운 값의 형식으로 추가하고, 함수를 값으로 취급한다. 🦉 new 연산자 : new라는 객체생성 연산자로, 객체 참조를 생성하여 인스턴스라는 값을 전달할 수 있다. 𐁍 메서드 참조 :: ::라는 연산자로, 메서드 참조를 생성해..

𐁍 프록시(Proxy) 다른 객체에 대한 인터페이스를 제공하는 객체 해당 객체의 대리자 역할을 수행 🍩 보안제어 : 프록시는 실제 객체에 대한 접근을 제어할 수 있다. 클라이언트는 프록시를 통해 접근하며, 프록시는 요청을 허용/거부한다. 🍩 로깅 및 감시 : 프록시를 사용하여 메서드 호출을 로깅하거나 감시 🍩 지연로딩(Lazy Loading) : 필요할 때만 데이터를 로드하는 작업 수행, 성능최적화 🍩 캐싱 : 프록시를 사용하여 이전에 수행한 작업의 결과를 캐시하고, 동일한 요청에 대해 캐시된 결과를 반환 🍩 원격프록시(Remote Proxy) : 원격 서버나 다른 머신에 있는 객체에 대한 접근을 지원하는 프록시 생성 🍩 Dynamic Proxy / Static Proxy : 런타임에 프록시 객체를 동적..

𐁍 Optional 값의 존재 여부를 나타내는 컨테이너 클래스를 말한다. null로 인한 예외(ex. NPE)를 방지하고자 Optional로 감싸 이 객체의 내장메서드를 사용하여 다양한 동작을 할 수 있다. 𖠃 Optinal 내장 메서드 (1) Optional.of(T value) : value가 null이 아니라면 해당 값으로 채워진 Optional 객체를 반환하지만, null이라면 NPE(NullPointerException) 발생 (2) Optional.ofNullable(T value) : value가 null이 아니라면 해당 값으로 채워진 Optional 객체를 반환하고, null이여도 빈 Optional 객체를 반환한다. (null이어도 감쌀 수 있다.) ⚠️ null이 될 가능성이 있는 경우..

𐂂 스레드(Thread) 개수가 폭증하면 CPU가 바빠지고 메모리 사용량이 늘어난다. 병렬작업 증가로 인한 스레드 폭증을 막으려면 스레드풀(ThreadPool)을 사용하는 것이 좋다 스레드풀(ThreadPool)은 작업처리에 사용되는 스레드 개수를 제한해 놓고, 작업 큐(Queue)에 들어오는 작업들을 처리하는 방식을 말한다. 작업량이 증가해도 스레드 개수가 늘어나지 않아 성능저하를 막을 수 있다. 𐁍 스레드풀(ThreadPool) 생성 java.util.concurrent 패키지에서 Executors 클래스의 정적메서드를 이용하여, ExecutorService 인터페이스를 구현한 구현객체를 만들어 생성한다. 🌵 Executors 클래스의 정적메서드 - newCachedThreadPool() : 작업개수..

𐂂 데몬 스레드 주 스레드의 작업을 돕는 보조 역할 스레드 주 스레드가 종료되면 자동종료, TERMINATED. 스레드를 데몬으로 만들기 위해서, 주 스레드에서 해당 스레드 객체를 만들어 setDaemon(true);를 호출하면 된다. 🎯 목적: 자동저장 .. 등에 쓰인다. 📜 AutoSaveThread.java public class AutoSaveThread extends Thread { public void save() { System.out.pritnln("작업 내용을 저장함."); } @Override public void run() { while(true) { try { Thread.sleep(1000); } catch(InterruptedException e) { break; } save()..

𐂂 스레드 불안전 종료 Thread 정적 메서드 stop(): 리소스(파일, 네트워크 연결)들이 불안전한 상태로 남겨진다. 𐁍 interrupt() 메서드 SUSPENDED -> InterruptedException 예외 발생 run() 메서드를 정상실행종료 (리소스를 정리하고, TERMINATED) ⚠️ 스레드가 RUNNABLE or RUNNING일 때, interrupt() 메서드가 호출되어도 InterruptedException이 발생하지 않는다. 𖠃 Thread.interrupted() 및 objThread.isInterrupted() interrupt() 메서드 호출 여부 boolean 리턴 boolean status = Thread.interrupted(); //정적메서드 boolean sta..