当前位置: 首页 > news >正文

Python 项目安全实战:工具应用、规范制定、数据防护与架构加固

Python 项目安全实战:工具应用、规范制定、数据防护与架构加固

本文聚焦 Python 项目安全,深入介绍安全工具如 Bandit、OWASP ZAP 的实战操作,涵盖对特定模块扫描及 Web 测试进阶应用。详细阐述团队如何制定并持续更新安全编码规范,以保障代码安全。同时,探讨数据安全防护策略,包括加密优化与脱敏处理,以及微服务和分层架构下的安全设计与加固方法,为 Python 项目安全建设提供全面指导。

安全工具的深度实践操作

  • Bandit 实战演练:在实际项目中使用 Bandit 时,不仅可以进行常规的全量代码扫描,还能针对特定的代码片段或功能模块进行精细检查。例如,在一个电商项目中,对涉及用户密码处理的模块进行重点扫描。在命令行中执行bandit -f json -o bandit_report.json -s B303 [your_password_module.py](http://your_password_module.py),其中-f json表示以 JSON 格式输出报告,-o bandit_report.json指定报告输出路径,-s B303则是针对密码相关的特定检测规则(这里假设 B303 规则与密码安全相关)。通过这种方式,可以快速定位到该模块中可能存在的密码安全隐患,如使用了不安全的哈希算法等问题。然后根据报告中的详细信息,针对性地修改代码,提高密码处理的安全性。在修改代码后,再次运行 Bandit 扫描,确保安全隐患已被消除。同时,还可以将 Bandit 集成到持续集成(CI)流程中,每次代码提交时自动进行扫描,及时发现潜在问题。
  • OWASP ZAP 在 Web 测试中的进阶应用:除了基本的扫描功能,OWASP ZAP 还支持主动扫描和被动扫描的结合使用。在一个在线教育平台的 Web 应用测试中,先开启被动扫描,让 ZAP 在后台默默地记录和分析 Web 应用的正常流量,收集应用的各种信息,如页面结构、请求参数等。然后,基于这些信息,启动主动扫描,对发现的潜在风险点进行更深入的探测。例如,对于发现的用户登录页面,主动扫描会尝试各种常见的攻击手段,如 SQL 注入、暴力破解等,检测页面的安全性。同时,利用 ZAP 的脚本功能,可以编写自定义的扫描规则,针对平台特有的业务逻辑进行安全检测,进一步提升 Web 应用的安全性。在完成扫描后,对 ZAP 生成的报告进行详细分析,按照风险等级对问题进行分类,优先解决高风险问题。对于无法立即修复的问题,制定合理的整改计划,并定期进行复查。

制定安全编码规范

  • 团队协作中的规范制定:在一个大型 Python 项目团队中,制定统一的安全编码规范至关重要。首先,明确变量命名规则,对于敏感信息相关的变量,如密码、密钥等,使用特定的前缀或后缀标识,便于代码审查时快速识别。例如,所有密码变量以password_开头,如password_user。其次,规定函数和类的设计原则,要求所有涉及用户输入的函数必须进行严格的输入验证,并且在函数文档字符串中明确说明输入的格式和限制。对于类的方法,限制内部方法的访问权限,避免不必要的方法暴露。还可以制定代码审查流程,在代码合并之前,由经验丰富的开发人员对代码进行审查,确保代码符合安全编码规范。
  • 持续更新与培训:安全编码规范不是一成不变的,随着技术的发展和新的安全漏洞的发现,需要不断更新。定期组织团队成员进行安全编码规范的培训和学习,分享最新的安全知识和案例。例如,每季度举办一次安全编码分享会,邀请团队内部或外部的安全专家讲解最新的安全趋势和编码技巧,同时对规范进行修订和完善。通过持续的培训和学习,确保团队成员始终保持对安全问题的敏感性,严格遵守安全编码规范。可以建立一个内部的安全知识库,方便团队成员随时查阅安全编码相关的资料。

数据安全的深度防护

  • 数据加密策略的优化:在数据加密方面,除了选择合适的加密算法,还需要考虑密钥管理的安全性。例如,在一个金融数据存储系统中,使用 AES - 256 算法对用户的交易数据进行加密。为了确保密钥的安全性,采用密钥派生函数(KDF),如 PBKDF2 或 bcrypt,从一个主密钥派生出多个子密钥,分别用于不同的数据块加密。同时,将密钥存储在安全的硬件设备中,如硬件安全模块(HSM),通过硬件的加密机制进一步保护密钥的安全。这样,即使数据文件被窃取,没有正确的密钥也无法解密数据,有效保障了数据的机密性。定期对密钥进行更换,以降低密钥被破解的风险。
  • 数据脱敏与隐私保护:在数据处理过程中,对于不需要完全暴露的敏感数据,进行脱敏处理。例如,在用户信息展示页面,将用户的身份证号码、银行卡号等敏感信息进行部分隐藏,只显示前几位和后几位,中间部分用星号代替。在数据存储和传输过程中,采用同态加密技术,使得数据在密文状态下也能进行计算,进一步保护数据隐私。例如,在数据分析场景中,对加密后的用户数据进行统计分析,无需解密数据即可得到统计结果,确保了用户数据在整个分析过程中的安全性。制定数据脱敏的标准和流程,确保脱敏后的数据既能满足业务需求,又能最大程度保护用户隐私。

安全架构设计

  • 微服务架构下的安全设计:在基于 Python 构建的微服务架构中,安全设计需要全面考虑各个微服务之间的通信安全、访问控制以及数据隔离。采用安全的通信协议,如 HTTPS,确保微服务之间的数据传输加密,防止数据在传输过程中被窃取或篡改。利用 API 网关进行统一的身份认证和授权管理,每个微服务通过 API 网关暴露接口,只有经过认证和授权的请求才能访问相应的微服务。例如,使用 JWT(JSON Web Token)进行身份验证,以下是一个简单的 Python Flask 应用示例,展示如何使用 PyJWT 库进行 JWT 的生成和验证:
import jwt
from flask import Flask, request, jsonify
from datetime import datetime, timedeltaapp = Flask(__name__)
SECRET_KEY = 'your_secret_key'# 生成JWT
def generate_token(user_id):payload = {'user_id': user_id,'exp': datetime.utcnow() + timedelta(minutes=30)  # 令牌有效期30分钟}token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')return token# 验证JWT
def verify_token(token):try:payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])return payloadexcept jwt.ExpiredSignatureError:return Noneexcept jwt.InvalidTokenError:return None# 模拟一个需要认证的微服务接口
@app.route('/protected', methods=['GET'])
def protected_route():token = request.headers.get('Authorization')if not token:return jsonify({'message': 'Missing token'}), 401token = token.replace('Bearer ', '')payload = verify_token(token)if not payload:return jsonify({'message': 'Invalid token'}), 401return jsonify({'message': 'This is a protected route', 'user_id': payload['user_id']})if __name__ == '__main__':app.run(debug=True)

