전체 글 103

DNS 엄청난 기초

DNS는 Domain Name System으로 호스트의 도메인 이름을 호스트의 네트워크 주소(IP)로 바꾸거나, 그 반대로 변환할 수 있도록 하기 위해 개발됐다. 쉽게 말해서 IP는 기억하기 어려워서 DNS가 나왔다. 예를 들어 네이버는 우리가 다 알 듯이 www.naver.com이다. 아래 이미지 처럼 223.130.200.107 이라고 네이버의 주소를 기억하는 사람은 없을것이다. DNS는 DNS 서버에 도메인을 등록하면 등록한 사이트의 IP의 값을 같이 갖고 있는다. 순서는 다음과 같다. 클라이언트가 naver의 주소를 입력한다. DNS 서버는 naver의 ip 주소를 응답한다. naver의 ip 주소로 접속을 시도한다. ...너무 간단..하다 끝...

HTTP/HTTP강의 2023.06.07

정처기 실기 - 데이터베이스 Transaction

1. 트랜잭션 데이터를 보장하기 위해서 DBMS가 가지는 특성이다. 또, DBMS에서 하나의 논리적 기능을 정상적으로 수행하기 위한 단위이다. 2. 트랜잭션의 특성 원자성 (Atomic) 트랜잭션을 구성하는 작업 모두 정상적으로 실행되거나 모두 취소되어야 하는 성질 Commit / Rollback 회복성 보장 일관성 (Consistency) 시스템의 고정요소는 트랜잭션 수행 전과 이후 모두 같아야 하는 성질 무결성 제약조건 동시성 제어 격리,고립성(isolation) 동시에 실행되는 트랜잭션들이 서로 영향을 끼치지 않는 성질 Read Uncommitted Read Committed Repeatable Read Serializable 영속성 (durabillity) 성공이 완료된 트랜잭션의 결과는영속적으로..

자료구조 - 이진 트리 순회

이진트리 순회란? 이진트리 순회를 알려면 일단 트리를 알아야 한다. 다행스럽게도(?) 이전에 트리에 대해서 간략하게 설명한 부분을 참고하면 좋을 것 같다. https://beetr.tistory.com/97 자료구조 - 비선형구조 : 트리, 그래프 1. 트리(Tree) 우리는 트리를 기억할 때 영어 그대로 나무를 생각해보자. 그 중에서도 나뭇가지를 생각하면 더 쉬울것 같다. 위에서 처럼 나뭇가지와 같이 생긴게 트리 구조다. 트리는 위에서부터 beetr.tistory.com 추가적으로 이진 트리는 트리구조를 따라가는데, 자식 노드가 0 ~ 2개 사이인 트리를 의미한다. 이진 트리에는 다음과 같은 종류가 있다. 편향트리 : 좌 또는 우 한쪽 서브트리만 가지는 트리. 포화이진트리 : 모든 레벨에서 노드들이 모..

RabbitMQ - Received ERROR payload=Access refused for user 'guest' 에러 원인 및 해결

문제 상황 AWS EC2에서 8082 포트에서 1:1 채팅을 할 수 있는 모듈을 RabbitMQ와 STOMP를 사용해 구동하려는 중 발생함. 자꾸 guest로 연결을 하려고 한다. [ main] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: {EC2 퍼블릭 IPv4 주소}:5672 [ main] o.s.a.r.c.CachingConnectionFactory : Created new connection: connectionFactory#2a50b32d:0/SimpleConnection@2d4fb0d8 [delegate=amqp://lastone@{EC2 퍼블릭 IPv4 주소}:5672/, localPort= 35466] [ main] o.s..

RabbitMQ 2023.05.07

자료구조 - 비선형구조 : 트리, 그래프

1. 트리(Tree) 우리는 트리를 기억할 때 영어 그대로 나무를 생각해보자. 그 중에서도 나뭇가지를 생각하면 더 쉬울것 같다. 위에서 처럼 나뭇가지와 같이 생긴게 트리 구조다. 트리는 위에서부터 아래로 계층형 구조로 생겼다. 트리의 종류 이진트리 : 데이터를 검색하거나, 자료를 정렬하는 알고리즘에서 사용된다. 최소 비용 신장 트리 : 데이터 간의 관계를 유지하면서 최소의 비용이 드는 관계를 유지하는 방법. 트리는 위에서 말한대로 계층형 구조를 가지게 되는데, A가 1 레벨, B, C, D 가 2레벨, E부터 J까지가 3레벨이라고 한다. 물론 아래 계층이 더 생기면 4, 5, ... 순으로 늘어간다. 트리에서 사용하는 용어 다시 저 자료구조로 바꾼 것을 살펴보면서 보자 용어 설명 위치 및 값 노드 - N..

