导航:首页 > 编程语言 > 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
可以中文解压的解压软件 浏览:592
安卓卸载组件应用怎么安装 浏览:912
使用面向对象编程的方式 浏览:339
程序员项目经理的年终总结范文 浏览:929
内衣的加密设计用来干嘛的 浏览:432
淮安数据加密 浏览:292
魔高一丈指标源码 浏览:982
松下php研究所 浏览:168
c回调java 浏览:399
梦幻端游长安地图互通源码 浏览:745
电脑本地文件如何上传服务器 浏览:313