此外,对每个微服务的数据进行隔离存储,避免因一个微服务的数据泄露而影响其他微服务的数据安全。可以使用容器化技术,如 Docker,将每个微服务隔离在不同的容器中,增强安全性。

  • 分层架构的安全加固:对于采用分层架构的 Python 应用,如表现层、业务逻辑层和数据访问层,需要在各层之间设置严格的安全边界。在表现层,重点防范用户输入相关的安全风险,如 XSS 攻击、CSRF 攻击等,通过对用户输入进行严格的过滤和验证,以及设置安全的 HTTP 头信息来增强安全性。以下是一个简单的 Flask 应用示例,展示如何在表现层对用户输入进行过滤:
from flask import Flask, request, escapeapp = Flask(__name__)@app.route('/input', methods=['POST'])
def handle_input():user_input = request.form.get('input')if user_input:# 使用escape函数对用户输入进行转义,防止XSS攻击safe_input = escape(user_input)return f'Your input: {safe_input}'return 'No input provided'if __name__ == '__main__':app.run(debug=True)

业务逻辑层则要确保业务规则的正确执行,防止因业务逻辑漏洞导致的安全问题,如越权访问、数据篡改等。例如,在用户权限管理中,对不同角色的用户进行细致的权限划分,确保用户只能执行其被授权的操作。下面是一个简单的权限管理示例:

