導航:首頁 > 編程語言 > python375

python375

發布時間:2022-04-10 23:48:51

1. python執行appium自動化腳本可以執行,總是報警告

python-Wignorefoo.py

忽略警告

2. python hashlib.sha512 為什麼加密結果和shadow不一樣

python的話直接使用crypt就行計算的時候要加上salt值。

cat /etc/shadow | greb root

得到密文。密文由3部分組成,以」$」分隔,第一部分為ID,第二部分為鹽值,第三部分為加密密文

密文示例:
$6$D0xsORq3b7GGsbYv$7L8myKFcJf1FqnvtzD.Zcbx9PeHnwGH1YJm/

$id$salt$encrypted
採用方法鹽值加密密文

$6$D0xsORq3b7GGsbYv #這一段就是鹽值,在加密的時候連同前面的ID一起加密

importcrypt

printcrypt.crpyt("password","$6$D0xsORq3b7GGsbYv")

就可以得到shadow中的密文了。

其實shadow中的密文並不是直接由sha512得出的,還有一些其他操作,例如使用base64加密了salt和hash,可以看下這里man page

3. tkinter canvas里能加label嗎

找不到資料,通常是看源代碼的。好在python的源代碼有時候比幫助,或者是在網上找的東西更好用。另外有一個國外寫的書。tkinter編程,有機會可以下載一本看看,基本上你要的問題都有答案。下面簡單說一下看源代碼的事情。在python2.7的lib/lib-tk目錄下有一個ttk.py文件 , 打開可以看到class Lable(Widget)發現,它初始時調 用了一個通用的Widget類,(強大)class Widget(Tkinter.Widget):調用了Tkinter.Widget.__init__Tkinter里class Widget(BaseWidget, Pack, Place, Grid):其中BaseWidget的setup顯示,你可以輸入任何參數,參數需要是classtype,和DictionaryType , 它是動態添加的。所以不保證其一定生效但是如果它不在conf里,就刪除這些參數應該用於,widget本身屬性,以及Pack, Place, Grid等類使用class Misc:這裡面有所有的參數。太長了。如果你有耐心,可以仔細去看看。如果有興趣,可以繼續追一下tcl/tcl8.5里的代碼。其中似乎也有所有的configure順便幫你查找了《python與tkiner編程》這本書。在361和362頁有所有你要的基本參數。太多了,這里就不列表了。375頁有label特有的選項。包括bgstipple,fgstipple,lmargin1,lmargin2,offset,overstrike,margin,tabs,underline等標准選項有:backgroud,borderwidth,font,foregroud,justify,relief你在問題里列的width,height等應該是屬於Pack,Place,Grid用的。395頁有大部分控制項共享選項的詳細說明。53頁有label的簡單使用說明有這本書,基本上就不用自己看源代碼了。作者是1993年就開始使用python的老手。另外你還可以使用HELP這個方法。>>> from Tkinter import *>>> root=Tk()>>> label=Label(root,text='xiaodeng')>>> help(label.config)Help on method configure in mole Tkinter:configure(self, cnf=None, **kw) method of Tkinter.Label instance Configure resources of a widget. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys.根據help的提示,你需要檢查它的keys>>> print label.keys()['activebackground', 'activeforeground', 'anchor', 'background', 'bd', 'bg', 'bitmap', 'borderwidth', 'compound', 'cursor', 'disabledforeground', 'fg', 'font','foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'justify', 'padx', 'pady', 'relief', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength']OK,上面應該就是你要的答案了。以後都可以用這個方法來找參數了。

4. python如何在顯示毫秒秒錶的時候同時定時循環截圖,還請高手在如下代碼基礎上回答

>> #加了上面這段while運行時窗體不顯示只是後台在截圖,這是為什麼,要怎麼處理?


wx這種GUI框架都是基於事件的。事件包括窗體繪圖,窗體刷新,滑鼠按鈕點擊等。這些事件是在 app.MainLoop() 裡面進行捕獲和處理的。你的程序沒有執行到 MainLoop() GUI就不能正常工作。


解決辦法:

  1. 使用一個單獨的進程或線程做截圖,不要阻塞主進程。

  2. 使用Timer之類的GUI控制項,然後定義相應的handler. wx裡面有wxTimer.


補充:你的程序已經用到了wx的Timer控制項,只要多創建一個Timer用來觸發截圖動作就可以了。

5. python怎麼做介面測試工具

