일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백트래킹
- SQL프로그래밍
- 스토어드 프로시저
- 데코레이터
- 연결리스트
- dfs
- exclusive lock
- eager
- FetchType
- 스프링 폼
- fetch
- 다대다
- CHECK OPTION
- JPQL
- 일대다
- 동적sql
- 즉시로딩
- 지연로딩
- 이진탐색
- 연관관계
- 힙
- PS
- querydsl
- 낙관적락
- 유니크제약조건
- BOJ
- 다대일
- shared lock
- 비관적락
- execute
- Today
- Total
목록전체 글 (557)
흰 스타렉스에서 내가 내리지
https://www.acmicpc.net/problem/11779 from collections import defaultdictfrom heapq import heappop, heappushN = int(input())M = int(input())graph = defaultdict(list)for _ in range(M): a, b, c = map(int, input().split()) graph[a].append((b, c))start_point, end_point = map(int, input().split())distance = [1e9] * (N+1)distance[start_point] = 0q = []heappush(q, (0, start_point, [start_point]))..
Spring WebFlux는 Spring 5에서 도입된 비동기 논블로킹 리액티브 웹 프레임워크입니다. 이는 전통적인 Spring MVC와 달리 리액티브 스트림을 사용하여 비동기적이며 논블로킹 방식으로 데이터 흐름을 관리합니다.1. 리액티브 프로그래밍 모델: * 리액티브 스트림(Publisher, Subscriber, Subscription, Processor)을 기반으로 하며, Mono와 Flux 타입을 사용하여 비동기 스트림을 처리합니다. * Mono는 0 또는 1개의 결과를 나타내고, Flux는 0부터 N개의 결과를 나타냅니다.2. 비동기 및 논블로킹: * 요청 및 응답을 비동기적으로 처리하며, 블로킹 호출 없이 리액티브 스트림을 통해 데이터 흐름을 제어합니다. * 높은 동시성을..
### 1. **기본 개념**#### **VPC (Virtual Private Cloud)**- **정의**: VPC는 **AWS에서 가상 네트워크 환경**을 제공하는 서비스입니다. 사용자에게 논리적으로 격리된 네트워크를 제공하여, AWS 리소스(예: EC2 인스턴스, RDS 데이터베이스)를 격리된 환경에서 실행할 수 있습니다.- **역할**: VPC는 사용자가 직접 네트워크 설정을 관리할 수 있도록 하여, 네트워크 보안, 라우팅, 인터넷 접근 등의 요소를 사용자 정의할 수 있습니다.#### **Subnet (서브넷)**- **정의**: 서브넷은 VPC 내에서 더 작은 **IP 주소 범위로 분할**된 네트워크 세그먼트입니다. 서브넷을 사용하여 VPC 내의 네트워크를 조직화하고, 리소스의 네트워크 접근을 ..
IOPS (Input/Output Operations Per Second) 은 저장 장치나 스토리지 시스템의 성능을 측정하는 데 사용되는 주요 지표 중 하나입니다. IOPS는 시스템이 초당 수행할 수 있는 입력 및 출력(읽기 및 쓰기) 작업의 수를 나타냅니다.이 지표는 주로 SSD, HDD, 네트워크 스토리지 등의 성능을 평가할 때 사용됩니다. IOPS 의 주요 구성 요소 1. 읽기 작업 : 데이터 읽기 작업의 횟수2. 쓰기 작업 : 데이터 쓰기 작업의 횟수3. 랜덤 작업 : 임의의 위치에서 데이터 접근4. 순차 작업 : 연속된 위치에서 데이터 접근 IOPS 측정 방법IOPS는 벤치마크 도구를 사용하여 측정됩니다. 일반적으로 다음과 같은 방식으로 측정됩니다. - 블록 크기 (Block Size) :..
많은 이벤트 핸들러에 걸쳐 많은 상태 업데이트가 분산되는 컴포넌트는 복잡해질 수 있습니다. 이러한 경우에는 컴포넌트 외부에 모든 상태 업데이트 로직을 단일 함수인 "리듀서"로 통합할 수 있습니다. 이벤트 핸들러는 사용자 "액션"만을 지정하기 때문에 간결해집니다. 파일의 맨 아래에서 리듀서 함수는 각 액션에 대한 상태 업데이트 방식을 지정합니다! 리듀서를 사용하는 경우 상태를 설정하기 위한 이벤트 핸들러 대신 액션을 디스패치하여 "사용자가 방금 무엇을 했는지"를 지정합니다. (상태 업데이트 로직은 다른 곳에 있습니다!) 따라서 이벤트 핸들러를 통해 "작업 추가/변경/삭제" 액션을 디스패치하는 대신 "작업을 추가/변경/삭제했다"라고 명시합니다. 이는 사용자의 의도를 더 명확하게 나타냅니다.function ..
배열에 추가하기push()는 배열을 변이시키므로 사용하면 안됩니다: 대신, 기존 아이템과 새 아이템을 포함한 새 배열을 생성합니다. 이를 위해 여러 가지 방법이 있지만, 가장 간단한 방법은 ... 배열 스프레드 구문을 사용하는 것입니다 import { useState } from 'react';let nextId = 0;export default function List() { const [name, setName] = useState(''); const [artists, setArtists] = useState([]); return ( Inspiring sculptors: setName(e.target.value)} /> { setArti..
Immer에서 제공하는 draft는 "기록"하는 특수한 종류의 객체입니다. draft를 자유롭게 변이시킬 수 있는 이유입니다! 내부적으로 Immer는 draft에서 변경된 부분을 찾아내고, 편집한 내용을 포함하는 완전히 새로운 객체를 생성합니다. npm install use-immer를 실행하여 의존성으로 Immer를 추가합니다.그런 다음 import { useState } from 'react'를 import { useImmer } from 'use-immer'로 바꿉니다. import { useImmer } from 'use-immer';export default function Form() { const [person, updatePerson] = useImmer({ name: 'Niki d..
이벤트 핸들러를 속성으로 전달하기자주 사용되는 시나리오 중 하나는 상위 컴포넌트에서 자식의 이벤트 핸들러를 지정하는 것입니다. 예를 들어 버튼을 고려해 보겠습니다. Button 컴포넌트를 사용하는 위치에 따라 다른 기능을 실행할 수 있습니다. 예를 들어 한 컴포넌트에서는 영화 재생을 실행하고 다른 컴포넌트에서는 이미지를 업로드할 수 있습니다. function Button({ onClick, children }) { return ( {children} );}function PlayButton({ movieName }) { function handlePlayClick() { alert(`Playing ${movieName}!`); } return ( Pl..
스냅샷으로서의 상태(state)일반적인 JavaScript 변수와 달리 React 상태(state)는 스냅샷과 유사하게 작동합니다. 상태를 설정하면 이미 있는 상태 변수가 변경되지 않고 다시 렌더링이 트리거됩니다. console.log(count); // 0setCount(count + 1); // 1로 다시 렌더링을 요청console.log(count); // 여전히 0! 여러 개의 상태 업데이트를 큐에 저장하기이 컴포넌트는 버그가 있습니다. "더하기 3"을 클릭하면 점수가 한 번만 증가합니다.import { useState } from 'react';export default function Counter() { const [score, setScore] = useState(0); functi..
가끔씩 props를 전달하는 것이 매우 반복적일 수 있습니다. function Profile({ person, size, isSepia, thickBorder }) { return ( );} 반복적인 코드는 문제가 없습니다. 가독성이 좋을 수도 있습니다. 그러나 때로는 간결함을 더 중요시할 수 있습니다. 일부 컴포넌트는 Avatar와 같이 모든 props를 자식 컴포넌트로 전달합니다. 그들은 직접 props 중 하나도 사용하지 않기 때문에 더 간결한 "스프레드" 구문을 사용하는 것이 의미가 있을 수 있습니다. function Profile(props) { return ( );} 이렇게 하면 Profile의 모든 props가 개별적으로 나열되지 않..