IT 78

[MySQL] GROUP BY 사용법

생각을 많이 하여 GROUP BY 개념을 사용하게 되는 케이스가 생겨 정리에 대한 필요성이 생겨 포스팅하고자 한다. > 어느 회사에서, 개인별로 자신과 동일한 부서에 일하는 직원 수가 몇 명인지 조회하는 쿼리가 필요하다. EMPLOYEES 테이블에서 ID, 이름(NAME), 부서(DEPARTMENT) 정보가 주어질 때 쿼리를 작성해보자. > SELECT e.ID, e.NAME, COUNT(c.ID) AS COUNT_COWORKER FROM EMPLOYEES e JOIN EMPLOYEES c ON e.DEPARTMENT = c.DEPARTMENT AND e.ID c.ID GROUP BY e.ID, e.NAME ORDER BY e.ID ASC ; 즉, 자체 테이블을 자가 결합하는 방법을 사용한다.

IT/DB 2024.03.09

[MySQL] JSON_TABLE

기존 회사에선 Oracle 을 사용하다가, 최근에 이직한 회사에서 MySQL 을 사용하며 새로운 점들을 익히고 있다. 그러던 와중에 JSON Type 의 데이터를 파싱 등의 처리하는 작업을 맡게 되어 진행하게 되었다. 그 중 기록해 두었다가 추후에 계속 활용할 수 있도록 하기 위해 포스팅을 하려고 한다. -- 자세한 내용은 다음과 같다. -- JSON Type 의 데이터가 [{"id": 1, "item": "apple"}, {"id": 2, "item": "grape"} ... ] 등의 형태로 되어 있다고 가정한다. 이 때 아래와 같이 테이블 형태를 변경하고자 한다. (As-Is) fruit_no fruit_items ------------------------------------------------..

IT/DB 2023.09.14

[CS] Real-Time Web

Real-Time Web, 그리고 이와 관련된 개념까지 같이 정리하고자 한다. 1. Real-Time Web 이란? - 인터넷에서 사용자들로 하여금 창작자가 정보를 만들어 내는, 즉시 수신할 수 있도록 하는 기술 혹은 서비스 2. 관련 기술의 특징 - Polling (폴링) - 전송할 데이터의 유무에 관계 없이 주기적으로 요청을 수행하는 방법 - 클라이언트는 지정된 시간 간격에 맞춰 서버에 지속적인 요청을 보냄 - 서버는 각 요청 마다 가용 데이터나 데이터가 없는 경우 빈 데이터를 보내거나 실패와 같은 적절한 응답을 함 - 데이터의 유무에 관계 없이 요청하여 불필요한 네트워크 비용이 발생 - 클라이언트와 서버 자원을 많이 낭비함 - 요청의 간격이 길면 실시간성이 떨어짐 - 반대로 간격이 짧으면 많은 자원..

IT/CS 2023.06.03

[Spring] Spring IoC Container

Spring IoC Container 의 개념에 대한 정리를 하고자 글을 쓴다. 1. Spring IoC Container 의 역할 - Spring Framework 에서 객체를 생성하고 관리하고 책임지고 의존성을 관리 해주는 컨테이너 - IoC (Inversion of Control, 제어의 역전) - 개념 - 객체의 생성, 생명 주기의 관리 등 모든 객체에 대한 제어권이 내부에서 외부로 역전 - 사용 이유 - 역할과 관심을 분리해 응집도를 높이고 결합도를 낮추며, 이에 따라 변경에 유연한 코드를 작성할 수 있는 구조를 만들어 객체 지향 원칙을 잘 지킬 수 있기 때문 - DI (Dependency Injection) 개념과의 비교 - DI 는 의존 방향의 역전을 의미 - 고수준 모듈이 저수준 모듈에 의..

IT/Spring 2023.05.21

[Java] JVM의 Garbage Collector

JVM 및 Garbage Collector 개념에 대한 정리를 하고자 한다. 1. JVM (Java Virtual Machine) 이란? - 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 2. Garbage Collector 란? - 동적으로 할당된 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 - 이를 온전히 이해하기 위해, 메모리의 구조 중 Stack 영역과 Heap 영역에 대해 알아야 한다. - Stack 영역 - 정적으로 할당된 메모리 영역 - 원시 타입의 데이터가 값과 함께 할당 - Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당 - Heap 영역 - 동적으로 할당된 메모리 영역 - 모든 Object 타입의 데이터가 할당 - Heap 영역의 Obje..

IT/Java 2023.05.21

[JPA] N+1 문제

