Zookeeper做爲阿里系與Dubbo完美搭配的註冊中心,其江湖地位毋容置疑。本課程以最開始圖解Zookeeper框架的架構和組件做爲課程總起,進而「分而治之」各個擊破Zookeeper框架的各個組件源碼,如:序列化,數據模型,持久化,Client和Server架構、選舉流程等,最後經過總結快速梳理所得。html
適合人羣
有代碼潔癖的中高級Java工程師
從事分佈式系統設計和開發的極客
承認「源碼驅動式」學習方式的學生黨正則表達式
技術儲備要求
Java基礎紮實,對IO/NIO網絡通訊等知識有必定了解
瞭解序列化、持久化、多線程
瞭解zookeeper的通常使用命令
1。四位數字字母考證碼的生成實例markdown
複製代碼
1 import random
2 if name =="main": #四位數字字母考證碼的生成
3 checkcode="" #保管考證碼的變量
4 for i in range(4):
5 index=random.randrange(0,4) #生成一個0~3中的數
6 if index!=i and index +1 !=i:
7 checkcode +=chr(random.randint(97,122)) # 生成a~z中的一個小寫字母
8 elif index +1==i:
9 checkcode +=chr(random.randint(65,90) ) # 生成A~Z中的一個大寫字母
10 else:
11 checkcode +=str(random.randint(1,9)) # 數字1-9
12 print(checkcode)
複製代碼
輸出爲:m47A、8wQ九、vugS網絡
2。格式化時間函數多線程
3。記載顯現登陸日誌實例架構
複製代碼
import time
def show_info():
print('''輸入提示數字,執行相應操做
0:退出
1:查看登陸日誌
''')
def write_loginfo(username):
"""
將用戶名和登陸時間寫入日誌
:param username: 用戶名
"""
with open('log.txt','a') as f:
string = "用戶名:{} 登陸時間:{}\n".format(username ,time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
f.write(string)
def read_loginfo():
"""
讀取日誌
"""
with open('log.txt','r') as f:
while True:
line = f.readline()
if line == '':
break # 跳出循環
print(line) # 輸出一行內容
if name == "main":框架
username = input('請輸入用戶名:') # 檢測用戶名 while len(username) < 2 : print('用戶名長度應很多於2位') username = input('請輸入用戶名:') # 輸入密碼 password = input('請輸入密碼:') # 檢測密碼 while len(passw ord) < 6 : print('密碼長度應很多於6位') password = input('請輸入密碼:') print('登陸勝利') write_loginfo(username) # 寫入日誌 show_info() # 提示信息 num = int(input('輸入操做數字:')) # 輸入數字 while True: if num == 0: print('退出勝利') break elif num == 1: print('查看登陸日誌') read_loginfo() show_info() num = int(input('輸入操做數字:')) else: print('您輸入的數字有誤') show_info() num = int(input('輸入操做數字:'))
3。模仿淘寶客服自動回覆
複製代碼
1 # 任務2:模仿淘寶客服自動回覆
2
3 def find_answer(question):
4 with open('reply.txt','r') as f :
5 while True:
6 line=f.readline()
7 if not line: #也可以爲if line==''
8 break
9 keyword=line.split('|')[0]
10 reply=line.split('|')[1]
11 if keyword in question:
12 return reply
13 return '對不起,沒有你想要找的問題'
14
15 if name =='main':
16 question=input('請輸入想要發問的內容:')
17 while True:
18 if question=='bye':
19 break
20 reply=find_answer(question)
21 if not reply:
22 question=input("小蜜不懂您在說什麼,您可以問一些與訂單、帳戶和支付相關的內容(退出請輸入bye):")
23 else:
24 print(reply)
25 question=input("您可以問一些與訂單、帳戶和支付相關的內容(退出請輸入bye):")
26 print('謝謝,再見!')
27
複製代碼
複製代碼
4。求最大條約數和最小公倍數 (展轉相除法)
最大條約數:指兩個或多個整數共有約數中最大的一個dom
最小公倍數:兩個或多個整數公有的倍數叫作它們的公倍數,其中除0之外最小的一個公倍數就叫作這幾個整數的最小公倍數分佈式
兩者關係:兩個數之積=最小公倍數*最大條約數ide
複製代碼
1 a=int(input('輸入數字1:'))
2 b=int(input('輸入數字2:'))
3 s=a*b
4 while a%b!=0:
5 a,b=b,(a%b)
6 print(a)
7 print(b)
8 else:
9 print(b,'is the maximum common divisor最大條約數')
10 print(s//b,'is the least common multiple,最小公倍數')
複製代碼
更相減損法
複製代碼
1 a=int(input('please enter 1st num:'))
2 b=int(input('please enter 2nd num:'))
3 s=a*b
4
5 while a!=b:
6 if a>b:
7 a-=b
8 elif a<b:
9 b-=a
10 else:
11 print(a,'is the maximum common divisor')
12 print(s//a,'is the least common multiple')
13
14 #運轉結果
15 please enter 1st num:40
16 please enter 2nd num:60
17 20 is the maximum common divisor
18 120 is the least common multiple
複製代碼
5。判別可否爲閏年 (展轉相除法)
複製代碼
1 # 判別可否爲閏年
2 while True:
3 try:
4 num=eval(input("請輸入一個年份:"))
5 except:
6 print('輸入錯誤年份')
7 continue
8 if (num %4==0 and num%100 !=0) or num %400==0:
9 print(num,"是閏年")
10 else:
11 print(num,"不是閏年")
複製代碼
複製代碼
import calendar
year = int(input("請輸入年份:"))
check_year=calendar.isleap(year)
if check_year == True:
print ("閏年")
else:
print ("閏年")
複製代碼
6。Python統計字符串中數字,字母,漢字的個數
複製代碼
1 import re
2 str_test='abcdefgHABC123456中華民族'
3
4 #把正則表達式編譯成對象,假如常常運用該對象,此種方式可進步必定效率
5 num_regex = re.compile(r'[0-9]')
6 zimu_regex = re.compile(r'[a-zA-z]')
7 hanzi_regex = re.compile(r'[\u4E00-\u9FA5]')
8
9 print('輸入字符串:',str_test)
10 #findall獲取字符串中一切匹配的字符
11 num_list = num_regex.findall(str_test)
12 print('包含的數字:',num_list)
13 zimu_list = zimu_regex.findall(str_test)
14 print('包含的字母:',zimu_list)
15 hanzi_list = hanzi_regex.findall(str_test)
16 print('包含的漢字:',hanzi_list)
複製代碼
#羊車門問題
複製代碼
1 import random as r
2
3 #總次數
4 total=1000000 #1000,1W,10W,100W
5 #換與不換的獲勝次數
6 win1=0
7 win2=0
8
9 for i in range(total):
10 #模仿選擇過程
11 man=r.randint(1,3)
12 car=r.randint(1,3)
13 #結果:一開端爲車門,不換+1.
14 # 不然則一開端爲羊門,換+1.
15 if man==car:
16 win1+=1
17 else:
18 win2+=1
19
20 print("在{}次實驗中:".format(total))
21 print("若不更改門,獲勝機率爲{:.3}%.".format((win1/total)100))22 print("若更改門,獲勝機率爲{:.3}%.".format((win2/total)100))複製代碼複製代碼1 import random2 x=random.randint(5000,10000)3 print(x)4 change=05 nochange=06 for i in range(1,x+1):7 a=random.randrange(1,4)8 b=random.randrange(1,4)9 if a==b:10 nochange=nochange+111 else:12 change=change+113 print("不更改組擇獲得汽車的機率爲{:.2f}".format(nochange/x))14 15 print("更改組擇獲得汽車的機率爲{:.2f}".format(change/x))