전체보기 133

[프로그래머스] Lv.1 덧칠하기 - JAVA

문제어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다.넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다.한 구역에 페인트를 여러 번 칠해도 되고 다시 칠해야 할 구역이 아닌 곳에 페인트를 칠해도 되지만 다시 칠하기로 정한 구역은 적어도..

프로그래머스 2024.08.26

[프로그래머스] Lv1. 바탕화면 정리 - JAVA

문제컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을 가집니다. 드래그를 하면 파일들을 선택할 수 있고, 선택된 파일들을 삭제할 수 있습니다. 머쓱이는 최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택해서 한 번에 지우려고 하며 드래그로 파일들을 선택하는 방법은 다음과 같습니다.예를 들어 wallpaper = [".#...", "..#..", "...#."]인 바탕화면을 그림으로 나타내면 다음과 같습니다. 컴퓨터 바..

프로그래머스 2024.08.26

[NEXT.JS] Zustand

개요Zustand는 간단하면서도 강력한 상태 관리 라이브러리입니다. React 애플리케이션에서 전역 상태를 쉽게 관리할 수 있게 해주며, Redux와 비교했을 때 훨씬 더 간단하고 직관적인 API를 제공합니다.Zustand는 독일어로 "상태"를 의미하며, React의 Hooks를 기반으로 합니다.  특징간단한 APIZustand는 매우 간단한 API를 제공하여, 몇 줄의 코드만으로 상태를 정의하고 사용할 수 있습니다.이는 Redux와 같은 복잡한 설정 없이도 쉽게 상태 관리를 할 수 있게 해줍니다.import create from 'zustand';const useStore = create(set => ({ count: 0, increment: () => set(state => ({ count: st..

[NEXT.JS] SWR

개요SWR(Stale-While-Revalidate)은 React Hooks를 사용하여 데이터 가져오기와 캐싱을 간단하게 만들어주는 라이브러리입니다. Next.js와 함께 사용하면 매우 효율적인 데이터 페칭을 구현할 수 있습니다. SWR은 Vercel에서 개발한 라이브러리로, 최신 데이터 페칭 전략을 제공합니다.  특징자동 캐싱 및 재검증 (Stale-While-Revalidate)SWR의 이름에서 알 수 있듯이, 데이터가 오래되었는지 여부에 따라 자동으로 데이터를 캐싱하고, 백그라운드에서 재검증합니다.이는 데이터의 신선도를 유지하면서 빠른 응답을 제공합니다.import useSWR from 'swr';import axios from 'axios';const fetcher = url => axios.ge..

[NEXT.JS] Axios

개요Axios는 HTTP 클라이언트 라이브러리로, 브라우저와 Node.js 환경에서 모두 사용할 수 있는 도구입니다. 주로 비동기 HTTP 요청을 쉽게 관리하고 처리하는 데 사용됩니다.  특징Promise 기반Axios는 Promise API를 사용하여 비동기 요청을 처리합니다.이를 통해 콜백 헬(callback hell)을 피하고, 비동기 코드를 더 읽기 쉽게 작성할 수 있습니다.axios.get('/api/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); 인터셉터 (Interceptors)요청(request) 또는 응답(response)이 처리되기 전에..

[NEXT.JS] Express.js

개요Express.js는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크로, 특히 웹 서버와 API를 개발하는 데 널리 사용됩니다. Express는 미들웨어와 라우팅 기능을 제공하며, Node.js의 기능을 확장하고 개발자가 웹 애플리케이션을 더 쉽게 구축할 수 있도록 돕습니다.  특징간결함과 유연성- Express는 매우 가볍고 간결한 프레임워크로, 필요한 기능만 포함하고 있어 사용자가 원하는 대로 확장하고 맞춤화할 수 있습니다.- 프레임워크가 복잡하지 않아 학습 곡선이 비교적 낮습니다. 미들웨어Express의 핵심 개념 중 하나는 미들웨어입니다. 미들웨어는 요청과 응답 객체를 통해 각기 다른 작업을 수행하는 함수의 연속입니다.다양한 서드파티 미들웨어를 사용할 수 있으며, 필요에 따라 ..

[JAVA] Exception Handling

개요Java에서 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고, 프로그램의 비정상적인 종료를 방지하는 중요한 기능입니다. 예외 처리를 통해 프로그램이 오류 상황에서도 적절하게 대응할 수 있도록 합니다.  기본 개념 예외(Exception) - 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류.예외 처리(Exception Handling) - 예외 발생 시 적절한 대응을 하여 프로그램의 정상적인 흐름을 유지하는 방법.   예외의 종류 Checked Exception - 컴파일 시점에서 예외 발생 가능성을 검사하며, 반드시 처리해야 합니다. 예: IOException, SQLException.Unchecked Exception - 런타임 시점에서 예외 발생 가능성을 검사하며, 선택적으로..

[SPRING] Sleuth

개요Spring Cloud Sleuth는 분산 시스템에서 트랜잭션을 추적하고, 각 서비스 간의 요청을 모니터링하는 도구입니다. Sleuth는 각 서비스 호출에 고유한 트레이스 ID와 스팬 ID를 추가하여 분산 추적을 가능하게 합니다. 이를 통해 개발자는 서비스 간의 호출 관계와 성능 병목 현상을 쉽게 파악할 수 있습니다 주요 기능분산 추적 - 트랜잭션을 추적하여 서비스 간의 호출 관계를 시각화합니다.트레이스 ID와 스팬 ID - 각 요청에 고유한 식별자를 추가하여 추적을 용이하게 합니다.Zipkin 통합 - Zipkin과 통합하여 추적 정보를 시각화하고 분석할 수 있습니다.  설정build.gradle// https://mvnrepository.com/artifact/org.springframework...

[SPRING] Hystrix

개요Hystrix는 Netflix가 개발한 라이브러리로, 분산 시스템에서 서킷 브레이커 패턴을 구현하여 시스템의 복원력을 높입니다. Hystrix는 마이크로서비스 간의 의존성에서 발생할 수 있는 장애 전파를 방지하고, 서비스가 실패할 때 적절한 대처를 가능하게 합니다. 주요 기능서킷 브레이커 - 실패한 서비스 호출을 감지하고, 장애가 전파되지 않도록 차단합니다.폴백 메커니즘 - 서비스 호출이 실패할 경우 대체 로직을 실행합니다.실시간 모니터링 - 서비스 호출의 성공, 실패, 시간 초과 등의 지표를 모니터링합니다.  설정HystrixDemoApplication.javapackage com.example.hystrixdemo;import org.springframework.boot.SpringApplicat..

[SPRING] 유레카(Eureka)

개요Eureka는 Netflix가 개발한 서비스 등록 및 발견 도구로, 마이크로서비스 아키텍처에서 서비스 인스턴스들을 등록하고, 이들을 다른 서비스들이 발견할 수 있도록 돕는 역할을 합니다. 주로 클라우드 환경에서 동적으로 변하는 서비스 인스턴스들을 관리하는 데 유용합니다. 주요 기능서비스 등록 - 각 서비스 인스턴스는 Eureka 서버에 자신을 등록합니다.서비스 발견 - 클라이언트는 Eureka 서버를 통해 필요한 서비스의 위치를 동적으로 조회할 수 있습니다.헬스 체크 - 등록된 서비스의 상태를 주기적으로 확인하여 가용성을 보장합니다.  설정EurekaServerApplication.javapackage com.example.eurekaserver;import org.springframework.boo..