포인터 Go에는 포인터가 존재한다. 포인터는 값의 메모리 주소를 저장한다. 값의 앞에 *를 붙임으로써 포인터를 정의하며, 포인터의 zero value는 nil이다. &는 피연산자에 대한 포인터를 생성한다. i := 42 p = &i // p는 i를 가리키는 포인터 * 는 포인터의 값을 나타낸다. 이를 역참조라고 부르는데 C언어와 달리 Go에는 포인터 연산이 없다. 간단한 예시 코드를 보자 package main import "fmt" func main() { i, j := 42, 2701 p := &i // p는 i를 가리킨다. fmt.Println(*p) // p가 가리치고 있는 대상(i)의 값을 출력한다. *p = 21 // 포인터를 이용해서 i 값을 21로 바꿔준다. fmt.Println(i) ..
개요 RDS를 활용해서 데이터베이스를 생성하면 기본적인 지표들은 자동으로 수집된다. CPU사용량 디스크 여유공간(MB) 메모리 여유공간(MB) DB 커넥션 수 읽기, 쓰기 IOPS 하지만 메모리와 디스크의 경우 전체 공간 대비 가용 부분의 비율을 알고 싶었지만 단순히 여유공간에 대한 값만 숫자 값으로 나타내기만 가능하였고 이를 해결하려면 RDS의 Enhanced Monitoring(향상된 모니터링)기능을 켜주어야 한다. Metrics Filter 설정 RDS의 향상된 모니터링 기능을 활성화 시키면 CloudWatch에RDSOSMEtrics라는 이름으로 새로운 로그그룹이 생성된다. 로그 스트림은 각 db마다 하나씩 생성되며 로그 이벤트는 json 형태이다. json 형태 그대로는 보기가 불편하므로 로그그룹..
파이썬의 핵심철학 파이썬은 다양한 프로그래밍 패러다임을 지원한다. 객체 지향 프로그래밍과 구조적 프로그래밍을 완벽하게 지원하며, 함수형 프로그래밍, 관점 지향 프로그래밍 등도 주요 기능에서 지원이 된다. 핵심 철학은 다음과 같다. Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Readability counts Complex is better than complicated 파이썬은 본래 교육용으로 설계된 언어이므로 읽기 쉽고 효율적인 코드를 되도록 간단하게 작성할 수 있도록 하는 것이 핵심 철학이다. 또한 파이썬에서는 프로그램의 문서화가 매우 중시되므로 언어의 기본 기능에 문서화 기능이 ..
Relational Data Model 데이터 모델(Data Model)이란? 현실 세계의 정보를 컴퓨터로 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약조건 등을 기술하기 위한 개념적 도구들의 모임 데이터의 구조(Schema)를 논리적으로 묘사하기 위해 사용되는 지능적 도구 현실 세계를 DB에 표현하는 중간 과정에서 사용되는 도구 데이터 모델의 종류 Flat Models Hierarchical model Network model Relational model Object-relational model 관계형 데이터 모델이란? 실제 세계의 데이터를 관계라는 개념을 이용하여 표현한 데이터 모델이다. 테이블 형태의 저장 구조를 가지며 ..
Minimum Spanning Tree 개요 MST는 Minumum Spanning Tree의 약자로 이를 직역하면 최소 신장 트리이다. MST가 무엇이고 어떤 문제를 해결할 때 쓰이며 어떻게 구현하는지 차근차근 알아보자. 최소 신장 트리(Minumum Spanning Tree)에 대해서 알아보기 전에 알아야 할 몇가지 개념에 대해 간략하게 짚고 넘어가자. 무향 그래프(Undirecterd Graph) 말 그대로 아래 그림과 같이 간선에 방향성이 없는 그래프를 의미한다. 반대로 아래 처럼 간선에 방향성이 있다면 이는 유향 그래프(Directed Graph) 라고 한다. 연결 그래프(Connected Graph) 연결 그래프란 서로 다른 노드 사이에 경로가 존재하는 그래프를 의미한다. 신장 트리(Spann..
상호 배타 집합(Disjoint Set)이란? 상호 배타 집합(또는 서로소 집합)은 서로 중복으로 포함된 원소가 없는 집합으로, 교집합이 공집합이다. 집합에 속한 하나의 특정 원소를 통해서 각 집합들을 구분한다. 이러한 특정 원소를 대표자라고 하는데 그래프의 경우에는 부모노드가 대표자 역할을 한다. 상호 배타 집합은 연결리스트나 트리로 표현할 수 있다. 위의 설명은 집합에 대한 연산이지만 그래프에서 노드의 묶음을 집합으로 생각하면 되므로 그래프 구조에도 적용이 가능하다. 상호 배타 집합의 연산 상호 배타 집합에서 주로 사용되는 연산들은 아래와 같다. Make(x) : 원소 x만으로 구성된 집합(노드)를 생성하는 연산 Find(x) : 임의의 원소 x가 속한 집합을 알아내는 연산. x 가 속한 집합의 대표..
📌 인프런 김영한 강사님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근기술 강의를 듣고정리한 내용입니다. 공부하면서 정리한 내용이라 잘못된 부분이 있을 수도 있습니다. 틀린 부분이나 고쳐야할 부분이 있으면 댓글이나 방명록 남겨주세요! 스프링 데이터 JPA란? 스프링에서 JPA를 더 편하게 사용할 수 있게 도와주는 프로젝트이다. CRUD 처리를 위한 공통 인터페이스를 제공하며, 리포지토리 개발 시 인터페이스만 개발하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 따라서 구현 클래스 없이 인터페이스 만으로 개발을 할 수 있게 된다. 스프링 데이터 JPA 회원 리포지토리 구현 SpringDataJpaMemberRepository 인터페이스를 생성해주고 ..
이번에는 Go의 흐름 제어 구문에 대해서 알아봅시다. https://go.dev/tour/flowcontrol/1 ~ https://go.dev/tour/flowcontrol/14 까지의 내용을 정리한 포스팅입니다. For 먼저 For문입니다. 다른 언어와 마찬가지로 Go에도 반복구조를 만들 수 있습니다. 특이하게도 Go에는 반복문으로 For 밖에 없습니다. For 구문은 다른 언어와 비슷한 형태이므로 빠르게 짚고 넘어가겠습니다. For 구문은 기본적으로 세 부분으로 나누어집니다. init : 첫 번째 반복이 시작되기 전에 실행되는 부분입니다. condition : 매 반복마다 조건을 비교하고 조건을 만족하면 반복을 실행하게 해주는 부분입니다. post : 매 반복이 끝난 후 실행되는 부분입니다. C, ..
Comment