
@RestController란 ? @Controller + @ResponseBody 를 합친 것 리턴 값이 뷰 이름이 아닌, HTTP 응답 본문(Response Body) 으로 바로 반환됨 @contoller란 ? 리턴 값이 view로 반환됨 @contoller에서
dto 방식 안전하고 명확함자동완성/리팩토링 쉬움Map 방식빠르게 쓸 수 있음키 오타나 타입 오류는 런타임까지 감지 불가📌 정형 데이터 → DTO📌 비정형 또는 유동적 데이터 → Map

Exception은 프로그램 실행 중 발생할 수 있는 예외 상황을 다루기 위한 Java의 오류 처리 시스템입니다.Java의 최상위 예외 클래스는 다음과 같은 구조를 가지고 있습니다:등등 아래의 출처에 예외처리가 매우 상세하게 나와있다 출처 https://inp
예시) let을 쓰세요. var는 옛날 방식이며, 스코프 오류를 유발할 수 있어서 지양하는 것이 좋습니다.변하지 않는 값은 const를 사용하세요.👉 최신 JavaScript 코딩 스타일에서는 var는 거의 사용하지 않고 let/const를 씁니다.
포트 포워딩은 외부에서 내부 네트워크에 위치한 특정 장치(예: PC, 서버 등)로 접근할 수 있도록 설정하는 네트워크 기술입니다.쉽게 말해, 공유기나 방화벽을 통해 외부에서 내부 장비로의 '문'을 열어주는 작업입니다.내부 네트워크(예: 집이나 회사의 컴퓨터)는 보통 공