之前使用過urllib和urllib2做介面測試,在做的途中,感覺使用urllib2直接進行的get,post 請求並沒有那麼好用。作為測試人員,所需要的測試工具應當以方便為第一要務,測試的耗時只要是真正的無人值守,耗時不是太久的都可以接受。所以,本人又嘗試了一個新的包:requests。

Requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。Requests 的哲學是以 PEP 20 的習語為中心開發的,所以它比 urllib 更加 Pythoner。更重要的一點是它支持 Python3 !推薦一篇文章,上面有該包的詳細說明傳送門,以下只會寫到我用到的部分,所以更多的了解需要自己去搜資料

好了,我們開始吧!!

介面測試中重要的部分:

1.get和post方法

2.用到的參數

3.請求頭

4.cookie

5.日誌輸出

6.如何調試你的程序--藉助fiddler

按照以上的順序,我將一一說明我的搞法,因為編碼能力有限,所以可能看著很low

一、get和post

requests包很好的實現了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的訪問方式如put,head等等,用法幾乎都是如此,因為沒用到,所以省略

現在一般的介面返回值有頁面和json倆種,按照需求,可以分別使用response.text或者response.content獲取,text獲取的是unicode類型的返回值,而content返回值是str類型,所以我一般使用content來獲取返回值,因為這樣獲取的返回值可以直接使用正則或者in的方式來驗證返回值結果是否正確。

我自己為了實現介面的自動訪問,所以又在requests上面加了一層封裝,就像下面這樣:

三、cookie

一款產品的介面測試中必定會使用登錄狀態,需要使用cookie實現,之前寫過使用cookiejar獲取cookie,requests中獲取cookie的方法更為簡單,不過首先你得知道是哪個介面set了cookie,不過一般是登錄啦。登錄介面訪問之後set了cookie,那好,就去調用登錄介面,然後拿到搞回來的cookie:

# 只需要這樣!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

這個cookie就是登錄狀態了,拿著隨便用,需要登錄的就直接cookies=cookies

四、日誌輸出

這里注意看第二步中介面數據,有介面描述,也有介面是啥,第一步中又把content做成返回值了,具體拼接方式自己想吧,東西全有了,想寫啥寫啥,還可以加上獲取本地時間的api獲取介面運行時間,log文件該長啥樣是門學問,這里就不獻丑了。

五、借用fiddler調試你的腳本

requests允許使用代理訪問,這有啥用,真有!fiddler是一款截包改包的工具,而且通過擴展可以進行請求間的比對,這樣讓你的程序訪問的請求和真正正確的請求作對比,為啥我的程序訪問出錯?是不是缺了請求頭?參數是不是丟了?cookie是不是少了?很容易看出來。寫法如下:

proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.1:8888"}
requests.post(url, proxies=proxies)

這樣就可以走代理了,除fiddler以外還有charles和burp suite可以使用,具體看個人喜好吧。

6. python label.config這個配置用法問題

找不到資料,通常是看源代碼的。 好在python的源代碼有時候比幫助,或者是在網上找的東西更好用。 另外有一個國外寫的書。 tkinter編程,有機會可以下載一本看看,基本上你要的問題都有答案。


下面簡單說一下看源代碼的事情。

在python2.7的lib/lib-tk目錄下有一個ttk.py文件,打開可以看到classLable(Widget)
發現,它初始時調用了一個通用的Widget類,(強大)
classWidget(Tkinter.Widget):
調用了
Tkinter.Widget.__init__
Tkinter里
classWidget(BaseWidget,Pack,Place,Grid):
其中BaseWidget的setup顯示,你可以輸入任何參數,
參數需要是classtype,和DictionaryType,它是動態添加的。所以不保證其一定生效
但是如果它不在conf里,就刪除

這些參數應該用於,widget本身屬性,以及Pack,Place,Grid等類使用

classMisc:
這裡面有所有的參數。太長了。如果你有耐心,可以仔細去看看。
如果有興趣,可以繼續追一下tcl/tcl8.5里的代碼。其中似乎也有所有的configure

順便幫你查找了《python與tkiner編程》這本書。在361和362頁有所有你要的基本參數。太多了,這里就不列表了。

375頁有label特有的選項。包括bgstipple, fgstipple, lmargin1, lmargin2, offset, overstrike, margin, tabs, underline等

標准選項有:backgroud, borderwidth, font, foregroud, justify, relief

你在問題里列的width, height等 應該是屬於Pack, Place, Grid用的。

