Python 开源项目精彩荟萃
一、Web 开发框架
- Django
- 高效路由系统:
- 支持基于正则表达式的复杂 URL 模式匹配,精准定位视图函数,例如可通过
r'^articles/(?P<year>\d{4})/$'
这样的正则表达式来匹配特定年份的文章列表页面 URL,并将年份参数传递给视图函数。 - 提供命名路由功能,增强 URL 的可读性和可维护性,在项目中使用
path('user/profile/', views.profile, name='user-profile')
定义命名路由后,在模板或代码中可以通过reverse('user-profile')
轻松获取该 URL,方便进行重定向等操作。 - 路由分发机制允许将不同应用的路由分离到各自的模块中,使得项目结构更加清晰,如在大型项目中,每个应用都有自己独立的
urls.py
文件来管理该应用的路由,然后在项目根目录的urls.py
中通过include
函数将各个应用的路由模块整合起来。
- 支持基于正则表达式的复杂 URL 模式匹配,精准定位视图函数,例如可通过
- 高效路由系统:
- Flask
- 简洁路由定义:
- 利用
@app.route
装饰器以简洁直观的方式定义路由,如@app.route('/')
定义网站首页路由,@app.route('/about')
定义关于页面路由,极大地简化了路由的创建过程,让开发者能够快速上手搭建 Web 应用的基本结构。 - 支持动态路由参数,可通过
<参数名>
的形式在 URL 中定义动态部分,并在视图函数中接收该参数,例如@app.route('/user/<username>')
,在视图函数def user_profile(username):
中就能获取到具体的用户名,实现个性化页面展示。 - 路由可以绑定多种 HTTP 方法,如
GET
、POST
、PUT
、DELETE
等,通过@app.route('/submit', methods=['POST'])
这样的方式,确保视图函数只响应特定的 HTTP 请求方法,增强了应用的安全性和逻辑性,满足不同业务场景下的数据交互需求。
- 利用
- 简洁路由定义:
- FastAPI
- 高性能与异步支持:
- 基于 Python 的
asyncio
库构建,充分利用异步编程特性,能够高效处理大量并发请求,显著提升 Web 应用的性能和响应速度,特别适合处理高并发的 API 服务场景,如实时数据推送、大规模数据查询接口等。 - 使用类型提示来声明请求和响应的数据类型,这不仅增强了代码的可读性和可维护性,还使得开发工具能够在编写代码时提供智能提示和错误检查,减少代码错误,提高开发效率,例如定义一个接受
int
类型参数并返回str
类型结果的 API 端点@app.get("/add/{num1}/{num2}") async def add_numbers(num1: int, num2: int) -> str:
。 - 内置了对 WebSocket 的支持,方便实现实时双向通信功能,可用于构建聊天应用、实时数据更新面板等场景,通过
@app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket):
这样的代码块来处理 WebSocket 连接和消息收发,为实时交互应用提供强大的基础。
- 基于 Python 的
- 高性能与异步支持:
- Tornado
- 异步 I/O 与非阻塞 I/O:
- 采用异步 I/O 和非阻塞 I/O 模型,能在处理大量并发请求时避免线程上下文切换的开销,高效利用系统资源,使得应用能够轻松应对高并发场景,例如在处理大量网络请求或文件读取操作时,能够保持快速响应,不会因为阻塞等待某个操作完成而影响其他请求的处理。
- 提供了
@tornado.gen.coroutine
装饰器用于异步函数的定义和执行,通过yield
关键字来暂停和恢复异步操作,使得异步代码的编写更加简洁和易于理解,如@gen.coroutine def async_fetch_data(): data = yield http_client.fetch(url)
,这种方式能够方便地处理异步网络请求等耗时操作,提高应用的性能和响应性。 - 支持长连接和实时推送功能,可通过
WebSocketHandler
类来实现 WebSocket 协议,实现服务器主动向客户端推送数据,适用于实时数据更新的应用场景,如股票行情实时显示、在线游戏状态同步等,增强了用户体验和应用的实时性。
- 异步 I/O 与非阻塞 I/O:
- Bottle
- 轻量级与简洁性:
- 整个框架只有一个 Python 文件,没有依赖其他外部库(除了 Python 标准库),使得部署和使用非常方便,适合快速搭建小型 Web 应用或简单的 API 服务,如个人项目中的简单博客系统、小型数据接口等,能够快速开发并上线。
- 路由定义简洁明了,通过
@route
装饰器结合 URL 路径即可定义路由,如@route('/hello') def hello(): return "Hello, World!"
,代码量少且易于理解,对于初学者来说容易上手,能够快速掌握 Web 开发的基本流程和概念。 - 支持模板渲染,可使用内置的模板引擎或第三方模板引擎(如 Jinja2),方便在页面中动态展示数据,如
@route('/user/<name>') def user_page(name): return template('user_template', name=name)
,能够将数据与页面结构分离,提高代码的可维护性和页面的可定制性,满足简单的页面展示需求。
- 轻量级与简洁性:
- Pyramid
- 灵活的配置与可扩展性:
- 采用基于配置文件和代码的混合配置方式,允许开发者根据项目需求灵活选择配置方式,在配置文件中可以定义路由、视图、数据库连接等信息,同时也可以在代码中通过
config.add_route()
等方法动态添加配置,方便在不同环境下进行部署和调试,如开发环境和生产环境可以使用不同的数据库配置和路由设置。 - 提供了多种扩展点,如订阅者、事件系统等,允许开发者通过自定义扩展来增强框架的功能,例如可以编写自定义的订阅者来记录用户操作日志、进行权限验证等,在不同的业务场景下能够方便地对框架进行定制和扩展,满足复杂的业务需求。
- 支持多种数据库后端,包括关系型数据库(如 MySQL、PostgreSQL)和非关系型数据库(如 MongoDB),通过配置相应的数据库连接字符串和适配器,能够轻松地在项目中切换数据库,适应不同的数据存储需求,同时也提供了数据库迁移工具,方便数据库结构的管理和升级。
- 采用基于配置文件和代码的混合配置方式,允许开发者根据项目需求灵活选择配置方式,在配置文件中可以定义路由、视图、数据库连接等信息,同时也可以在代码中通过
- 灵活的配置与可扩展性:
- CherryPy
- 内置 HTTP 服务器:
- 具有内置的 HTTP 服务器,无需依赖外部的 Web 服务器(如 Apache、Nginx)即可独立运行 Python Web 应用,简化了部署流程,尤其适合在开发和测试阶段快速启动应用,方便开发者进行本地调试和开发,减少了环境配置的复杂性。
- 支持多线程和多进程模式,能够根据应用的负载情况灵活选择运行模式,在多线程模式下可以充分利用多核处理器的性能,同时处理多个请求,提高应用的并发处理能力,而在需要更高稳定性和隔离性的场景下,可以选择多进程模式,确保每个进程独立运行,互不干扰。
- 提供了简单易用的部署工具,如
cherryd
命令,可以将应用打包成独立的可执行文件,并在后台运行,方便在生产环境中部署和管理应用,同时也支持与其他 Web 服务器进行反向代理配置,结合外部服务器的优势,进一步提升应用的性能和安全性。
- 内置 HTTP 服务器:
- Web2py
- 全栈式开发框架:
- 涵盖了从前端到后端的完整开发功能,包括数据库管理、表单处理、模板渲染、用户认证、权限管理等,开发者可以在一个框架内完成整个 Web 应用的开发,无需集成多个不同的库和工具,减少了技术选型和集成的复杂性,提高了开发效率。
- 具有强大的数据库抽象层,支持多种数据库(如 MySQL、SQLite、PostgreSQL 等),通过简单的 API 即可进行数据库操作,如
db.define_table('user', Field('name'), Field('email'))
定义数据库表,db.user.insert(name='John', email='john@example.com')
插入数据,方便快捷地进行数据存储和查询。 - 内置了丰富的安全机制,包括防止 SQL 注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等常见的 Web 安全漏洞,通过自动对用户输入进行过滤和转义,以及生成安全的表单令牌等方式,保障应用的安全性,让开发者无需过多关注安全细节,专注于业务逻辑的开发。
- 全栈式开发框架:
二、数据分析与科学计算
- NumPy
- 强大的数组操作:
- 提供了高效的多维数组数据结构
ndarray
,支持快速的元素级运算,如a = np.array([1, 2, 3]); b = np.array([4, 5, 6]); c = a + b
,能够利用向量化运算在底层优化性能,比传统的 Python 列表循环运算快很多,适合大规模数据的数值计算场景,如科学模拟、图像处理中的像素运算等。 - 支持数组的索引和切片操作,不仅可以像 Python 列表一样进行简单的索引取值,还能对多维数组进行复杂的切片选取,如
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); sub_a = a[1:3, 0:2]
选取二维数组的特定子区域,方便数据的提取和处理,在数据分析中常用于选取数据集的特定子集进行分析。 - 具备丰富的数组创建函数,如
np.zeros((2, 3))
创建全零数组、np.ones((3, 4))
创建全一数组、np.random.rand(5, 5)
创建随机数组等,能够快速初始化数组数据,满足不同的数值计算需求,在机器学习中常用于初始化模型参数、创建测试数据等场景。
- 提供了高效的多维数组数据结构
- 强大的数组操作:
- Pandas
- 高效的数据处理:
- 提供了
DataFrame
和Series
两种核心数据结构,DataFrame
类似于二维表格,Series
类似于一列数据,方便进行数据的组织和管理,如df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'b', 'c']})
创建一个简单的数据框,能够直观地展示和处理结构化数据,广泛应用于数据清洗、转换和分析等任务。 - 支持数据的读取和写入多种文件格式,如
pd.read_csv('data.csv')
读取 CSV 文件、df.to_excel('output.xlsx')
将数据保存为 Excel 文件,方便与其他工具进行数据交互,在实际工作中能够快速导入和导出数据,进行数据的共享和进一步处理。 - 具有强大的数据筛选和过滤功能,通过条件表达式如
df[df['age'] > 20]
可以筛选出满足特定条件的数据行,还可以使用loc
和iloc
方法进行基于标签和位置的索引选取,如df.loc[0:5, ['col1', 'col2']]
选取指定行和列的数据,满足数据分析中对特定数据子集的提取和分析需求。
- 提供了
- 高效的数据处理:
- Matplotlib
- 灵活的可视化绘图:
- 支持绘制多种类型的图表,如折线图(
plt.plot()
)、散点图(plt.scatter()
)、柱状图(plt.bar()
)、饼图(plt.pie()
)等,能够满足不同数据的可视化展示需求,如用折线图展示时间序列数据的趋势、用散点图分析两个变量之间的关系等,为数据分析提供直观的视觉呈现。 - 提供了丰富的图表定制选项,包括坐标轴标签(
plt.xlabel()
、plt.ylabel()
)、标题(plt.title()
)、图例(plt.legend()
)、线条颜色和样式(plt.plot(x, y, 'r--')
表示红色虚线)、标记样式(plt.scatter(x, y, marker='o')
表示圆形标记)等,可根据具体需求创建专业美观的图表,增强数据可视化的效果和可读性。 - 支持多子图绘制,通过
plt.subplots()
函数可以创建多个子图布局,如fig, axs = plt.subplots(2, 2)
创建 2x2 的子图矩阵,方便在一个画布上展示多个相关图表,进行对比分析或展示数据的不同方面,提高可视化的信息传达效率。
- 支持绘制多种类型的图表,如折线图(
- 灵活的可视化绘图:
- Scikit-learn
- 全面的机器学习工具包:
- 涵盖了丰富的机器学习算法,包括分类算法(如决策树
DecisionTreeClassifier
、支持向量机SVC
、朴素贝叶斯GaussianNB
等)、回归算法(如线性回归LinearRegression
、岭回归Ridge
、决策树回归DecisionTreeRegressor
等)、聚类算法(如 K-MeansKMeans
、层次聚类AgglomerativeClustering
等),为不同的机器学习任务提供了多种解决方案,可根据数据特点和业务需求选择合适的算法进行模型训练和预测。 - 提供了完善的数据预处理功能,如标准化(
StandardScaler
)、归一化(MinMaxScaler
)、特征选择(SelectKBest
)等,能够对原始数据进行清洗、转换和特征提取,提高数据质量和模型性能,如scaler = StandardScaler(); X_scaled = scaler.fit_transform(X)
对特征数据进行标准化处理,使得数据在同一尺度上,避免某些特征对模型训练产生过大影响。 - 支持模型评估和调优,提供了多种评估指标(如分类问题的准确率
accuracy_score
、精确率precision_score
、召回率recall_score
,回归问题的均方误差mean_squared_error
等)用于衡量模型性能,同时通过网格搜索(GridSearchCV
)、随机搜索(RandomizedSearchCV
)等方法对模型参数进行调优,寻找最优的模型配置,如param_grid = {'n_estimators': [100, 200], 'max_depth': [3, 5]}; grid_search = GridSearchCV(estimator, param_grid)
对随机森林模型的参数进行网格搜索调优,提高模型的准确性和泛化能力。
- 涵盖了丰富的机器学习算法,包括分类算法(如决策树
- 全面的机器学习工具包:
- SciPy
- 专业的科学计算库:
- 包含了众多科学计算领域的算法和工具,如数值积分(
scipy.integrate
模块)、优化算法(scipy.optimize
模块)、信号处理(scipy.signal
模块)、图像处理(scipy.ndimage
模块)等,为科学研究和工程应用提供了强大的计算支持,例如使用scipy.integrate.quad()
函数进行数值积分计算,解决物理、数学等领域的积分问题。 - 在数值优化方面,提供了多种优化算法,如梯度下降法、牛顿法等,可用于求解函数的最小值或最大值,在机器学习中常用于模型参数的优化,通过定义目标函数和约束条件,使用
scipy.optimize.minimize()
函数找到最优解,提高模型的性能和效果。 - 信号处理模块提供了滤波、频谱分析等功能,如
scipy.signal.butter()
设计巴特沃斯滤波器,scipy.signal.fft()
进行快速傅里叶变换,可应用于音频处理、通信工程等领域,对信号进行分析、滤波和特征提取,满足专业的信号处理需求。
- 包含了众多科学计算领域的算法和工具,如数值积分(
- 专业的科学计算库:
- Statsmodels
- 统计分析与建模:
- 提供了丰富的统计模型和方法,包括线性回归模型、广义线性模型、时间序列分析模型(如 ARIMA)等,可用于数据分析和预测,如
import statsmodels.api as sm; X = sm.add_constant(X); model = sm.OLS(y, X).fit()
建立普通最小二乘回归模型,并进行模型拟合和参数估计,帮助分析师从数据中发现潜在的统计关系和趋势。 - 支持统计假设检验,如 t 检验、F 检验等,通过
model.summary()
输出的统计信息,可以对模型的系数、显著性等进行检验,判断变量之间的关系是否具有统计学意义,为数据分析提供严谨的统计推断依据,辅助决策制定和科学研究。 - 具备时间序列分析功能,可对时间序列数据进行平稳性检验(如
adfuller
检验)、季节性分解(seasonal_decompose
)、模型拟合(如ARIMA
模型)和预测,如from statsmodels.tsa.arima.model import ARIMA; model = ARIMA(data, order=(1, 1, 1)).fit()
对时间序列数据进行 ARIMA 模型拟合和预测,帮助企业和研究人员对具有时间趋势的数据进行分析和预测,如销售额预测、股票价格走势预测等。
- 提供了丰富的统计模型和方法,包括线性回归模型、广义线性模型、时间序列分析模型(如 ARIMA)等,可用于数据分析和预测,如
- 统计分析与建模:
- Dask
- 分布式计算能力:
- 允许在分布式环境中处理大规模数据集,通过将数据和计算任务分布到多个节点上,实现并行计算,提高计算效率,例如在处理大数据集的数据分析任务时,能够将数据分割成多个分区,在不同的计算节点上同时进行处理,加速数据处理过程,适用于数据量超出单机内存限制的场景。
- 提供了与 Pandas 和 NumPy 类似的 API,方便熟悉这些库的用户快速上手,如
import dask.dataframe as dd; df = dd.read_csv('large_data.csv')
使用dask.dataframe
读取大规模 CSV 文件,然后可以像使用pandas.DataFrame
一样进行数据处理操作,降低了分布式计算的学习门槛,提高了开发效率。 - 支持在集群环境中运行,如与 Hadoop、Spark 等集群框架集成,充分利用集群资源进行高效计算,通过配置相应的集群连接参数,将
dask
任务提交到集群中执行,实现大规模数据的分布式处理和分析,满足企业级大数据处理的需求。
- 分布式计算能力:
三、网络爬虫与数据提取
BeautifulSoup:
- 灵活的网页解析:能够解析多种格式的网页文档,比如 HTML、XML 等。它提供了简单易懂的函数和方法来遍历网页结构,像使用
find()
和find_all()
方法可以方便地按标签名、属性等条件查找对应的元素,例如soup.find('div', class_='article-content')
就能找出网页中带有article-content
类名的div
元素,便于提取其中包含的文本、链接等关键信息,在抓取网页内容用于文本分析、数据采集等场景中发挥重要作用。 - 支持多种解析器:可以搭配不同的解析器如
lxml
、html.parser
等使用,用户能够根据实际需求和解析效率选择合适的解析器。比如lxml
解析器通常解析速度较快,适合处理大规模网页解析任务,而html.parser
作为 Python 标准库自带的解析器,无需额外安装,方便在简单项目中快速应用,这使得 BeautifulSoup 在不同环境下都能较好地完成网页解析工作。
Scrapy:
- 高效的爬虫框架:拥有一套完整的爬虫架构,从请求发送、网页下载、内容解析到数据存储都有相应的模块支持。它通过定义
Spider
类,在其中编写爬虫逻辑,例如定义start_urls
来指定初始爬取的网址,再通过parse
方法处理下载回来的网页响应,提取想要的数据,极大地提高了开发爬虫的效率和规范性,适用于大规模、复杂的网络数据抓取项目,像抓取电商平台的商品信息、新闻网站的文章内容等。 - 强大的中间件机制:中间件可用于在请求和响应处理过程中添加额外的功能,比如设置请求头来伪装浏览器请求避免被网站封禁(通过
DownloaderMiddleware
),或者对响应内容进行预处理(如解压缩等操作)。同时,它还支持分布式爬取,可以借助Scrapy-Redis
等扩展将任务分配到多个节点同时进行,进一步提升爬取速度和数据获取量,满足海量数据采集的需求。
Selenium:
- 模拟浏览器操作:可以驱动真实的浏览器(如 Chrome、Firefox 等)来加载网页,对于那些依赖 JavaScript 动态渲染的网页,它能等待页面完全加载并执行完相应的脚本后再进行数据提取。例如在抓取一些需要点击按钮、下拉菜单交互后才显示全部内容的网页时,通过
driver.find_element(By.ID, 'button_id').click()
模拟点击操作,然后获取更新后的页面数据,解决了很多传统静态网页解析工具无法处理动态页面的难题。 - 灵活的页面交互与验证:不仅能进行简单的点击、输入等操作,还可以获取页面上各种元素的属性、文本内容用于验证和提取数据。比如通过
driver.get_cookies()
获取网页的 cookies,用于后续模拟登录等操作,并且可以结合WebDriverWait
等机制来设置等待条件,确保页面元素加载完成后再进行下一步操作,提高了数据获取的准确性和稳定性,常用于自动化测试以及对交互性较强的网页进行数据抓取。
四、自动化运维与脚本编写
Ansible:
- 简单的配置管理:采用基于 YAML 格式的配置文件(playbook)来定义任务,非常易于阅读和编写,即使是不熟悉复杂编程语言的运维人员也能快速上手。例如可以在 playbook 中定义安装软件包、配置服务、复制文件等操作,像下面这样的配置就能在多台服务器上安装
nginx
服务:
- name: Install nginxhosts: web_serversbecome: truetasks:- name: Install nginx packageapt:name: nginxstate: present
- 强大的自动化部署能力:通过 SSH 协议与远程主机通信,能够批量地在多台服务器上执行预定义的任务,实现自动化的软件部署、系统配置更新等操作,而且无需在远程主机上安装额外的客户端软件(除了 Python 和 SSH 服务正常运行),减少了运维部署的复杂性,提高了服务器集群管理的效率,广泛应用于云计算环境下的服务器管理以及企业内部网络的运维工作。
Fabric:
- 便捷的命令行执行:基于 Python 的
paramiko
库实现了在命令行中方便地执行远程服务器上的命令,通过编写简单的 Python 函数来定义任务,然后使用fab
命令调用这些任务,例如定义一个函数用于在远程服务器上重启某个服务:
from fabric import Connectiondef restart_service():with Connection('server_ip') as conn:conn.run('sudo service my_service restart')
- 灵活的任务编排:可以轻松地将多个命令组合成一个任务流程,按照顺序执行,比如先更新代码仓库,再安装依赖,最后重启相关服务等,并且支持根据不同的服务器角色或者环境执行不同的任务集,方便在开发、测试、生产等不同环境下进行自动化的操作,适用于中小规模的服务器运维管理以及敏捷开发中的持续集成、持续部署场景。
SaltStack:
- 高速的通信与执行机制:采用 ZeroMQ 消息队列实现主从节点(Master 和 Minion)之间的快速通信,能快速地将任务从 Master 分发到众多 Minion 节点上执行,大大提高了大规模服务器集群下任务执行的速度。例如在进行大规模的系统安全补丁安装任务时,可以迅速将安装命令发送到所有符合条件的服务器节点上同步执行,节省大量时间。
- 丰富的状态管理功能:通过定义
state
文件(也是基于 YAML 格式)来描述服务器的期望状态,比如软件包的安装版本、服务的运行状态、文件的配置内容等,SaltStack 会自动对比实际状态并进行相应的调整,确保服务器集群始终处于符合运维要求的状态,可用于复杂的服务器环境配置管理以及高可用集群的维护工作。
五、数据库操作与管理
SQLAlchemy:
- 强大的数据库抽象层:提供了统一的操作接口,能够兼容多种主流的数据库,如 MySQL、PostgreSQL、Oracle、SQLite 等,无论底层使用哪种数据库,开发者都可以使用相似的 Python 代码来进行数据库连接、表创建、数据查询插入等操作。例如创建一个数据库连接的代码如下:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://user:password@localhost/db_name')
- 灵活的 ORM(对象关系映射)功能:允许开发者将数据库表结构映射为 Python 类,表中的行对应类的实例,列对应类的属性,这样在进行数据库操作时可以像操作 Python 对象一样自然,如定义一个
User
类对应数据库中的users
表:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)email = Column(String)
这种方式提高了代码的可读性和可维护性,尤其在大型项目中便于进行数据库相关的开发工作。
MySQLdb:
- 原生的 MySQL 支持:是 Python 操作 MySQL 数据库的常用库,它直接基于 MySQL 的 C API 进行封装,性能较好,能高效地执行 SQL 语句,例如执行一个简单的查询语句:
import MySQLdbconn = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test')
cursor = conn.cursor()
cursor.execute('SELECT * FROM students')
results = cursor.fetchall()
- 丰富的数据库操作方法:提供了诸如执行查询、插入、更新、删除等各种 SQL 操作的方法,并且可以方便地处理事务,对于熟悉 MySQL 数据库本身且需要在 Python 项目中紧密结合 MySQL 特性进行开发的场景非常适用,比如开发基于 MySQL 的 Web 应用后端的数据持久化层。
psycopg2:
- 专业的 PostgreSQL 接口:专为 Python 与 PostgreSQL 数据库交互而设计,提供了全面且高效的数据库操作功能,能够很好地适配 PostgreSQL 的各种特性,比如处理复杂的数据类型(如数组、JSON 等)。像下面这样插入包含 JSON 数据的记录:
import psycopg2conn = psycopg2.connect(database="mydb", user="postgres", password="password", host="localhost", port="5321")
cur = conn.cursor()
json_data = '{"name": "John", "age": 30}'
cur.execute("INSERT INTO my_table (json_column) VALUES (%s)", (json_data,))
conn.commit()
- 稳定的连接与性能表现:确保与 PostgreSQL 数据库建立稳定可靠的连接,在高并发读写等复杂的数据库应用场景下也能保持良好的性能,常用于开发需要使用 PostgreSQL 强大功能的数据驱动型应用,如数据分析平台、企业级业务系统等的数据库操作部分。
相关文章:
Python 开源项目精彩荟萃
一、Web 开发框架 Django 高效路由系统: 支持基于正则表达式的复杂 URL 模式匹配,精准定位视图函数,例如可通过r^articles/(?P<year>\d{4})/$这样的正则表达式来匹配特定年份的文章列表页面 URL,并将年份参数传递给视图函数…...
Debezium系列之:使用Debezium采集oceanbase数据库
Debezium系列之:使用Debezium采集oceanbase数据库 一、oceanbase数据库二、安装OceanBase三、安装oblogproxy四、基于Docker的简单采集案例五、生产实际应用案例Debezium 是一个开源的分布式平台,用于监控数据库变化和捕捉数据变动事件,并以事件流的形式导出到各种消费者。D…...
AI初创企业的未来趋势和潜在挑战
AI初创企业的未来趋势和潜在挑战 AI初创企业的未来趋势和潜在挑战可以从多个方面进行分析: 未来趋势 AI监管: 随着AI技术的快速发展,各国政府开始制定相关法规,以确保AI的安全和伦理使用。这将影响初创企业的运营模式和市场准入。 日常生活…...
Grafana配置告警规则推送企微机器人服务器资源告警
前提 已经部署Grafana,并且dashboard接入数据 大屏编号地址:Node Exporter Full | Grafana Labs 创建企微机器人 备注:群里若有第三方外部人员不能创建 机器人创建完成,记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…...
RFDiffusion xyz_to_c6d函数解读
函数 xyz_to_c6d将给定的蛋白质主链坐标 (N,Cα,C)转换为 6D矩阵表示,即用以下几何特征描述两两残基之间的关系: 距离 dist:残基间 Cβ 原子的欧几里得距离。二面角 omega:两个残基的 Cα−Cβ 向量之间的二面角。二面角 theta:由 N−Cα−Cβ和 Cβ间向量定义的二面角。平…...
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
VSCode 报错:rust-analyzer requires glibc >= 2.28 in latest build
报错信息 /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.953/server/rust-analyzer: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.29 not found (required by /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.9…...
x2go远程控制
X2Go 优点:专为远程桌面和图形界面优化。性能优越,特别是在网络带宽较低的情况下,采用了高效的压缩和缓存技术。支持多用户、会话恢复功能,适合企业使用。使用 SSH 连接,具有较好的安全性。 安装与配置:需…...
SQL 单表查询练习题(一)
在 SQL 的学习过程中,单表查询是非常重要的基础部分,下面为大家分享一些单表查询的练习题以及对应的正确答案,希望能帮助大家更好地掌握相关知识。 一、题目及答案详情 1. 查询课程表中,没有前序课程的课程信息,查询…...
Ubuntu 安装texstudio sty与texlive
手动安装需要的包 访问CTAN网站(Comprehensive TeX Archive Network)并下载enumitem宏包: enumitem CTAN页面下载后,将宏包解压到/usr/share/texmf/tex/latex/下。 可打开texstudio/帮助/宏包帮助下载。 如果不想手动安装一个个…...
DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(一)
DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...
【现代服务端架构】传统服务器 对比 Serverless
在现代开发中,选择合适的架构是至关重要的。两种非常常见的架构模式分别是 传统服务器架构 和 Serverless。它们各有优缺点,适合不同的应用场景。今天,我就带大家一起对比这两种架构,看看它们的差异,并且帮助你选择最适…...
SecureCRT/FX使用[无限试用SecureCRT][新版本SecureFX双击站点总是自动跳到SecureCRT]
无限试用SecureCRT 本文摘录于:https://blog.csdn.net/qq_52162404/article/details/139703993#:~:textSecureCRT只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 我这里修改BAT如下,同时删除CRT和FX的license: echo off re…...
c++ CMakeLists.txt详解
基本结构 CMake 最低版本声明 用于指定需要的最低 CMake 版本,确保兼容性。 cmake_minimum_required(VERSION 3.10)指定 CMake 的最低版本。确保用户的 CMake 版本符合项目需求,否则报错。版本选择建议根据项目使用的功能决定。例如,3.10 引…...
树状数组详解
概述 树状数组(Binary Indexed Tree,简称BIT),是一种数据结构,用于处理区间查询和更新问题。它是一种可以高效地在对数级别时间复杂度内进行单点更新和区间查询的数据结构。树状数组通常用于解决以下两类问题…...
photoshop的2个形状-箭头
有时候用ps画一些教程类图文,需要用到箭头. 另外自己画了一个镂空的长方形和正方形 形状的路径一般在Custom Shapes文件夹内 例如 E:\photoshopCS4\Adobe Photoshop CS4\Presets\Custom Shapes...
docker 部署 redis
docker 部署 redis 1. 下载 redis 镜像 # docker images | grep redis bitnami/redis 7.2.4-debian-11-r5 45de196aef7e 10 months ago 95.2MB2. docker-compose 部署 version: "3" services:redis:image: bitnami/redis:7.2.4-debian-11-…...
如何持续优化呼叫中心大模型呼入机器人的性能?
如何持续优化呼叫中心大模型呼入机器人的性能? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 持续优化呼叫中心大模型呼入机器人的性能是一个复杂而细致的过程,它涉及到数据、模型结构…...
【01】mysql安装后MySQL Configurator无法启动的问题
安装完Mysql之后打开MySql Configurator提示MySQL Configurator Internal error.(值不能为null.参数名:input) The Configurator will now close. mysql安装后MySQL Configurator无法启动的问题 文章目录 mysql安装后MySQL Configurator无法启动的问题1.MySQL Configurator无法…...
基于单片机的血氧心率检测与报警系统(论文+源码)
1系统的功能及方案设计 本次课题为基于单片机的血氧心率检测与报警系统研制,在此设计了如图2.1所示的系统结构框图,整个系统包括了MAX30102心率血氧检测模块,DS18B20体温检测模块,液晶显示模块,按键以及主控制器stm32…...
科技潮头浪接天,一桥飞架两界连。EthernetIP转Profinet互译连
本案例介绍的是西门子1200PLC通过稳联技术PROFINET转EtherNetIP网关(WL-ABC2006)连接HCS-6100系统配置案例。 打开稳联技术Ethernetip转profient网关(WL-ABC2006)配置软件,因为网关作为EtherNetIP从站,所以选择PN2EIP。设置网关Pr…...
day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)直连数据库+逻辑控制器+定时器
【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、复习 1.1 断言(3种) 1.2 关联(3种) 1.3 录制脚本 2、Jmeter直连数据库 2.1 直连数据库——使用场景 2.2 直连数据库——操作步骤 2.2.1 案例1&…...
如何使用 Python 读取文本文件?
在Python编程中,读取文本文件是一项基本且重要的操作。 无论是处理日志文件、配置文件,还是进行数据分析,都需要用到这一技能。 下面,我将详细介绍如何使用Python读取文本文件,并提供一些实际开发中的建议和注意事项…...
11. qml ShaderEffect实现阴影效果
目录 MDropShadow.qml使用 MDropShadow.qml 基于上一章所制作的MGaussianBlur.qml 开发 MDropShadow阴影效果 import QtQuick 2.12Item {id: controlproperty var source;property real radius: 4property bool cached: falseproperty int offsetX: 0property int offsetY: 0…...
故障013:易忘的NULL表达式
故障013:易忘的NULL表达式 一、问题引入二、探索之路2.1 数据准备2.2 回顾NULL表达式2.3 重现问题2.3.1 分析原因2.3.2 如何化解预期? 三、知识总结 一、问题引入 某单位开发人员理直气壮抛出一张截图,以红色醒目地标记问题,好似…...
基于nginx和ffmpeg搭建HTTP FLV流媒体服务器
一、简介 整体是使用nginx搭建HTTP FLV流媒体服务器: 流程:音视频->rtmp->http-flv 音视频转为rtmp需要借助ffmpeg转化。 rtmp转为http-flv需要借助nginx转化。 nginx-http-flv-module是基于nginx-rtmp-module开发的,包含nginx-rt…...
【人工智能】用Python构建高效的自动化数据标注工具:从理论到实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 数据标注是构建高质量机器学习模型的关键环节,但其耗时耗力常成为制约因素。本篇文章将介绍如何用Python构建一个自动化数据标注工具,结合机器学习和NLP技术,…...
MVC基础——市场管理系统(四)
文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…...
多模块应用、发布使用第三方库(持续更新中)
目录: 1、多模块概述(HAP、HSP、HAR) HAR与HSP两种共享包的主要区别体现在: 2、三类模块: 3、创建项目:项目名:meituan (1)创建Ability类型的Module,编译后为HAP文件…...
MVP模式的理解和实践
MVP(Model-View-Presenter)模式是一种用于组织代码的架构模式,主要用于用户界面的开发。它通过将应用程序的三个主要组件分开,提高了应用的可维护性和可测试性。本文将详细介绍MVP模式的理解和实践,并通过Java语言提供…...
开启第二阶段---蓝桥杯
一、12.10--数据类型的范围及转化 今天是刚开始,一天一道题 对于这道题我想要记录的是Java中的整数默认是 int 类型,如果数值超出了 int 的范围,就会发生溢出错误。为了避免这个问题,可以将数字表示为 long 类型,方法…...
Linux 网络流量控制 - 实现概述
摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计,描述了其结构,并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov(kuznet…...
分布式 Raft算法 总结
前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…...
【前端面试题】变量提升、闭包、promise
飞书面试 题目1: async function foo() {console.log(foo start);await bar();console.log(foo end); }async function bar() {console.log(bar start);return new Promise((resolve, reject) > {setTimeout(() > {console.log(bar promise);resolve();}, 1…...
UE5安装Fab插件
今天才知道原来Fab也有类似Quixel Bridge的插件,于是立马就安装上了,这里分享一下安装方法 在Epic客户端 - 库 - Fab Library 搜索 Fab 即可安装Fab插件 然后重启引擎,在插件面板勾选即可 然后在窗口这就有了 引擎左下角也会多出一个Fab图标…...
数据分析思维(一):业务指标(数据分析并非只是简单三板斧)
个人认为,数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#x…...
linux下socket本地套接字通讯
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 用途 进程间通信:本地套…...
vmcore和kdump
在Linux系统中,vmcore是指内核崩溃时生成的内存转储文件。这个文件包含了系统崩溃时的内存状态,可以用于分析和诊断内核崩溃的原因。分析vmcore文件通常需要使用专门的工具和方法。以下是关于vmcore的一些关键点: 生成vmcore Kdump…...
[线段树] 回转寿司
题目描述 酷爱日料的小 Z Z Z 经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司通过传送带依次呈现在小Z眼前。 不同的寿司带给小Z的味觉感受是不一样的,我们定义小 Z Z Z 对每盘寿司都有一个满意度。 例如小 Z Z Z 酷爱三文鱼,他对…...
RobotFrameWork详解-RF框架脚本测试集成
Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。 之前讲过很多RF框架的内…...
【操作系统】实验八:添加/proc文件系统
实验八 添加/proc文件系统 8.1 实验目的 通过加载内核模块,为/proc文件系统创建以下内容: 一个名叫proc_test的子目录。 一个名叫current的文件,只读,读出的内容是读它的进程的情况。 一个名叫current_too的链接,…...
操作系统(8)死锁
一、概念 死锁是指在一个进程集合中的每个进程都在等待只能由该集合中的其他进程才能引起的事件,而无限期地僵持下去的局面。在多任务环境中,由于资源分配不当,导致两个或多个进程在等待对方释放资源时陷入无限等待的状态,这就是死…...
3D 生成重建039-Edify 3D:Nvidia的3D生成大模型
3D 生成重建039-Edify 3D:Nvidia的3D生成大模型 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 文档介绍了Edify 3D,一种为高质量的3D资产生成而设计的高级解决方案。首先在多个视点上合成了所描述对象的RGB和表面法线图像正在使用扩散模型。然后使用多视图…...
vue绕过rules自定义编写动态校验
今天犯了个低级错误,虽然走了很多弯路,但这个过程还是值得记录一下 例子如下,有两个输入框: 第一个是套餐选择下拉框,可以下拉选择三个内容 第二个要根据上面的套餐选择三个选项来决定怎么显示,使用v-if&…...
.NET中的JSON序列化库:Newtonsoft.Json与System.Text.Json对比与示例
在.NET生态系统中,存在多个用于JSON序列化的库,其中最为常用和知名的包括Newtonsoft.Json(也称为Json.NET)和System.Text.Json。以下是这两个库的区别: Newtonsoft.Json(Json.NET) 功能与灵活…...
Electron-Vite 项目搭建(Vue)
前提条件 Node.js: 确保已安装 Node.js 版本 18 或更高版本 (推荐使用最新稳定版)。Vite: 确保 Vite 版本为 4.0 或以上。包管理工具: 推荐使用 pnpm,但也可以使用 npm 或 yarn。 安装 Electron-Vite 首先,在项目中安装 electron-vite 作为开发依赖&a…...
Elasticsearch Java Api Client中DSL语句的查询方法汇总
说明:示例代码依赖的是co.elastic.clients:elasticsearch-java:8.16.1。 1、termQuery 方法 用途:用于精确匹配某个字段的完全相等的值。这在查询如文档的 ID、状态码等具有明确取值的字段时非常有用。参数说明: field:这是一个…...
Linux之远程登录
一、使用ssh命令登录 winR打开cmd输入命令 # root是命令,192.168.101.200是地址 ssh root192.168.101.200是否要保存密码,就是yes以后可以免密登录,这里就yes了 输入密码,就登录成功了 操作完成之后,输入命令退出 e…...
医学图像分割数据集腹部肝脏多器官图像分割数据集labelme格式860张10类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):860 标注数量(json文件个数):860 标注类别数:10 标注类别名称:["liver","stomach","o…...
Xerces-C,一个成熟的 C++ XML 解析库!
嗨,大家好!我是一行。今天咱们来探索 Xerces-C,它可是 C里超棒的 XML 解析库哦!能帮咱轻松处理 XML 数据,在很多数据交互、配置文件读取场景都超实用,快来一起学习使用它的妙招吧。 一、Xerces-C 是什么&am…...