写点什么

架构师训练营 - 第十一周命题作业

用户头像
牛牛
关注
发布于: 2020 年 08 月 25 日
架构师训练营 - 第十一周命题作业



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



导致系统不可用用的原因主要有:硬件故障、软件bug、系统发布、并发压力、网络攻击、外部灾害

高可用方案:

  • 硬件故障:无状态服务、集群和相关软件的分布式恢复策略

  • 软件bug:自动化测试、预发布验证、灰度发布、网站运行监控

  • 系统发布:自动化测试、预发布验证、灰度发布、网站运行监控

  • 并发压力:压力测试、流量评估、服务器性能监控、监控管理(服务伸缩)

  • 网络攻击:Web应用防火墙、网站漏洞扫描、信息加密与秘钥管理

  • 外部灾害:异地多活



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

package password;
import java.security.MessageDigest;
import java.util.Objects;
/**
* @description:
* @author: liu.w
* @create: 2020-08-25 11:21
**/
public class CheckPwd {
public static final String salt = "deal";
public static void main(String[] args) {
System.out.println(checkPW(1, "abcd", "b2674a9182edd9054bfb7029628e11fa"));
}
/**
* @param userId
* @param password 原始密码
* @param secrets 加密的密码摘要
* @return
*/
public static boolean checkPW(Integer userId, String password, String secrets) {
String pwd = userId + password + salt;
return Objects.equals(secrets, encrypt(pwd));
}
public static String encrypt(String dataStr) {
try {
MessageDigest m = MessageDigest.getInstance("MD5");
m.update(dataStr.getBytes("UTF8"));
byte[] str = m.digest();
String result = "";
for (int i = 0; i < str.length; i++) {
result += Integer.toHexString((0x000000FF & str[i]) | 0xFFFFFF00).substring(6);
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}



用户头像

牛牛

关注

还未添加个人签名 2018.02.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第十一周命题作业