문제 : "ctrl + h"로 File Search를 하고, 찾은 내용을 볼 때, 자꾸 한 탭으로 덮어쓴것 나와서 불편해결 방법 : 메뉴에서 Window - Preferences > General > Search > "Reuse editors to show matche
https://velog.io/@chuu1019/%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-JWTJson-Web-Token 링크참조
웹 서비스를 구축할 때 자주 등장하는 용어,웹 서버(Web Server)와 WAS(Web Application Server)!두 서버는 비슷해 보여도 역할과 기능은 확실히 다릅니다.이번 글에서는 그 차이를 쉽게 이해할 수 있도록 정리해보겠습니다.정적 컨텐츠(HTML,
Lombok은 자바 개발자의 생산성을 크게 높여주는 라이브러리입니다.그중에서도 @RequiredArgsConstructor와 @Slf4j는 실무에서 자주 사용되는 유용한 어노테이션입니다.이번 포스팅에서는 두 어노테이션의 특징과 활용법을 상세히 알아보겠습니다.@Requi
RestTemplate은 Spring Framework에서 제공하는 HTTP 통신 클라이언트입니다.외부 REST API와 통신할 때 간단하게 사용할 수 있으며, JSON 데이터 전송/수신에 특히 유용합니다.Spring에서 제공하는 HTTP 요청 도구RESTful API

기술 스택: Java (Spring Boot), Kakao REST API, Gson, jQueryKakao 주소 검색 APIhttps://dapi.kakao.com/v2/local/search/address.json을 활용하여사용자가 입력한 주소로부터 우편번
로컬(예: C, D 드라이브)에 있는 이미지를 웹에서 직접 띄우려고 하면 아래와 같은 에러가 발생합니다.Not allowed to load local resource :브라우저 정책(CORS 및 보안 때문)으로 인해 file:// 프로토콜을 통해 로컬 파일을 직접 접근
외부 API나 서버에서 JSON 문자열 형태로 응답을 받았을 때, 이를 Java 객체로 변환하여 다루는 작업이 매우 빈번합니다. 구글의 Gson 라이브러리를 이용하면 JSON 문자열을 손쉽게 파싱할 수 있는데, 그 중 대표적인 방법이 JsonParser와 JsonEle
내부망(Private Network)은 외부 인터넷과 직접 연결되지 않고, 조직 내부에서만 통신 가능한 네트워크입니다.일반적으로 회사, 기관, 학교 등의 내부 시스템은 내부망을 사용합니다.인터넷과 격리되거나, 방화벽 등을 통해 제한적으로만 접근 가능합니다.보안이 중요한
웹 서비스에서 다수의 이미지를 업로드할 때, 사용자가 ZIP 파일로 묶어서 전송하는 경우가 많습니다.이 글에서는 Spring 환경에서 업로드된 ZIP 파일을 해제하고, 특정 확장자(.jpg, .tif, .tiff)만 추출하는 방법을 소개합니다.MultipartFile로
Tomcat 서버를 운영하면서 자주 수행하는 작업들을 정리했습니다.주요 내용은 프로세스 상태 확인 → 서버 종료/시작 → 로그 실시간 확인 순서입니다.ps -ef | grep tomcat9현재 실행 중인 Tomcat 프로세스를 확인합니다.출력되는 PID(Process
웹 애플리케이션에서 대용량 이미지나 파일을 업로드하고, 효율적으로 DB에 저장하는 기능은 꽤 까다롭습니다. 특히 수천~만 개 단위 파일을 처리할 때는 메모리, 디스크, DB 트랜잭션을 모두 고려해야 합니다.이번 글에서는 Spring 기반에서 멀티파트 업로드 → 임시 저
WebSocket 정리 🚀 1. WebSocket이란? 웹소켓(WebSocket)은 브라우저와 서버 간의 실시간 양방향 통신을 지원하는 프로토콜입니다. 기존 HTTP와는 달리, 한 번 연결이 맺어지면 클라이언트와 서버가 서로 자유롭게 데이터를 주고받을 수 있습니
개발하다 보면 컬럼 값이 자동으로 증가하도록 하고 싶을 때가 많습니다.MySQL에서는 AUTO_INCREMENT 키워드 하나로 쉽게 해결되지만, PostgreSQL은 조금 다른 방식을 씁니다.PostgreSQL에서는 시퀀스(Sequence) 라는 객체를 만들어서 컬럼에

JDK 안에 JRE가 포함 → JDK 설치만으로 개발 + 실행 환경 모두 확보JVM은 JRE 안에 존재 → 자바 바이트코드를 OS에서 실행개발용 도구(javac, javadoc, keytool 등)는 bin 폴더에 있음JAVA_HOME 설정 → IDE, 빌드 도구, 환
pom.xml에 PostgreSQL JDBC 드라이버를 등록합니다.DB 서버 정보(HOST, PORT, USER, PWD 등)를 상수로 관리합니다.앱 전체에서 공유할 수 있도록 SharedPreferences 클래스에서 DB 매니저를 초기화합니다.스프링 부트 실행 시점
웹 애플리케이션에서 DB를 사용할 때, 매번 DB에 연결을 새로 만드는 방식은 성능상 부담이 큽니다.커넥션 풀은 이런 문제를 해결하기 위해 만들어진 DB 연결 재사용 구조입니다.커넥션 생성서버 시작 시 또는 요청 시점에 DB 커넥션을 미리 생성하거나 필요할 때 생성합니
@Scheduled 란
성격: 관측값 (실제로 측정된 현재 기상 상태)주요 항목: 기온, 습도, 강수량, 풍속, 풍향, 강수형태, 1시간 강수량 등업데이트 주기: 1시간데이터 시간 기준: 호출 시점 기준 "가장 최근 발표된 실황값"활용 예시:현재 날씨를 지도에 표시농업/시설물 모니터링 (지금
Spring에서 트랜잭션을 선언적으로 관리할 수 있도록 해주는 어노테이션.DB 작업 중 오류가 발생하면 자동으로 rollback, 정상 완료 시 commit을 수행한다.👉 문제:모든 메서드마다 try/catch + commit/rollback 작성 → 중복 코드비즈니
최근에 트랜잭션 적용하다가 문제 현상이 보여서 정리해보려고 한다.의도: 주문 저장 + 로그 저장문제: 로그 저장에서 에러 나면 주문 저장까지 rollback 됨@Transactional 기본 전파 옵션이 REQUIRED라서, 이미 트랜잭션이 있으면 그냥 이어서 실행함s
스프링 애플리케이션을 개발하다 보면 운영(Prod), 개발(Dev), 테스트(Test) 환경에 따라 서로 다른 설정을 적용해야 할 때가 많습니다.대표적으로 DB 연결 정보, 외부 API Key(예: 기상청 OpenAPI 서비스 키), 로그 레벨 등이 환경마다 달라지죠.
📂 경로 예시📄 /etc/systemd/system/tomcat.service
보통 WAR 파일을 Tomcat의 webapps/ 디렉터리에 복사하고 서버를 재시작하거나 매뉴얼로 배포합니다.하지만 autoDeploy="true" 설정이 활성화되어 있으면, 실행 중인 Tomcat이 동작하면서 해당 디렉터리에 새 WAR 파일을 감지하여 자동으로 배포
useState로 각 input 상태 관리→ userPw, confirmUserPw, userNm 등onChange 이벤트로 상태 업데이트→ 입력값과 상태를 실시간으로 연결handleSubmit에서 비즈니스 로직 분리→ 실제 API 호출은 함수 안에서 처리하고, UI
프로젝트 메타데이터와 필요한 패키지 목록을 정의프로젝트 이름, 버전, 스크립트, 의존성 등을 관리사람이 직접 작성/수정 가능dependencies / devDependencies의 버전은 범위 지정 가능(^, ~)→ 예: "react": "^18.2.0" → 18.x.
useEffect는 리액트 컴포넌트에서 렌더링 후 실행되는 사이드 이펙트(Side Effect) 를 처리하기 위한 Hook이다.API 호출, 이벤트 등록, 타이머 설정, 외부 라이브러리 연동 등 "렌더링 외적인 작업"을 담당한다.✔ 의존성 배열이 없으면 렌더링될 때마다
회원 비밀번호 찾기 기능을 만들 때, 임시 비밀번호를 생성하고 이메일로 발송하는 기능은 많은 서비스에서 필요한 로직입니다.이번 글에서는 Spring Boot에서 Gmail SMTP를 이용해 이메일을 보내는 방법과 임시 비밀번호 생성/업데이트 흐름까지 모두 정리합니다.이

mail전송의 main이 될 google 계정 생성
[트러블슈팅] Java 1.8에서는 TIFF ImageIO 미지원 → Java 11로 업그레이드하여 해결한 사례 최근 프로젝트에서 드론 촬영 원본 이미지(.TIF) 를 기반으로 썸네일을 생성해야 하는 작업이 있었다. 그런데 특정 서버에서는 썸네일 생성이 실패하고,
서버에 톰캣, 스프링부트, 배치 프로그램 등을 올리다 보면 부팅 시 자동 실행, 권한 관리, 서비스 상태 관리가 꼭 필요해진다. 이럴 때 사용하는 게 바로 systemd 서비스 등록이다.이 글에서는 실무에서 가장 많이 쓰는 방식인visudo를 이용한 sudo 권한 설정
PostgreSQL 데이터베이스를 운영하면서정기적인 데이터 백업을 위해 서버 내부에서 자동 백업을 구성하였습니다.별도의 백업 솔루션 없이pg_dump, 쉘 스크립트, cron 만으로 구성하였으며,복구 시 바로 실행 가능한 SQL 파일 형태를 기준으로 설계하였습니다.데이
낮은 진입 장벽: HTML, CSS, JS 기초만으로 시작 가능하며 문법이 매우 직관적입니다.SFC (Single File Component): .vue 파일 하나에 HTML(템플릿), JS(로직), CSS(스타일)를 모두 담아 관리 효율이 극대화됩니다.강력한 생태계:
PostgreSQL을 운영하다 보면 데이터 변경을 확인해야 할 때가 있습니다. 설정 파일 수정부터 실제 반영까지의 전체 과정을 정리합니다.가장 먼저 해야 할 일은 DB가 실제로 읽고 있는 설정 파일의 위치를 찾는 것입니다. 엉뚱한 파일을 수정하면 아무리 재시작해도 반영
톰캣을 운영하다 보면 catalina.out 파일 하나에 모든 로그가 쌓여 용량이 감당 안 되는 경우가 많습니다. 리눅스 기본 도구인 rotatelogs를 이용해 하루에 한 번씩 로그를 자동 분리하도록 설정하는 과정을 공유합니다.가장 먼저 rotatelogs가 어디에
배포 환경에서 PostgreSQL 로그를 확인하면 모든 접속이 서버 IP로만 기록되는 문제가 발생했습니다.PostgreSQL은 직접 연결된 클라이언트 IP만 인식하기 때문에 프록시 환경에서는 서버 IP만 기록됩니다.PostgreSQL의 application_name에
트랜잭션 격리수준(Isolation Level)은동시에 실행되는 트랜잭션 간 데이터 충돌을 어떻게 제어할지 정하는 기준입니다.스프링 부트에서는 @Transactional로 설정하지만,실제 동작은 DB가 결정합니다.👉 커밋되지 않은 데이터를 읽는 문제👉 같은 데이터를
MyBatis로 개발하다 보면 파라미터를 바인딩할 때 \`\- ${}\` → 문자열 치환 (위험)\`실제 DB로 전달되는 모습:여기서 핵심은, 파라미터 값이 SQL 구문이 아니라 데이터로 취급된다는 점입니다. 사용자가 무엇을 넣든 그 값은 "찾을 데이터"일 뿐, 쿼리의