반응형

17

Golang mysql 사용/연동 하기

Golang에서 mysql과 연동하기 위해 "database/sql"과 "github.com/go-sql-driver/mysql" 패키지를 import 해야한다. "database/sql"은 golang의 데이터베이스 관련 인터페이스를 제공하고, DB연결, 쿼리 실행, 트랜잭션 등을 처리할 수 있다. "github.com/go-sql-driver/mysql"은 mysql DB 드라이버를 구현한 패키지다. 사용 방법 터미널에서 다음의 명령어를 사용하여 패키지를 다운로드 한다. (이미 설치가 되어 있다면 생략) go get github.com/go-sql-driver/mysql 예제 코드) DB가 이미 생성되어 있다는 가정하에 진행 package main import ( "database/sql" "fmt"..

Golang 2023.08.08

디스코드가 Go 대신 Rust로 전환하는 이유

요약: Go GC 성능 이슈 출처: https://discord.com/blog/why-discord-is-switching-from-go-to-rust Why Discord is switching from Go to Rust discord.com Go gc가 디스코드에서 많은 부하를 유발하는 요소 중 하나인데, gc가 자동으로 메모리를 관리하지만, 디스코드에서는 큰 메모리 할당과 수백만 개의 작은 객체가 동시에 발생하는 경우에 문제가 발생하였음. 이거 때문에 일시적인 렉이나 성능 저하가 발생함. 약 3년전 글이지만(뒷북) `rust가 go보다 더 좋다`는 것은 아니며(언어는 목적과 장점에 따라 선택하는 것이 좋음), 주의 깊게 살펴볼 필요가 있어서 블로그에 글을 작성함.

Golang 2023.06.14

Golang 웹 크롤링/크롤러

다음의 예제 코드는 https://example.com 웹 페이지를 크롤링 하여 h1 태그를 추출하여 출력하는 예제 코드이다. 사용된 패키지에 대해 간단히 설명하자면 다음과 같다. - fmt: 생략 - io/ioutil: 파일 입출력을 쉽게 처리하기 위한 함수들을 제공. ioutil.ReadAll() 함수는 HTTP 응답의 본문을 읽어온다. - net/http: HTTP 클라이언트와 서버를 구현하는 함수와 타입들을 제공. http.Get() 함수를 사용하여 웹 페이지에 GET 요청. - regexp: 정규 표현식을 사용하여 텍스트를 검색, 추출하고 패턴 매칭을 수행하는 함수를 제공. 받아온 HTML 문서에서 태그의 내용을 추출하기 위해 정규식을 활용. package main import ( "fmt" "..

Golang 2023.06.01

Golang 슬라이스 정렬(오름차순, 내림차순)

sort.Ints() 함수를 사용하여 슬라이스를 오름차순으로 정렬할 수 있다. 예제) package main import ( "fmt" "sort" ) func main() { nums := []int{7, 2, 9, 1, 6, 3, 8, 5, 4} sort.Ints(nums) fmt.Println(nums) } // [1 2 3 4 5 6 7 8 9] sort.Reverse() 함수를 사용하여 내림차순으로 정렬할 수 있다. 예제) package main import ( "fmt" "sort" ) func main() { nums := []int{5, 2, 8, 1, 3, 9, 4, 6, 7} sort.Sort(sort.Reverse(sort.IntSlice(nums))) fmt.Println(nums)..

Golang 2023.04.10

Golang UUID 생성

UUID(Universally Unique Identifier)는 범용 고유 식별자를 의미한다. UUID는 랜덤 값에 시간, MAC 주소 등의 정보를 조합하여 생성된다. UUID는 일반적으로 데이터베이스 레코드 식별자, 세션 ID, 파일명 등에 사용된다. Go에서 UUID를 생성하려면 UUID v4를 사용할 수 있다. UUID v4는 완전한 무작위성에 기반한 128비트 숫자로, 거의 중복될 가능성이 매우 적다. Go에서 UUID v4를 생성하는 방법은 다음과 같다. package main import ( "fmt" "github.com/google/uuid" ) func main() { // Generate a new UUID v4 uuid := uuid.New() // Print the UUID fmt..

Golang 2023.03.27

Golang 임시 파일 생성(os.CreateTemp)

os.CreateTemp() 함수는 임시 파일을 생성하는 함수이다. 함수를 호출하면 임시 파일이 생성되고, 그 파일을 열 수 있는 파일 핸들과 파일 이름을 반환한다. 파일 핸들을 사용하여 파일에 쓰거나 파일에서 읽을 수 있다. 일반적으로 임시 파일은 프로그램이 실행되는 동안 사용되며, 더 이상 필요하지 않을 때 제거된다. 함수 원형은 다음과 같다. func CreateTemp(dir, prefix string) (*os.File, error) 인자로는 다음과 같은 값이 전달된다. dir: 임시 파일이 생성될 디렉토리 경로이다. 이 값이 빈 문자열이면 기본값으로 /tmp가 사용된다. prefix: 임시 파일 이름의 접두어다. 이 값이 빈 문자열이면 기본값으로 "tmp"가 사용된다. 예제 package ma..

Golang 2023.03.27

Golang JSON을 CSV로 변환

Go에서 Json을 CSV로 변경하기 위해서는 encoding/csv와 encodeing/json 패캐지를 사용한다. package main import ( "encoding/csv" "encoding/json" "fmt" "log" "os" ) func main() { // 예제 데이터 jsonData := `[{"name":"Uhm", "age":19, "city":"Soeul"}, {"name":"Jun", "age":23, "city":"Tokyo"}, {"name":"Sik", "age":27, "city":"Los Angeles"}]` // json 데이터를 슬라이스 형태의 맵으로 변환. var data []map[string]interface{} err := json.Unmarshal([]b..

Golang 2023.03.15

Golang 디렉토리 생성(os.Mkdir, os.MkdirAll)

Go에서 하나의 디렉토리를 생성할 때는 os.Mkdir() 함수를 사용한다. 만약 디렉토리의 계층(하위 디렉토리 생성)을 구분하여 생성하고 싶으면 os.MkdirAll() 함수를 사용한다. 두 함수는 디렉토리의 경로와 파일 시스템 권한을 인수로 넣어주어야 한다. 다음의 예제는 os.ModePerm 함수를 사용한다. os.ModePerm 함수는 파일 또는 디렉토리의 퍼미션 모드를 나타내는 상수이다. 이 함수는 파일 시스템에서 새로운 파일 또는 디렉토리를 만들 때 사용된다. os.ModePerm 함수는 32비트의 부호 없는 정수형 상수값으로, 0777이라는 8진수 값과 동일하다. 이 값은 파일 또는 디렉토리의 퍼미션 모드를 의미한다. 참고로 0777은 사용자, 그룹, 기타 사용자 모두가 읽기, 쓰기, 실행 ..

Golang 2023.03.15

Golang 문자열 다루기 (strconv, strings)

Golang을 사용하여 개발할 때 필요한 문자열을 다루는 함수들을 정리합니다. 가끔 함수명이 기억나지 않을 때, 보려고 작성 자주 사용하는 함수 정리 문자열 변환 strconv 함수 설명 사용 예시 Atoi(s string) (i int, err error) 숫자로 이루어진 string을 int으로 변환 한다. strconv.Atoi("1") // 1 Itoa(i int) string int형 숫자를 string으로 변환한다. strconv.Itoa(1) // "1" FormatFloat(f float, fmt byte, prec, bitSize) string float를 string으로 변환한다. strconv.FormatFloat(1.2, 'f', -1, 64) // "1.2" ParseFloat(s..

Golang 2022.12.10
반응형