架构师训练营 11 周作业

用户头像
郎哲158
关注
发布于: 2020 年 12 月 07 日

作业 1:

导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。



原因:硬件故障,软件 bug,系统发布,并发压力,网络攻击,外部灾害

方案:

作业 2:请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。

package sha
import (
"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 sha
import (
"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)
}
})
}
}



用户头像

郎哲158

关注

还未添加个人签名 2017.12.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 11 周作业