├── README.md └── go ├── concurrency.go └── utils └── verifyPasswd.go /README.md: -------------------------------------------------------------------------------- 1 | # classic-snippet 2 | 3 | 4 | -------------------------------------------------------------------------------- /go/concurrency.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "fmt" 4 | 5 | func main() { 6 | var data int 7 | 8 | go func() { 9 | data++ 10 | }() 11 | 12 | if data == 0 { 13 | fmt.Println("the value is %v.\n", data) 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /go/utils/verifyPasswd.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | 9 | password := "cuAishuang" 10 | 11 | rs := verifyPasswdIsLegal(password) 12 | 13 | fmt.Println(rs) 14 | } 15 | 16 | // 验证密码是否合法. 不使用正则,使用ascii码硬匹配方式,性能其实会比正则还要好一些 17 | func verifyPasswdIsLegal(passwd string) bool { 18 | if len(passwd) < 8 || len(passwd) > 48 { 19 | return false 20 | } 21 | uppercaseLetter := 0 22 | lowerLetter := 0 23 | symbol := 0 24 | for _, v := range passwd { 25 | switch { 26 | case v >= 33 && v <= 64: 27 | { 28 | symbol = 1 29 | } 30 | case v >= 65 && v <= 90: 31 | { 32 | uppercaseLetter = 1 33 | } 34 | case v >= 91 && v <= 96: 35 | { 36 | symbol = 1 37 | } 38 | case v >= 97 && v <= 122: 39 | { 40 | lowerLetter = 1 41 | } 42 | case v >= 123 && v <= 126: 43 | { 44 | symbol = 1 45 | } 46 | default: 47 | return false 48 | } 49 | } 50 | if uppercaseLetter+lowerLetter+symbol < 2 { 51 | return false 52 | } 53 | return true 54 | } 55 | --------------------------------------------------------------------------------