목록전체 글 (66)
leehyeon-dv 님의 블로그
5G란 무엇인가? 우리의 미래를 바꿀 차세대 이동통신 완벽 가이드스마트폰을 쓰면서 "5G"라는 단어를 한 번쯤은 들어봤을 것입니다. 통신사 광고에서도, 뉴스에서도 자주 등장하는 5G과연 이것이 무엇이고, 왜 이렇게 중요한 걸까요? 이 글에서는 5G의 개념부터 핵심 기술, 활용 사례까지 쉽고 명확하게 설명드립니다. 📡 5G란 무엇인가?5G(5th Generation)는 5세대 이동통신 기술 표준입니다. 휴대폰, 기지국 장비, 네트워크 장비 등 모든 통신 기기들이 서로 통신하려면 동일한 규격, 즉 "표준"을 따라야 합니다.이 표준은 국제 기관들이 정합니다.대표적으로 ITU(International Telecommunication Union)와 3GPP(3rd Generation Partnership Pro..
💡 이번 구현의 핵심 요약:Redis Sorted Set 사용: Score에 현재 시간을 넣어 자동으로 '최근 본 순서' 정렬이 되도록 구현했습니다.데이터 정합성 유지: Redis에서 가져온 ID 목록을 바탕으로 DB를 조회한 후, 스트림 API를 사용해 원래의 정렬 순서를 다시 맞추어 사용자에게 반환했습니다.성능 최적화: 매번 DB 전체를 뒤지는 것이 아니라, Redis의 메모리 기반 조회를 통해 랭킹/최근 목록 조회 성능을 높였습니다. 클릭한 상품을 "최근 본 게시물" 이라는 목록에 보여주는 기능을 추가하게 되었다 이러한 기능을 구현하기 위해 사용자가 상품을 조회한 내역을 캐싱해야 하는데, 해당 역할을 클라이언트 혹은 서버에서 수행할 수 있습니다. 본 포스트에서는 그중 서버에서 관리하는 방법에 대..
마이그레이션 이유 npm을 사용할 때 종속성을 사용하는 프로젝트가 100개 있는 경우 해당 종속성의 사본 100개가 디스크에 저장되는반면, pnpm을 사용하면 의존성이 content-addressable 저장소에 저장되기때문에 디스크 상에서 단일 위치에 저장되어 추가적인 디스크 공간을 소비하지 않기 때문, 이를 통해 프로젝트 간에 동일한 버전의 의존성을 공유할 수 있다 결과적으로,디스크 공간이 프로젝트와 의존성의 수에 비례하여 더 많이 절약되고 더 빠르게 설치할 수 있다.https://pnpm.io/motivation Motivation | pnpmSaving disk spacepnpm.io 1. pnpm 설치하기 npm이 있기때문에 간단히 설치하겠습니다 npm i -g pnpm 2. 기존 node_..
📌소개 및 기초개념 디지털 서비스 예 : 메신저, 비디오 스트리밍, 온라인게임, 소셜 미디어 핵심 메세지 : 이런 서비스들은 모두 데이터통신을 기반으로 한다 어떻게 디지털 서비스가 제공될까? 서비스 제공구성: 사용자 장치와 서버 (서버에서 장치로 데이터를 전송) 예 : 메세지, 비디오, 이미지등이 서비스 데이터 어떻게 데이터가 전달될까? 발신자(Sender) → 수신자(receiver)까지 여러 중간 단계를 거침 (데이터도 네트워크를 통해 우편배송과 유사한 방식으로 전달됨) Data Communications 실제 데이터 통신모델 : 발신자 → data 네트워크 → 수신..
1. Tailwind CSS설치 pnpm install tailwindcss @tailwindcss/vite 2.Vite plugin구성vite.config.ts파일 아래 파일을 추가한다 import { defineConfig } from 'vite'import tailwindcss from '@tailwindcss/vite'export default defineConfig({ plugins: [ tailwindcss(), ],}) 3.index.css에 최상단에 아래 코드 추가 @import "tailwindcss"; React Router사용자가 웹 브라우저의 주소창에 URL을 입력하면 해당 URL에 맞는 데이터를 서버로 부터 받아와 사용자에게 제공하는 과정 CSR은 페이지는 유지하되, 부..
해당 화면들에 대해 작성했던 쿼리를 QueryDSL로 작성하여 리팩토링하기⭐미션목록1. Mission2. Review3. MemberRepository/Custom/Impl구조로 나누는 이유1. 기존 SpringDataJPA와의 통합 JpaRepository를 통해 기본 CRUD기능 + 커스텀 기능 동시에 사용가능 하나의 레포지토리 인터페이스로 모든 기능 접근 가능2. 관심사 분리 기본 기능과 복잡한 쿼리의 명확한 분리 인터페이스와 구현체 분리로 결합도 감소3. 확장성 새로운 QueryDSL메서드가 필요할때 인터페이스에 추가하고 구현만 하면 됨 기존 코드 변경없이 기능 확장 가능 Repository = SpringDat..
⭐ 목차영속성 컨텍스트란?왜 영속상태가 좋을까 지연로딩(FetchType.LASY)N=1JPQLQueryDSL실습목표 = JPA의 영속성 컨텍스트의 개념, JPQL과 QueryDSL의 차이점, QueryDSL이 가지는 유리함에 대해 알기 📌영속성 컨텍스트란? JPA의 핵심개념 중 하나로 엔티티 객체를 영구적으로 저장하고 관리하는 일종의 메모리 공간이다 쉽게 말하면, 애플리케이션 내부에 존재하는 가상의 데이터 베이스라고 이해할 수 있다 왜필요할까? → ORM은 객체와 관계형 데이터베이스를 자동으로 매핑해주는 기술이다. JPA는 이러한 ORM기술을 제공하며 영속성 컨텍스트는 JPA에서 엔티티 객체를 효율적으로 관리하기위해 존재한다 동작방식데이터를 조회하거나 저장시, JPA는 다음과 같은 흐름으로 동작합..
⭐ 목차JPA사용 이유spring 프로젝트 설계엔티티 매핑매핑테이블 설계연관관계 매핑양방향 매핑칼럼 별 세부적인 설정 목표 = JPA를 사용해 엔티티를 만들고 DB에 테이블이 만들어지는지 확인하기 📌JPA사용이유 자바의 목표 : 캡슐화/상속/다형성을 활용하는 것, RDBMS(관계형 데이터베이스)는 데이터를 정교하게 구성하는 것예)// 중복 회원인지 먼저 확인해주는 작업pStmt = conn.prepareStatement("SELECT * from member WHERE id = ?");pStmt.setLong(1, newUser.getId());res = pStmt.executeQuery();if(res.next()) { return "이미 가입한 사용자입니다. 다른 id를 사용해주세요.";}J..
🔑Table of Contents시간복잡도 알고리즘분석RAMO, Ω , Θ 표기최대 부분 배열단순한 O(n³) 알고리즘 O(nlogn) 분할정복법 알고리즘 O(n) 동적 계획법 알고리즘중복 계산을 제거한 O(n²) 알고리즘정렬과 탐색삽입정렬선택정렬거품정렬퀵정렬이진탐색선형리스트 순차매핑연결리스트 헤드노드를 가진 연결리스트 환형 연결리스트 이중 연결리스트 스택과 큐스택큐환형 큐연결리스트를 큐로 구현 리스트의 응용배열이용희박행렬 배열이용희박행렬 연결리스트 이용스트링 표현연산식트리용어정리재귀적정의트리표현 - 링크이용트리의 이진 트리 표현괄호를 이용한 트리표현이진트리이진트리의 재귀적 정의이진트리의 성질이진트리 표현 - 링크이용이진트리 표현 - 배열이용이진트리 순회수식트리중순위 순회후순위 순회와 전순위 순회..
🔑Table of Contents스택이란?📌스택이란? 삽입과 삭제 연산을 한 쪽 끝에서만 일어나도록 제한한 리스트스택에서 삽입과 삭제 연산이 일어나는 끝을 top이라하고, 삽입 연산과 삭제 연산을 각각 push, pop이라고 한다 LIFO : 스택에서 나중에 삽입된 원소가 먼저 삭제되는 성질시스템에서 함수 호출이 발생할 경우, 가장 최근에 호출된 곳으로 복귀하기 위해 스택에 복귀 주소를 저장해 둔다 📌스택의 구현1 - 배열#define MAX_STACK_SIZE 1000 // 스택의 최대 크기 정의// 스택에 저장될 요소의 구조체 정의typedef struct { int key; // 저장할 데이터 (다른 필드도 확장 가능) /* other fields here ..