阻塞IO(blockingIO)在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样:当用户进程调用了recvfrom这个系统调用,kernel内核就开始了IO的第一个阶段:准备数据。对于networkio(网络io)来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel(内核)就要等待足够的数据到来。等着对方把数据放到自己操作系统内存而在用户进程这边,整个进程会被阻塞。
系统 2019-09-27 17:53:03 2225
什么是运算符?本章节主要说明Python的运算符。举个简单的例子4+5=9。例子中,4和5被称为操作数,"+"称为运算符。Python语言支持以下类型的运算符:算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级接下来让我们一个个来学习Python的运算符。一.Python算术运算符以下假设变量:a=10,b=20:注意:Python3.x里,整数除整数,得到的是浮点数。>>>1/30.3333333333333333>
系统 2019-09-27 17:52:37 2225
方法一:>>>str1='''Leventselève,ilfauttenterdevivre.起风了,唯有努力生存。(纵有疾风起,人生不言弃。)'''>>>str1'Leventselève,ilfauttenterdevivre.\n起风了,唯有努力生存。\n(纵有疾风起,人生不言弃。)'编辑的时候,引号挺对的,但是不知道为什么发布的时候,第一行的引号总是多了一些,其实应该是下面这样的:不过感觉这种方法不够纯粹,因为字符串里含有\n。方法二:>>>st
系统 2019-09-27 17:50:53 2225
Qt与Python脚本实战之一(爬虫)Python环境安装1.Python版本选择(2.7or3.6.x)版本不同区别蛮大2.安装pip一个Python包管理工具类似nodejs的npm(都是提供了海量第三方包)编写python代码实现爬取.1.需要用到的库有:Requestslxml如果没有安装的请自己安装一下(pipinstallxxx)2.IDE:pycharmorQtcreator3.python版本:3.64.代码实现的是多线程下载实现功能爬取指
系统 2019-09-27 17:49:43 2225
用户资料页面在用户资料页面,基本上没有什么特别要强调和介绍的新概念。只需要创建一个含有HTML的新视图函数模板页面即可。下面是视图函数(项目目录/views.py):@app.route('/user/')@login_requireddefuser(nickname):user=User.query.filter_by(nickname=nickname).first()ifuser==None:flash('不存在用户:'+nickname+'!')r
系统 2019-09-27 17:48:56 2225
0x01OpCodeopcode又称为操作码,是将python源代码进行编译之后的结果,python虚拟机无法直接执行human-readable的源代码,因此python编译器第一步先将源代码进行编译,以此得到opcode。例如在执行python程序时一般会先生成一个pyc文件,pyc文件就是编译后的结果,其中含有opcode序列。如何查看一个函数的OpCode?defa():if1==2:print("flag{****}")print"Opcodeo
系统 2019-09-27 17:48:42 2225
简介f-string,亦称为格式化字符串常量(formattedstringliterals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP498�CLiteralStringInterpolation,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以f或F修饰符引领的字符串(f'xxx'或F'xxx'),以大括号{}标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:Wh
系统 2019-09-27 17:48:41 2225
简介本文主要介绍python数组循环语法。主要方式有元素遍历,索引遍历,enumerate,zip,list内部等。普通循环list1=['item1','item2','item3']foriteminlist1:print(item)//结果item1item2item3根据index循环1list1=['item1','item2','item3']index=0foriteminlist1:print('index:'+str(index)+',v
系统 2019-09-27 17:47:33 2225
insert()方法插入对象obj到列表的偏移量索引。语法以下是insert()方法的语法:list.insert(index,obj)参数index--这是要插入对象obj必要的索引obj--这是将被插入到给定的列表中的对象返回值此方法不返回任何值,但它插入指定的索引处的指定元素例子下面的例子显示了insert()方法的使用#!/usr/bin/pythonaList=[123,'xyz','zara','abc']aList.insert(3,2009
系统 2019-09-27 17:46:55 2225
reload()简介作用:用于重新载入之前载入的模块语法格式:reload(module)参数:module为模块对象,必须已经被加载返回值:返回模块对象注意事项:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境。reload()会重新加载已加载的模块,重新编译模块,重新执行模块级代码,但是__init__函数不再重复执行,原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;reload
系统 2019-09-27 17:45:41 2225