전체 글 (199) 썸네일형 리스트형 JVM 내 힙 메모리 관리 스택과 힙 관리내가 만든 변수(데이터)를 어느 영역(Stack vs Heap)에 머물게 할 것인가, 그리고 얼마나 오래 머물게 할 것인가"를 통제하는 게 관리포인트 원칙 1. 설계: 스택(Stack)을 최대한 활용하기스택은 '자동 청소 구역'입니다. 연산이 끝나면 즉시 사라지기 때문에 메모리 부담이 제로에 가깝습니다.개발자의 역할: 변수의 **Scope(범위)**를 최소한으로 줄입니다.효과: 필요한 동안만 스택에 머물다 바로 사라지게 하여, 힙(Heap) 메모리를 사용하지 않고도 연산을 끝냅니다. 이것이 가장 효율적인 메모리 관리입니다.원칙 2. 최적화: 힙(Heap)의 수명 관리하기힙은 '공용 저장소'이며 GC가 청소해줘야 하는 구역입니다.개발자의 역할: * 불필요한 new(객체 생성)를 남발하지 않습.. DB 데이터 탐색방식 A. “한 테이블에서 데이터를 찾는 법”1️⃣ Index 구조 (B-Tree)2️⃣ Access PathFull Table ScanIndex Range ScanIndex Unique ScanB. “여러 테이블의 데이터를 엮는 법”(Join Execution 영역)3️⃣ Filter vs Join 조건4️⃣ Nested Loop Join5️⃣ Hash Join6️⃣ Sort Merge Join 1. 필터링은 먼저 일어납니다 (Predicate Pushdown)사용자님이 말씀하신 "먼저 필터링하고" 부분은 매우 정확한 통찰입니다. DB는 성능을 위해 조인 연산을 하기 전, 가능한 한 데이터를 미리 줄이려고 합니다.WHERE 절 필터링: 조인하기 전에 각 테이블에서 조건에 맞지 않는 행을 먼저 제거합니다.O.. 헥사고날 아키텍처 (포트와 어댑터(Ports and Adapters) 패턴) 1. 헥사고날의 핵심 문제 정의: "의존성의 역전"전통적인 3계층 아키텍처(Controller - Service - Repository)에서는 서비스 로직이 DB 코드(JPA 등)에 직접 의존합니다. 이로 인해 DB 스키마가 바뀌면 비즈니스 로직 코드가 줄줄이 깨집니다.헥사고날은 이를 **'내부(도메인)'**와 **'외부(인프라)'**로 나누어 해결합니다.내부 (Inside): 순수한 비즈니스 로직 (애그리거트, 도메인 엔티티). "우리 회사는 쿠폰을 어떻게 발급하는가?"라는 규칙만 존재합니다. 여기엔 import문에 spring, jpa, aws 같은 단어가 절대 들어오지 않습니다.외부 (Outside): DB, 웹 UI, 메시지 큐, 외부 API 등. 로직을 실행하기 위한 수단일 뿐입니다. 2. 세 .. 데이터모델링 방법론 : 정규화 데이터 베이스 정규화데이터베이스 정규화의 주요 목적 중 하나는 데이터 중복을 방지하는 것입니다. 이를 통해 데이터 무결성을 유지하고 저장 공간을 절약하며, 데이터 갱신 시 일관성을 보장할 수 있습니다. 종속적인 칼럼은 테이블을 분리해서 중복을 방지한다 제1정규형 (1NF), 원자값으로 만들기1. 각 컬럼이 원자값(더 이상 분해할 수 없는 단일 값)을 가져야 합니다2 반복되는 그룹을 제거해야 합니다.3. 각 레코드가 유일한 식별자(기본 키)를 가져야 합니다. 1. 각 컬럼이 원자값(Atomic Value)을 가져야 합니다비정규화된 테이블:학생ID이름연락처 학생ID이름연락처1홍길동010-1234-5678, 02-123-45671NF를 만족하는 테이블:학생ID이름휴대전화집전화1홍길동010-1234-567802.. Next.js Next.js 정의SSR(서버 사이드 렌더링)과 그 파생 기술들을 다루는 프레임워크"React라는 '화면 도구'에 Node.js라는 '서버 엔진'을 장착한, 풀스택 웹 프레임워크입니다." 1. Next.js의 역할Next.js는 한 지붕 아래 두 가지 자아를 가지고 있습니다.프론트엔드 자아 (React): 컴포넌트를 만들고, 사용자의 클릭에 반응하고, 예쁜 화면을 그립니다.백엔드 자아 (Node.js 서버): 브라우저가 아니라 서버에서 코드를 실행합니다. 데이터베이스에 직접 접속하거나, API를 생성하고, 환경변수를 안전하게 관리합니다. 2. React와 NextJs 비교React (SPA): 단일 HTML(index.html) 위에서 자바스크립트가 컴포넌트 단위로 UI를 동적으로 교체하는 방식입니다. .. 데이터모델링 방법론 : DDD(도메인 주도 설계) 데이터 모델링의 문제데이터 모델링이 제기하는 문제는 물리적인 실체를 묘사하는 논리적 데이터를 어디에(어떤 테이블/스키마에) 둘 것인가?"라는 논리적인 결정더 구체적으로 말하면 데이터를 기존의 테이블 내에서 다른 데이터들과 한 곳에 둘지(통합), 나눌지(분리) 결정이 필요함정규화의 문제 (Normalization): 데이터 구조 중심목표: 데이터의 중복 제거와 결함(Anomaly) 방지.기준: 수학적/논리적 무결성. (예: "학번이 결정되면 이름이 결정되니 분리하자.")결과: 실체가 무엇이든 상관없이, 데이터 간의 종속 관계에 따라 기계적으로 테이블을 쪼갭니다.DDD의 문제 (도메인 주도 설계): 비즈니스 행위 중심목표: 변경의 전파 차단과 비즈니스 복잡도 해결.기준: 비즈니스 맥락(Context)과 트랜.. 보안점검리스트 점검 항목▸사용자 입력값에 대한 필터링 및 유효성 검증이 미흡하여 데이터를 수정하거나 임의 명령을 실행할 수 있는 코드 삽입 및 프로그램 로직 손상 등(LDAP·SQL·SSL·XPath 인젝션, 운영체제 명령실행)▸사용자 입력값 필터링 미흡으로 사용자 세션 탈취·도용 및 악성코드 유포 사이트로 전환(크로스사이트스크립트 등)▸입력값의 제한을 두지 않아 장애 발생 취약점 존재 여부 확인(버퍼 오버플로우)▸로그인 시도·SMS발송 등 웹의 특정 프로세스에 대한 반복 요청 통제기능 미구현으로 자원 고갈 공격 등 가능 여부(자동화공격)▸웹 관리자페이지 노출로 비인가자의 접근 용이 여부(관리자 페이지 노출)▸일정 패턴을 가진 단순 방법으로 사용자 세션 ID를 생성하거나 고정된 세션을 사용하여 불법적인 접근 가능 여부.. 장기연결 소켓통신 소켓통신쌍방이며 연결 상태를 유지하는 stateful 통신 방식 장기연결 소켓통신 종류① WebSocket (네가 아는 것)HTTP → Upgrade → TCP 위에서 연결 유지브라우저/서버 친화적채팅, 알림, 대시보드② TCP 소켓 (Persistent TCP)HTTP 없음서버 ↔ 클라이언트가 직접 TCP 연결 유지메시지 포맷은 직접 정의POS / 단말 / IoT 쪽에서 제일 흔함특징:연결 유지keep-alive / heartbeat 직접 구현framing(메시지 경계) 직접 관리③ gRPC (HTTP/2 기반 장기 연결)내부 서비스 통신에서 많이 씀스트리밍 RPC 지원연결은 계속 유지됨④ MQTT (브로커 기반)IoT 표준publish / subscribe항상 연결 유지⑤ SSE (Server-Sen.. 이전 1 2 3 4 ··· 25 다음