JPA 란 무엇인가에 대해, JPA 를 사용할 때 맞닥뜨릴 수 있는 N+1 문제에 대한 정리가 필요하여 글을 포스팅 한다. 1. JPA (Java Persistence API) - 개념 - Java ORM 기술에 대한 표준 명세로, Java 의 객체와 DB 를 매핑하는 인터페이스 역할 수행 2. N+1 문제 - 개념 - 요청이 1개의 쿼리로 처리 되기를 기대했는데, N개의 추가 쿼리가 발생하는 현상 - 발생 원인 - JPQL을 생성하여 실행할 때, 연관 관계 데이터를 무시하고 해당 Entity 기준으로 쿼리를 조회하기 때문 - 해결 방법 - 1) Fetch Join - 연관된 Entity 또는 Collection 을 한 번에 같이 조회하는 기능 - 연관된 Entity 까지 같이 영속성 컨텍스트에 올림 -..

IT/JPA 2023.05.21

[DataStructure] Queue vs Priority Queue

Queue 와 Priority Queue 의 특징에 대해 정리하고자 한다. 그리고 이와 관련된 Heap 구현에 대한 개념까지 같이 서술한다. 1. Queue - 시간 순서상 먼저 집어 넣은 데이터가 먼저 나오는 선입선출 FIFO (First In First Out) 구조로 저장하는 형식 - 시간 복잡도는 enqueue 시 O(1), dequeue 시 역시 O(1) 2. Priority Queue - 들어간 순서에 상관 없이 우선 순위가 높은 데이터가 먼저 나옴 - 시간 복잡도는 push 시 O(logn), pop 시 O(logn) - Heap 자료구조를 바탕으로 한 구현 방식 - Heap 은 완전 이진 트리 구조이며, 조건은 다음의 경우가 있다. - 1) 각 Node 에 저장된 값은 Child Node ..

IT/DataStructure 2023.05.20

[DataStructure] Array vs LinkedList

Array 와 LinkedList 간의 개념 비교를 카테고리 별로 하고자 한다. 1. 메모리 저장 - 1) Array - 연속성을 유지하기 위해 물리적 메모리 상에서 순차적으로 저장 - 2) LinkedList - 물리적인 메모리 상에서는 비연속적으로 저장이 되지만 Linked List 를 구성하는 각각의 Node가 다음 Node의 Address를 가리킴으로써 논리적인 연속성을 가진 자료구조 - Node 라는 구조체로 이루어져 있는데, Node는 데이터 값과 다음 Node의 address를 저장함 - 물리적 메모리 상에서 연속성을 유지하지 않아도 되기 때문에 메모리 사용이 비교적 자유로운 대신, Next Address를 추가적으로 저장해야 하기 때문에 데이터 하나당 차지하는 메모리가 더 커짐 - 데이터가..

IT/DataStructure 2023.05.20

[Algorithm] 정렬

정렬 알고리즘의 종류에 따라 개념 및 특징 정리를 하기 위해 글을 포스팅 한다. 1. 버블 정렬 - 인접한 두 개의 요소를 비교해 가면서 정렬을 진행하는 방식 - 장점) 구현이 매우 간단함 - 단점) 순서에 맞지 않는 요소들의 교환이 자주 일어남 - 시간 복잡도 - 최악의 경우, O(n^2) - 평균, O(n^2) - 최선의 경우, O(n) 2. 선택 정렬 - 전체 범위에서 차례대로 가장 작은 숫자를 탐색하고, 가장 왼쪽부터 차례대로 교환하는 방식 - 장점) 자료 이동 횟수가 미리 결정 - 단점) 값이 같은 요소가 있다면 상대적인 위치가 변경될 수 있음 - 시간 복잡도 - 최악의 경우, 평균, 최선의 경우 모두 O(n^2) 3. 삽입 정렬 - 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교..

IT/Algorithm 2023.05.17

[CS] Web Socket

Web Socket 에 대한 정리가 필요하여 글을 포스팅 한다. 1. 정의 - TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜 로써, 두 프로그램 간의 메시지를 교환하기 위한 통신 방법 중 하나 2. 특징 - 양방향 통신 (Full-Duplex) - 데이터 송수신을 동시에 처리할 수 있는 통신 방법 - 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있음 - 통상적인 HTTP 통신은 Client 가 요청을 보내는 경우에만 Server 가 응답하는 단방향 통신 - 실시간 네트워킹 (Real Time-Networking) - 웹 환경에서 연속된 데이터를 빠르게 노출 - Ex) 채팅, 주식, 비디오 데이터 - 여러 단말기에 빠르게 데이터를 교환 - 최초 접속 에서만 HTTP 프로토..

IT/CS 2023.05.16