先说说线程在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.将一些敏感操作变成原子操作,保证同一时刻多个线程中只有一个线程在执行这个原子操作。我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。其实在线程中,也可以接受信号,利用这种机制,我们也可以用来实现线程同步。更多信息见//www.jb51.ne
系统 2019-09-27 17:48:40 1945
在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互。因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送。使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TCP的限制。下面开始构造HTTP数据包,IP层和TCP层使用python的Impacket库,http内容自行填写。#!/
系统 2019-09-27 17:48:25 1945
因为GAE在国内访问不便,所以平时有一些小应用,我都会放在SAE上面,虽然SAE还有很多缺陷,但算是上手比较容易的一个了,最起码文档写的不错。开发SAE上的应用,我一般都用Flask,SAE预装了Flask,所以你可以直接用,但我们难免会用一些没有预装的库。如果是在以前,可能需要自己将package挨个copy到应用目录中,然后手动加载,现在嘛,不需要那么麻烦了,SAE有个非常不错的解决方案,见《安装依赖的第三方包》你可以使用saecloud来代替pip安
系统 2019-09-27 17:48:13 1945
效果展示规则介绍基于二维元胞自动机的生命游戏可视化实现规则:蓝色方块代表生命有颜色的方块代表生命,无颜色的方块代表死亡一个细胞周围有八个细胞,对于一个活细胞来说,如果它周围的八个细胞中:如果只有一个或没有一个是活的,那这个细胞就会死亡如果其中两个或者三个细胞是活的,那这个细胞就能维持生命如果超过3个细胞是活着的,那这个细胞就会因为过于拥挤而死亡对于一个死细胞来说,如果这个细胞周围如果有三个细胞存活,该将获得新生。附:所有规则都可以修改,种群初始密度也可以修
系统 2019-09-27 17:47:53 1945
接触Python也有一段时间了,Python相关的框架和模块也接触了不少,希望把自己接触到的自己觉得比较好的设计和实现分享给大家,于是取了一个“CharmingPython”的小标,算是给自己开了一个头吧,希望大家多多批评指正。:)fromflaskimportrequestFlask是一个人气非常高的PythonWeb框架,笔者也拿它写过一些大大小小的项目,Flask有一个特性我非常的喜欢,就是无论在什么地方,如果你想要获取当前的request对象,只要
系统 2019-09-27 17:47:44 1945
1.if语句Python中的if子句看起来十分熟悉.它由三部分组成:关键字本身,用于判断结果真假的条件表达式,以及当表达式为真或者非零时执行的代码块.if语句的语法如下:ifexpression:expr_true_suiteif语句的expr_true_suite代码块只有在条件表达式的结果的布尔值为真时才执行,否则将继续执行紧跟在该代码块后面的语句.(1)多重条件表达式单个if语句可以通过使用布尔操作符and,or和not实现多重判断条件或是否定判断条
系统 2019-09-27 17:47:35 1945
阅读目录tcp协议:流式协议(以数据流的形式通信传输)、安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信)tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层、数据链路层、物理层。可以说很多安全数据的传输通信都是基于tcp协议进行的。为了让tcp通信更加方便需要引入一个socket模块(将网络层、数据链路层、物理层封装的模块),我们只要调用模块中的相关接口就能实现传输层下面的繁琐操作。简单的tcp协议通信模板:(需
系统 2019-09-27 17:47:19 1945
测试的过程中经常需要截取屏幕,通常的做法是使用手机自带的截屏功能,然后将截屏文件复制出来,这种方法的优点是不需要连接数据线就可截屏,缺点则是生成的截屏文件命名是随机命名的,复制出来也比较麻烦。另一种方法是使用PC端的手机助手类软件。这里使用python编写一个截屏的脚本,双击运行脚本就OK,截屏成功后会将截屏文件已当前时间命名,并保存在存放脚本的当前路径的screenshot文件夹下:#!/usr/bin/envpythonimportosimportti
系统 2019-09-27 17:47:18 1945
Python脚本有一个毛病,当使用相对路径时,被另一个不同目录下的py文件中导入时,会报找不到对应文件的问题。感觉是当前工作目录变成了导入py文件当前目录。如果你有配置文件的读取操作,然后都放在一个py文件中,而你又用的是相对路径,而且这个py文件在多个不同目录下的py文件中被导入,那就呵呵了。。。还是用绝对路径吧。解决这个问题,可以用绝对路径。当然是自动的绝对路径,而不是每次都手动给前缀赋值,让脚本自动寻找当前文件的绝对路径。此处分享在python下获取
系统 2019-09-27 17:46:48 1945
通俗的来说,Python中所谓的命名空间可以理解为一个容器。在这个容器中可以装许多标识符。不同容器中的同名的标识符是不会相互冲突的。理解python的命名空间需要掌握三条规则:第一,赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命名空间。第二,函数定义(包括def和lambda)产生新的命名空间。第三,python搜索一个标识符的顺序是"LEGB"。所谓的"LEGB"是python中四层命名空间的英文名字首字母的缩写。最里面的一层是L
系统 2019-09-27 17:46:43 1945