写点什么

安全稳定

用户头像
Lane
关注
发布于: 2020 年 08 月 14 日

一、问题一

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

1.硬件故障 

    比如内存硬盘之类的不能用了

 2.软件bug

    系统程序存在一些未测出的bug导致了程序部分或整体不可用

 3.系统发布

   比如配置之类的问题,它不一定是bug

 4.并发压力

    高并发有可能导致系统不可用,比如高并发已经导致应用承载的极限已到了d点,这个时候应用要处理的并发数越来越多,大家都在等待和抢资源,处理不完了,一直降到某个d点,系统的某项资源耗尽,整个服务就挂掉了。

解决方案包括,负载均衡,多台机器共同抗流量,还有系统优化,比如网站的动静分离。

 5.网络攻击

    网络xss或sql注入之类的攻击

 6.外部灾害

    比如程序依赖的外部程序不可用,或者是异地多活的机房之间光线断了之类的问题

二、问题二

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



package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"strings"
)
const (
uname = "lane"
password = "1A1DC91C907325C69271DDF0C944BC72"
)
func MD5(str string) string {
handler := md5.New()
handler.Write([]byte(str))
return strings.ToUpper(hex.EncodeToString(handler.Sum(nil)))
}
func checkPwd(u, p, s string) bool {
if uname == u {
pMd5 := MD5(p)
fmt.Printf("pMd5 = %v \n", pMd5)
if pMd5 == s {
return true
}
}
return false
}
func main() {
res := checkPwd("lane", "pass", "1A1DC91C907325C69271DDF0C944BC72")
fmt.Printf("res = %v \n", res)
}



用户头像

Lane

关注

还有梦想 2018.07.05 加入

还未添加个人简介

评论

发布
暂无评论
安全稳定