보호되어 있는 글입니다.
분산 락으로 중복 실행 막기: Redis vs. Redisson 완전 정복 🚀 분산 락이 왜 필요할까? 마이크로서비스 환경에서는 여러 서버가 동시에 실행되면서 스케줄러가 중복 실행되는 문제가 생길 수 있어.예를 들어, 포인트 차감 로직이 있는 서버가 3대 있다고 해보자.[서버1] 10초마다 포인트 차감 실행...[서버2] 10초마다 포인트 차감 실행...[서버3] 10초마다 포인트 차감 실행... • 🤔 문제: 포인트가 3번씩 깎인다? 😨 • ✅ 해결책: “한 번만 실행되도록” 보장하는 분산 락(Distributed Lock) 사용!🛠️ 1. Redis를 이용한 분산 락 방식 비교 1️⃣ StringRedisTemplate을 이용한 간단한 락 SET NX PX 명령을 이용해서 간단한 락을 만들 수..
람다란? 익명 함수를 단순화한 것 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트를 가짐 특정 클래스에 종속되지 않아 함수라고 불림 람다의 구성 (Apple apple) -> apple.getWeight() > 150; (Apple apple) : 람다 파라미터 apple.getWeight() > 150 : 람다의 반환값에 해당하는 람다 바디 -> : 람다의 파라미터 리스트와 바디를 구분하는 화살표 람다의 문법 // 표현식 스타일 (parameters) -> expression // 블록 스타일 (parameters) -> { statements; } public void process(Runnable r) { r.run(); } process(() -> System.ou..

윈도우 wsl환경에서 도커를 설치 후 Mysql을 도커환경에서 띄우고자 최신 이미지를 받고 docker run -d -p 3308:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -v ~/Desktop/shim:/var/lib/mysql mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 3306은 이미 로컬저장소의 mysql에 할당이 되어있어 3308포트를 할당해 컨테이너를 띄우려고 했다. An attempt was made to access a socket in a way forbidden by its access permissions. 그러자 위의 에러가 발생하여 띄..
동작 파라미터화란? 아직은 어떻게 실행할 것인지 결졍하지 않은 코드 블록을 의미한다. 애플리케이션을 만들고 나면 사용자마다 불만이 있을 수도 있는데 그럴 때마다 의견을 반영하여 코드를 추가 구현을 해야한다. 하지만 요구사항이 있을 때마다 매번 같은 코드를 복붙하여 구현하게 되면 유지보수성과 DRY(같은 것을 반복하지 말 것) 원칙을 어기게 된다. 동작파라미터화를 이용하면 요구사항에 효과적으로 대응할 수 있다. 다음은 녹색사과만을 필터링하여 리스트에 담는 코드이다. public static List filterGreenApples(List inventory) { List result = new Arraylist(); weight) { result. add(apple); } 조건문의 코드가 중복된다. 동작 ..
스트림이란? 빅데이터라는 바람이 불기 시작하면서 방대한 데이터를 효율적으로 처리하기 위해 병렬 프로그래밍이 필요해지기 시작할 무렵 자바8 이전에는 병렬 프로그래밍을 위해 스레드를 사용하였다. 하지만 이렇게 직접 관리를 하다보니 문제가 발생할 수 있고 까다롭다는 단점이 있었다. 이를 인식하고 자바8부터 보다 쉽게 병렬 프로그래밍이 가능하도록 스트림 API를 제공한다. 스트림이란 여러개의 함수를 조립라인처럼 연속적으로 연결하여 보다 간결하게 결과를 만드는 작업을 도와주는 API이다. 이 일련된 작업을 파이프라인이라고 부른다. 파이프라인을 구성하기 위해서는 함수가 값이 될 필요가 있다. 자바 8은 기존의 기본 값과 객체 값 말고도 함수 자체를 값의 형식으로 만들었다. File[] hiddenFiles = ne..