linux笔试题

1,nginx中设定js,css,文件的过期时间为5分钟

复制代码
location ~.*\.(js|css)?$  
      {  
        expires 5m;  
      }

2, 请解读以下Nginx配置文件的执行内容

复制代码
http {
    map $http_x_forwarded_for $blocked_ip {
        ~*^(31\.41\.244\.|141\.98\.11\.) 1;
        default 0;
    }
    upstream backend {
        ip_hash;
        server app1:8080;
        server app2:8080;
        server app3:8080 backup;
    }
    server {
        listen 80;
        server_name myapp.example.com;
        location / {
            if ($blocked_ip) {
                return 444;
            }
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

答案:

map黑名单功能: 所有以31.41.244的IP或 141.98.11开头的IP禁止访问 如果没有匹配结果 则返回0

反向代理的负载均衡功能: 通过域名myapp.example.com访问 如果是禁止IP则返回444 如果不是则负载到后端

基于IP_hash方式进行请求转发. 访问后端8080端口的服务. 其中当 app1和app2不可用时, app3可提供服务 backup参数的作用

3,查看mysql database-binlog.000992日志中操作的命令

复制代码
mysqlbinlog database-binlog.000992 | grep -E "select|update|delete|insert into"

4,请解释什么是Rolling-update和Canary这两种部署方式,以及它们的优缺点。

复制代码
答案: 滚动更新: 一个接一个以滚动更新的方式方式发布新版本. 直至全部替换完成
金丝雀发布: 是一种将新版本部署到一小部分用户的方法,然后继续全量发布
优缺点: 如果需要保证服务的稳定性和可用性,可以选择滚动更新
如果需要测试新版本在生产环境的性能和稳定性,可以选择金丝雀发布

5. 请解释HTTP/1.1和HTTP/2的区别,以及HTTP/2相较于HTTP/1.1的改进之处

复制代码
http1.x 的解析基于文本形式, http2.0 的解析形式基于二进制形式.有更多的传输方式
http1.x 一个请求-响应,建立一个连接,每个请求都要建立一个连接.   http2.0多个请求可以同时在一个连接上,即某个连接耗时严重,也不会影响其他的连接..(多路复用,根据请求的id进行区分)
http1.x 的header头带有大量信息,每次都需要重新发送, http2.0服务端和客户端各自缓存一份头字段(header fields)表 变更更新,避免重复传输,
http2.0 具有服务端推送信息到客户端的功能,即静态资源推送.

6, 计算一年内的所有周六和周日的数量(不限任何编程语言或Shell脚本)

复制代码
#!/bin/python3
"""
 判断是否是润年.返回一年的天数
"""
def is_leap_year(year):
    if(year %4 ==0 and year %100 != 0) or (year %400 ==0):
        days_sum=366
        return days_sum
    else:
        days_sum=365
        return days_sum

"""
获取一年所有的日期
"""
def get_year_date(year):
    String_date = '%s-1-1' %year
    a = 0
    all_date_list = []
    days_sum = is_leap_year(int(year))    //判断年份是否是闰年
    while a < days_sum:
        b = arrow.get(String_date).shift(days=a).format("YYYY-MM-DD")
        a+=1
        all_date_list.append(b)
    return all_date_list



"""
判断某天是周几
"""
def judge_weekday(time_date):
    today = datetime.strptime(time_date,"%Y%m%d")
    return True if int(today.weekday()) == 5 or int (today.weekday()) == 6 else False

"""
获取所有周末
"""
def judge_weekend_days(date_list):    // 
    all_weekend_days = []
    for i in date_list:
        if judge_weekday(i):      // 调用judge_weekday函数 判断出哪天是周几
            all_weekend_days.append(i)
    return all_weekend_days


if __name__ == '__main__':
    all_date=get_year_date(2023)     //获取到2013年的所有日期
    weekends = judge_weekend_days(all_date)  //将今年所有日期传入函数 判断出那些是周末
	print (weekends)    //打印出所有的周末
相关推荐
智购科技自动售货机厂家1 分钟前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
jnrjian3 分钟前
delete file shell 让 AI 写脚本
服务器·开发语言
数字新视界7 分钟前
空调控制器AIRC800的智能化管理与应用实践
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
知已难寻14 分钟前
01 · OpenStack的认证管理 Keystone
运维·服务器·云原生·云计算·openstack
ai_xiaogui1 小时前
私有化部署大模型实战:PanelAI 一键搭建、Token 计费与多用户隔离
运维·私有化部署·大模型部署·大模型 token 计费·api key 统一管理·多用户实例隔离·应用市场一键部署
企鹅侠客1 小时前
Linux CPU 负载平均值(Load Average)详解:从原理到实践
linux·运维·服务器·服务器负载
易点云徐源1 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
吃一碗粉只付一碗钱1 小时前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#
木雷坞1 小时前
Baserow Docker部署:导入设备借用CSV,再用表单新增登记
运维·docker·容器
第404号工位1 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构