架构师训练营 11 周作业
发布于: 2020 年 12 月 07 日
作业 1:
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
原因:硬件故障,软件 bug,系统发布,并发压力,网络攻击,外部灾害
方案:
作业 2:请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
package shaimport ( "crypto/sha256" "encoding/hex" "fmt")const SALT = "geeklangzhe"var DB = make(map[string]string)func Register(userId, password string) { password = Encode(password) WriteDB(userId, password)}func Login(userId, password string) bool { password = Encode(password) dbPassword := ReadDB(userId) return password==dbPassword}func Encode(str string) string { s1 := sha256.Sum256([]byte(str+SALT)) s := hex.EncodeToString(s1[:]) fmt.Println(s) return s}func WriteDB(userId, password string) { DB[userId]=password}func ReadDB(userId string) string { return DB[userId]}package shaimport ( "testing")func TestEncode(t *testing.T) { type args struct { str string } tests := []struct { name string args args want string }{ {"1", args{"lang"}, "de90ffc82aa7b263680efc54e111bda228f368174ece54af102f593710dd4451"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := Encode(tt.args.str); got != tt.want { t.Errorf("Encode() = %v, want %v", got, tt.want) } }) }}func TestLogin(t *testing.T) { Register("langzhe","geek") type args struct { userId string password string } tests := []struct { name string args args want bool }{ {"1",args{"langzhe","geek"},true}, {"2",args{"langzhe1","geek"},false}, {"3",args{"langzhe","geek1"},false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := Login(tt.args.userId, tt.args.password); got != tt.want { t.Errorf("Login() = %v, want %v", got, tt.want) } }) }}
划线
评论
复制
发布于: 2020 年 12 月 07 日阅读数: 14
郎哲158
关注
还未添加个人签名 2017.12.20 加入
还未添加个人简介
评论