java
-
Runnable 인터페이스란?작업(Task)을 정의하기 위한 함수형 인터페이스이다.주로 스레드에서 실행할 작업을 정의할 때 사용된다. @FunctionalInterfacepublic interface Runnable { void run();} 추상 메서드인 void run() 메서드만 존재한다.@FuntionalInterface 가 붙어있는 함수형 인터페이스라서 람다식으로 표현 가능하다.결과값이 없고 예외도 throws 하지 않는 단순한 실행 작업을 나타낸다. ✅ 언제 사용하나요? Thread 생성 시 실행할 작업 정의ExecutorService 같은 스레드 풀에 작업 제출할때 사용 ✅ Thread와 함께 사용하는 예 일반 클래스package com.obo.controller;public cl..
Runnable 인터페이스, ExecutorService 인터페이스Runnable 인터페이스란?작업(Task)을 정의하기 위한 함수형 인터페이스이다.주로 스레드에서 실행할 작업을 정의할 때 사용된다. @FunctionalInterfacepublic interface Runnable { void run();} 추상 메서드인 void run() 메서드만 존재한다.@FuntionalInterface 가 붙어있는 함수형 인터페이스라서 람다식으로 표현 가능하다.결과값이 없고 예외도 throws 하지 않는 단순한 실행 작업을 나타낸다. ✅ 언제 사용하나요? Thread 생성 시 실행할 작업 정의ExecutorService 같은 스레드 풀에 작업 제출할때 사용 ✅ Thread와 함께 사용하는 예 일반 클래스package com.obo.controller;public cl..
2025.05.16 -
ShedLock 이란?Java 에서 ShedLock 은 분산 작업 환경에서 스케쥴러가 동시에 여러 인스턴스에서 실행되는 것을 방지하기 위해사용하는 분산 락 라이브러리다.쉽게 말해 Java 에서 스케쥴러가 돌고 있다고 치면 동시에 여러 스케쥴러가 같은 시간에 같은 동작을 하면안되기 때문에 Lock 을 걸어 같은 작업을 동시에 못하도록 막아버린다. 예를 들어 Spring Boot 어플리케이션이 이중화되어 2대가 있다고 하면@Scheduled 어노테이션이 존재하는 클래스가 2개가 존재하고 작업을 실행했을 때별도의 조치가 없다면 2개의 스케쥴 작업이 진행된다. 이때 데이터 중복 처리나 성능 문제가발생할 수 있기 때문에 ShedLock 을 사용하여 Lock 을 걸어 동시성 문제를 해결한다. 🔧 동작 원리 1...
Java ShedLock 이란?ShedLock 이란?Java 에서 ShedLock 은 분산 작업 환경에서 스케쥴러가 동시에 여러 인스턴스에서 실행되는 것을 방지하기 위해사용하는 분산 락 라이브러리다.쉽게 말해 Java 에서 스케쥴러가 돌고 있다고 치면 동시에 여러 스케쥴러가 같은 시간에 같은 동작을 하면안되기 때문에 Lock 을 걸어 같은 작업을 동시에 못하도록 막아버린다. 예를 들어 Spring Boot 어플리케이션이 이중화되어 2대가 있다고 하면@Scheduled 어노테이션이 존재하는 클래스가 2개가 존재하고 작업을 실행했을 때별도의 조치가 없다면 2개의 스케쥴 작업이 진행된다. 이때 데이터 중복 처리나 성능 문제가발생할 수 있기 때문에 ShedLock 을 사용하여 Lock 을 걸어 동시성 문제를 해결한다. 🔧 동작 원리 1...
2025.05.13 -
Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
Java ThreadLocal 이란?Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
2025.04.21 -
Java 8 표준 API 의 함수형 인터페이스(Supplier, Consumer)함수형 인터페이스란 1개의 추상 메소드를 갖는 인터페이스를 말한다.Java8 부턴 default 라는 키워드가 생겨 구현되어 있는 메서드가 있으나여러개의 디폴트 메서드가 있더라도 추상 메서드가 오직 한개라면 함수형 인터페이스이다.자바의 람다 표현식은 함수형 인터페이스로만 사용 가능하다. 만들어진 이유자주 사용할 것 같은 람다 함수 형태를 함수형 인터페이스 표준 API 로 미리 만들어제공해주기 위해서 만들어졌다. @FunctionalInterface함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 사용한다.이 어노테이션은 해당 인터페이스가 함수형 인터페이스 조건에 맞는지 검사해준다.해당 어노테이션은 없..
자바 8 표준 API의 함수형 인터페이스(Supplier, Consumer)Java 8 표준 API 의 함수형 인터페이스(Supplier, Consumer)함수형 인터페이스란 1개의 추상 메소드를 갖는 인터페이스를 말한다.Java8 부턴 default 라는 키워드가 생겨 구현되어 있는 메서드가 있으나여러개의 디폴트 메서드가 있더라도 추상 메서드가 오직 한개라면 함수형 인터페이스이다.자바의 람다 표현식은 함수형 인터페이스로만 사용 가능하다. 만들어진 이유자주 사용할 것 같은 람다 함수 형태를 함수형 인터페이스 표준 API 로 미리 만들어제공해주기 위해서 만들어졌다. @FunctionalInterface함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 사용한다.이 어노테이션은 해당 인터페이스가 함수형 인터페이스 조건에 맞는지 검사해준다.해당 어노테이션은 없..
2025.01.07 -
Mybatis 를 사용하여 List 데이터를 Insert 하는 방법이다. 데이터는 아래와 같이 List 형 Map 을 사용했다.[ {role_id=O0100, right_name=기관관리자, site_code=101}, {role_id=S9900, right_name=시스템관리자, site_code=101}, {role_id=M0100, right_name=통합운영관리자, site_code=101}] SELECT MAX(right_seq)+1 FROM m_right INSERT INTO m_right(right_seq, right_name, right_desc, site_code, role_id) VALUES ( ..
Mybatis foreach, selectkey, Auto Increment 구현Mybatis 를 사용하여 List 데이터를 Insert 하는 방법이다. 데이터는 아래와 같이 List 형 Map 을 사용했다.[ {role_id=O0100, right_name=기관관리자, site_code=101}, {role_id=S9900, right_name=시스템관리자, site_code=101}, {role_id=M0100, right_name=통합운영관리자, site_code=101}] SELECT MAX(right_seq)+1 FROM m_right INSERT INTO m_right(right_seq, right_name, right_desc, site_code, role_id) VALUES ( ..
2024.09.02 -
Spring Security 의 Filter 들은 Spring Container 에서 Spring Bean 으로 등록되어 있다.하지만 Filter 들은 Servlet Container 에서 동작하는걸로 알고 있지만Spring Container 와 Servlet Container 는 영역 자체가 다르기 때문에 어떻게 실행되는지 궁금해서정리하게 됐다. 위 이미지처럼 Servlet Container 와 Spring Container 는 영역 자체가 다르며, Filter 는 서블릿이 제공하는 기술이다.Spring Bean 으로 등록되어 있는 Filter 들은 DelegatingFilterProxy 라는 클래스를 통해Spring Bean Filter 들을 실행시킨다. DelegatingFilterProxy ..
Spring Security Filter ChainSpring Security 의 Filter 들은 Spring Container 에서 Spring Bean 으로 등록되어 있다.하지만 Filter 들은 Servlet Container 에서 동작하는걸로 알고 있지만Spring Container 와 Servlet Container 는 영역 자체가 다르기 때문에 어떻게 실행되는지 궁금해서정리하게 됐다. 위 이미지처럼 Servlet Container 와 Spring Container 는 영역 자체가 다르며, Filter 는 서블릿이 제공하는 기술이다.Spring Bean 으로 등록되어 있는 Filter 들은 DelegatingFilterProxy 라는 클래스를 통해Spring Bean Filter 들을 실행시킨다. DelegatingFilterProxy ..
2024.06.17