분류 전체보기
-
조합(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..
-
디자인 패턴(Design Pattern)이란?Design Pattern 2024. 4. 25. 12:38
디자인 패턴(Design Pattern)이란? 디자인 패턴은 소프트웨어 설계에서 반복적으로 발생하는 문제들을 효과적으로 해결하기 위해 일반화된, 재사용 가능한 솔루션입니다. 이 패턴들은 프로그래밍 언어에 종속적이지 않으며, 특정 상황에서 공통적으로 발생할 수 있는 문제들에 대해 설계 지침을 제공합니다. 디자인 패턴은 주로 객체 지향 프로그래밍을 중심으로 발전했지만, 그 개념은 소프트웨어 개발의 다양한 영역에 적용될 수 있습니다.1. 디자인 패턴의 등장 배경 디자인 패턴의 개념은 여러 분야에서 오래전부터 사용되어 왔지만, 소프트웨어 공학 분야에 특별히 도입된 것은 1990년대 초입니다. 특히 "Design Patterns: Elements of Reusable Object-Oriented Software"..
-
golang: Go 언어의 장점Back-End/Golang 2024. 4. 21. 22:31
Go 언어의 장점 요약 Go 언어의 장점들을 나열하고 그 이유를 설명하면 다음과 같습니다: 강력하고 정적 타입 시스템: 이유: Go는 컴파일 시 타입 체크를 수행합니다. 이는 런타임에 발생할 수 있는 오류를 최소화하고, 프로그램의 안정성과 유지 보수성을 향상시킵니다. 가비지 컬렉션 지원: 이유: 메모리 관리를 자동화하여 개발자가 메모리 누수와 같은 문제에 대해 걱정하지 않도록 합니다. 이로 인해 개발자는 애플리케이션 로직 구현에 더 집중할 수 있습니다. 동시성 프로그래밍 지원: 이유: '고루틴(goroutine)'과 채널을 사용하여 동시성을 쉽게 구현할 수 있습니다. 이는 멀티코어 프로세서의 이점을 최대화하고, I/O 대기 시간 등을 효율적으로 관리하여 애플리케이션의 성능을 향상시킵니다. 패키지 관리 시..
-
golang: 문자열 함수Back-End/Golang 2024. 4. 21. 13:39
Go 언어에서 문자열을 다루는 데 사용되는 주요 함수들은 대부분 strings 패키지 내에 있습니다. 여기서는 strings 패키지의 주요 함수들을 나열하겠습니다. 이 함수들은 다양한 문자열 조작 작업에 사용될 수 있습니다: Compare: 두 문자열을 비교하고, 첫 번째 문자열이 두 번째 문자열보다 작으면 -1, 같으면 0, 크면 1을 반환합니다. Contains: 하나의 문자열이 다른 문자열에 포함되어 있는지 확인합니다. ContainsAny: 주어진 문자들 중 하나라도 문자열에 포함되어 있는지 확인합니다. ContainsRune: 문자열이 특정 룬을 포함하고 있는지 확인합니다. Count: 하나의 문자열이 다른 문자열에 몇 번 등장하는지 세어 반환합니다. EqualFold: 두 문자열이 대소문자를 ..