🍕 MySQL集群
由多个MySQL数据库服务器组成的集合,通过主从复制、负载均衡器和监控工具等技术手段实现数据的高可用性、负载均衡和扩展性,提供稳定、高效的数据库服务,适用于规模应用程序和高并发环境,确保数据安全、故障恢复和系统稳定性。
🍕 Nginx负载均衡
Nginx是高性能web开源服务器,将传入的请求分发到多个服务器上,以确保各个服务器的负载均衡,提高整体的性能和可靠性。
在项目中操作Nginx负载均衡和反向代理:
1、安装和配置Nginx
在服务器上安装Nginx,并确保配置文件可编辑。
编辑Nginx配置文件(通常是nginx.conf),添加负载均衡和反向代理的配置。
2、配置负载均衡
在Nginx配置文件中,配置负载均衡的 upstream,指定后端服务器的地址和端口,以及负载均衡算法。
upstream backend_servers {
server 192.168.1.101:80;
server 192.168.1.102:80;
// 可以添加更多后端服务器
// ...
}
配置负载均衡的 location,将请求代理到 upstream 中定义的后端服务器
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
}
}
步骤3:配置反向代理
在Nginx配置文件中,配置反向代理的 location,指定要代理的后端服务器地址。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
}
}
步骤4:重启Nginx服务
完成配置后,重新加载或重启Nginx服务,使配置生效
sudo nginx -s reload
🍕 反向代理
反向代理是一个位于客户端和原始服务器之间的服务器,它接收客户端的请求,并代表原始服务器向客户端返回响应。
🍕 SQL注入
SQL 注入是一种利用应用程序对用户输入数据处理不当的安全漏洞,攻击者通过在输入字段中插入恶意的 SQL 代码,以达到篡改数据库查询、获取敏感数据甚至控制数据库的目的,从而造成信息泄露、数据损坏或系统瘫痪等严重后果。
例如:
假设有一个网站上的登录页面,用户需要输入用户名和密码进行身份验证。登录页面的后台代码可能会使用用户输入的用户名和密码来构建 SQL 查询语句,例如:
SELECT * FROM users WHERE username='输入的用户名' AND password='输入的密码'
如果网站没有对用户输入进行充分验证和处理,攻击者可以利用 SQL 注入漏洞来破坏原有的查询逻辑。比如,攻击者可能会在用户名输入框中输入以下内容:
' OR '1'='1
那么构建出来的 SQL 查询语句将变成:
SELECT * FROM users WHERE username='' OR '1'='1' AND password='输入的密码'
由于 ‘1’=‘1’ 始终为真,这个条件将绕过密码验证部分,使得查询返回第一个用户的数据,从而绕过了登录身份验证,进而实现非法登录或者获取敏感信息的目的。这就是一个简单的 SQL 注入示例。要防止这种攻击,应该对用户输入进行有效的过滤和参数化处理,以确保输入数据不会被误解为 SQL 代码的一部分。
🍕 面向对象编程OOP
1、封装(Encapsulation)
封装是将数据和操作数据的方法封装在一个单元中,对外部隐藏对象的具体实现细节,只暴露必要的接口供其他对象访问。这样可以提高代码的安全性和可维护性。
2、继承(Inheritance):
继承允许一个类(子类)基于另一个类(父类)的属性和方法来定义自己的新类。通过继承,子类可以复用父类的代码,减少重复编写代码的工作量,并构建出更加灵活和易扩展的类结构。
3、多态(Polymorphism):
多态性允许不同类的对象对同一个消息做出不同的响应。通过多态,可以提高代码的灵活性和可复用性,同时减少代码的耦合度。
4、抽象(Abstraction):
抽象是指忽略对象的具体实现细节,只关注对象的行为和特征。通过抽象,可以更好地理解问题领域的结构和关系,以及简化复杂系统的设计和实现过程。
5、类与对象:
类是面向对象编程的基本概念,它是对具有相同属性和行为的对象的抽象描述,对象是类的实例,每个对象都具有独特的状态(属性)和行为(方法)。
🍕 adb命令
ADB(Adroid Debug Bridge)是Android 调试桥,是 Android 开发工具包(SDK)中的一个工具,用于与连接到计算机的 Android 设备进行通信和调试。
adb devices:列出当前连接到计算机的所有 Android 设备
adb shell:进入设备的命令行 shell 界面,可以在设备上执行各种命令
adb install <path_to_apk>:安装一个应用程序(APK 文件)到设备上
adb uninstall <package_name>:卸载指定包名的应用程序
adb pull <remote> <local>:从设备中复制文件到计算机
adb push <local> <remote>:将计算机上的文件推送到设备中
adb logcat:查看设备的日志信息,可以用于调试应用程序
adb logcat -c 清楚手机日志
adb shell am start -n <package_name/activity_name>:启动指定包名和活动名称的应用程序
adb shell pm list packages:列出设备上安装的所有应用程序包名
adb reboot:重启设备
🍕 使用celery异步邮件
使用 Celery 异步发送邮件的原理是利用 Celery 提供的任务队列机制,将邮件发送任务放入队列中,由 Celery 后台进程异步执行这些任务。
具体步骤是:首先配置 Celery 应用,定义一个异步发送邮件的 Celery 任务,然后在需要发送邮件的地方调用该任务,并通过 delay 方法将任务推送到 Celery 的消息队列中,Celery 后台进程会从队列中取出任务并执行发送邮件的操作,完成邮件发送过程。这样可以避免邮件发送过程对主线程造成阻塞,提高系统性能和响应速度。
🍕 FastDFS
FastDFS 是一个开源的分布式文件系统,用于实现文件存储、上传和管理。
要使用 FastDFS 完成文件上传与管理,首先需要搭建 FastDFS 的服务端和客户端环境。然后客户端通过上传文件到 FastDFS 服务器,服务器接收文件后会返回一个文件标识符(File ID),用于后续文件访问和管理。通过这个 File ID,可以实现文件的下载、删除、更新等操作。
FastDFS 的原理是将文件分块存储在多台存储服务器上,通过 Tracker 服务器进行文件管理和负载均衡,实现高可用性和扩展性。客户端通过 Tracker 服务器获取存储服务器地址信息,然后直接与存储服务器通信进行文件上传和下载操作,从而实现高效的文件存储和管理。
🍕 Django框架
Django 是一个基于 Python 的开源 Web 应用框架,它遵循 MVC(模型-视图-控制器)的设计模式,实际上在 Django 中使用的是 MTV 模式(模型-模板-视图)。
原理是基于约定优于配置的理念,提供了一整套预定义的组件和工作流程,包括强大的 ORM(对象关系映射)、自带的管理界面、认证系统等,使开发者能够快速构建复杂的 Web 应用。
Django 的核心思想是提供开发效率和可维护性,通过明确的规范和约定,简化开发过程,并提供了丰富的功能和插件,使得开发者可以专注于业务逻辑的实现,而无需过多关注底层技术细节。
🍕 Flask框架
Flask 是一个轻量级的 Python Web 应用框架,基于 Werkzeug WSGI 工具和 Jinja2 模板引擎,其设计理念是简洁、灵活,核心功能较少但易于扩展。
Flask 并没有严格的约定和规范,开发者可以根据需要选择合适的插件和库来构建个性化的 Web 应用,适合快速原型开发和小型项目。通过装饰器和扩展机制,Flask 提供了灵活性和自由度,使开发者能够快速上手,并根据项目需求进行定制化开发。