1.有100个图片,他的地址是‘http://down.xiaomi.com/img/1.png’……
到http://down.xiaomi.com/img/100.png’批量下载这些图片,并找出其中大于500kb的
方法1:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: json_steve
# 有100个图片,他的地址是‘http://down.xiaomi.com/img/1.png’......
# 到http://down.xiaomi.com/img/100.png’批量下载这些图片,并找出其中大于500kb的
import requests
def down_img(base_url, offset):
url = base_url+str(offset) + '.png'
response = requests.get(url=url)
data = response.content
if len(data) > 500*1024:
with open('gt500' + str(offset), 'wb') as f:
f.write(data)
with open('img'+str(offset), 'wb') as f:
f.write(data)
if __name__ == '__main__':
base_url = 'http://down.xiaomi.com/img/'
offset = 1
while offset <= 100:
down_img(base_url, offset)
offset +=1
方法2:
# os.path.getsize(filename)判断文件大小
import os
def down_img(base_url, offset):
url = base_url+str(offset) + '.png'
response = requests.get(url=url)
data = response.content
with open('img'+str(offset), 'wb') as f:
f.write(data)
return 'img'+str(offset)
if __name__ == '__main__':
gt500file = []
base_url = 'http://down.xiaomi.com/img/'
offset = 1
while offset <= 100:
name = down_img(base_url, offset)
offset +=1
size = os.path.getsize(name)
if size > 500 *1024:
print(name)
gt500file.append(name)
print(gt500file)
2.一个文本文件info.txt的内容如下,
aa,201
zz,502
bb,1
ee,42
其中第二列是数字,请对该文件按照数字从大到小排列
我写的很麻烦,不知道有没有简单的了
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: json_steve
# 一个文本文件info.txt的内容如下,
# aa,201
# zz,502
# bb,1
# ee,42
# 其中第二列是数字,请对该文件按照数字从大到小排列
f = open('info.txt', 'r')
string1 = f.read()
print(string1)
f.close()
lines_list = string1.splitlines()
# print(lines_list)
num_list = []
for line in lines_list:
line_list = line.split(',')
num = int(line_list[1])
num_list.append(num)
num_list1 = num_list.copy()
num_list.sort()
num_list.reverse()
index_list = []
for num in num_list:
index = num_list1.index(num)
index_list.append(index)
# print(index_list)
new_lines_list = []
for index in index_list:
line = lines_list[index]
new_lines_list.append(line)
# print(new_lines_list)
string2 = '\n'.join(new_lines_list)
print(string2)
结果:
aa,201
zz,502
bb,1
ee,42
zz,502
aa,201
ee,42
bb,1
3.查看当前linux服务器是否监听80端口,如果在监听,请找出进程id,并结束进程:
lsof -i:80
kill
4.使用curl或者wget命令获取http服务的header信息:
curl –head http://www.baidu.com
5.前段网页有哪三层构成,作用是什么?
结构层、表示层、行为层
html css js
- css 水平居中和垂直居中
水平 margin: 0 auto;
调整盒子模型
(你还是百度吧)
7.负载均衡 你了解的软件 至少三种以上,并评价其优缺点。
LVS、Nginx、HAproxy
8.time sleep 2 输出real user sys 意思与区别?
real sleep这个程序运行耗时为0m2.005s
user 这个时间代表的是sleep运行在用户态的cpu时间
sys 这个时间代表的是sleep运行在核心态的cpu时间。
9.nginx rewrite 规则中 last break redirect permanent 的含义
10.web服务中cookie和session的区别
简述cookies和session的区别 cookies:是针对每一个网站的信息,每一个网站只对应一个,其它网站不能访问,这个文件是保存在客户端的,每次你打相应网站,浏览器会查找这个网站的cookies,如果有就会将这个文件起发送出去。cookies文件的内容大致包函这些信息如用户名,密码,设置等。session: 是针对每一个用户的,只有客户机访问,程序就会为这个客户新增一个session。session里主要保存的是用户的登录信息,操作信息等。这个session在用户访问结束后会被自动消失(如果超时也会)
11.http1.0 http 1.1 下的区别 http 2.0 的主要变化和优势
HTTP 1.0规定浏览器与服务器只保持短暂的连接,
浏览器的每次请求都需要与服务器建立一个TCP连接,
服务器完成请求处理后立即断开TCP连接,
服务器不跟踪每个客户也不记录过去的请求。
HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,
例如,Connection请求头的值为Keep-Alive时,
客户端通知服务器返回本次请求结果后保持连接;
Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。
HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。
2.HTTP 1.1增加host字段;
3.100(Continue) Status(节约带宽);
4、HTTP/1.1中引入了Chunked transfer-coding来解决上面这个问题,
发送方将消息分割成若干个任意大小的数据块,
每个数据块在发送时都会附上块的长度,
最后用一个零长度的块作为消息结束的标志。
这种方法允许发送方只缓冲消息的一个片段,
避免缓冲整个消息带来的过载。
5、HTTP/1.1在1.0的基础上加入了一些cache的新特性,
当缓存对象的Age超过Expire时变为stale对象,
cache不需要直接抛弃stale对象,
而是与源服务器进行重新激活(revalidation)。
12.web常见的安全问题,不少于三项
13.请举例常见DOS攻击的类型,并介绍原理和防御方法
14.服务器遭到入侵,作为安全管理人员,你应该如何做
15.tcp三次握手
16.发现系统中存在大量TIME_WAIT 分析原因 三条以上的优化建议。
17.比较一下动态语言和静态语言
18.python代码实现删除列表中的重复元素 list(set(alist))
19. 有20台服务器,需要在所有的机器上 echo ‘123’ ,要求同时并行操作5台服务器,请shell写出相关代码。