class User:def __init__(self, user_id, role):self.user_id = user_idself.role = roledef check_permission(user, action):permissions = {'admin': ['create','read', 'update', 'delete'],'user': ['read']}if user.role not in permissions:return Falsereturn action in permissions[user.role]# 示例用法
admin_user = User(1, 'admin')
regular_user = User(2, 'user')print(check_permission(admin_user, 'create'))  # True
print(check_permission(regular_user, 'create'))  # False

数据访问层要保证数据的安全存储和访问,采用安全的数据库连接方式,对数据库操作进行严格的权限控制,防止 SQL 注入等数据库相关的安全漏洞。以 SQLAlchemy 库连接 MySQL 数据库为例,展示如何进行安全的数据库操作:

from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker# 创建数据库引擎,使用参数化查询防止SQL注入
engine = create_engine('mysql+pymysql://user:password@localhost/mydb', echo=True)
Session = sessionmaker(bind=engine)# 示例查询
def get_user(user_id):session = Session()try:result = session.execute(text('SELECT * FROM users WHERE id = :user_id'), {'user_id': user_id})user = result.fetchone()return userfinally:session.close()

定期对数据库进行安全审计,检查是否存在异常的数据库操作。

总结

本文围绕 Python 项目安全展开多方面探讨。在安全工具使用上,通过 Bandit 针对关键代码模块扫描、OWASP ZAP 结合多种扫描方式及自定义规则,有效发现安全隐患。安全编码规范方面,制定了变量命名、函数类设计等规则,并强调持续更新与培训的重要性。数据安全防护上,优化加密策略、加强密钥管理,实施数据脱敏和同态加密保护隐私。安全架构设计中,在微服务架构确保通信、访问和数据安全,分层架构则对各层进行针对性安全加固。通过这些措施,全面提升 Python 项目的安全性。

TAG: Python 项目安全;安全工具;安全编码规范;数据安全;安全架构设计;Bandit;OWASP ZAP;加密;脱敏;微服务安全;分层架构安全

相关文章:

Python 项目安全实战:工具应用、规范制定、数据防护与架构加固

Python 项目安全实战:工具应用、规范制定、数据防护与架构加固 本文聚焦 Python 项目安全,深入介绍安全工具如 Bandit、OWASP ZAP 的实战操作,涵盖对特定模块扫描及 Web 测试进阶应用。详细阐述团队如何制定并持续更新安全编码规范&#xff…...

linux ununtu通过nginx-1.6.2.tar.gz安装nginx并安装在自定义目录XXX下 的步骤

Ubuntu 下通过源码安装 Nginx 1.6.2 到自定义目录 /home/aot/nginx 的步骤 以下是将 Nginx 1.6.2 源码包离线安装到自定义目录的详细流程,包含依赖管理、编译配置和服务管理: 一、准备工作 1. 下载源码包和依赖(需联网环境准备)…...

《Python百练成仙》31-40章(不定时更新)

第卅一章 函数结丹def开紫府 罗酆山的鬼门关吞吐着猩红的变量阴风,每个风眼都涌动着作用域混乱的灵力乱流。叶军手握薛香遗留的丹田玉简,玉简表面浮现出残缺的函数符文: def 凝聚金丹(灵气):道基 灵气 * 0.618print(金丹品质) # 作用域外变…...

