本文整理汇总了Golang中github.com/golang/groupcache/lru.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: NewBranchTileBuilder
// NewBranchTileBuilder returns an instance of BranchTileBuilder that allows
// creating tiles based on the given VCS or code review system based on
// querying db.
//
// TODO(stephana): The EventBus is used to update the internal cache as commits are updated.
func NewBranchTileBuilder(db DB, git *gitinfo.GitInfo, reviewURL string, evt *eventbus.EventBus) BranchTileBuilder {
return &tileBuilder{
db: db,
vcs: git,
review: rietveld.New(reviewURL, util.NewTimeoutClient()),
reviewURL: reviewURL,
cache: lru.New(MAX_ISSUE_CACHE_SIZE),
tcache: lru.New(MAX_TILE_CACHE_SIZE),
}
}
示例2: New
func New(oncecap, twicecap int) *Cache {
c := &Cache{
once: lru.New(oncecap),
twice: lru.New(twicecap),
}
// make sure keys evicted from two make it to the head of one
c.twice.OnEvicted = func(k lru.Key, v interface{}) {
c.once.Add(k, v)
}
return c
}
示例3: NewTraceServiceServer
// NewTraceServiceServer creates a new DB that stores the data in BoltDB format at
// the given filename location.
func NewTraceServiceServer(filename string) (*TraceServiceImpl, error) {
d, err := bolt.Open(filename, 0600, &bolt.Options{Timeout: 1 * time.Second})
if err != nil {
return nil, fmt.Errorf("Failed to open BoltDB at %s: %s", filename, err)
}
createBuckets := func(tx *bolt.Tx) error {
_, err := tx.CreateBucketIfNotExists([]byte(COMMIT_BUCKET_NAME))
if err != nil {
return fmt.Errorf("Failed to create bucket %s: %s", COMMIT_BUCKET_NAME, err)
}
_, err = tx.CreateBucketIfNotExists([]byte(TRACE_BUCKET_NAME))
if err != nil {
return fmt.Errorf("Failed to create bucket %s: %s", TRACE_BUCKET_NAME, err)
}
_, err = tx.CreateBucketIfNotExists([]byte(TRACEID_BUCKET_NAME))
if err != nil {
return fmt.Errorf("Failed to create bucket %s: %s", TRACEID_BUCKET_NAME, err)
}
return nil
}
if err := d.Update(createBuckets); err != nil {
return nil, fmt.Errorf("Failed to create buckets: %s", err)
}
return &TraceServiceImpl{
db: d,
cache: lru.New(MAX_INT64_ID_CACHED),
}, nil
}
示例4: newPeerStore
func newPeerStore(maxInfoHashes, maxInfoHashPeers int) *peerStore {
return &peerStore{
values: lru.New(maxInfoHashes),
maxInfoHashes: maxInfoHashes,
maxInfoHashPeers: maxInfoHashPeers,
}
}
示例5: BenchmarkSetGPLRU
func BenchmarkSetGPLRU(b *testing.B) {
plru := lru.New(lruSize)
// run the Fib function b.N times
for n := 0; n < b.N; n++ {
plru.Add("A"+strconv.FormatInt(int64(n), 10), "A")
}
}
示例6: SaveBlogEditCtr
func (ac *AdminController) SaveBlogEditCtr(c *gin.Context) {
session := sessions.Default(c)
username := session.Get("username")
if username == nil {
(&umsg{"You have no permission", "/"}).ShowMessage(c)
return
}
var BI EditBlogItem
c.BindWith(&BI, binding.Form)
if BI.Aid == "" {
(&umsg{"Can not find the blog been edit", "/"}).ShowMessage(c)
return
}
if BI.Title == "" {
(&umsg{"Title can not empty", "/"}).ShowMessage(c)
return
}
if BI.Content == "" {
(&umsg{"Content can not empty", "/"}).ShowMessage(c)
return
}
_, err := DB.Exec("update top_article set title=?, content=? where aid = ?", BI.Title, BI.Content, BI.Aid)
if err == nil {
Cache = lru.New(8192)
(&umsg{"Success", "/"}).ShowMessage(c)
} else {
(&umsg{"Failed to save blog", "/"}).ShowMessage(c)
}
}
示例7: NewTraceServiceDB
// NewTraceServiceDB creates a new DB that stores the data in the BoltDB backed
// gRPC accessible traceservice.
func NewTraceServiceDB(conn *grpc.ClientConn, traceBuilder tiling.TraceBuilder) (*TsDB, error) {
ret := &TsDB{
conn: conn,
traceService: traceservice.NewTraceServiceClient(conn),
traceBuilder: traceBuilder,
cache: lru.New(MAX_ID_CACHED),
ctx: context.Background(),
}
// This ping causes the client to try and reach the backend. If the backend
// is down, it will keep trying until it's up.
if err := ret.ping(); err != nil {
return nil, err
}
go func() {
liveness := metrics.NewLiveness("tracedb-ping")
for _ = range time.Tick(time.Minute) {
if ret.ping() == nil {
liveness.Update()
}
}
}()
return ret, nil
}
示例8: SaveBlogAddCtr
func (ac *AdminController) SaveBlogAddCtr(c *gin.Context) {
session := sessions.Default(c)
username := session.Get("username")
if username == nil {
(&umsg{"You have no permission", "/"}).ShowMessage(c)
return
}
var BI BlogItem
c.BindWith(&BI, binding.Form)
if BI.Title == "" {
(&umsg{"Title can not empty", "/"}).ShowMessage(c)
return
}
if BI.Content == "" {
(&umsg{"Content can not empty", "/"}).ShowMessage(c)
return
}
_, err := DB.Exec(
"insert into top_article (title, content, publish_time, publish_status) values (?, ?, ?, 1)",
BI.Title, BI.Content, time.Now().Format("2006-01-02 15:04:05"))
if err == nil {
Cache = lru.New(8192)
(&umsg{"Success", "/"}).ShowMessage(c)
} else {
(&umsg{"Failed to save blog", "/"}).ShowMessage(c)
}
}
示例9: initStmtsLRU
func initStmtsLRU(max int) {
if stmtsLRU.lru != nil {
stmtsLRU.Max(max)
} else {
stmtsLRU.lru = lru.New(max)
}
}
示例10: Start
// Start initializes the limiter for execution.
func (il *intervalVaryByLimiter) Start() {
if il.bursts < 0 {
il.bursts = 0
}
il.keys = lru.New(il.maxKeys)
il.keys.OnEvicted = il.stopProcess
}
示例11: New
func New(rdb *gorocksdb.DB) *DB {
db := &DB{rdb: rdb}
db.wo = gorocksdb.NewDefaultWriteOptions()
db.ro = gorocksdb.NewDefaultReadOptions()
db.caches = lru.New(1000)
db.RawSet([]byte{MAXBYTE}, nil) // for Enumerator seek to last
return db
}
示例12: newPeerStore
func newPeerStore(maxInfoHashes, maxInfoHashPeers int) *peerStore {
return &peerStore{
infoHashPeers: lru.New(maxInfoHashes),
localActiveDownloads: make(map[InfoHash]bool),
maxInfoHashes: maxInfoHashes,
maxInfoHashPeers: maxInfoHashPeers,
}
}
示例13: NewSession
// NewSession wraps an existing Node.
func NewSession(p ConnectionPool, c ClusterConfig) *Session {
session := &Session{Pool: p, cons: c.Consistency, prefetch: 0.25, cfg: c}
// create the query info cache
session.routingKeyInfoCache.lru = lru.New(c.MaxRoutingKeyInfo)
return session
}
示例14: newStore
func newStore() *Store {
return &Store{
Created: time.Now().UnixNano(),
Streams: lru.New(maxStreams),
Updates: make(chan *Object, 100),
streams: make(map[string]int64),
metadatas: make(map[string]*Metadata),
}
}
示例15: NewFileHandler
func NewFileHandler(notFound http.Handler) *FileHandler {
reaper := &Reaper{make(chan Life)}
go reaper.Run()
lockChan := make(chan bool, 1)
lockChan <- true
return &FileHandler{
make(chan string), notFound, reaper, lru.New(32), lockChan}
}