you are better than you think

备忘

last update:

golang 官方为了解决对象重用问题提供了临时对象池:https://golang.org/src/sync/pool.go

对象池,是指提供了对象复用功能。临时是指对象池的没有引用的对象在每两分钟一次的GC中会被全部清理掉。有点坳口,下面我们来看一段代码。

package main

import (
    "log"
    "runtime"
    "sync"
)

func main() {
    p := &sync.Pool{
        New: func() interface{} {
            return 0
        },
    }
    a := p.Get().(int)
    p.Put(1)
    b := p.Get().(int)
    log.Println(a, b)
    p.Put(3)
    p.Put(4)
    p.Put(5)
    log.Println(p.Get()) //返回 3 4 5中的任意一个。
    //主动调用GC  pool中对象会被清理掉
    runtime.GC()
    p.Put(2)
    c := p.Get().(int)
    log.Println(c)
}

vps安全配置(一)

背景故事

本周一(2016.05.23)上午刘同学的服务器上的数据被清空,对方勒索3个比特比,目前比特比价格在2900+,3个比特币近9000大洋。 网络上没有绝对安全,能做的就是尽量提高黑客暴力猜解的成本。这里总结下关于ssh安全方面的设置。

一 配置说明

  •  修改ssh默认端口

修改端口后,对方依旧可以靠扫描端口来尝试,不过服务器一般还会有http之类的端口,这里只是增加了扫描的成本。

  • 禁止root远程登录

root用户是每个系统都存在的用户,如果不禁止root远程登录,土贼在暴力猜解时,只需要猜解密码而不需要猜解登录的用户名。

pg.v4 update小结

go-pg是golang实现的postgresql client,项目页:https://github.com/go-pg/pg。

按项目页说明使用Update有3中用法 :

// Update all columns except primary keys.
err := db.Update(&book)
// UPDATE "books" SET title = 'my title', text = 'my text' WHERE id = 1

// Update only column "title".
res, err := db.Model(&book).Set("title = ?title").Where("id = ?id").Update()
// UPDATE "books" SET title = 'my title' WHERE id = 1

// Update only column "title".
res, err := db.Model(&book).Column("title").Update()
// UPDATE "books" SET title = 'my title' WHERE id = 1