you are better than you think

备忘

last update:

看了《敏捷软件开发(原则模式与实践)》,感受Java的设计原则和模式真的很棒,看了这本书收获很多。关于设计原则/模式的笔记记录如下。  

一 设计的臭味

1 僵化性

难以对软件进行改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。

2 脆弱性

进行一个改动时,程序的许多地方就可能出现问题。

3 牢固性

设计中包含有对其他系统有用的部分,但把这些部分从系统中分离出来所需要的努力和风险是巨大的。

4 粘滞性

软件的粘滞性 与环境的粘滞性(耦合关系很重的一些指标, 绝对路径,绝对依赖等)。

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远程登录,土贼在暴力猜解时,只需要猜解密码而不需要猜解登录的用户名。