자료구조 - R트리(R-Tree)
·
이론공부
□ R-Tree 개념R-Tree는 점, 선, 면과 같은 2차원 이상의 공간 정보를 효율적으로 저장하기위한 자료구조로 위치기반 데이터에서 자주 사용된다. □ R-Tree 구조R-Tree는 여러개의 노드에 MBR(최소 경계 사각형)을 저장하여 그안에 포함되는 객체들의 공간을 나타낸다.□ MBR(최소 경계 사각형)각 객체에 사각형으로 경계를 만들고 묶어서 표현하면 아래와 같다.  위 MBR을 트리로 나타내면 아래와 같다. 부모 노드(Parent Node): 한 노드에 대해 바로 위에 연결된 노드.자식 노드(Child Node): 한 노드에 대해 바로 아래에 연결된 노드.리프 노드(Leaf Node): 자식이 없는 노드. 트리의 끝을 나타냄.형제 노드(Sibling Node): 같은 부모 노드를 공유하는 노드들..
DB 인덱싱(Database Indexing)
·
이론공부
DB 인덱싱(Database Indexing)은 데이터베이스에서 데이터를 더 빠르게 검색하기 위해 사용하는 기술데이터베이스에서 대량의 데이터를 검색할 때, 인덱스를 사용하면 특정 데이터를 빠르게 찾아낼 수 있어 성능을 크게 향상시킬 수 있다.1. 인덱스의 개념책의 목차와 유사하게, 인덱스는 데이터베이스 테이블의 특정 열(column)에 대한 검색용 정보를 미리 저장해둔 자료 구조인덱스를 사용하면 테이블의 모든 행을 하나씩 탐색하지 않아도 되므로, 검색 속도가 크게 향상된다.2. 인덱스의 작동 방식인덱스는 일반적으로 'B-트리(Balanced Tree)'나 '해시(Hash)'와 같은 자료 구조로 저장인덱스는 특정 열의 값을 기준으로 정렬하여 저장하므로, 데이터 검색 시 이진 탐색(Binary Search)..
기술면접 준비(2)
·
이론공부
1. JPA에서 Lazy Loading과 Eager Loading의 차이점과 각각의 장단점Lazy Loading (지연 로딩): 연관된 엔티티나 컬렉션을 실제로 사용할 때 로드합니다. 즉, 객체를 처음 불러올 때는 연관된 엔티티를 로드하지 않고 필요할 때 데이터를 가져옵니다.장점:처음 데이터 로드 시 불필요한 데이터를 가져오지 않으므로 성능 최적화에 유리함.메모리 사용량을 줄일 수 있음.단점:필요한 시점에 데이터베이스에 추가 쿼리를 실행하기 때문에 성능 문제가 발생할 수 있음 (특히 N+1 문제).즉시 데이터를 사용해야 하는 경우 사용하기 어려움.Eager Loading (즉시 로딩): 엔티티를 조회할 때 연관된 모든 엔티티를 함께 조회합니다.장점:처음 로드 시 관련된 모든 데이터를 한 번에 가져오기 때..
프록시(Proxy)란?
·
이론공부
프록시의 개념프록시는 실제 객체에 대한 접근을 제어하기 위해 사용되는 중간 객체로 이를 통해 클라이언트는 프록시 객체를 통해 실제 객체의 메서드를 호출하게 되며, 프록시는 요청을 처리하거나 추가적인 작업을 한 뒤 실제 객체에 전달한다.Spring에서의 프록시 사용Spring에서는 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)를 사용하여 트랜잭션 처리, 보안, 로깅 등의 횡단 관심사를 처리하는데, 이때 프록시를 사용, @Transactional 어노테이션을 사용하면 Spring이 해당 메서드에 프록시 객체를 만들어서 트랜잭션을 관리프록시의 동작 방식클라이언트가 프록시 객체의 메서드를 호출.프록시는 요청을 가로채고, 메서드 호출 전에 추가 로직을 실행할 수 있음.예를 들어..
기술면접 준비(1)
·
이론공부
RESTful한 API설계의 장점개념 RESTful : REST원칙을 따르는 API 설계 방식으로, HTTP프로토콜을 기반으로 자원을 정의하고 그 자원에                대한 상태 정보를 주고받는 방식자원(Resource) : URI로 식별되는 개체표현(Repesentation) : 클라이언트가 자원에 접근할 때, 자원의 상태를 JSON, XML등의 형식으로 전송무상태성(StateLessness) : 서버는 각 요청을 독립적으로 처리, 클라이언트의 상태를 서버에 저장하지 않음캐시 가능(Casheable) : HTTP의 캐싱 메커니즘을 사용해 응답을 클라이언트 측에 저장 가능(성능최적화)계층화 구조(Layerd System) : 클리언트와 서버 사이에 프록시, 게이트웨이 등을 중간 계층으로 배치..
혼자공부하는 컴퓨터 구조와 운영체제 Ch1~5
·
이론공부
Ch1. 컴퓨터 구조01 - 1 / 컴퓨터 구조를 알아야 하는 이유문제 해결컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.성능, 용량, 비용컴퓨터 구조를 이해하면 입,출력 개발을 넘어선 성능, 용량, 비용등을 고려한 개발을 할수있게 된다.01 - 2 컴퓨터 구조의 큰 그림컴퓨터가 이해하는 정보데이터명령어컴퓨터의 네가지 핵심 부품□ CPU : 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 부품(ALU, 레지스터, 제어장치로 구성)  → ALU : 계산기  → 레지스터 : CPU 내부의 작은 저장장치  → 제어장치 : 제어 신호를 내보내고, 명령어를 해석하는 장치□ 메모리(주기억장치) : 현재 실행되는 프로그램의 명령어와 데이터를 저장하..
개발로드1. 인터넷의 작동원리
·
이론공부
인터넷의 작동 원리※ 인터넷은 현실 세계의 택배에 비유하면 이해하기 쉽다.- 호스트(Host) → 발신자 /  수신자- 라우터(Router) → 물류창고- 인터넷 제공자(ISP) → 택배회사- 패킷(Packet) → 택배물품    패킷은 Header(송장) 과 Body(내용물)로 구성 되어 있다.HTTP란?(Hypertext Transfer Protocol): HTTP는 인터넷에서 데이터를 전송하는 데 사용되는 프로토콜입니다.이는 웹 브라우저와 웹 서버 간에 통신하는 데 사용됩니다.HTTP는 클라이언트(일반적으로 웹 브라우저)가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 보내는 방식으로 작동합니다. 이를 통해 웹 페이지, 이미지, 동영상 등을 가져올 수 있습니다.브라우저와 그 작동 원리웹 브라..
자료구조 - 힙(heap)
·
이론공부
힙(heap) : 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이전 트리 ※ 완전 이전 트리 : 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 힙을 사용하는 이유 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n) 이 걸림 이에 반해, 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, 𝑂(𝑙𝑜𝑔𝑛)이 걸림 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용됨 □ 힙의 구조 힙은 최대값을 구하기 위한 구조 (최대 힙, Max Heap) 와, 최소값을 구하기 위한 구조 (최소 힙, Min Heap) 로 분류할 수 있음 힙은 다음과 같이 두 가지 조건을 가지고 있는 자료구조임 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다..
자료구조 - 트리(tree)
·
이론공부
트리(tree) : Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조 → 트리 중 이진 트리(Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용됨 1-1 알아둘 용어 : Node: 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 다음 레벨에 연결된 노드 Child Node: 어떤 노드의 상위 레벨에 연결된 노드 Leaf Node (Terminal Node): Child Node가 하나도 없는 노드 Sibling ..
자료구조 - 해쉬 테이블(hash table)
·
이론공부
해쉬 테이블(hash table) : 키(Key)에 데이터(Value)를 저장하는 데이터 구조 장점 데이터 저장/읽기 속도가 빠르다. (검색 속도가 빠르다.) 해쉬는 키에 대한 데이터가 있는지(중복) 확인이 쉬움 단점 일반적으로 저장공간이 좀더 많이 필요하다. 여러 키에 해당하는 주소가 동일할 경우 충돌을 해결하기 위한 별도 자료구조가 필요함 주요 용도 검색이 많이 필요한 경우 저장, 삭제, 읽기가 빈번한 경우 캐쉬 구현시 (중복 확인이 쉽기 때문) for i in range(10)은 반복문입니다. 이것은 0부터 9까지의 정수를 순회하는 반복문입니다. 이 코드는 각 숫자를 반복하는 데 사용되며, 순회되는 숫자는 변수 i에 할당됩니다. i for i in range(10)은 리스트 컴프리헨션입니다. 이것은..