전체 글
-
golang: 배열(Array)과 슬라이스(Slice)Back-End/Golang 2024. 5. 11. 13:10
I. 정의 및 기본 개념배열(Array): 배열은 Go에서 고정된 크기의 연속적인 메모리 영역에 동일한 타입의 요소들을 순차적으로 저장하는 데이터 구조입니다. 배열의 길이는 선언 시에 정해지며, 이후에는 변경할 수 없습니다. 배열 초기화 방법1. 기본 초기화: 배열을 선언하고, Go의 기본값으로 초기화됩니다. 숫자 타입의 배열은 0, 불리언 배열은 false, 포인터와 슬라이스, 맵, 채널은 nil로 초기화됩니다.var arr1 [3]int 2. 리터럴을 사용한 초기화: 배열 선언과 동시에 특정 값으로 초기화합니다.arr2 := [3]int{10, 20, 30} 3. 인덱스 지정 초기화: 특정 인덱스에 값을 할당합니다. 할당되지 않은 인덱스는 타입의 기본값으로 초기화됩니다.arr3 := [5]int{1:..
-
정적색인(Static Indexing)과 동적색인(Dynamic Indexing)이란?Search & AI/Search 2024. 5. 10. 23:44
색인(index)이란? 검색에서 색인(index)은 검색 엔진이 웹 페이지, 문서 또는 기타 데이터 소스의 내용을 빠르고 효율적으로 검색할 수 있도록 돕는 데이터 구조를 말합니다. 색인의 주된 목적은 데이터 검색 속도를 향상시키는 것입니다. 여기서 색인이라는 용어는 종종 실제 데이터와는 별개로 생성되고 관리되는 메타데이터의 컬렉션을 의미합니다. 색인에 대해 더 자세히 설명하겠습니다.색인의 생성 과정수집: 검색 엔진은 웹 크롤러를 사용하여 인터넷을 탐색하고 웹 페이지, 문서 등의 데이터를 수집합니다.처리: 수집된 데이터는 처리 과정을 거쳐, 필요하지 않은 내용(스타일, 스크립트 코드 등)을 제거하고, 텍스트와 중요 데이터만을 추출합니다.토크나이징: 추출된 텍스트는 개별 단어나 구(phrase)로 분리되어 ..
-
고루틴 누수(Goroutine Leak)란?Back-End/Golang 2024. 5. 10. 11:59
고루틴 누수(Goroutine Leak)는 고루틴이 끝나지 않고 계속 메모리와 시스템 리소스를 소비하는 상태를 말합니다. 고루틴은 Go 언어에서 경량 스레드처럼 동작하며, 고루틴 누수는 프로그램의 성능 저하나 예상치 못한 동작을 초래할 수 있습니다. 고루틴이 제대로 종료되지 않으면 그에 따른 채널이나 다른 리소스도 해제되지 않아 리소스 누수로 이어질 수 있습니다. 고루틴 누수가 어떤 피해를 주나요?고루틴 누수는 프로그램의 성능과 안정성에 여러 가지 해로운 영향을 미칠 수 있습니다. 이러한 영향을 구체적으로 살펴보겠습니다:1. 메모리 사용 증가고루틴은 스택 메모리를 사용하고, 각 고루틴은 일반적으로 몇 킬로바이트의 메모리를 소비합니다. 고루틴이 계속 누적되면 사용되지 않는 메모리가 점점 증가하여 전체 시스..
-
조합(Combination)과 순열(Permutation)Algorithm & Data Structure/Algorithm 2024. 5. 4. 17:28
조합 (Combination) 조합은 주어진 집합에서 몇 개의 원소를 선택할 때, 선택 순서를 고려하지 않고 몇 가지 방법으로 선택할 수 있는지를 나타냅니다. 다시 말해, 조합은 "n개 중에서 k개를 선택하는 방법의 수"를 의미합니다. 예를 들어, 'A', 'B', 'C' 세 개의 원소에서 두 개를 선택하는 조합을 생각해 보면, 가능한 조합은 ('A', 'B'), ('A', 'C'), ('B', 'C')로 총 세 가지입니다. 여기서 중요한 점은 순서가 결과에 영향을 주지 않는다는 것입니다. 즉, ('A', 'B')와 ('B', 'A')는 같은 조합으로 간주됩니다.package mainimport ( "fmt")// combination 함수는 재귀적으로 조합을 생성하고 출력합니다.func combi..
-
TCP 3 Way-Handshake 자세히 알아보기Computer Science/Network 2024. 5. 2. 16:42
들어가기 앞서.. 네트워크 기초: TCP/IP 모델의 기본 개념, TCP의 위치와 역할TCP/IP 모델의 기본 개념TCP/IP 모델은 인터넷 통신을 가능하게 하는 프로토콜 스택입니다. 이 모델은 1970년대 후반에 개발되었으며, 통신 규약의 모음으로서 네트워크 간의 데이터 전송을 담당합니다. TCP/IP는 Transmission Control Protocol (TCP)와 Internet Protocol (IP)의 두 주요 구성 요소를 기반으로 이름이 붙여졌습니다.모델은 크게 네 계층으로 구분됩니다:응용 계층 (Application Layer): 사용자가 네트워크를 통해 데이터를 송수신할 수 있도록 하는 인터페이스 역할을 합니다. HTTP, FTP, SSH, SMTP, DNS 등 다양한 프로토콜이 이 계층..
-
golang: 1급 시민(First-class citizen)이란?Back-End/Golang 2024. 4. 28. 22:20
프로그래밍 언어에서 "1급 시민" 또는 "1급 객체"라는 용어는 해당 언어의 요소가 다음과 같은 특성을 갖추었을 때 사용됩니다:변수나 데이터 구조 안에 담길 수 있음: 1급 객체는 변수에 할당될 수 있습니다. 예를 들어, 함수가 1급 객체인 언어에서는 함수를 변수에 할당할 수 있습니다.함수의 인자로 전달될 수 있음: 함수를 다른 함수의 인자로 전달할 수 있습니다. 이는 고차 함수(higher-order function)를 가능하게 합니다.함수의 결과로 반환될 수 있음: 함수에서 다른 함수를 결과로 반환할 수 있습니다. 이는 함수를 동적으로 생성하고 조작할 수 있음을 의미합니다.할당에 사용된 표현식 내에서 리터럴로 표현될 수 있음: 객체를 코드 내에서 직접적으로 리터럴 형태로 표현할 수 있어야 합니다. 예..
-
프록시 서버(Proxy Server)란?Computer Science/Network 2024. 4. 26. 17:53
프록시 서버(Proxy Server)란? 프록시 서버는 클라이언트와 서버 사이에서 중개자 역할을 하는 서버입니다. 클라이언트의 요청을 받아 서버로 전달하고, 서버의 응답을 다시 클라이언트에게 전달하는 기능을 수행합니다. 프록시는 데이터의 흐름을 제어하고, 보안을 강화하며, 효율적인 네트워크 사용을 도모하는 여러 목적으로 사용됩니다.프록시의 주요 기능보안: 프록시 서버는 내부 네트워크와 외부 네트워크 사이의 보안 게이트웨이 역할을 합니다. 사용자의 실제 IP 주소를 숨기고, 외부 위협으로부터 내부 네트워크를 보호합니다.캐싱: 자주 요청되는 데이터를 프록시 서버에 저장하고, 같은 요청이 들어왔을 때 빠르게 응답하여 서버의 부하를 줄이고 네트워크 트래픽을 감소시킵니다.내용 필터링: 특정 웹사이트나 콘텐츠에 대..
-
주소창에 google.com을 치면 일어나는 일Computer Science/Network 2024. 4. 26. 17:38
I. 요약1. URL 입력 및 처리URL 입력: 사용자가 URL을 입력하고 엔터를 누르면, 브라우저는 URL의 유효성을 검사하고 필요한 프로토콜을 추가합니다.리다이렉트 확인: 초기 요청을 받은 서버가 URL을 다른 위치로 자동으로 보내도록 설정된 경우, 브라우저는 이 리다이렉트를 처리합니다. 예를 들어, http://로 시작하는 요청이 https://로 리다이렉트될 수 있습니다.공유 캐시 확인: 특히 대규모 웹 서비스에서는 네트워크 내에 공유 캐시(캐싱 프록시)가 존재할 수 있습니다. 이 캐시는 자주 요청되는 리소스를 저장하고, 캐시에 있는 리소스는 DNS 조회나 서버 접속 없이 바로 제공될 수 있습니다.2. DNS 조회브라우저는 "google.com"의 IP 주소를 찾기 위해 도메인 이름 시스템(DNS..