일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 분산 신원
- rust 강좌
- 카디날
- rust
- 조건문
- golang 강좌
- 애플 달팽이
- 쌈채소
- Feign
- 물생활
- 기본문법
- PKI
- 체리새우
- 반복문
- MSSQL
- did
- Config server
- 구피
- 주말농장
- 가재
- 분산 식별자
- for
- 치비
- Python 강좌
- MSA
- Tendermint
- rust 소개
- RSA
- 텐더민트
- 무화과
- Today
- Total
목록golang 강좌 (10)
comnic's Dev&Life
블룸필터(Bloom Filter) 1. 블룸필터란? 블룸 필터(Bloom Filter)는 매우 효율적인 확률적 자료 구조로, 어떤 원소가 집합에 속하는지 아닌지를 빠르게 확인할 수 있습니다. 이는 일반적으로 많은 양의 데이터 중에서 어떤 원소가 존재하는지 확인하는 데 사용됩니다. 블룸 필터는 확률적인 방법을 사용하기 때문에 100% 정확하지는 않지만, 그럼에도 불구하고 매우 효율적으로 작동하며 고정된 메모리를 사용합니다. 블룸 필터의 주요 특징과 동작 방식에 대한 상세 설명은 다음과 같습니다: 비트 배열 사용: 블룸 필터는 주로 비트 배열을 사용하여 데이터를 저장합니다. 비트 배열은 모든 비트가 0으로 초기화되어 있습니다. 해시 함수 사용: 블룸 필터는 하나 이상의 해시 함수를 사용하여 입력 데이터를 여..
9. 디버깅(debugging) 디버깅(Debugging)은 소프트웨어에서 발생하는 버그(오류)를 찾아내고 수정하는 과정을 말합니다. 버그는 프로그램이 의도한 대로 동작하지 않거나 예상치 못한 동작을 나타냅니다. 디버깅은 프로그래머가 소스 코드를 검사하고 실행 중인 프로그램의 동작을 이해하는 데 도움이 되는 도구와 기술을 사용하여 이러한 문제를 해결하는 과정입니다. 9.1 디버깅 과정: 문제 파악: 먼저, 프로그램이 어떤 문제를 일으키는지 파악해야 합니다. 사용자의 보고서, 로그 파일, 테스트 결과 등을 통해 문제의 원인을 추정할 수 있습니다. 코드 검토: 소스 코드를 검토하여 문제가 발생할 수 있는 부분을 찾습니다. 이때 코드의 흐름, 변수 값, 함수 호출 등을 주의깊게 살펴봅니다. 디버깅 도구 활용:..
8. 테스트(Testing, Coverage) 8.1 단위 테스트(Unit Testing) 단위 테스트: 소프트웨어의 최소 단위(함수, 메소드, 모듈 등)에 대한 테스트를 수행하는 것입니다. Go 언어에서는 testing 패키지를 사용하여 단위 테스트를 작성합니다. 간단한 함수와 테스트코드를 작성하고 실행해 보겠습니다. // calculator.go package calculator func Add(a, b int) int { return a + b } 위와 같이 덧셈을 하는 함수 하나를 구현한 후, 이를 테스트하기 위한 코드를 아래와 같이 작성합니다. // calculator_test.go package calculator import "testing" func TestAdd(t *testing.T) ..
7. 동시성과 병렬성 7.1 고루틴과 채널 고루틴(Goroutine): Go 언어에서 제공하는 경량 스레드로, 비동기적인 동작을 구현하는 데 사용됩니다. 고루틴은 스레드보다 가벼우며, 많은 수의 고루틴을 생성하여 동시성을 구현할 수 있습니다. package main import ( "fmt" "time" ) func main() { // 고루틴 생성 go printNumbers() go printLetters() // main 함수가 종료되는 것을 방지 time.Sleep(2 * time.Second) } func printNumbers() { for i := 1; i
6. 데이터 구조(배열과 슬라이스, 맵과 구조체) 6.1 배열과 슬라이스 배열(Array): 고정된 크기의 요소로 이루어진 데이터 구조입니다. 배열의 크기는 타입과 함께 정의되며, 한 번 정의된 크기는 변경할 수 없습니다. package main import "fmt" func main() { // 배열의 정의와 초기화 var numbers [5]int numbers = [5]int{1, 2, 3, 4, 5} // 배열 순회 for i := 0; i < len(numbers); i++ { fmt.Println(numbers[i]) } } 슬라이스(Slice): 동적 크기의 데이터 구조로, 배열의 일부를 가리키는 참조 형태입니다. 슬라이스는 배열의 일부를 나타내기 때문에 크기가 동적으로 조절 가능합니다. ..
5. 패키지(Package) 5.1 패키지의 개념과 활용 패키지(Package)의 개념: Go에서 패키지는 코드를 구조화하고 재사용 가능한 단위로 만드는데 사용됩니다. 패키지는 함수, 변수, 구조체 등의 요소들을 논리적으로 묶어둔 것이며, 다른 패키지에서 사용할 수 있습니다. 각 파일의 첫 부분에 package 키워드를 사용하여 해당 파일이 어떤 패키지에 속하는지 선언합니다. 패키지의 활용: 프로젝트에서 코드의 모듈화를 위해 여러 개의 패키지를 생성하여 사용합니다. 패키지를 사용함으로써 코드의 가독성과 유지보수성이 향상되며, 코드의 재사용이 간편해집니다. 5.2 외부 패키지 가져오기와 사용 Go에서는 import 키워드를 사용하여 외부 패키지를 가져와서 사용합니다. package main import (..
4. 함수 4.1 함수 정의와 호출 Go에서 함수는 코드를 모듈화하고 재사용 가능한 단위로 분리하는데 사용됩니다. 함수를 정의하고 호출하는 기본적인 예제는 다음과 같습니다. package main import "fmt" // add 함수 정의 (매개변수 a, b는 정수형, 반환값은 정수형) func add(a, b int) int { return a + b } // greet 함수 정의 (매개변수 name은 문자열, 반환값은 문자열) func greet(name string) string { return "Hello, " + name + "!" } func main() { // 함수 호출 result := add(3, 7) fmt.Println("Result of addition:", result) gr..
3. 기본 문법 3.1 변수와 상수 - 변수 변수는 값을 저장하기 위한 메모리 공간의 이름이며, Go에서는 var 키워드를 사용하여 선언합니다. 타입은 자동으로 추론되거나 명시적으로 지정될 수 있습니다. package main import "fmt" func main() { // 변수 선언과 초기화 var name string name = "Golang" // 타입 추론을 사용한 변수 선언과 초기화 age := 10 fmt.Println("Name:", name) fmt.Println("Age:", age) // 변수 재할당 name = "Go Programming" fmt.Println("Updated Name:", name) } - 상수 상수는 프로그램에서 고정된 값을 나타내며, const 키워드를 ..