분류 전체보기
-
SSR(Server-Side Rendering) vs CSR(Client-Side Rendering)Computer Science/Browser 2024. 5. 30. 22:33
SSR (Server-Side Rendering)과 CSR (Client-Side Rendering)은 웹 애플리케이션의 렌더링 방식을 설명하는 용어입니다. 두 방식의 차이점과 각각의 장단점, 사용 이유에 대해 설명하겠습니다.1. SSR (Server-Side Rendering)정의SSR은 서버에서 모든 HTML을 렌더링한 후, 완성된 HTML을 클라이언트(브라우저)에 전달하는 방식입니다.초기 페이지 로딩 시 서버가 HTML을 생성하여 브라우저에 전달하고, 이후 사용자 상호작용에 따라 필요할 때마다 서버에서 다시 HTML을 받아옵니다.장점빠른 초기 로드 시간: 첫 페이지 로드 시 완성된 HTML을 받기 때문에 초기 로딩 속도가 빠릅니다.SEO 친화적: 검색 엔진 크롤러가 완성된 HTML을 쉽게 인덱싱할 ..
-
URI (Uniform Resource Identifier) vs URL(Uniform Resource Locator)Computer Science/Network 2024. 5. 16. 10:21
URL(Uniform Resource Locator)과 URI(Uniform Resource Identifier)는 웹에서 자주 혼용되지만, 정확히 말하면 약간의 차이가 있습니다. 둘 다 자원을 식별하기 위한 표준 형식이지만, 그 용도와 범위에서 차이가 있습니다.URI (Uniform Resource Identifier)URI는 인터넷에서 자원을 식별하는 모든 방법을 통칭합니다. URI는 두 가지 주요 타입으로 나뉩니다:URL (Uniform Resource Locator): 자원의 위치를 나타냅니다.URN (Uniform Resource Name): 자원의 이름을 나타냅니다. 위치와는 무관하게 자원을 고유하게 식별합니다.URI의 문법은 다음과 같이 생겼습니다:scheme:[//authority]path..
-
golang: Tee 패턴이란?Back-End/Golang 2024. 5. 15. 21:12
Tee 패턴은 하나의 입력 채널에서 읽은 데이터를 여러 출력 채널로 복사하여 동시에 여러 곳에서 사용할 수 있게 하는 패턴입니다. 이 패턴은 이름 그대로 "티" 모양처럼 데이터를 여러 갈래로 나누는 기능을 합니다. 이 패턴은 데이터를 여러 곳에서 병렬로 처리할 때 유용합니다.Tee 패턴의 구조입력 채널: 데이터를 제공하는 채널입니다.출력 채널들: 입력 채널에서 읽은 데이터를 복사하여 전달할 여러 개의 출력 채널입니다.예제 코드아래 예제에서는 tee 함수가 입력 채널에서 데이터를 읽어 두 개의 출력 채널로 복사하는 기능을 수행합니다.package mainimport ( "fmt" "sync")// tee 함수는 입력 채널에서 데이터를 읽어 여러 출력 채널로 복사합니다.func tee(done 코..
-
golang: 파이프라인(pipeline)이란?Back-End/Golang 2024. 5. 15. 20:36
파이프라인(pipeline)은 데이터를 단계별로 처리하는 시스템에서 자주 사용되는 패턴입니다. 각 단계는 특정 작업을 수행하며, 한 단계의 출력이 다음 단계의 입력이 되는 방식입니다. 파이프라인 패턴을 사용하면 복잡한 작업을 작은 단계로 나누어 처리할 수 있어 코드의 이해와 유지보수가 쉬워집니다. Go 언어에서는 고루틴과 채널을 사용하여 파이프라인을 구현할 수 있습니다.파이프라인의 구성 요소생산자(Producer): 데이터를 생성하여 파이프라인에 입력하는 역할을 합니다.처리자(Processor): 데이터를 처리하여 다음 단계로 전달하는 역할을 합니다.소비자(Consumer): 최종 데이터를 받아 처리하는 역할을 합니다.파이프라인의 기본 구조단계(Stage): 각 단계는 독립적인 고루틴으로 실행됩니다.채널..
-
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..