Nginx
Nginx
Nginx 是一款高效的 Web 服务器和反向代理服务器,常用于负载均衡、HTTP 缓存、静态资源托管等任务。它主要使用配置文件 + nginx 命令的方式进行工作。
配置文件:
/etc/nginx/nginx.conf、/etc/nginx/conf.d/。
/usr/local/nginx/nginx.conf、/usr/local/nginx/conf/。
日志文件:
/var/log/nginx/access.log、/var/log/nginx/error.log。
常用命令¶
启动¶
sudo nginx [-c /path/to/nginx.conf]
停止¶
sudo nginx -s stop
重加载¶
sudo nginx -s reload
检查配置¶
sudo nginx -t
退出¶
sudo nginx -s quit
常规配置¶
静态文件¶
用 Nginx 来服务静态文件,如 HTML、CSS、JavaScript 和图片文件。
server { listen 80; # 监听80端口 serv ...
Docker
Docker
介绍¶
Docker是开发,运行和部署应用程序的开放管理平台。
开发人员能利用Docker开发和运行应用程序。
运维人员能利用Docker部署和管理应用程序。
可以简单理解为:使用主机内核的虚拟机,不需要和虚拟机一样需要自己独立的操作系统,因此比虚拟机更轻量。
作用及解决¶
Docker可以将应用程序和基础架构分开,便于程序和软件的交付。
借助Docker可以像管理应用程序一样管理基础架构。
借助Docker可以快速进行传输、测试和部署,可以缩短代码的编写和在生产环境运行之间的时间差。
Docker主要解决的问题:
保证程序运行环境的一致性。
降低配置开发环境和生产环境的复杂度和成本。
实现程序的快速部署和开发。
Docker引擎¶
Docker Engine是一个包含以下组件的客户端-服务端(C/S)应用程序。
服务端:一个长时间运行的守护进程(Docker Daemon)。
Rest API:一套用于与Docker Daemon通信并指示其执行操作的接口。
客户端:命令行接口CLI(Command Line Interface)。
CLI利用D ...
Linux
Linux
介绍¶
Linux 是一个开源的操作系统内核,最初由芬兰程序员 Linus Torvalds 于 1991 年开发。与传统的操作系统不同,Linux 是由社区共同开发和维护的,并且大多数版本是免费的。它广泛用于服务器、桌面、嵌入式设备和移动设备等多个领域。
核心概念¶
内核(Kernel) :Linux 本质上是一个内核,负责与硬件交互,管理系统资源(如 CPU、内存、硬盘等),并提供应用程序与硬件之间的接口。Linux 内核是由 Linus Torvalds 主导开发的,具有高度的可扩展性、稳定性和安全性。
发行版(Distribution) :基于 Linux 内核的操作系统通常被称为 Linux 发行版。一个发行版包括了内核以及一系列用于管理硬件、文件系统、网络、用户等的工具和应用程序。常见的 Linux 发行版包括 Ubuntu、Debian、CentOS、Red Hat Enterprise Linux (RHEL) 、Fedora、Arch Linux 等。
文件系统¶
Linux 的文件系统遵循统一的目录结构,所有的文件和设备都作为“文件”进行处理。常见的 ...
MySQL高级
MySQL高级
触发器¶
理论¶
组成:
触发事件:指定触发器在哪种操作下触发。可以是 INSERT、UPDATE、DELETE 操作。
触发时间:指定触发器在操作之前或之后执行,使用 BEFORE 或 AFTER。
触发动作:触发器的具体 SQL 代码,即在触发时要执行的操作。
限制:
每个表最多只能为 INSERT、UPDATE、DELETE 操作各定义一个 BEFORE 和 AFTER 触发器。
触发器不能直接调用事务控制语句(如 COMMIT 和 ROLLBACK),因为触发器在事务内部执行。
MySQL 不支持表上级联触发(递归触发),即触发器中不应再对该表进行操作,以免形成循环触发。
作用:
自动化数据验证和清理。
数据库事件记录(如日志表记录)。
实现复杂的数据一致性和约束检查。
操作¶
创建¶
CREATE TRIGGER 触发器名{BEFORE | AFTER} {INSERT | UPDATE | DELETE}ON 表名FOR EACH ROW触发器执行的操作SQL;
OLD:获 ...
MySQL基础
MySQL基础
简介¶
MySQL 是一个开源的关系型数据库管理系统(RDBMS),由瑞典公司MySQL AB开发,后来被Sun Microsystems收购,最终成为Oracle的一部分。它是基于SQL(Structured Query Language,结构化查询语言)来进行数据存储和管理的。MySQL广泛用于Web应用程序、企业级应用程序和大数据处理场景,支持多种操作系统,包括Linux、Windows和macOS。
MySQL是一种基于客户端-服务器架构的数据库系统,其主要功能是提供数据存储、数据查询和事务处理能力。它支持ACID(原子性、一致性、隔离性、持久性)事务,并具备高效、稳定的性能。
存储引擎¶
InnoDB 更适合需要高并发、事务支持和外键约束的场景。
MyISAM 更适合以读为主、对事务要求不高的场景,比如数据仓库和分析系统。
InnoDB¶
特点:
支持事务:InnoDB 是一个支持ACID事务的引擎,通过 COMMIT、ROLLBACK 和 SAVEPOINT 操作来确保数据完整性。
外键约束:支持外键,能够维护表之间的引用完整性,防止无效的数据插 ...
Vim
Vim
Vim编辑器,顾名思义就是编辑文本的输入工具,现在市面上的主流的UI编辑器有VScode、Edit、Sublime Text等等,这些都拥有可视化的界面,可以让文本编辑更快更方便。
但是,这些编辑器一般是不能直接运行在服务器上的,也就是说,我们不能直接在服务器上使用这些编辑器进行开发和修改,一般我们也不那么做。我们一般把项目上传到服务器上后,需要进行部署、调试和调优等操作时,需要修改一下配置或者相关代码,如果仅仅依赖UI编辑器,那么我们就会在服务器和本机之间反复上传和下载,大大降低了开发效率,而服务器上也是有文本编辑器的,那就是Vim。
Vim可以让我们很方便的在服务器上直接进行配置和相关代码的修改,减少了文件传输的繁琐操作,当然,这只是其中的一个小作用,至于更大的作用,取决于你在文本编辑这一方面的需求。
模式介绍¶
vim中共有8种模式,分别如下:
普通模式(Normal Mode) :这是 Vim 的默认模式。在普通模式下,你可以移动光标、复制、粘贴、删除、查找文本等,但不能直接输入文本。
插入模式(Insert Mode) :在插入模式下,你可以直接输入文本。你可以从普 ...
Git
Git
介绍¶
Git是一种代码托管技术。理解成是一个开源的分布式版本控制系统,可以敏捷高效地处理任何或小或大的项目。
历史¶
林纳斯.托瓦兹在1991 年创建了开源的Linux,随着社区的不断壮大,代码需要人工合并,十分麻烦。
于是他花费两周的时间用C语言编写了一个分布式版本控制系统。
版本控制¶
版本控制(Version Control)是一种用于跟踪和管理文件或代码变化的系统。
它允许多人协同工作,并且可以在不同版本之间进行有效的比较、恢复和合并。
版本控制系统记录文件的修改历史,使得用户可以回溯到先前的版本,并在需要时恢复到特定的状态。
主要优势和功能包括:
版本追踪: 版本控制系统可以追踪文件的每一次修改,包括添加、删除、修改等操作。这使得用户可以了解文件的变化历史。
协同工作: 多人协同工作时,版本控制系统可以协调各人对同一文件的修改,防止冲突,并能够合并不同版本的修改。
回滚和恢复: 如果出现错误或需要回到之前的某个稳定状态,版本控制系统允许用户轻松地回滚到先前的版本。
分支和合并: 版本控制系统允许创建分支,这是一种并行开发的方式,每个分支都可以独立进行修改。 ...
Beautifulsoup
Beautifulsoup
Beautiful Soup4 是一个可以从HTML或XML文件中提取数据的Python库。
它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。
可以配合 Requests 第三方库实现简单的Web爬虫。
默认使用Python解析器,但是我们可以使用更加强大的 lxml 解析器。
安装¶
pip install beautifulsoup4 lxml
使用¶
常见解析器:lxml、html.parser、 html5lib。
HTML是由元素构成,元素包含许多的属性以及文本内容,我们可以对这些进行增删改查。
from bs4 import BeautifulSoup# 创建 bs4 对象soup = BeautifulSoup(html, 'lxml')
查找¶
常用的元素查找方法,返回 PageElement 对象。
直接查找
# 查找 div 标签soup.div# 查找 title 标签soup.title
条件查找
# 查找第一个 di ...
Requests
Requests
Requests 是一个用于发送 HTTP 请求的 Python 第三方库,专注于简洁性和易用性。它封装了底层的 http.client 模块,简化了 HTTP 请求操作,使开发者能以更直观的方式处理网络通信。
理论基础¶
API(应用程序接口)是不同软件系统之间交互的桥梁,允许不同的系统交换数据和服务。
API 自动化即接口自动化,主要针对前后端分离架构的项目。
前端和后端在开发和部署上是独立的,彼此通过 API 进行通信。
前端:主要负责用户界面(UI)和用户体验(UX),通常使用框架如 Vue、React、Angular 等进行开发,直接与后端通过 API 进行数据交互。
后端:负责处理业务逻辑、数据存储、身份验证等,通常使用如 Node.js、Spring Boot、Django 等后端技术,提供 RESTful 或 GraphQL API 给前端调用。
这种模式的好处包括:
前端和后端可以独立开发、部署和扩展。
前端可以选择不同的技术栈,而不依赖于后端的具体实现。
后端通过 API 提供通用的数据服务,方便与不同的前端应用进行交互。
而 API 自 ...
JMeter
JMeter
介绍¶
Apache JMeter 是一个开源的性能测试工具,最初用于测试 Web 应用的负载性能。随着功能的不断扩展,JMeter 现在支持多种协议和技术,是性能测试、负载测试和功能测试的利器。
基于 Java 开发,可以在 Windows、Linux、macOS 等系统上运行。
用途:
性能测试: 模拟多个用户并发访问系统,测试系统在高负载下的性能。
负载测试: 测试服务器的吞吐量和响应时间,发现性能瓶颈。
压力测试: 模拟超出系统承受能力的访问,观察系统在压力下的行为。
功能测试: 测试接口、API 是否按照预期运行。
回归测试: 自动化测试脚本,用于检测功能更新后的影响。
协议测试: 支持 HTTP、FTP、TCP、MQ 等协议,适用于多种测试需求。
架构:
线程组(Thread Group): 定义并发用户数、启动时间间隔和循环次数。
取样器(Sampler): 用于发起请求,比如 HTTP 请求、数据库查询等。
配置元件(Config Element): 提供测试数据或配置,比如 CSV 数据集、HTTP Header 等。
逻辑控制器(Logic Co ...