395頁有大部分控制項共享選項的詳細說明。

53頁有label的簡單使用說明


有這本書,基本上就不用自己看源代碼了。作者是1993年就開始使用python的老手。


另外你還可以使用HELP這個方法 。

>>>fromTkinterimport*
>>>root=Tk()
>>>label=Label(root,text='xiaodeng')
>>>help(label.config)
:

configure(self,cnf=None,**kw)methodofTkinter.Labelinstance
Configureresourcesofawidget.


arguments.Togetanoverviewabout
.

根據help的提 示, 你需要檢查 它的keys

>>>printlabel.keys()
['activebackground','activeforeground','anchor','background','bd','bg','bi
tmap','borderwidth','compound','cursor','disabledforeground','fg','font',
'foreground','height','highlightbackground','highlightcolor','highlightthick
ness','image','justify','padx','pady','relief','state','takefocus','text
','textvariable','underline','width','wraplength']

OK, 上面應該就是你要的答案了。 以後都可以用這個方法來找參數了。

7. 哪本python書立有蟻群演算法

簡介

蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由Marco Dorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為。蟻群演算法是一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質。針對PID控制器參數優化設計問題,將蟻群演算法設計的結果與遺傳演算法設計的結果進行了比較,數值模擬結果表明,蟻群演算法具有一種新的模擬進化優化方法的有效性和應用價值。
定義

各個螞蟻在沒有事先告訴他們食物在什麼地方的前提下開始尋找食物。當一隻找到食物以後,它會向環境釋放一種揮發性分泌物pheromone (稱為信息素,該物質隨著時間的推移會逐漸揮發消失,信息素濃度的大小表徵路徑的遠近)來實現的,吸引其他的螞蟻過來,這樣越來越多的螞蟻會找到食物。有些螞蟻並沒有像其它螞蟻一樣總重復同樣的路,他們會另闢蹊徑,如果另開辟的道路比原來的其他道路更短,那麼,漸漸地,更多的螞蟻被吸引到這條較短的路上來。最後,經過一段時間運行,可能會出現一條最短的路徑被大多數螞蟻重復著。

解決的問題

三維地形中,給出起點和重點,找到其最優路徑。

程序代碼:

numpy as npimport matplotlib.pyplot as plt%pylabcoordinates = np.array([[565.0,575.0],[25.0,185.0],[345.0,750.0],[945.0,685.0],[845.0,655.0],[880.0,660.0],[25.0,230.0],[525.0,1000.0],[580.0,1175.0],[650.0,1130.0],[1605.0,620.0],[1220.0,580.0],[1465.0,200.0],[1530.0, 5.0],[845.0,680.0],[725.0,370.0],[145.0,665.0],[415.0,635.0],[510.0,875.0],[560.0,365.0],[300.0,465.0],[520.0,585.0],[480.0,415.0],[835.0,625.0],[975.0,580.0],[1215.0,245.0],[1320.0,315.0],[1250.0,400.0],[660.0,180.0],[410.0,250.0],[420.0,555.0],[575.0,665.0],[1150.0,1160.0],[700.0,580.0],[685.0,595.0],[685.0,610.0],[770.0,610.0],[795.0,645.0],[720.0,635.0],[760.0,650.0],[475.0,960.0],[95.0,260.0],[875.0,920.0],[700.0,500.0],[555.0,815.0],[830.0,485.0],[1170.0, 65.0],[830.0,610.0],[605.0,625.0],[595.0,360.0],[1340.0,725.0],[1740.0,245.0]])def getdistmat(coordinates):num = coordinates.shape[0]distmat = np.zeros((52,52))for i in range(num):for j in range(i,num):distmat[i][j] = distmat[j][i]=np.linalg.norm(coordinates[i]-coordinates[j])return distmatdistmat = getdistmat(coordinates)numant = 40 #螞蟻個數numcity = coordinates.shape[0] #城市個數alpha = 1 #信息素重要程度因子beta = 5 #啟發函數重要程度因子rho = 0.1 #信息素的揮發速度Q = 1iter = 0itermax = 250etatable = 1.0/(distmat+np.diag([1e10]*numcity)) #啟發函數矩陣,表示螞蟻從城市i轉移到矩陣j的期望程度pheromonetable = np.ones((numcity,numcity)) # 信息素矩陣pathtable = np.zeros((numant,numcity)).astype(int) #路徑記錄表distmat = getdistmat(coordinates) #城市的距離矩陣lengthaver = np.zeros(itermax) #各代路徑的平均長度lengthbest = np.zeros(itermax) #各代及其之前遇到的最佳路徑長度pathbest = np.zeros((itermax,numcity)) # 各代及其之前遇到的最佳路徑長度while iter < itermax:# 隨機產生各個螞蟻的起點城市if numant <= numcity:#城市數比螞蟻數多pathtable[:,0] = np.random.permutation(range(0,numcity))[:numant]else: #螞蟻數比城市數多,需要補足pathtable[:numcity,0] = np.random.permutation(range(0,numcity))[:]pathtable[numcity:,0] = np.random.permutation(range(0,numcity))[:numant-numcity]length = np.zeros(numant) #計算各個螞蟻的路徑距離for i in range(numant):visiting = pathtable[i,0] # 當前所在的城市#visited = set() #已訪問過的城市,防止重復#visited.add(visiting) #增加元素unvisited = set(range(numcity))#未訪問的城市unvisited.remove(visiting) #刪除元素for j in range(1,numcity):#循環numcity-1次,訪問剩餘的numcity-1個城市#每次用輪盤法選擇下一個要訪問的城市listunvisited = list(unvisited)probtrans = np.zeros(len(listunvisited))for k in range(len(listunvisited)):probtrans[k] = np.power(pheromonetable[visiting][listunvisited[k]],alpha)*np.power(etatable[visiting][listunvisited[k]],alpha)cumsumprobtrans = (probtrans/sum(probtrans)).cumsum()cumsumprobtrans -= np.random.rand()k = listunvisited[find(cumsumprobtrans>0)[0]] #下一個要訪問的城市pathtable[i,j] = kunvisited.remove(k)#visited.add(k)length[i] += distmat[visiting][k]visiting = klength[i] += distmat[visiting][pathtable[i,0]] #螞蟻的路徑距離包括最後一個城市和第一個城市的距離#print length# 包含所有螞蟻的一個迭代結束後,統計本次迭代的若干統計參數lengthaver[iter] = length.mean()if iter == 0:lengthbest[iter] = length.min()pathbest[iter] = pathtable[length.argmin()].()else:if length.min() > lengthbest[iter-1]:lengthbest[iter] = lengthbest[iter-1]pathbest[iter] = pathbest[iter-1].()else:lengthbest[iter] = length.min()pathbest[iter] = pathtable[length.argmin()].()# 更新信息素changepheromonetable = np.zeros((numcity,numcity))for i in range(numant):for j in range(numcity-1):changepheromonetable[pathtable[i,j]][pathtable[i,j+1]] += Q/distmat[pathtable[i,j]][pathtable[i,j+1]]changepheromonetable[pathtable[i,j+1]][pathtable[i,0]] += Q/distmat[pathtable[i,j+1]][pathtable[i,0]]pheromonetable = (1-rho)*pheromonetable + changepheromonetableiter += 1 #迭代次數指示器+1#觀察程序執行進度,該功能是非必須的if (iter-1)%20==0:print iter-1# 做出平均路徑長度和最優路徑長度fig,axes = plt.subplots(nrows=2,ncols=1,figsize=(12,10))axes[0].plot(lengthaver,'k',marker = u'')axes[0].set_title('Average Length')axes[0].set_xlabel(u'iteration')axes[1].plot(lengthbest,'k',marker = u'')axes[1].set_title('Best Length')axes[1].set_xlabel(u'iteration')fig.savefig('Average_Best.png',dpi=500,bbox_inches='tight')plt.close()#作出找到的最優路徑圖bestpath = pathbest[-1]plt.plot(coordinates[:,0],coordinates[:,1],'r.',marker=u'$cdot$')plt.xlim([-100,2000])plt.ylim([-100,1500])for i in range(numcity-1):#m,n = bestpath[i],bestpath[i+1]print m,nplt.plot([coordinates[m][0],coordinates[n][0]],[coordinates[m][1],coordinates[n][1]],'k')plt.plot([coordinates[bestpath[0]][0],coordinates[n][0]],[coordinates[bestpath[0]][1],coordinates[n][1]],'b')ax=plt.gca()ax.set_title("Best Path")ax.set_xlabel('X axis')ax.set_ylabel('Y_axis')plt.savefig('Best Path.png',dpi=500,bbox_inches='tight')plt.close()

8. 521個我愛你求復制謝謝

521個我愛你一生一世用python代碼可以實現:

結果如下:

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世 我愛你一生一世

我愛你一生一世

9. 無線感測器網路操作系統TinyOS的目錄

第1章 緒論 1
1.1 無線感測器網路概述 1
1.1.1 無線感測器網路的研究進展 2
1.1.2 無線感測器網路的體系特徵 3
1.2 無線感測器網路操作系統 8
1.2.1 無線感測器網路對操作系統的需求 8
1.2.2 現有的無線感測器網路操作系統 10
1.3 TinyOS操作系統概述 13
1.3.1 設計理念 14
1.3.2 技術特點 15
1.3.3 體系結構 16
1.3.4 版本說明 17
1.4 與其他WSN操作系統的比較 20
1.5 本書章節安排 24
第2章 開發環境 26
2.1 TinyOS 2.1在Windows中的安裝 26
2.1.1 搭建Java環境 27
2.1.2 安裝Cygwin平台 30
2.1.3 安裝平台交叉編譯器 34
2.1.4 安裝TinyOS源碼與工具包 36
2.1.5 安裝Graphviz圖形工具 38
2.2 其他安裝方法 39
2.2.1 在Ubuntu 9.10中的安裝 39
2.2.2 使用RPM包的手動安裝 41
2.2.3 TinyOS 1.x升級到TinyOS 2.x 42
2.2.4 使用CVS更新TinyOS 2.x文件 46
2.3 TinyOS安裝後的測試 47
2.3.1 TinyOS文件概覽 47
2.3.2 檢查運行環境 48
2.3.3 模擬測試 49
2.4 程序的編譯和下載 50
2.4.1 代碼編輯工具 50
2.4.2 編譯程序 52
2.4.3 USB串口驅動 53
2.4.4 下載程序 54
2.5 本章小結 57
第3章 nesC編程語言 58
3.1 nesC語言簡介 58
3.2 nesC語言規范 59
3.2.1 介面 61
3.2.2 組件 62
3.2.3 模塊及其組成 65
3.2.4 配件及其組成 68
3.3 基於nesC語言的應用程序 73
3.3.1 nesC應用程序簡介 73
3.3.2 Blink實例 77
3.3.3 BlinkSingle實例 82
3.3.4 移植TinyOS 1.x代碼到2.x 86
3.4 nesC程序運行模型 88
3.4.1 任務 88
3.4.2 內部函數 91
3.4.3 分階段作業 92
3.4.4 同步與非同步 94
3.4.5 原子性代碼 95
3.4.6 無線模塊的開啟過程 96
3.5 編程約定 98
3.5.1 通用約定 98
3.5.2 軟體包 98
3.5.3 語法約定 99
3.5.4 TinyOS約定 101
3.6 可視化組件關系圖 103
3.7 本章小結 104
第4章 基本操作 106
4.1 點對點的無線通信 106
4.1.1 主動消息概述 106
4.1.2 通信介面和組件 107
4.1.3 消息緩存抽象 109
4.1.4 通過無線電發送消息 110
4.1.5 通過無線電接收消息 117
4.2 節點與PC的串口通信 119
4.2.1 信息源和埠測試 119
4.2.2 基站和監聽工具 121
4.2.3 MIG消息介面生成工具 123
4.2.4 SerialForwarder和其他信息源 126
4.2.5 發送信息包到串口 129
4.2.6 基於printf庫的列印調試 130
4.2.7 常見的串口通信故障 133
4.3 感測 134
4.3.1 感測簡介 134
4.3.2 Sense實例 135
4.3.3 Oscilloscope實例 138
4.4 存儲 140
4.4.1 存儲簡介 140
4.4.2 配置數據的存儲 141
4.4.3 日誌數據的存儲 146
4.4.4 大數據塊的存儲 148
4.5 本章小結 149
第5章 系統內核 151
5.1 硬體抽象架構 151
5.1.1 架構簡介 151
5.1.2 不同層次抽象的結合 154
5.1.3 橫向分解 155
5.1.4 微處理器抽象 156
5.1.5 HIL抽象級別 156
5.2 任務和調度 157
5.2.1 任務簡介 157
5.2.2 TinyOS 1.x的任務和調度器 157
5.2.3 TinyOS 2.x的任務 159
5.2.4 TinyOS 2.x的調度器 160
5.2.5 調度器的替換 162
5.2.6 調度器的具體實現 165
5.3 系統啟動順序 168
5.3.1 啟動順序簡介 168
5.3.2 TinyOS 1.x的啟動順序 168
5.3.3 TinyOS 2.x的啟動介面 169
5.3.4 TinyOS 2.x的啟動順序 170
5.3.5 系統啟動和軟體初始化 174
5.4 資源仲裁 175
5.4.1 資源簡介 175
5.4.2 資源類型 176
5.4.3 資源仲裁 178
5.4.4 共享資源的應用實例 183
5.5 微控制器的電源管理 187
5.5.1 微控制器電源管理簡介 187
5.5.2 TinyOS 1.x的電源管理 188
5.5.3 TinyOS 2.x的電源管理 189
5.5.4 外圍設備和子系統 191
5.6 外圍設備的電源管理 191
5.6.1 外圍設備電源管理簡介 191
5.6.2 電源管理模型 192
5.6.3 顯式電源管理 193
5.6.4 隱式電源管理 196
5.7 串口通信 199
5.7.1 串口通信協議簡介 199
5.7.2 串口協議棧的實現 200
5.7.3 串口協議棧的抽象 207
5.8 本章小結 207
第6章 平台與模擬 210
6.1 平台 210
6.1.1 平台簡介 210
6.1.2 底層I/O口 211
6.1.3 新平台的建立 215
6.1.4 CC2430平台的移植 223
6.2 編譯系統 226
6.2.1 編譯系統簡介 226
6.2.2 自定義編譯系統 227
6.2.3 makefile入門 228
6.2.4 編寫Makefile文件 230
6.2.5 編譯工具 232
6.3 TOSSIM模擬 233
6.3.1 TOSSIM簡介 233
6.3.2 模擬編譯 234
6.3.3 基於Python的模擬 237
6.3.4 調試語句 239
6.3.5 網路配置 242
6.3.6 變數的觀察 250
6.3.7 注入消息包 253
6.3.8 C++介面 256
6.3.9 gdb調試 258
6.4 本章小結 261
第7章 網路協議 262
7.1 分發協議 262
7.1.1 分發協議簡介 262
7.1.2 相關介面和組件 263
7.1.3 EasyDissemination實例 265
7.1.4 Drip庫和DIP庫 269
7.2 匯聚協議 276
7.2.1 匯聚協議簡介 276
7.2.2 相關介面和組件 277
7.2.3 CTP協議 279
7.2.4 CTP實現 281
7.2.5 EasyCollection實例 287
7.3 本章小結 291
第8章 高級應用技術 293
8.1 低功耗應用程序 293
8.1.1 能耗管理簡介 293
8.1.2 外圍設備的電源管理 294
8.1.3 無線模塊的電源管理 297
8.1.4 微處理器的電源管理 300
8.1.5 低功耗感測的應用實例 300
8.2 低功耗監聽 300
8.2.1 低功耗監聽簡介 300
8.2.2 相關介面 302
8.2.3 message_t元數據 304
8.2.4 HAL層的改進建議 305
8.3 TOSThreads線程 305
8.3.1 TOSThreads線程簡介 305
8.3.2 nesC語言的API介面 306
8.3.3 C語言的API介面 309
8.3.4 支持新的系統服務 310
8.4 CC2420聯網安全功能 312
8.4.1 CC2420安全模式簡介 313
8.4.2 發送端的配置 313
8.4.3 接收端的配置 314
8.4.4 RadioCountToLeds實例 315
8.5 本章小結 319
第9章 基於TinyOS的應用開發實例 320
9.1 基於TSL2550感測器的光照檢測 320
9.1.1 TSL2550簡介 320
9.1.2 驅動實現 323
9.1.3 感測測試 330
9.2 基於GSM簡訊的遠程數據傳輸 334
9.2.1 系統簡介 334
9.2.2 功能實現 338
9.2.3 簡訊測試 348
9.3 基於簡單蟻群演算法的路由協議 350
9.3.1 演算法簡介 350
9.3.2 協議實現 353
9.3.3 模擬測試 366
9.4 本章小結 370
附錄A nesC語言基本語法 371
附錄B TinyOS編程技巧 374
附錄C 英漢對照術語表 375
參考文獻與網址 378

閱讀全文

與python375相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:61
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1002
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:591
安卓卸載組件應用怎麼安裝 瀏覽:912
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:399
夢幻端游長安地圖互通源碼 瀏覽:745
電腦本地文件如何上傳伺服器 瀏覽:312