Python--内置模块和开发规范(上)

1. 内置模块 1.1 JSON 模块 核心功能 序列化:Python 数据类型 → JSON 字符串 import json data [{"id": 1, "name": "武沛齐"}, {"id": 2, "name": "Alex"}] json_str json.dumps(data, ensure_a…...

使用DeepSeek实现自动化编程:类的自动生成

目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节,让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中,自动化编程工具如…...

植物大战僵尸金铲铲版 v1.1.6(windows+安卓)

游戏简介 《植物大战僵尸金铲铲版》是由“古见xzz”、“对不起贱笑了”、“是怪哉吖”等联合开发的民间魔改版本,融合了原版塔防玩法与《金铲铲之战》的自走棋元素,属于非官方同人作品。 游戏特点 合成升星机制:三个相同低星植物可合成更高…...

LeetCode 热题 100_寻找两个正序数组的中位数(68_4_困难_C++)(二分查找)(先合并再挑选中位数;划分数组(二分查找))

LeetCode 热题 100_寻找两个正序数组的中位数(68_4) 题目描述:输入输出样例:题解:解题思路:思路一(先合并再挑选中位数):思路二(划分数组(二分查找…...

酒店管理系统(代码+数据库+LW)

摘 要 时代的发展带来了巨大的生活改变,很多事务从传统手工管理转变为自动管理。自动管理是利用科技的发展开发的新型管理系统,这类管理系统可以帮助人完成基本的繁琐的反复工作。酒店是出门的必需品,无论出差还是旅游都需要酒店的服务。由…...

关于C/C++的输入和输出

目录 一、C语言中的scanf 有关scanf()的例子 二、C语言中的printf 有关printf()的例子 三、C中的cin、cout 四、字符的输入 1、cin.get() 2、cin.get() 3、cin.getline() 4、getline() 5、getchar() 五、string类型字符串长度 1、length() 2、size() 一、C语言中…...

袋鼠数据库工具 6.4 AI 版已上线

袋鼠数据库工具 6.4 AI 版已于 2025 年 2 月 26 日上线1。以下是该版本的一些新特性1: 地图支持:支持坐标定位并支持缩放动画;支持路线图,可在路线位置之间跳转;支持图层切换、标记和路线图图层切换;支持新…...

【AGI】DeepSeek开源周:The whale is making waves!

DeepSeek开源周:The whale is making waves! 思维火花引言一、DeepSeek模型体系的技术演进1. 通用语言模型:DeepSeek-V3系列2. 推理优化模型:DeepSeek-R1系列3. 多模态模型:Janus系列 二、开源周三大工具库的技术解析1…...

【无人机】无人机飞行日志下载及分析,飞行日志分析软件的使用

目录 一、飞行日志下载 1.1 通过地面站下载 1.1.1 QGroundControl(QGC)地面站 1.1.2 Mission Planner 地面站 1.2 通过内存卡读卡器下载 1.3 通过数传模块下载(数传日志) 二、飞行日志分析 2.1 使用 Flight Review 分析 …...

【朝夕教育】《鸿蒙原生应用开发从零基础到多实战》003-TypeScript 中的类

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...

Java并发编程之可见性、原子性和有序性

引言 CPU缓存与内存产生的一致性问题(可见性) CPU时间片切换产生的原子性问题 CPU指令编译优化产生的有序性问题 并发编程问题的根源 CPU、内存、I/O设备三者速度差异一直是 核心矛盾 三者速度差异可形象描述为:天上一天(CPU),…...

99分巧克力

99分巧克力 ⭐️难度:中等 🌟考点:二分 2017省赛真题 📖 📚 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();i…...

阿里重磅模型深夜开源;DeepSeek宣布开源DeepGEMM;微软开源多模态AI Agent基础模型Magma...|网易数智日报

阿里重磅模型深夜开源:表现超越Sora、Pika,消费级显卡就能跑 2月26日,25日深夜阿里云视频生成大模型万相2.1(Wan)正式宣布开源,此次开源采用Apache2.0协议,14B和1.3B两个参数规格的全部推理代码…...

WPF10-绑定属性

目录 1. WPF属性系统1.1. CLR属性(CLR Properties)1.2. 相关属性(Related Properties)1.3. 附加属性(Attached Properties)1.4. 依赖属性(Dependency Properties)2. 依赖属性2.1. 定义2.2. 应用场景2.3. 理解2.3.1. 初识依赖属性2.3.2. 自定义依赖属性2.3.3. 使用依赖属…...

Python PDF文件拆分-详解

目录 使用工具 将PDF按页数拆分 将PDF的每一页拆分为单独的文件 将PDF按指定页数拆分 根据页码范围拆分PDF 根据指定内容拆分PDF 将PDF的一页拆分为多页 在日常生活中,我们常常会遇到大型的PDF文件,这些文件可能难以发送、管理和查阅。将PDF拆分成…...

ollama本地部署DeepSeek-R1大模型使用前端JS调用的详细流程

以下是关于如何在本地部署 DeepSeek-R1 大模型(通过 Ollama),并使用前端 JavaScript 调用其功能的详细流程。 前提条件 硬件要求: 建议至少 16GB RAM(运行较小模型如 1.5B 或 7B 参数版本),如果…...

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

一、前言 在搭建SpringCloud项目环境架构的时候,需要选择SpringBoot和SpringCloud进行兼容的版本号,因此对于选择SpringBoot版本与SpringCloud版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启动不起来,怪…...

初识SQL

SQL 定义:SQL(Structured Query Language,结构化查询语言)是一种标准化的数据库操作语言,广泛用于关系数据库管理系统(RDBMS),如 MySQL、PostgreSQL 等。它支持数据的定义&#xff0…...

12_Pandas时序数据(上)

固定时间 时间的表示 固定时间是指一个时间点。固定时间是时序数据的基础,一个固定时间带有丰富的信息,如年份、周几、月份、季度等。 Python的官网库datetime支持创建和处理时间: datetime.now() # 当前时间 datetime(2025,2,26,12) # 指…...

当我删除word文件时无法删除,提示:操作无法完成,因为已在Microsoft Word中打开

现象: 查看电脑桌面下方的任务栏,明明已经关闭了WPS和WORD软件,但是打开word文档时还是提示: 解决方法步骤: 1、按一下键盘上的ctrl Shift Esc 键打开任务管理器 2、在进程中找到如下: 快速找到的方法…...

0x03 http协议和分层架构

HTTP协议 简介 Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则 http协议基于TCP协议:面向连接,安全基于请求-响应模型:一次请求对应一次响应HTTP协议是无状态的协议&#xff…...

JavaScript系列03-异步编程全解析

本文介绍了异步相关的内容,包括: 回调函数与回调地狱Promise详解async/await语法Generator函数事件循环机制异步编程最佳实践 1、回调函数与回调地狱 JavaScript最初是为处理网页交互而设计的语言,异步编程是其核心特性之一。最早的异步编…...

深度解读 AMS1117:从电气参数到应用电路的全面剖析

在电子设备的电源管理领域,线性稳压器扮演着至关重要的角色,而 AMS1117 凭借其出色的性能和广泛的适用性,成为众多工程师的热门选择。本文将依据相关资料,对 AMS1117 的特性、应用、电气参数等方面进行详细解读。 一、功能特性概…...

深入理解Tomcat与Web应用部署:C/S与B/S架构下的实践指南

在当今的互联网时代,Web应用的开发与部署是软件开发领域的重要组成部分。无论是传统的C/S架构,还是现代广泛应用的B/S架构,了解它们的优缺点以及如何高效部署Web应用是每个开发者都需要掌握的技能。本文将深入探讨C/S与B/S架构的区别&#xf…...

XML 编辑器:全面指南与最佳实践

XML 编辑器:全面指南与最佳实践 引言 XML(可扩展标记语言)编辑器是处理XML文件的关键工具,对于开发人员、系统管理员以及任何需要处理XML数据的人来说至关重要。本文将全面介绍XML编辑器的概念、功能、选择标准以及最佳实践,旨在帮助读者了解如何选择和使用合适的XML编辑…...

Python实现GO鹅优化算法优化BP神经网络回归模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 传统BP神经网络的局限性:BP(Back Propagation)神经网络作为一种…...

如何配置虚拟机的IP上网

要配置虚拟机的IP地址以便上网,你可以按照以下步骤操作: 打开虚拟机软件,确保虚拟机的网络设置为“桥接模式”或“NAT模式”,这样虚拟机可以与物理网络连接。 在虚拟机操作系统中,打开网络设置界面,一般在…...

【洛谷贪心算法题】P1094纪念品分组

该题运用贪心算法,核心思想是在每次分组时,尽可能让价格较小和较大的纪念品组合在一起,以达到最少分组的目的。 【算法思路】 输入处理:首先读取纪念品的数量n和价格上限w,然后依次读取每件纪念品的价格,…...

学习笔记08——ConcurrentHashMap实现原理及源码解析

1. 概述 为什么需要ConcurrentHashMap? 解决HashMap线程不安全问题:多线程put可能导致死循环(JDK7)、数据覆盖(JDK8) 优化HashTable性能:通过细粒度锁替代全局锁,提高并发度 对比…...

redis slaveof 命令 执行后为什么需要清库重新同步

在 Redis 中,执行 SLAVEOF(或 REPLICAOF)命令后,从节点需要清空现有数据并重新同步的主要原因如下: 1. 保证数据一致性 核心目标:确保从节点的数据与主节点 完全一致。问题场景: 如果从节点之前…...

6-1JVM的执行引擎处理

一、执行引擎的组成结构 ​解释器(Interpreter)​​ 逐条解释执行字节码指令,启动速度快但执行效率较低。适用于短生命周期或对启动时间敏感的场景,如调试环境。 ​即时编译器(JIT Compiler)​​ 通过动态…...

CMU15445(2023fall) Project #4 - Concurrency Control踩坑历程

把树木磨成月亮最亮时的样子, 就能让它更快地滚下山坡, 有时会比骑马还快。 完整代码见: SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering…...

腿足机器人之十三-强化学习PPO算法

腿足机器人之十三-强化学习PPO算法 腿足机器人位姿常用强化学习算法PPO算法核心原理PPO算法的创新设计PPO算法典型流程优势函数 对于复杂地形适应性(如楼梯、碎石路),传统的腿足机器人采用基于模型的控制器,该方法依赖精确动力学建…...

ubuntu下r8125网卡重启丢失修复案例一则

刚装的一台服务器,ubuntu24.04,主板网卡是r8125,安装服务后会莫名其妙丢失驱动 按照官网的方法下载最新8125驱动包: Realtek 然后卸载驱动 rmmod r8125 然后在驱动包里安装(幸好我之前装了build-essential&#x…...

设计一个“车速计算”SWC,通过Sender-Receiver端口输出车速信号。

1. 需求分析 功能目标:根据车轮脉冲信号(轮速传感器输入)计算当前车速,并将结果通过Sender端口发送给其他SWC。 输入:轮速脉冲数(如WheelPulse,类型uint32)。 输出:车速(如VehicleSpeed,类型float32,单位km/h)。 触发方式:周期性计算(例如每10ms执行一次)。 2.…...

DeepSeek 使用窍门与提示词写法指南

一、通用提示词技巧 窍门分类技巧说明示例提示词明确需求用“角色任务要求”明确目标作为健身教练,为30岁上班族设计一周减脂计划,需包含饮食和15分钟居家训练结构化提问分步骤、分模块提问第一步:列出Python爬虫必备的5个库;第二…...

MySQL零基础教程12—聚合查询(聚合函数)

背景 有时候我们需要汇总一些数据,比如查询一个班级的平均分数,这个时候我们需要的是把分数汇总,然后计算出一个平均值进行返回,并不需要返回某一列的值,针对这种场景,mysql中提供了一些聚合函数帮助快速完…...

JMeter 引入 JAR 包的几种方法

JMeter 支持加载外部 JAR 文件,用于: 扩展 JMeter 功能使用 Java 代码(BeanShell / JSR223)连接数据库 / 解析 Excel / 读取 CSV 📌 1. JMeter 引入 JAR 包的方式 ✅ 方式 1:将 JAR 放入 lib/ 或 lib/ext…...

一周一个Unity小游戏2D反弹球游戏 - 球板的发球

前言 本文将实现当游戏开始时球在球板上,且不具备物理性,在Windows平台上通过点击屏幕来球发射,安卓平台上当手指触摸到屏幕上时进行发球,并此时开始具备物理性。 发球逻辑 首先在球板上创建一个球的发射点,新建一个空的游戏物体,并命名为BallPoint,并将其作为SpringBoa…...

C++Primer学习(4.8位运算符)

4.8位运算符 位运算符作用于整数类型的运算对象,并把运算对象看成是二进制位的集合。位运算符提供检查和设置二进制位的功能,如17.2节(第640页)将要介绍的,一种名为bitset的标准库类型也可以表示任意大小的二进制位集合,所以位运算符同样能用…...

Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用

注:本文为 “buntu 与 Windows 双系统及高频故障解决” 相关文章合辑。 英文引文,机翻未校。 How to install Ubuntu 20.04 and dual boot alongside Windows 10 如何将 Ubuntu 20.04 和双启动与 Windows 10 一起安装 Dave’s RoboShack Published in…...

SpringSecurity 实现token 认证

配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabledtrue) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { Bean Override public AuthenticationManager authenticationManagerBean() throws Exception {return s…...

C语言基础要素(007):使用变量

定义变量的同时可以给定一个值,这叫初始化变量;未初始化的变量,其值在程序运行时是不确定的。变量在定义之后可以多次设置值,这称为赋值。定义使得变量从无到有,而赋值则改变已有变量的状态。变量只能被初始化一次&…...

6. Nginx 动静分离配置案例(附有详细说明+配图)

6. Nginx 动静分离配置案例(附有详细说明配图) 文章目录 6. Nginx 动静分离配置案例(附有详细说明配图)1. 动静分离概述说明2. 先使用传统方式实现,不使用 Nginx3. 使用上 Nginx 实现动静分离优化步骤4. 最后: 1. 动静分离概述说明 什么是动静分离&…...

Deepseek对ChatGPT的冲击?

从测试工程师的视角来看,DeepSeek对ChatGPT的冲击主要体现在**测试场景的垂直化需求与通用模型局限性之间的博弈**。以下从技术适配性、效率优化、风险控制及未来趋势四个维度展开分析: --- ### **一、技术适配性:垂直领域能力决定工具选择…...

在已安装二进制movit2的情况下使用自编译moveit2

在已安装二进制movit2的情况下,想使用自编译moveit2,只要引入一下自编译moveit2库的环境变量即可。主要是想搞明白这个过程发生了什么,也就是引入环境后有什么变化,以及如何对编译过程产生影响 一、setup.bash流程 所有资料上都…...

React 常见面试题及答案

记录面试过程 常见问题,如有错误,欢迎批评指正 1. 什么是虚拟DOM?为什么它提高了性能? 虚拟DOM是React创建的一个轻量级JavaScript对象,表示真实DOM的结构。当状态变化时,React会生成新的虚拟DOM&#xf…...