you are better than you think
看了《敏捷软件开发(原则模式与实践)》,感受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)
}
背景故事
本周一(2016.05.23)上午刘同学的服务器上的数据被清空,对方勒索3个比特比,目前比特比价格在2900+,3个比特币近9000大洋。 网络上没有绝对安全,能做的就是尽量提高黑客暴力猜解的成本。这里总结下关于ssh安全方面的设置。
一 配置说明
修改端口后,对方依旧可以靠扫描端口来尝试,不过服务器一般还会有http之类的端口,这里只是增加了扫描的成本。
root用户是每个系统都存在的用户,如果不禁止root远程登录,土贼在暴力猜解时,只需要猜解密码而不需要猜解登录的用户名。