写点什么

极客大学架构师训练营 0 期 week 11 作业

用户头像
chun1123
关注
发布于: 2020 年 08 月 26 日

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

硬件故障

软件bug

系统发布

并发压力

网络攻击

外部灾害



2. 密码验证函数

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

code

package com.szp.geektime.architecture.lesson11;
import java.util.HashMap;
import java.util.Map;
import org.springframework.security.crypto.bcrypt.BCrypt;
public class UserLoginService {
// key userId
//save salt
Map<String,String> saltMap = new HashMap<>();
// key userId
// save encriptPassword
Map<String,String> encriptPasswordMap = new HashMap<>();
public boolean register(String userId, String password){
if(saltMap.containsKey(userId))
return false;
String hash1 = BCrypt.gensalt(8);
saltMap.put(userId, hash1);
String encriptPW = BCrypt.hashpw(password, hash1);
encriptPasswordMap.put(userId, encriptPW);
return true;
}
public boolean login(String userId, String password){
//validate userId
if(null == userId)
return false;
String salt = saltMap.get(userId);
// not registered
if(null == salt)
return false;
//validate password
String encriptPW = BCrypt.hashpw(password, salt);
if(encriptPW.equals(encriptPasswordMap.get(userId))){
return true;
}
return false;
}
public static void main(String[] args) {
UserLoginService userLoginService = new UserLoginService();
String userId1 = "Jack";
String password1 = "123456";
System.out.println("user " + userId1 + "register result :"
+ userLoginService.register(userId1, password1));
System.out.println("user " + userId1 + "login result(false password) :"
+ userLoginService.login(userId1, "654321"));
System.out.println("user " + userId1 + "register result(correct password) :"
+ userLoginService.login(userId1, password1));
String userId2 = "Tom";
String password2 = "abcdef";
System.out.println("user " + userId2 + "register result :"
+ userLoginService.register(userId2, password2));
System.out.println("user " + userId2 + "login result(false password) :"
+ userLoginService.login(userId2, "fedcba"));
System.out.println("user " + userId2 + "register result(correct password) :"
+ userLoginService.login(userId2, password2));
}
}

result

user Jack register result :true
user Jack login result(false password) :false
user Jack register result(correct password) :true
user Tom register result :true
user Tom login result(false password) :false
user Tom register result(correct password) :true



用户头像

chun1123

关注

还未添加个人签名 2018.03.09 加入

还未添加个人简介

评论

发布
暂无评论
极客大学架构师训练营 0 期 week 11 作业