자료구조 - 선형구조(2/2) 덱, 선형 리스트, 연결 리스트

덱, 데크(Deque) Deque는 Double-ended Queue로 말 그대로 Queue가 2개 겹쳐있는 것처럼 생각해도 된다. Queue의 간단한 설명은 아래링크에 있다. https://beetr.tistory.com/94 자료 구조 - 자료구조 개념과 선형구조 (1/2) 자료구조란? 프로그램에서 쉽게 사용될 수 있도록 구성된 데이터 간의 논리적인 관계이다. 자료구조의 개념 자료를 효율적으로 사용할 수 있도록 컴퓨터에 저장하는 방법이다. 처리되는 데이터 beetr.tistory.com 데이터를 저장하는 기억 장치가 양쪽 모두에 있다. 입, 출력이 양쪽에서 일어난다. 데이터의 입출력이 일어나는 위치를 왼쪽에서 가리키면 Left Pointer, 오른쪽은 Right Pointter 두 Pointer는 데..

Spring boot MongoDB Aggregation에서 sum 조건 정하기

Spring boot와 MongoDB를 이용해 채팅방을 구현하는데, 채팅방 목록을 구하는 API를 작성하려고 했다. 아래와 같은 정보 (채팅방 번호, 마지막 채팅 메세지, 안 읽은 메세지, 마지막 채팅시간) 을 가져오려고 한다. 근데, MongoDB가 처음이라 일단 만들면서 배우는거라 여기 깨지고 알아보는데 sum에 대한건 별로 없어서 고생 좀 해서 메모를 해본다! 우선 sum에 대한 공식문서는 아래에서 볼 수 있다. https://www.mongodb.com/docs/v4.2/reference/operator/aggregation/sum/ $sum (aggregation) — MongoDB Manual Array Operand In the $group stage, if the expression res..

Spring 2023.04.19

자료 구조 - 자료구조 개념과 선형구조 (1/2)

자료구조란? 프로그램에서 쉽게 사용될 수 있도록 구성된 데이터 간의 논리적인 관계이다. 자료구조의 개념 자료를 효율적으로 사용할 수 있도록 컴퓨터에 저장하는 방법이다. 처리되는 데이터는 구조를 어떻게 구성하느냐에 따라 성능에 많은 영향을 미친다. 데이터를 처리하는 입장에서 데이터 사이에 존재하는 관계이다. 효과적으로 설계된 자료구조는 효율적인 프로그래밍을 할 수 있도록 한다. 데이터의 추가, 삭제, 검색을 효율적으로 할 수 있는 적절한 데이터 구조를 사용하는게 중요하다. 형태에 따른 자료구조 단순 구조 기본 데이터 타입이다. int : 정수형 float : 실수형 double : 실수형 char : 문자형 등 기본적 자료형이 있다. 선형 구조 (Liner) 말 그대로 선의 형태의 구조이다. 다음과 같은 ..

Spring MongoDB - Cannot evaluate org.springframework.data.mongodb.core.aggregation.Aggregation.toString() 관련 에러

버전 : Spring Data MongoDB 2.7.9 예외 메세지 Method threw 'java.lang.IllegalArgumentException' exception. Cannot evaluate org.springframework.data.mongodb.core.aggregation.Aggregation.toString() 해당 예외는 아래의 코드에서 발생했다 GroupOperation groupByRoomId = group(roomId).push(content).as(content); LimitOperation limit = new LimitOperation(pageable.getPageSize()); SortOperation sort = Aggregation.sort(Sort.by(Sort..

Spring/error 2023.04.09

MySQL - MySQL 엔진의 잠금. Lock

Lock은 Transaction과 비슷하게 보일수도 있지만 Lock은 동시성을 제어하기 위한 기능이고, Transaction은 데이터의 정합성을 보장하기 위한 기능이다. DB가 만들어진 목적은 여러사람이 데이터를 저장하기 위함이다. Lock이 없다면 여러사람이 하나의 데이터를 여러 Connection에서 접근해 동시에 데이터를 변경할 수 있다. MySQL 엔진의 잠금 MySQL에서 사용되는 잠금은 스토리지 엔진 레벨, MySQL 엔진 레벨이 있다. 스토리지 엔진 : 스토리지 엔진 간 상호 영향을 끼치지 않음 - InnoDB는 InnoDB만, MyISAM은 MyISAM만 MySQL 엔진 : 스토리지 엔진을 제외한 나머지 부분 모든 스토리지 엔진에 영향을 미침 - InnoDB, MyISAM 등 모든 엔진에 ..

DataBase/MySQL 2023.03.02