분류 전체보기 132

[JS] 비동기로 데이터 처리(async/await, fetch then)

비동기란→ 코드 실행을 막지 않고, 오래 걸리는 작업을 기다리며 다음 작업을 먼저 실행하는 방식 보통 외부 API를 사용할 경우 비동기로 처리한다. 외부 API를 사용할 때 비동기를 쓰는 이유1. 응답을 기다리면 전체 앱이 멈추기 때문외부 API는 보통 네트워크를 통해 요청을 보낸 후, 응답을 받기까지 시간 걸린다동기 방식일 경우, 응답이 올 때까지 브라우저나 앱이 멈춘다사용자 입장에서는 버벅이거나 멈춘 것처럼 느껴짐2. 여러 작업 동시 처리 가능 비동기 방식일 경우API 응답을 기다리는 동안 다른 UI 렌더링, 이벤트 처리 가능네트워크 작업과 사용자 입력을 동시에 처리 가능  JS의 비동기 처리 방법AJAX (Asynchronous JavaScript and XML)서버와 비동기적으로 데이터를 주고받기..

FrontEnd 2025.04.01

[DB] Connection Pool, HikariCP

JDBC API를 사용하여 DB와 연결하기 위해 Connection 객체를 생성하는 작업은 비용이 많이 드는 작업 중 하나이다.이러한 문제를 해결하기 위해 애플리케이션 로딩 시점에 Connection 객체를 미리 생성하고,애플리케이션에서 데이터베이스에 연결이 필요할 경우 미리 준비된 Connection 객체를 사용하여 애플리케이션의 성능을 향상하는 커넥션 풀 (Connection Pool)이 등장하였다. Connection PoolJava에서 JDBC의 Connection Pooling을 관리하는 라이브러리빠르고 안정적인 성능으로 많은 Spring Boot 및 Java 기반 애플리케이션에서 사용된다 커넥션 풀이란 (Connection Pool)1) 커넥션 풀 (Connection Pool) (1) ..

DB 2025.03.27

[Springboot] Client-Server 구조 정리

Client (사용자)URL 입력, 링크 클릭 등 다양한 이벤트를 통해 HTTPS(443) 요청 발생브라우저는 요청을 도메인 기반으로 DNS 조회 → IP 주소로 전환443 포트를 리스닝 중인 Apache HTTP Server로 전달 Apache HTTP Server (httpd) HTTPS 요청을 수신 (443 포트)SSL 처리 (HTTPS 복호화 → 평문 HTTP)정적 리소스 제공 (HTML, JS, 이미지 등 직접 응답 가능)동적 요청은 리버스 프록시로 Tomcat에 전달(보통 ProxyPass, ProxyPassReverse 사용) Apache Tomcat (WAS)Apache로부터 들어온 요청을 Tomcat의 Connector가 수신 (8080, 8009 등)Connector는 요청을 서블릿 컨..

Springboot 2025.03.26

FETCH JOIN

FETCH JOINORM(Object-Relational Mapping) 프레임워크나 SQL에서 JOIN 된 엔티티를 한 번의 쿼리로 가져오는 기법일반적으로 SQL의 JOIN은 기본적으로 지연 로딩(Lazy Loading) 방식으로 동작한다FETCH JOIN을 사용하면 즉시 로딩(Eager Loading) 방식으로 가져와 여러 번의 쿼리를 실행(N+1) 하는 것을 방지할 수 있다2. FETCH JOIN in SQL (JPA / Hibernate)📌 일반 JOIN (Lazy Loading)SELECT e FROM Employee e JOIN e.department d;이 경우, 지연 로딩(Lazy Loading)으로 처리되며, department 데이터는 필요할 때 추가 쿼리가 발생한다📌 FETCH J..

DB 2025.03.18

HTML DOM(Document Object Model)

🔹 DOM이란?DOM (Document Object Model) 은 문서(Document) 를 객체(Object) 로 표현하는 모델(Model) 이다.문서 객체: , 같은 HTML 태그를 JavaScript가 조작할 수 있도록 객체로 변환한 것.모델: 문서 객체를 트리(Tree) 구조로 표현하여 브라우저가 HTML을 이해하는 방식. 🔹 DOM의 역할웹 브라우저는 HTML 문서를 트리 구조로 변환하여 이해하고, JavaScript는 이를 활용해 검색, 수정, 추가, 삭제 등의 작업을 수행할 수 있다. 🔹 Tree 구조란?Root Node: 최상위 노드로, DOM에서는 이 해당된다.Parent & Child: 상위 노드를 부모(Parent), 하위 노드를 자식(Child)이라 한다.Leaf Node:..

