-- timestamp의 날짜만 변경/ 시간은 그대로UPDATE tb_sn_oilq_dataSET mtrng_dt = DATE '2024-05-01' + (mtrng_dt::time)WHERE inftwt_anls_sn =101 AND ppl_mng_no='L13101003' -- 침입수량 조회select oilq.day, round((oilq.avg_day_flow - inft.avg_day_flow)*24,-1) as avg_day_flow from ( SELECT to_char(date_trunc('day', hour),'yyyymmdd') as day, avg(avg_flow) AS avg_day_flow FROM ( SELECT date_trunc('hour', mtrng_dt) AS h..

출처 : https://velog.io/@integer/React.memo%EC%99%80-useMemo Memoization이란?메모이제이션은 비용이 많이 드는 함수 호출의 결과를 저장하고 동일한 입력이 다시 발생할 때 캐시된 결과를 반환하여 컴퓨터 프로그램의 속도를 높이는데 주로 사용되는 최적화 기술이다.https://www.inflearn.com/course/따라하는-리액트/dashboard React.memoReact.memo란?React.memo는 고차 컴포넌트(Higher Order Component)입니다.컴포넌트가 동일한 props로 동일한 결과를 렌더링해낸다면, React.memo를 호출하고 결과를 메모이징(Memoizing)하도록 래핑하여 경우에 따라 성능 향상을 누릴 수 있습니다. 즉..
📌 객체 구조 분해 할당✅ const { gisMap, gisCore } = useGisContext();처럼 선언 순서가 달라도 전혀 문제가 없습니다.🔍 이유: 객체 구조 분해 할당은 순서에 영향을 받지 않습니다JavaScript (및 TypeScript)에서 객체 구조 분해 할당은 "이름으로 매칭"되므로, 변수 선언 순서는 중요하지 않습니다.예제:const obj = { a: 1, b: 2 };// 순서 달라도 문제 없음const { b, a } = obj;console.log(a); // 1console.log(b); // 2🔧 맥락에 적용해 보면// context 기본값 선언export const GisContext = createContext({ gisCore: null, gisMap:..
해주신 TypeScript 코드는 **폼 입력값을 처리하는 함수(handleInputChange)**로, 특정 섹션의 특정 인덱스 항목의 특정 필드를 수정한 뒤 상태(state)를 업데이트하는 기능을 합니다. 문법과 구조를 단계별로 설명드릴게요.🔷 함수 전체 구조export const handleInputChange = ( section: string, index: number, field: string, value: string, dataMap: { [key: string]: { data: { year: string; type: string }[]; setData: React.Dispatch>; }; }) => { ... };✅ 함수 이름 및 exportexpo..
✅ @Cacheable 전략 예시 (Caffeine 캐시 기반)1. Gradle 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-cache'implementation 'com.github.ben-manes.caffeine:caffeine'2. application.yml 설정spring: cache: type: caffeine caffeine: spec: maximumSize=500,expireAfterWrite=1hmaximumSize=500 → 최대 500개 항목까지 캐시expireAfterWrite=1h → 캐시 생성 후 1시간이 지나면 자동 삭제3. 설정 클래스@Configuration@EnableCach..
좋습니다! @Cacheable을 사용하면 네트워크 API나 DB 호출 결과를 메서드 단위로 자동 캐싱해줍니다.Spring Boot 환경에서는 매우 깔끔하고 효율적인 방식이며, 복잡한 캐시 로직 없이도 한 번만 호출, 이후에는 캐시 재사용을 구현할 수 있습니다.✅ @Cacheable 방식 전체 흐름1. application.yml 또는 application.properties에서 캐시 설정spring: cache: type: simple # 기본 인메모리 캐시 (ConcurrentHashMap 기반)2. 캐시 활성화를 위한 설정 클래스 (@EnableCaching)@Configuration@EnableCachingpublic class CacheConfig { // 기본 설정이면 비워둬도 됨..
이 코드는 Spring Boot 애플리케이션을 WAR(Web Application Archive) 형태로 배포할 때 사용하는 구성 클래스입니다.Tomcat 등 외부 WAS(Web Application Server)에 배포하려면 이 구성이 필요합니다.🔍 코드 해석public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WrOutApplication.class); }}✅ 1. SpringBoot..
build.gradle에서 아래 코드는 **Spring Cloud BOM(Bill of Materials)**을 가져와서, Spring Cloud 관련 라이브러리들의 버전을 일괄적으로 관리하겠다는 의미입니다:dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.7" }}🔍 역할 요약✅ 1. Spring Cloud 의존성 버전을 자동 관리Spring Cloud 관련 의존성들을 추가할 때 버전을 생략해도, 여기에서 지정한 BOM(2023.0.1)에 정의된 권장 버전으로 자동 지정됩니다.예:dependencies { implementation 'org...
- Total
- Today
- Yesterday
- PostgreSQL
- excel
- DatePicker
- element위치
- oracle
- CSS
- $.each
- setter
- 전후방탐색
- sumifs
- 정규식
- border-collapse
- getter
- ul li로 테이블
- spring
- JQuery
- draw.io
- 진열사랑
- springboot
- Keycode
- devtools
- 여러 컬럼 update
- @ExceptionHandler
- object key
- 프로젝트명변경
- QueryDSL
- lombok
- Javascript
- caniuse
- $.extend
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |