07 2024 档案
21、flask-进阶-类视图和RESTful-前后端分离概念
摘要:前后端分离与不分离概念 前后端不分离:如 render_template('index.html', data=data) 这种就是前后端不分离前端和后端一起渲染 前后端分离: 后端返回json数据 - jsonify() 前端使用ajax来请求数据: ajax 各自处理各自的数据,代码不在一起 h
20、flask-进阶-自定义静态文件static和模板文件templates的路径配置
摘要:自定义static目录和templates目录的路径 原本flask默认的static和templates目录是在App目录下的:如下图 如果想把这两个目录更改位置,如放在根目录下: 代码如下: __init__.py from flask import Flask from .views impo
19、flask-进阶-内置对象
摘要:内置对象 g对象: global 全局对象 g对象是专门用来保存用户的数据的 g对象在一次请求中的所有的代码的地方都是可以使用的 突变变量存储位置的限制,为函数传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使用,可以保存在g对象中,就可以在其他视图中使用这个数据 r
18、flask-进阶-插件-缓存flask-caching - 钩子函数(中间件)
摘要:1.认识flask-caching插件 使用插件 1.安装 $ flask install flask-caching 2.初始化 在exts.py中导入并初始化 from flask_caching import Cache #初始化插件 cache = Cache(config={ 'CACHE
17、flask-图书简单馆项目
摘要:为了掌握模型可以练一下、以下是代码: app.py from App import create_app app = create_app() if __name__ == '__main__': app.run(debug=True) views.py from flask import Blue
16、flask-模型-models-表的操作-多表操作-多对多
摘要:代码如下: 变化的只有models.py和views.py models.py """ 用户 : 电影 = N : M """ # 中间表 : 收藏电影的用户 collect = db.Table( 'collects', db.Column('user_id', db.Integer, db.Fo
15、flask-模型-models-表的操作-多表操作-一对多
摘要:这里选择学生表和班级表作为案例 app.py from App import create_app app = create_app() if __name__ == '__main__': app.run(debug=True) # 运行: flask run --debug views.py i
15、flask-模型-models-表的操作-分页paginate()
摘要:paginate()的属性 属性名 说明 items 返回当前页的内容列表 has_next 是否还有下一页 has_prev 是否还有上一页 next(error_out=False) 返回下一页的pagination对象 prev(error_out=False) 返回上一页的Paginatio
14、flask-模型-models-单表的操作-增删改查
摘要:1.单表操作 1.修改表结构 接着上一步的数据迁移后、生成了表,接下来就要对表的操作 这里稍微对表结构改了一下 models.py from .exts import db #导入db对象 class User(db.Model): # 表名 __tablename__ = 'user' # 字段
13、flask-模型-models-模型配置使用-数据迁移
摘要:1.配置数据库 __init__.py #__init__.py: 初始化文件、用来创建flask应用 from flask import Flask from .views import blue #蓝图 from .exts import init_exts #导入插件模块 exts.py de
linux-批量修改文件内容
摘要:1.批量修改文件内容 $find . -type f -exec sed -i 's/oldname/newname/g' {} + #此命令含义:在当前目录及其所有子目录中查找所有文件,并对这些文件执行 sed 命令,将文件内容中的所有 oldname 字符串替换为 newname。 #find
N1盒子玩法-内网穿透公网访问
摘要:Markdown Example 内网穿透 🤬什么是内网穿透 在开始之前先了解什么是内网穿透吧! 内网穿透就是将内网(可以看作是家庭网络)通过nat建立一条与公网之间的隧道、将内网的流量通过这条隧道发布到公网 参考一下内部文章:NAT网络与内网穿透原理 🛠 内网穿透工具 个人尝试过的工具: cp
7、nginx-日志模块的格式-log_format main、access.log(访问服务器记录的日志)
摘要:日志模块的名称:ngx_http_log_module 路径:vim /etc/nginx/nginx.conf 相关指令: ·日志格式:log_format nginx有非常灵活的日志模式,每个级别的 配置可以有各自独立的访问日志、日志格式通过log_format命令定义 ··语法Syntax:l
5、nginx-主配置文件解析
摘要:路径:vim /etc/nginx/nginx.conf · CoreModule-核心模块(进程数等):全局/核心块:配置影响nginx全局的指令、一般运行nginx服务器的用户组、nginx进程pid存放的路径、日志存放的路径、配置文件引入、允许生成workerprocess数等 CoreMod
系统漏洞整改-sshd
摘要:Linux禁止root用户ssh登录 出于安全考虑,需要禁止使用root用户通过ssh远程登录Linux 禁用root用户远程登录后,需要提供一个权限用户用于ssh远程登录 1、创建拥有sudo权限的用户 ·创建一个普通账户eapp:adduser eapp · 授权账户目录权限 # 创建bgx_u
N1盒子玩法-原系统刷istoreOS系统
摘要:Markdown Example N1盒子刷系统 准备工作 💬 先在咸鱼上淘一个价钱可观的N1斐讯盒子 💯 准备一个U盘,最好是32G的(多准备几个) 👽 下载刷系统的镜像 🤖 写盘工具 👻 准备开始 注意:我这里买的是原系统的N1盒子,如果有条件可以买已经刷好系统的(就不必要往下看了)
N1盒子玩法-Alist+阿里云盘+小雅-搭建家庭影院
摘要:Markdown Example 小雅安装 🚀前景摘要 💬 本文是基于N1盒子软路由写的,当然有服务器更好 💯 已安装docker,有一丢丢基础即可 👽 确定你已经拥有了云盘(如阿里云盘) 🤖 已安装Alist并已挂载云盘 👻 开始搭建个人影院吧 Alist如何挂载阿里云盘看:N1盒子挂
N1盒子玩法-挂载阿里云盘-Alist工具
摘要:Markdown Example N1盒子挂载阿里云盘 安装Alist 手动安装 参考:官方文档 step 1 step 2 配置-启动 step 3 打开web网页:http://192.168.1.254:5244/ 登录界面、拉到下面-点击管理 step 4 参考文档:https://alis
N1盒子玩法-挂载磁盘-解决盒子重启后无法自动挂载问题
摘要:Markdown Example N1盒子挂载磁盘 挂载步骤: step 1 step 2 如果提示挂载已存在、就先卸载挂载分区 step 3 回到首页重新挂载 step 4 此时已经挂载成功、但是默认的挂载名是随机的如:usb1-1这样的就会存在一个问题、当N1盒子重启的时候就会不能自动挂载 所以
websocket-会话保持
摘要:Markdown Example websocket-会话保持 什么是websocket #数据以二进制传输的 WebSocket 是一种协议,用于在 Web 应用程序中创建实时、双向的通信通道。 WebSocket 协议本身并不提供安全性和加密功能 为了提供安全的 WebSocket 通信,可以在
NAT网络与内网穿透原理
摘要:Markdown Example NAT 网络地址转换 #NAT 网络地址转换原理: 网络地址转换 (NAT) 是一种在数据包通过路由设备传输时,通过修改数据包 IP 报头中的网络地址信息 将一个 IP 地址空间重新映射为另一个 IP 地址空间的技术。 该技术最初用作快捷方式,以避免在移动网络时需要
http和https协议
摘要:Markdown Example http 与 https http和https HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。 HTTP之所以会被HTTPS取代,最重要的原因,就是不安全。为什么不安全? -- 按传输层 TCP/IP
网络的四层五层七层网络
摘要:Markdown Example 聊聊网络协议 参考:https://zhuanlan.zhihu.com/p/665914921 参考:https://blog.csdn.net/weixin_43988680/article/details/123754721 网络的七层协议概念 1、物理层:这
linux-Rsyslog自定义配置json模板
摘要:配置日志接收模板和转发 参考:https://www.cnblogs.com/xwupiaomiao/p/17565418.html 服务端(接收端) 自定义模板配置文件 在主配置文件中添加(rsyslog.conf) include(file=“/etc/rsyslog.d/*.conf” mod
rsyslog配置(服务端、客户端)-relp协议转发
摘要:rpm下载:https://centos.pkgs.org/7/centos-x86_64/ RELP转发方式 场景:日志服务器接收user.notice输出级别的日志,当然可以配置成任何其他级别。 在日志服务器我们做了配置:user.notice /var/log/remote-operation
rsyslog配置(服务端、客户端)-UDP-TCP转发-imfile自定义应用程序的日志推送
摘要:## 概念 #Syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易
linux 路由基本命令的使用
摘要:Markdown Example linux route 命令 route 命令可以显示或设置 Linux 内核中的路由表,主要是静态路由 对于局域网中的 Linux 主机,要想访问 Internet,需要将局域网的网关 IP 地址设置为这个主机的默认路由。 在命令行中通过 route 命令添加的路
linux 路由表详解-追踪路由
摘要:Markdown Example linux 路由表详解 通过 route 命令查看 Linux 内核的路由表: $route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default
k8s常用命令
摘要:集群管理 1. 查看集群节点状态: $kubectl get nodes 2. 查看集群资源使用情况: $kubectl top nodes 3. 查看集群信息: $kubectl cluster-info 4. 获取节点详细信息: $kubectl describe node <node-name
markdown语法
摘要:This is red //字体颜色 漢 ㄏㄢˋ // 特殊字 Ctrl+F9 // 按键标识 Bigger //字体大小和背景 字体及字体颜色和大小 字体颜色 居左文本 居中文本 居右文本 使用span或者font标签,同时用style属性控制样式。 点击时的区域标题:点击查看详细内容 - 测试
docker配置代理
摘要:title: docker配置代理 categories: - docker tags: - docker abbrlink: c8e05f01 date: 2024-06-16 22:41:34 docker配置代理 老方法配置 proxy.conf (亲测有效-需要魔法) 创建配置文件目录 mk
k8s集群安装-kubeadm安装
摘要:title: k8s集群安装-kubeadm安装 tags: - k8s - kubeadm categories: - k8s abbrlink: c38bf18e date: 2024-07-02 20:51:28 kubeadm 安装集群 准备工作 角色 IP 组件 k8s-master 19
30、Django-项目部署-nginx
摘要:原理: 安装: 配置: - 这里uwsgi_pass 表示使用uwsgi协议转发代理 - include 表示加载uwsgi协议的参数(固定) - nginx -t #检查配置文件语法 修改uWSGI: socket 表示启用uwsgi协议
29、Django-uWSGI项目部署
摘要:WSGI(Web Server Gateway Interface)Web服务器网关接口、是Python应用程序或框架和Web服务器之间的一种接口、被广泛使用 使用python manage.py runserver 通常只是再开发测试环境中使用 当开发结束后、完善的项目代码需要在一个高效稳定的环境
28、Django-发送邮件
摘要:SMTP全称是(Simple Mail Transfer Protocol)即简单邮件传输协议(端口是25) - 他是一组用于从源地址到目的地址传输邮件的规范、通过它来控制邮件的中转 - 属于推送协议 - 负责发送 IMAP-邮件相关协议(Internet Mail Access Protocol)
27、Django-文件上传
摘要:上传规范: 1、文件上传必须为POST提交方式 2、表单'<form>'中文件上传时必须带有 enctype="multipart/form-data"时才会有包含文件内容的数据 3、表单中用<input type="file" name="xxx"> 标签上传文件 #在视图函数中 - 用reque
26、Django内建用户系统
摘要:官方文档:https://docs.djangoproject.com/en/2.2/topics/auth 基本 字段 模型类位置: -- from django.contrib.auth.models import User
25、Django-生成csv文件
摘要:python提供了内建库 - csv、可以直接通过改库操作csv文件 案例如下: 写入csv文件 import csv with open('eggs.csv', 'w', newline='') as csvfile: write = csv.writer(csvfile) write.write
24、Django-网站分页功能-Pagintor类
摘要:-Django提供了Paginator类可以方便的实现分页功能 -Painator 类 位于 django.core.pagintor 模块中 负责分页数据整体的管理 对象的构造方法: paginator = Paginator(object_list, per_page) - 参数: - obje
23、Django-CSRF跨站伪造请求攻击
摘要:配置: 1、在settings.py中确认MIDDLEWARE中 确保 -- django.middleware.csrf.CsrfViewMiddleware 打开 2、在模板中、form标签下添加如下标签: -- {% csrf_token %} #这个就是页面中的暗号 案例 views.py
22、Django-中间件-Middleware
摘要:1、中间件是Django请求/响应处理的钩子框架、他是一个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出 2、中间件以类的形式体现 3、每个中间件组件负责做一些特定的功能、例如:Django包含一个中间件组件AuthentucationMiddleware、它使用会话将用户与请求
21、Django-缓存(强缓存和协商缓存)-@cache-page()装饰器
摘要:定义:缓存是一类可以更快的读取数据的介质的统称、也指其它可以加快数据读取的存储方式、一般用来存储临时数据、常用介质的是读取速度很快的内存 意义:视图渲染有一定的成本、数据库的频繁查询过高、所以对于低频变动的页面可以考虑使用缓存技术、减少实际渲染的次数、用户拿到相应的时间成本会更低 缓存优化:当请求视
20、Django-会话-cookie和session-2
摘要:session是在服务器上开辟一段空间用于保留和服务器交互时的重要数据 实现方式: -- 使用session需要在浏览器客户端启动cookie、且在cookie中存储session -- 每个客户端都可以在服务器端有一个独立的session -- 注意:不同的请求者之间不会共享这个数据、与请求者一一
19、Django-会话-cookie和session-1
摘要:会话定义: -- 从打开浏览器访问一个网站开始到关闭浏览器为止、称之为一次会话 -- http协议是无状态的、导致会话状态难以保持 cookie和session就是为了保持会话的技术 cookies: -- 保存在客户端浏览器上的存储空间 -- 查看cookie: -- chrom:开发者工具-》A
18、Django-admin管理后台-Meta类
摘要:1、先执行数据库迁移 -- python manage.py makemigrations -- python manage.py migrate 2、在cmd终端先创建管理员账户 -- python manage.py createsuperuser 3、登录 -- http://127.0.0.
17、Django-聚合查询-原生sql语句操作raw()
摘要:聚合查询:整表聚合和分组聚合 1、整表聚合 -- 不带分组的聚合查询是指:将全部数据进行集中统计查询 -- 需要导入: -- from django.db.models import * -- 聚合函数:Sum,Avg,Count,Max,Min -- 语法: -- <model_name>.obj
Django-静态文件-图片音乐视频
摘要:一般访问static路径下的图片: 1、views.py from django.shortcuts import render def test_static(request): return render(request, 'test_static.html') 2、urls.py from d
Django-url的反向解析
摘要:反向解析: -- 使用path动态名称来查找相应的路由、而不用考虑什么相对路径和绝对路径 在模板中使用url的别名: 1、views.py from django.http import HttpResponse from django.shortcuts import render #模板中传参
pycharm 无法加载文件activate.ps1的原因分析及解决方法-无法加载虚拟环境
摘要:在窗口打开Windows Powershall在windows以管理员的身份运行 get-executionpolicy 获取策略 set-executionpolicy remotesigned 执行 选择 1 再选择Y 即可 Set-ExecutionPolicy -Scope CurrentU
16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()
摘要:一对一不是数据库的一个连表操作、而是Django独有的一个连表操作、一对一相当于是特殊的一对多的关系、只是相当于加了unique=True models.py from django.db import models #身份证 class IDCard(models.Model): idcard_n
15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()
摘要:针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表 models.py from django.db import models # Create your models here. #多对多 #用户表:电影 = N:M #一个用户可以收藏多部电影 #一部电影可
14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()
摘要:#多模块关联 -- 关联分类:Django中的三个函数 -- ForeignKey-称为外键:一对多、将字段定义在多的一端中 -- ManyToMnayField:多对多、将字段定义在两端的任意一端中 -- OneToOneField:一对一、将字段定义在任意一端中 如:一对一: 一对多: 多对多:
13、 Django-mysql配置
摘要:在setting.py中 #sqlite的配置 # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } # } #mysql的配置
Linux 多网卡绑定(AB网-ip漂移)-bonding机制-ifenslave工具
摘要:作用:主备网卡 所谓的多网卡绑定就是将多张物理网卡逻辑上组成一个网卡,这样就可以防止一块网卡坏了网络瘫痪,也能起到提升网络带宽的作用。 把多块网卡绑定在一起,一般有两种工作模式可以选择,轮询模式和主备模式 - 轮询模式:例如把两块网卡绑定在一起,此时两块网卡都处于工作状态,它们轮流处理数据包,从而提
12、flask-模型-models
摘要:ORM Flask通过Model操作数据库、不管你数据库的类型是Mysql或者是sqlite、Flask自动帮你生成相应的数据库类型的sql语句、所以不需要关注sql语句和类型、对数据库的操作flask会自动帮我们完成 Flask使用关系映射(Object Relational Mappong, 简
11、flask-模板-templates
摘要:模板Templates 模板是呈现给用户的界面 在MVT架构中充当T的角色、实现了MT的解耦、开发中VT有着N:M的关系,一个V可以调用任意T,一个T可以被任意V调用 模板处理分为两个过程: - 加载HTML - 模板渲染(模板语言) 模板代码包含两个部分: - 静态HTML - 动态插入的代码段(
10、flask-会话-session
摘要:session会话 是一种服务器端的会话技术、依赖于cookie 特点: - 服务端的会话技术 - 所有数据存储在服务器中 - 默认存储在内存中 - 存储结构也是key-value形式的键值对 - session是离不开cookie的 Flask中的session是全局对象 常用操作: - 设置se
9、flask-会话-cookie
摘要:Cookie 客户端的会话技术: - cookie本身由浏览器保存,通过response将cookie写道浏览器上、下一次访问时、浏览器会根据不同的规则携带cookie过来 特点: - 客户端的会话技术、浏览器的会话技术 - 数据全都是存储在客户端中 - 存储使用的键值对结构进行的存储 - 特性:
8、flask-Redirect重定向
摘要:# 路由 + 视图函数 from flask import Blueprint, request, render_template, jsonify, Response, redirect, url_for # from models import * #蓝图 # 创建蓝图对象 # 第一个参数:蓝图
7、flask-response响应
摘要:# 路由 + 视图函数 from flask import Blueprint, request, render_template, jsonify, Response # from models import * #蓝图 # 创建蓝图对象 # 第一个参数:蓝图的名字 # 第二个参数:蓝图的包名 b
6、flask-request请求
摘要:request属性: 1.url 完整的请求地址 2.base_url 去掉GET参数的URL 3.host_url 只有主机和端口号的URL 4.path 路由中的路径 5.method 请求方法 6.remote_addr 请求的客户端地址 7.args GET请求参数 8.form POST请
5、flask-路由参数
摘要:这里延续上一节的内容 # 路由 + 视图函数 from flask import Blueprint # from models import * #蓝图 # 创建蓝图对象 # 第一个参数:蓝图的名字 # 第二个参数:蓝图的包名 blue = Blueprint('user', __name__,)
4、flask-项目拆分
摘要:项目的拆分其实就是将app.py中的工作拆分开来、类似Django一样、每个项目都把路由模板和试图函数分开写 app.py # 路由 + 视图函数 from flask import Blueprint from models import * #蓝图 # 创建蓝图对象 # 第一个参数:蓝图的名字
3、flask-模板渲染
摘要:模板渲染其实就是静态文件的展示 app.py import os from flask import Flask, render_template, jsonify app = Flask(__name__) @app.route('/') def home(): return 'flask hom
2、flask-run启动参数详解 - run参数无效解决方法
摘要:app.py 这里app.run(True, port=5001, host='0.0.0.0') from flask import Flask #创建flask应用对象 app = Flask(__name__) @app.route('/') # 路由 def hello_world(): #
1、flask-基本架构-MVT - 虚拟环境的安装 - 创建flask应用
摘要:flask基本架构图 创建虚拟环境 #1. 打开cmd或pycharm都可以(确保安装python环境) #2. 安装虚拟环境模块-windows - pip install virtualenv virtualenvwrapper-win #3. 查看虚拟环境 - workon #4. 创建虚拟环
k8s-核心组件
摘要:核心组件组成 Kubernetes 主要由以下几个核心组件组成: - etcd :保存整个集群的状态 - API Server:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 - Controller Manager:负责维护集群的状态,如故障检测、自动扩展、滚动更新等
12、 Django-模型models的基本操作-增删改查
摘要:一般的数据库操作流程: 1、创建数据库,设计表结构和字段 2、连接Mysq1数据库,并编写数据访问层代码 3.业务逻辑层去调用数据访问层执行数据库操作 Diango通过Mode1操作数据库,不管你数据库的类型是MySql或者Sqlite, Django自动帮你生成相应数据库类型的SQL语句,所以不需
11、 Django-模型基础-models-ORM框架-管理器对象
摘要:# 概述 django根据属性的类型确定以下信息 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认htm1控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后则django不会再生成默认的主键列 #属性命名限制 ·
10、 Django-模板-templates
摘要:模板语法 #模板中的变量 语法:{{ var }} 如果变量不存在、则插入空字符串 #方法不能有参数 {{ int }} {{ str }} {{ list }} {{ list.0 }} {{ dict }} {{ dict.a }} #dict['a'] {{ func }} #传递函数 {{
9、 Django-重定向-Redirect
摘要:导入模块 from django.shortcuts import redirect, reverse 概念:在视图函数中做跳转到其它页面 如: 1、views.py from django.shortcuts import render from App_route.models import *
8、 Django-路由-router-路由传参
摘要:路由传递参数:通过在路由的后跟 /<数据类型:参数>/ 将参数传递给指定的视图函数views.py -- 这个参数可以是变量、而这个变量可以从html中获取 如: models.py from django.db import models #传教字段 class UserModel(models.
7、 Django-路由-router-页面跳转
摘要:概念: 在实际开发过程中、一个Django项目会包含很多的app、这时候如果我们只在主路由里进行配置就会显得杂乱无章、 所以通常在每个app中创建各自的urls.py路由模块、然后从根路由出发、将app所属的url请求、全部转发到相应的urls.py 模块 而这个从主路由转发到各个应用的路由的过程叫
6、Django-管理员界面-admin
摘要:概念: Django的admin界面是自动生成的,它根据你的模型类自动创建表单和列表视图。你只需将模型类注册到admin界面,就可以轻松地管理和操作数据库中的数据。 admin界面提供了各种功能,包括: 列表视图:以表格形式展示数据库中的数据,支持分页、搜索和排序功能,方便快速浏览和筛选数据。 表单
5、Django-模型-models
摘要:概念: 基本模板:模板 其实就是我们使用的HTML写好的页面 -- 先在应用的目录下创建模板文件夹templates、然后在templates中创建模板文件、如html -- 最后在views.py中去渲染模板、使用render函数将模板返回给用户:return render(request, '.
4、Django-子路由-urls--分布式路由
摘要:1、视图函数:views.py from django.shortcuts import render from django.http import HttpResponse #函数1 def app_test1(request): #return HttpResponse("hello worl
2、Django-视图函数-views.py
摘要:1、编写视图 urls.py __________________________________________________________________________ from django.contrib import admin from django.urls import pat
1、Django部署
摘要:1、先创建一个虚拟环境: 1、安装虚拟环境模块: -- linux:pip3 install virtualenv -- windows:python -m pip install virtualenv 2、创建虚拟环境(建议虚拟环境统一放在一个目录下) -- virtualenv <环境名-也就是
14、爬虫-异步协程爬取西游记小说-aiohttp-aiofiles
摘要:注意:有关所有的IO操作都要加上:await 挂起 """ https://dushu.baidu.com/pc/detail?gid=4306063500 #小说网站 https://dushu.baidu.com/api/pc/getCatalog?data={%22book_id%22:%22
13、爬虫-协程-asyncio和异步操作-aiohttp
摘要:概念:当程序sleep或者input、output等待的时候、cpu是处于堵塞状态的、cpu此时是不再为我们的代码服务的、所以协程就是当遇到了前面这种情况的时候可以选择性的切换到其他任务上 同步协程:asyncio 当程序在睡眠的时候注意加上: await asyncio.sleep(2) """
11、爬虫-代理
摘要:""" 通过第三方的ip去请求 """ import requests #8.130.39.155:3389 proxies = { "https":"http://58.20.248.139:9002", } headers = { "User-Agent":"Mozilla/5.0 (Windo
10、爬虫-requests的使用-session()、防盗链
摘要:#会话-cookie的使用 requests.session() """ 先登录网站、找到llogin相关的url 得到cookie、拿到format Data中的信息 带着cookie去请求url 使用cookie去访问(session-会话)该网站其它内容的时候都会带着cookie """ im
9、爬虫-xpath-selenium爬取网页隐藏元素
摘要:安装:pip install lxml 1、导入:from lxml import etree 2、创建对象: tree = etree.XML(xml文件) tree = etree.HTML(html文件) 等 3、找标签: tree.xpath("//book/name/text()") 4、
8、爬虫-beatifulsoup-bs4
摘要:beatifulsoup的概念:Beautiful Soup就是Python的一个HTML或XML的解析库,可以用它方便地提取页面的数据。 1、安装bs4:pip install bs4 2、使用:from bs4 import BeautifulSoup 3、创建对象:BeautifulSoup(
7、爬虫-爬取音乐
摘要:1、查找请求音乐播放的请求 url地址:以酷我音乐为例 拿到url 对url进行分析 :https://www.kuwo.cn/api/v1/www/music/playUrl?mid=326968713&type=music&httpsStatus=1&reqId=bf6ff0b0-acb0-11
6-爬虫-数据存储
摘要:分类: 文本类型数据:txt、csv、execl、数据库 多媒体类型:图片、音乐、视频 """ y音频存储 """ import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWe
5、爬虫-数据的提取-xpath-html中提取
摘要:从哪里提取:html、json、xml 实现方式:正则、截取、xpath、css、bs4 这里使用xpath工具: ·安装:pip install lxml """ 使用xpath工具 提取网页中视频的标题 """ import requests from lxml import etree #使用
4、爬虫-数据获取之双R(CS/BS)与chrom检查工具使用-requests请求
摘要:模拟客户端请求服务端: ·模拟请求行和请求头、请求体 """ 模拟客户端请求 获取静态数据和动态数据 使用python自己去构造请求 使用request """ """ 请求的构成: 请求行、请求头、请求体 """ ###########################静态页面加载请求的######
3、爬虫-selenium-获取用户cookie的使用
摘要:注意这里使用的是chrom浏览器、所以要下载对应版本的chromdriver.exe工具、且放在同一文件目录下或者在电脑中设置环境变量、或者放在pycharm安装目录下的 E:\installDir\python\Scripts 路径下即可 chromedriver-120.exe from sel
2、爬虫-安装anaconda工具
摘要:1、官网:https://www.anaconda.com/download-success 2、一直下一步安装即可 3、打开 4、输入:jupyter notebook 打开有一个浏览器的界面 5、右上角点击new新建python3(ipykernel)
1、python-爬虫-request和beautifulsoup4模块-Fidder爬取网页工具
摘要:1、安装模块 >beautifulsoup4模块依赖于lxml模块 pip install lxml -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pip install beautifulsoup4 -i http
5、ELK-Kibana-部署(源码安装)-用于展示日志
摘要:1、下载源码包:wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz 2、解压、将解压后的文件拷贝到/usr/local: ·tar -xf kibana-4.3.1-linux-x64.tar.gz
4、ELK-logstash部署-用于收集日志
摘要:部署在192.168.177.11服务上 #以下操作 两台服务器都要操作 1、下载并安装GPGKey: rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 2、准备yum仓库:vim /etc/yum.repos.d/logs
3、ELK-部署-yum源部署-elasticsearch-部署--用于存储日志
摘要:1、部署 elasticsearch #准备两台服务器做主从集群: #一台:192.168.177.10 elk-node-2 #一台:192.168.177.14 elk-node-1 #以下操作两台服务器一样都要操作 1、下载GPG-KEY(用于yum仓库下载elastic时签名验证):rpm
2、ELK-部署-手动源码包部署
摘要:1、部署jdk 2、部署elasticsearch [root@mes ~]# useradd elsearch #创建运行用户 [root@mes ~]# echo "123456" | passwd --stdin "elsearch" #设置密码 [root@mes ~]# tar xzf e
50、k8s-DashBoard(k8s的web)-部署
摘要:1、下载yaml文件:https://github.com/kubernetes/dashboard/blob/v2.0.0/aio/deploy/recommended.yaml 2、修改yaml文件的service 配置: kind: Service apiVersion: v1 metadat
48、k8s-安全认证-授权管理-角色创建、用户绑定角色
摘要:授权发生在认证成功之后、同i过认证就可以知道请求用户是谁、然后kubernetes会根据事先定义的授权策略来决定用户是否有权限访问、这个过程就称为授权 每个发送到APIServer的请求都带上了用户和资源的信息:比如发送请求的用户、请求的路径、请求的动作等、授权就是根据这些信息和授权策略进行比较、如
47、k8s-安全认证-认证管理
摘要:kubernetes集群安全的最关键点在于如何识别并认证客户端的身份、它提供了三种客户端身份认证方式: ·HTTP Base认证:通过 用户名+密码的方式认证 ··这种认证方式是把 用户名和密码 用Base64算法进行编码后的字符串放在http请求中的header Authorization域里发送
46、k8s-安全认证-访问控制
摘要:kubernetes作为一个分布式集群的管理工具、保证集群的安全性是一个很重要的任务、所谓的安全性其实就是保证对kubernetes的各种客户端进行认证和鉴权的操作 客户端: 在kubernetes集群中、客户端通常有两类 ·User Account:一般是独立于kubernetes之外的其它服务管
45、k8s-数据存储-配置存储-secret-(用于存储配置信息的-比configMap安全)-密文存储
摘要:作用:用于存储敏感信息、例如密码、密钥、证书等 实验:创建secret、再将secret挂载到容器里去、使用容器查看 secret存储的信息 1、先 使用base64 对数据进行编码 ·echo -n 'admin' | base64 YWRtaW4= ·echo -n '123456' | bas
44、k8s-数据存储-配置存储-configMap-(用于存储配置信息的)
摘要:概念:ConfigMap是一种比较特殊的存储卷、它主要的作用是用来存储配置信息的 其模板如下: 1、创建配置卷的yaml文件:vim configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: configmap namespace:
41、k8s-数据存储-基本存储-NFS(网路文件存储系统)
摘要:HostPath可以解决数据持久化的问题、但是一旦node节点故障了、pod如果转移到别的节点、又会出现问题、此时需要准备单独的网络存储系统、比较常用的 有: ·NFS ·CIFS NFS是一个网络问卷存储系统、可以搭建一台NFS服务器、然后将pod中的存储直接连接到NFS系统上、这样的话、无论po
40、k8s-数据存储-基本存储-HostPath(节点主机存储)
摘要:HostPath即使将node主机中的一个实际的目录挂载到pod中、以供容器使用、这样的设计就可以保证pod销毁了、但是数据依然可以存在Node主机上 案例: 1、创建yaml文件: apiVersion: v1 kind: Pod metadata: name: volume-hostpath n
39、k8s-数据存储-基本存储-EmptyDir(空目录)
摘要:EmptyDir EmptyDir(空目录)是最基础的Volume类型、一个EmptyDir就是Host上的一个空目录、 EmptyDir是在pod分配到Node时创建的、它的初始化内容时空的、并且无需指定宿主机上对应的目录文件、因为kubernetes会自动分配一个目录、当pod销毁时、Eempt
37、k8s-ingress-https代理--TLS传输层安全协议(证书的生成)
摘要:在上一个实验基础上进行:使用上一个实验的deployment、pod、和ingress-nginx 1、先生成证书: ·openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -
36、k8s-Ingress的使用-搭建ingress-nginx服务和ingress-controller控制器--http代理
摘要:1、搭建ingress服务环境(安装ingress-controller控制器)--这里使用nginx做负载均衡 1、创建文件: ·mkdir /opt/ingress ·cd /opt/ingress 2、获取ingress-nginx和ingress控制器的yaml文件: ##创建ingress
35、k8s-Ingress介绍-类似于service的一种类型、比service强大
摘要:前面提到:service对集群之外暴露服务的蛀牙方式有两种:NodePort和LoadBalancer、但是这两种方式都有一定的缺点: ·NodePort方式缺点是会占用很多集群机器的端口、那么当集群服务变多的时候、这个缺点就越发明显 ·LB方式的缺点是每个service需要一个LB,浪费、麻烦、并
34、k8s-service类型-第五种-ExternalName-将外部服务接入到集群内部
摘要:概念:ExternalName类型的service用于引入集群外的服务、它通过externalname属性指定外部一个服务的地址、然后在集群内部访问此service就可以访问到外部的服务了 案例 1、新建ExternalName的yaml文件:vim service-externalname.yam
33、k8s-service类型-第四种-LoadBalancer-(与nodeport类似、需要外部环境支持)-外部访问
摘要:概念:LoadBalancer和NodePort相似、目的都是向外暴露一个端口、区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备、而这个设备需要外部环境的支持、 外部请求发送到这个外部设备、会备设备负载之后转发到集群之中
32、k8s-service类型-第三种-NodePort(常用)-外部访问
摘要:概念:前面的两种service类型(Cluster IP和HeadLiness)只能集群内部才可以访问、如果希望service暴露给外部使用、那么就要使用到另外一种类型的service、 NodePort类型:NodePort的工作原理其实就是 将service的端口映射到Node节点的一个端口上、
31、k8s-Service的类型-第二种-HeadLiness(属于Cluseter IP类型的)-只支持域名访问
摘要:概念:在某些场景中,开发人员不想使用service提供的负载均衡功能、而希望自己来控制负载均衡策略、针对这种情况、kubernetes提供了HeadLiness service 这类service不会分配Cluster IP 、如果想要访问Service、只能通过service的域名访问 测试 1、
30、k8s-service类型-ClusterIP(默认值、属于Cluster IP类型的)-分配的IP只能在集群内部访问
摘要:实验:实验Deployment控制器创建三个pod、pod里面创建nginx、pod暴露80端口、再创建一个service服务来对pod里的nginx进行访问(service切换不同的类型) 1、部署deployment和pod 1、先准备deployment下的pod ·创建yaml文件:vim
29、k8s-service的类型-四种-ClusterIP、NodePort、LoadBalancer、ExternalName
摘要:service的资源清单 vim service.yaml apiVersion: v1 kind: Service metadata: name: sevice namespace: dev spec: selector: #标签选择器、用于确定当前service代理哪些pod app: ngin
28、k8s-service-简介-kube-proxy-ipvs
摘要:概念:在kubernetes中、pod是应用程序的载体、我们可以通过pod的ip来访问应用程序、但是pod的ip地址是不固定的、这也就意味着不方便直接采用pod的ip对服务进行访问 为了解决这个问题、kubernetes提供了service资源、service会对提供同一个服务的多个pod进行聚合、
27、k8s-pod的控制器-第六种-CronJob(CJ)-定时执行Job任务(控制job控制器)
摘要:概念:CronJob控制器以Job控制器资源为其管控对象、并借助它管理pod资源对象、Job控制器定义的作业任务在其控制器资源创建之后便会立即执行、 但CronJob可以以类似于linux操作系统的周期性任务作业计划的方式控制其运行的 时间点 及 重复运行的方式、也就是说、CronJob可以在特定的
26、k8s-pod的控制器-第五种控制器-Job-处理一次性任务的pod
摘要:概念:Job主要用于负责批量处理(一次要处理指定数量的任务)短暂的一次性(每个任务仅运行一次就结束)的任务 Job特点: ·当Job创建的pod执行成功时、Job将记录成功结束的pod数量 ·当成功结束的pod达到指定的数量时、Job将完成执行 Job的资源清单文件: vim job.yaml ap
25、k8s-pod的控制器-第四种-DaemonSet(DS)-有几个node就自动创建几个pod
摘要:概念:DaemonSet类型的控制器可以保证集群中的每一台(或指定)节点上都运行一个副本、一般适用于日志收集、节点监控场景等、也就是说、如果一个pod 提供的功能是节点级别的(每个节点都需要且只需要一个)、那么这类pod就适合使用DaemonSet类型的控制器创建 DaemonSet的特点: ·每当
24、k8s-pod的控制器-第三种-HPA(Horizontal Pod Autoscaler)-自动调整pod的数量
摘要:监测pod的使用情况来做调整 概念:HPA可以获取每个pod的利用率、然后和HPA中定义的指标(如cpu、内存等使用情况)进行对比、同时计算出需要伸缩的具体值、最后实现pod数量的调整、其实HPA与之前的Deployment 控制器一样、也属于一种kubernetes资源对象、它通过追踪分析目标po
23、k8s-pod的控制器-第二种-Deployment(Deploy)-pod的增减(edit、scale)-更新(set镜像)策略(pod重建更新、滚动更新)-rs版本回退(--record)-金丝雀发布(pause、resume)
摘要:概念:Deployment控制器是在Replicaset基础上衍生而来的、Deployment是通过控制Replicaset来间接管理pod的、所以Deployment的功能比Replicaset强大、也常用 Deployment的功能: ·支持Replicaset的所有功能 ·支持发布的停止、继续
22、k8s-pod的控制器-第一种-ReplicaSet(RS)
摘要:作用:ReplicaSet的主要作用是保证一定数量的pod能够正常的运行、他会: ·持续监听这些pod的运行状态、一旦发生故障、就会重启或重建、 ·同时它还支持对pod数量的扩容、缩减pod和版本镜像的 升级 1、创建Rs:新建文件 apiVersion: apps/v1 kind: Replica
20、k8s-污点(Taints)--针对node设置和容忍(Toleration)--针对pod设置
摘要:污点(Taints): ·前面的调度方式都是站在pod上添加属性、来确定pod是否要调整到指定的Node上、其实我们也可以站在Node的角度上、通过添加污点属性、来决定是否允许pod调度过来 ·Node被设置上污点后就和pod之间存在了一种相斥的关系、进而拒绝pod调度进来、甚至可以将已存在的pod
19、k8s-pod调度-自动调度、定向调度、亲和性调度
摘要:概念:在默认请款下、一个pod在哪个节点上运行、是由Scheduler组件采用相应的算法计算出来的、这个过程是不受人为控制的。 kubernetes提供了四种调度方式: ·自动调度:由Scheduler来计算pod运行在哪个节点上(默认的) ·定向调度:由人为定义的NodeName、NodeSele
18、k8s-pod的生命周期-重启策略(Always、OnFailure、Nerver)
摘要:实例:容器如果探测、获取不到http地址的话、让容器不再尝试重启(Nerver) 1、新建yaml文件:vim pod-restartpolicy.yaml apiVersion: v1 kind: Pod metadata: name: pod-restartpolicy namespace: d
17、k8s-pod的生命周期-主容器-容器探测(livenessProbe-存活性探针、readinessProbe就绪性探针)
摘要:概念: 上面的两种探针目前均支持三种探测方式: ·Exec命令:在容器内执行一次命令、如果命令执行的退出码为0、则人为程序正常、否则不正常 ........ livenessProbe: exec: command: - cat - /tmp/health ........ 实例 1、创建yaml文
16、k8s-pod的生命周期-主容器-钩子函数(postStart-容器启动时执行、perStop-容器暂停前执行)命令
摘要:概念:kubernetes再主容器的启动之后核停止之前提供了两个钩子函数: ·post start:容器创建之后执行、如果失败了会重启容器 ·per stop:容器终止之前执行、执行完成之后容器将成功终止、在其完成之前会堵塞删除容器的操作 钩子处理 器支持使用下面三种方式定义动作: ·Exec命令:
15、k8s-pod的生命周期-pod的创建、初始化容器、运行主容器、pod终止
摘要:概念:一边将pod对象从创建到pod的终止过程的这段时间称为pod的生命周期、主要有4个过程: ·pod的创建 ·运行初始化容器(init container)过程 ·运行主容器(mian container)过程 ··容器启动后钩子(post start)、容器终止前钩子(pre stop) ··
14、k8s-pod资源-pod下的spec:containers属性
摘要:使用命令查看containers的可选项:kubectl explain pod.spec.containers 1、kubectl explain pod.spec.containers KIND: Pod VERSION: v1 containers <[]Object> #数组,代表可以有多个
k8s-删除资源-pod或者ns时一直卡住-强制删除
摘要:删除pod 1、强制删除pod:kubectl delete pod nginx0-64777cd554-d28k4 -ndev --force --grace-period=0#--force --grace-period=0 为强制删除命令
13、k8s-pod模块-pod结构-pod的yaml属性
摘要:每个pod中都可以包含一个或多个容器、这些容器可以分为两类: ·用户程序所在的容器、数量可多可少 ·pause容器,这是每个pod都会有的一个根容器、它的作用有两个: ·可以以它为依据、评估整个pod的健康状态 ·可以在根容器上设置ip地址,其它容器都以此IP(pod ip) 来实现pod内部的网络
12、k8s-资源-server-pod里面的服务
摘要:注意:pod在建立的时候会、每一个pod都会分配一个单独的pod IP 、然而却存在如下问题: ·pod IP 会随着新的pod的重建而发生变化 ·pod IP 仅仅是集群内可见的虚拟IP,外部无法去访问 这样对于访问pod里的服务就备隔离开了、因此、kubernetes设计了service来解决这
11、k8s-资源-Deployment-pod控制器
摘要:注意:namespace>deployment>pod>server 概念:在kubernetes中、Pod是最小的控制单元、但是kubernetes很少直接控制pod、一般都是通过pod控制器来完成的、pod控制器用于pod的管理、确保pod资源符合预期的状态、当pod资源出现故障时、会尝试进行重
10、k8s-资源-Label-标签-标签选择器
摘要:Label是kubernetes系统中的一个重要概念、它的作用就是在资源上添加标识、用来对它们进行区分和选择。 Label的特点: ·一个Label会以key/value键值对的形式附加到各种对象上、如Node、Pod、service等等 ·一个资源对象可以定义任意数量的Label、同一个Label
9、k8s-资源-Pod
摘要:Pod是kubernetes集群进行管理的最小单元、程序要运行必须部署在容器中、而容器必须存在于Pod中。 Pod可以认为是容器的封装、一个Pod中可以存在一个或者多个容器。 #注:kubernetes集群在启动之后、集群中的各个组件也都是以Pod方式运行的 1、查看某个namespace空间的po