FrontEnd 2025.03.18

Comparable VS Comparator

Comparable과 Comparator는 객체 정렬 시 사용되는 인터페이스다.JIT 컴파일러 최적화 덕분에 성능 차이는 거의 나지 않으며, 사용 목적과 방식에 따라 적절하게 사용하여야 한다 [Java] JIT 컴파일러란?JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다. 컴파일러 vs 인터프리터 컴파일러와 인터프리터 모두 highhyeinisfree.tistory.com  ✅ Comparable객체 클래스에서 Comparable 를 implements 한 후, compareTo(T o) 를 구현객체 자신과 다른 객체를 비교하는 방식Collections.sort() 또는 A..

Java 2025.03.02

RestTemplate, WebClient, RestClient, FeignClient

Spring에서 HTTP 통신을 수행하는 방법에는 여러 가지가 있다.많이 사용되는 세 가지 방법(RestTemplate, WebClient, RestClient)과이외에 사용 가능한 HTTP 통신 방법까지 정리하려고 한다.   1. RestTemplate (Spring 3~4)✅ 특징동기(Synchronous) 방식의 HTTP 클라이언트RestTemplate 객체를 사용하여 간단한 API 호출이 가능Spring 5 이후로는 권하지 않는 방법 RestClient 알아보기 (RestTemplate이 Deprecated 된다고요?)Spring Boot 3.2에 새롭게 추가된 RestClient에 대해 알아보자.spring docs의 RestTemplate에 대한 설명에 위와 같은 NOTE가 추가되었다. Spr..

CS 2025.02.15

[ChatGPT]Chat completions VS Completions API

ChatGPT API는 Chat completions와 Completions으로 구분된다 🔹 1. Chat Completions API(GPT-4, GPT-3.5 사용 가능, gpt-4, gpt-3.5-turbo 모델 사용)✅ 특징대화형 메시지 형식을 사용 (messages 배열)시스템 메시지를 통해 모델의 톤이나 역할을 지정 가능대화 히스토리를 관리하여 맥락(Context) 유지 가능다중 발화자 지원 (ex. 시스템, 사용자, 모델)🏆 장점✔️ 맥락 유지: 이전 대화 내용을 기억하고, 연속적인 대화 가능✔️ 역할 지정 가능: 시스템 메시지를 통해 모델의 역할을 설정 가능✔️ 유연한 인터페이스: 실제 챗봇이나 고객 지원 시스템 등에 최적화⚠️ 단점❌ 비용: 같은 입력 길이일 때, 일반 Completi..

카테고리 없음 2025.02.03

[CS]cache: Redis VS Memcached

Redis와 Memcached는 둘 다 분산 캐시로 사용되는 인메모리 데이터 저장소이지만 여러 차이점들이 존재한다.데이터 구조Redis단순한 key-value 저장소뿐만 아니라 다양한 데이터 구조를 지원 다양한 종류의 데이터 처리에 적합하다.문자열, 리스트(List), 해시(Hash), 셋(Set) 등Memcached오직 단순한 key-value 데이터 구조만 지원한다. 문자열(String)만 저장할 수 있다. 영속성 (Persistence)Redis: 영속성(Persistence) 을 보장한다. Memcached: 영속성을 보장하지 않는다. 복제(Replication) 및 클러스터링(Clustering)Redis복제 기능을 제공하며, 클러스터링을 통해 여러 서버 간에 데이터를 분산 처리할 수 있다.이를..

CS 2024.09.25

[Springboot] JWT 0.15.2

이번 프로젝트에서는 최신 기술스택을 사용하기로 하였기에,이전에는 jwt 0.11.5 버전을 사용하였으나 이번에는 2024년 기준 최신 버전인 0.15.2 버전을 사용하기로 했다. maven Repository: https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api gradle implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.5' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.5' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-ja..

Springboot 2024.06.22