SUMMARY 7

[JAVA 고급1] 2. 스레드의 생성과 실행

Java 메모리 구조 Java 메모리는 3가지 영역으로 구성되어 있다 - 메서드 영역 Method Area 프로그램을 실행하는데 필요한 공통 데이터를 관리한다 그러므로 프로그램의 모든 영역에서 공유 안에 있는 3가지는 각각 클래스 정보 : 클래스 실행 코드, 필드, 메서드, 생성자등 모든 실행코드 static 영역 : static 변수 보관 런타임 상수 풀 : 공통 리터럴 상수 - 스택 영역 Stack Area 스레드 별 하나의 실행 스택이 생성된다 (스레드 수 만큼 스택이 생성된다) 네모칸 하나가 스택 프레임이고 지역 변수, 중간 연산 결과, 메서드 호출 정보를 포함한다 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해..

SUMMARY/JAVA 2025.08.11

[JAVA 고급1] 1. 프로세스와 스레드

자바 멀티 스레드를 이해하기 위해 OS 수준의 프로세스와 스레드 환경을 이해해야 한다학교 운영체제 시간에 다 배우기는 했지만 맨날 헷갈리니 다시 정리 멀티 태스킹 멀티 태스킹과 프로세싱을 이해하기 위해 단일 CPU라고 가정하자 (하나의 CPU 코어) 하나의 코어가 하나의 일만 할 수 있다면?즉 하나의 프로그램만 실행할 수 있다면 A프로그램이 다 돌아가고 B프로그램이 돌아가게 될 것이다.밑에 그림처럼 이를 해결하기 위한 것이 멀티 태스킹이다. 멀티 태스킹이 가능하다면 위 사진처럼프로그램 A, B를 짧은 시간동안 번갈아가며 실행한다그리고 사용하는 입장에서는 A와 B가 동시에 실행되는 것 처럼 느껴질 것이다. (현대 CPU는 1초에 수십억번의 연산이 가능하기 때문에 우리는 이렇게 번갈아 가며 수행하는 ..

SUMMARY/JAVA 2025.08.11

[DB] RDS PostgreSQL pg_dump 트러블 슈팅

배경RDS DB를 로컬 sql 파일로 덤프해야 하는 상황!Copy codepg_dump: error: server version: 17.2; pg_dump version: 14.17 (Homebrew)pg_dump: error: aborting because of server version mismatch로컬과 RDS 환경 postgresql 버전이 불일치해서 버전을 변경해야 했다pg_upgrade항상 한번에 되는게 없다바이너리 파일 위치랑 data 위치에 주의해야한다.https://ivdl.co.za/2024/09/28/upgrading-from-postgresql-16-to-17-installed-with-homebrew-on-an-apple-silicon-mac/Copy codebrew instal..

SUMMARY 2025.06.06

[Spring] Query DSL!

사용 이유사용해 보고 느낀점은쿼리를 java 코드로런타임 에러를 잡을 수 있다중복되는 쿼리를 재사용할 수 있다동적 쿼리동적 쿼리를 다뤄본 적이 없어서 몰랐는데 이번 기회로 알게 되었다.쉽게 말해 분기에 따라 쿼리가 달라지는 경우.1번과 비슷하다설정Copy codeplugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6' id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'}group = 'study'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion..

SUMMARY/Spring 2025.06.06

[DB] PostgreSQL 덤프, 복구

배경데스크 탑으로 윈도우, 로컬 postgres노트북으로 맥, 도커 postgres 사용중에성능이 좋은 데스크탑으로 90만개 레코드를 추가하고노트북으로 옮기다 환경이 달라 조금 헤매서 정리하게 되었다.덤프윈도우 환경에서는 로컬 postgres여서 어려운 점이 없었다.pg_dump -h (호스트명) -U (유저명) -p (포트번호) -d (DB이름) > (덤프파일위치+파일명)나는 백업하고 싶은 위치에서pg_dump -U postgres -d [db_name] > [백업 이름].sql필자 명령어pg_dump -U postgres -d yumst > yumst_25_1_19.sql복구로컬 postgres는 쉬울듯 하다.psql -U postgres -d [db_name] 컨테이너 내부로 복사도커를 사용중이라면..

SUMMARY 2025.06.06

[Spring Boot] 모니터링

프로덕션 준비 기능프로덕션 준비 기능이란프로덕션 환경을 위해 준비해야 하는 비 기능적 요소이다.결국 개발 하는 이유가 사용자들에게 서비스를 제공하는 것이고장애는 항상 발생한다.(라고 지난 학기 데이터베이스 수업에서 아주 여러번 들었다)그래서 현재 진행중인 졸업 프로젝트에서 구현해 보려고 알아보던 중Spring Boot에서 제공하는 actuator를 알게 되었다.Actuator시스템을 움직이거나 제어하는데 쓰이는 기계장치라는 뜻으로기계공학 전공자들이 좋아하게 생겼다엔드포인트https://docs.spring.io/spring-boot/reference/actuator/endpoints.html#actuator.endpoints주요 엔드포인트bean : 스프링 컨테이너에 등록된 스프링 빈을 보여준다.heal..

SUMMARY/Spring 2025.06.06

[Spring] Servlet, Spring MVC

HttpMessage, ServletHttp message는 3가지로 이루어져있다.start lineheaderbody내 블로그 header를 살펴보면Cache hit, age 설정 관련된 정보도 볼 수 있는데, github pages에서는 10분으로 설정해놓은 듯 하다. (이거 때문에 304 뜨는듯)소소하지만 캐싱 정책을 커스텀하지 못하는 점을 불평하는 글도 있다. https://github.com/orgs/community/discussions/11884원문은 이렇게 생겼는데 개발하면서 이런 응답을 직접 작성한다면반복되는 부분도 많고, 실수할 여지도 많고, 무엇보다 귀찮을 것이다.이걸 도와주는게 서블릿이다.한마디로 서블릿이란클라이언트의 요청을 처리하고, 그 결과를 반환하는 java 기반 기술@WebS..

SUMMARY/Spring 2025.06.06