소스 코드에서 BPOOL을 가져 오려면 GET 명령을 받으십시오.
-u github.com/unit-io/bpool을 받으십시오
로그 파일에 데이터를 작성하는 동안 Put 또는 Batch Operations 또는 Buffer Pool을 사용하는 버퍼에 대한 수신 요청을 작성하는 데 버퍼 풀을 사용하십시오 (커밋 작동 중). 용량으로 Bufferpool 라이브러리를 작성하는 목적은 버퍼 풀이 대상 크기에 도달 할 때까지 백 오프없이 버퍼에 초기 쓰기를 수행하는 것입니다. 버퍼 풀은 GET 또는 Writ
Godoc.org 서비스를 사용하여 자세한 API 문서를 사용할 수 있습니다.
GO Client 소스 코드에서 클라이언트를 가져와 클라이언트를 사용하십시오. 예를 들어,
"github.com/unit-io/bpool"가져 오기
버퍼 용량없이 실행되면 코드 스 니펫을 따르면 모든 시스템 메모리가 소비되고 공황이 발생합니다.
buf := bytes.NewBuffer(make([]byte, 0, 2))
defer func() {
if r := recover(); r != nil {
fmt.Println("panics from blast")
}
}()
for {
_, err := buf.Write([]byte("create blast"))
if err != nil {
fmt.Println(err.Error())
return
}
}
용량이있는 Bufferpool을 사용하는 코드 스 니펫은 요청에 점진적인 지연을 추가하여 시스템 메모리 사용을 제한하며 공황을 유발하지 않습니다.
pool := bpool.NewBufferPool(1<<20, &bpool.Options{MaxElapsedTime: 1 * time.Minute, WriteBackOff: true}) // creates BufferPool of 16MB target size
buf := pool.Get()
defer pool.Put(buf)
for {
_, err := buf.Write([]byte("create blast"))
if err != nil {
fmt.Println(err.Error())
return
}
}
bpool.newbufferpool () 메소드를 사용하고 버퍼 크기 매개 변수를 통과하여 새 버퍼 풀을 만듭니다.
const (
BufferSize = 1<<30 // (1GB size)
)
pool := bpool.NewBufferPool(BufferSize, nil)
버퍼 풀에서 버퍼를 얻으려면 bufferpool.get ()를 사용하십시오. 버퍼 풀이 그 용량에 도달하면 시스템 메모리 사용을 제한하기 위해 점진적인 지연으로 실행됩니다.
....
var buffer *bpool.Buffer
buffer = pool.Get()
버퍼에 쓰기 위해 buffer.write () 메소드를 사용하십시오.
var scratch [8]byte
binary.LittleEndian.PutUint64(scratch[0:8], uint64(buffer.Size()))
b.buffer.Write(scratch[:])
....
버퍼를 읽으려면 Buffer.Bytes () 메소드를 사용하십시오. 이 작업은 버퍼에 저장된 밑줄 데이터 슬라이스를 반환합니다.
data := buffer.Bytes()
...
버퍼 사용 bufferpool.put () 메소드를 사용하여 완료되면 버퍼를 풀에 넣으려면이 작업은 아래쪽 슬라이스를 재설정합니다. 또한 용량이 대상 크기보다 낮은 경우 GET 작업을 지연시키는 데 사용 된 버퍼 풀 간격을 재설정합니다.
pool.Put(buffer)
...
버퍼에 저장된 아래쪽 슬라이스를 재설정하고 Bufferpool.put () 작동을 사용하는 대신 버퍼 사용 buffer.reset () 메소드를 계속 사용합니다.
buffer.Reset()
....
기여하고 싶다면 저장소를 포크하고 기능 분기를 사용하십시오. 풀 요청을 환영합니다.
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다.