平面设计师招聘信息/关键词优化的策略

平面设计师招聘信息,关键词优化的策略,直销结算网站开发,开通微商城要多少钱Dask:Python高效并行计算利器 Dask是一个开源的Python并行计算库,旨在扩展Python常用工具(如NumPy、Pandas、Scikit-learn等)的功能,使其能够处理更大规模的数据集和更复杂的计算任务。它通过动态任务调度和分布式计算…

Dask:Python高效并行计算利器

Dask是一个开源的Python并行计算库,旨在扩展Python常用工具(如NumPy、Pandas、Scikit-learn等)的功能,使其能够处理更大规模的数据集和更复杂的计算任务。它通过动态任务调度和分布式计算,能够高效处理超出单机内存容量的大数据。
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。

第一章:Dask与Pandas基础回顾与对比

一、理论部分

(一)Dask与Pandas的关系及区别

Pandas 是用于数据处理和分析的强大工具,尤其擅长处理结构化数据,但它的计算能力受限于单机内存和计算资源。Dask 则是一个并行计算库,能够扩展 Pandas 的功能,使我们能够在多核 CPU 甚至集群上处理大规模数据。Dask 通过创建计算任务的有向无环图(DAG),智能地管理任务的并行执行,从而提高计算效率。

(二)Dask在处理大规模数据方面的优势

  • 并行计算 :Dask 能够将任务分解成多个小任务并在多个核心或节点上并行执行,大大加快计算速度。
  • 可处理超大规模数据 :即使数据量超过内存限制,Dask 也能通过分块处理的方式进行计算。
  • 与 Pandas 高度兼容 :Dask 的 API 设计与 Pandas 高度相似,使得熟悉 Pandas 的用户能够快速上手。

(三)A股市场数据分析对计算框架的需求

A 股市场拥有海量的股票数据,包括日线、分钟线、基本面数据等。随着数据量的增长和分析复杂度的提高,传统的单机计算框架如 Pandas 难以满足高效数据分析的需求。Dask 能够很好地应对这些挑战,提供快速、可扩展的数据分析能力。

二、实战部分

(一)使用 Tushare 获取 A 股基础数据

首先,我们需要安装 Tushare 和 Dask 库。在终端中运行以下命令:

pip install tushare "dask[distributed]" bokeh

然后,获取 Tushare 的 API 接口:

import tushare as ts
import pandas as pd# 设置 Tushare pro 的 token,请替换为你的实际 token
ts.set_token("your_token")
pro = ts.pro_api()# 获取 A 股股票列表
stock_basic = pro.stock_basic(exchange="",list_status="L",fields="ts_code,symbol,name,area,industry,list_date",
)# 后续章节数据准备# 保存 parquet 文件
stock_basic.to_parquet("./data/stock_basic.parquet")# 读取 parquet 文件
stock_basic = pd.read_parquet("./data/stock_basic.parquet")
print(stock_basic.head())

(二)Pandas 处理 A 股日线数据的基本操作示例

获取股票日线数据并进行基本处理:

import pandas as pd# 获取某只股票的日线数据
df = pro.daily(ts_code="000001.SZ", start_date="20230101", end_date="20231231")# 数据清洗:检查缺失值
print(df.isnull().sum())# 简单统计:计算涨跌幅的均值和标准差
print(df["pct_chg"].mean(), df["pct_chg"].std())

(三)将 Pandas 代码改写为 Dask 代码的初步尝试及对比分析

使用 Dask 处理相同的数据:

import dask.dataframe as dd# 使用 Dask 获取数据
ddf = dd.from_pandas(df, npartitions=4)# Dask 数据清洗:检查缺失值
print(ddf.isnull().sum().compute())# Dask 简单统计:计算涨跌幅的均值和标准差
print(ddf["pct_chg"].mean().compute(), ddf["pct_chg"].std().compute())

对比分析

  • 性能 :对于小规模数据,Pandas 和 Dask 的性能差异不大。但当数据量增大时,Dask 的并行计算优势会逐渐显现。
  • 内存使用 :Dask 通过分块处理数据,能够更好地管理内存使用,避免因数据过大导致内存不足的问题。
  • 代码兼容性 :大部分 Pandas 的代码可以很容易地改写为 Dask 代码,只需将 pd 替换为 dd ,并添加 .compute() 来触发计算。

第二章:Dask Delayed - 实现自定义并行计算

一、理论部分

(一)Dask Delayed的核心原理

Dask Delayed 是 Dask 提供的一个简单且强大的装饰器,用于将单个函数的执行标记为延迟计算。通过延迟计算,Dask 可以构建一个计算任务的有向无环图(DAG),智能地管理任务的并行执行,从而提高计算效率。

(二)如何构建延迟计算图

使用 @delayed 装饰器标记函数,Dask 会记录函数的调用过程,而不是立即执行。通过 dask.compute() 函数触发整个计算图的执行。

(三)并行计算在A股数据分析中的应用场景

  • 多只股票数据的并行读取与处理
  • 复杂技术指标的并行计算
  • 大规模数据的分组统计

二、实战部分

(一)对A股多只股票的历史数据进行并行读取与初步处理

import dask
import dask.dataframe as dd
import pandas as pd@dask.delayed
def fetch_stock_data(ts_code, start_date, end_date):# 获取单只股票的日线数据df = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)return df# 获取股票列表
stock_list = stock_basic[:10]["ts_code"].tolist()# 构建延迟计算图
results = []
for stock in stock_list:result = fetch_stock_data(stock, "20230101", "20231231")results.append(result)# 触发计算
final_results = dask.compute(*results)# 查看结果
for i, df in enumerate(final_results):print(f"股票代码:{stock_list[i]}")print(df.head())print("\n")# 后续章节数据准备# 按 ts_code 分区写入
stock_data = pd.concat(final_results)
stock_data = stock_data.sort_values("trade_date")
stock_data.to_parquet("./partitioned_data/", partition_cols="ts_code")# 读取 parquet 文件
stock_data = pd.read_parquet("./partitioned_data/")
print(stock_data.head())

(二)实现自定义的技术指标计算,并行应用于多只股票

@dask.delayed
def calculate_technical_indicator(df):# 计算移动平均线df["ma5"] = df["close"].rolling(window=5).mean()df["ma10"] = df["close"].rolling(window=10).mean()# 计算相对强弱指数(RSI)delta = df["close"].diff()gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean()rs = gain / lossdf["rsi"] = 100 - (100 / (1 + rs))return df# 构建延迟计算图
processed_results = []
for result in results:processed_result = calculate_technical_indicator(result)processed_results.append(processed_result)# 触发计算
final_processed_results = dask.compute(*processed_results)# 查看结果
for i, df in enumerate(final_processed_results):print(f"股票代码:{stock_list[i]}")print(df.tail())print("\n")

(三)对比使用与不使用Delayed的计算性能差异

import time# 不使用 Delayed 的情况
start_time = time.time()normal_results = []
for stock in stock_list:df = pd.read_parquet("partitioned_data",filters=[("ts_code", "=", stock),("trade_date", ">=", "20230101"),("trade_date", "<=", "20231231"),],)normal_results.append(df)end_time = time.time()
print(f"不使用 Delayed 的计算时间:{end_time - start_time}秒")@dask.delayed
def get_stock_data(ts_code, start_date, end_date):# 获取单只股票的日线数据df = pd.read_parquet("partitioned_data",filters=[("ts_code", "=", ts_code),("trade_date", ">=", start_date),("trade_date", "<=", end_date),],)return df# 构建延迟计算图
results = []
for stock in stock_list:result = get_stock_data(stock, "20230101", "20231231")results.append(result)# 使用 Delayed 的情况
start_time = time.time()# 重新构建延迟计算图并触发计算
final_results = dask.compute(*results)
end_time = time.time()
print(f"使用 Delayed 的计算时间:{end_time - start_time}秒")

第三章:Dask Dataframe - 大规模结构化数据处理

一、理论部分

(一)Dask Dataframe的分块机制

Dask Dataframe 将数据分为多个块(partitions),每个块是一个 Pandas Dataframe。这种分块机制使得 Dask 能够处理超过内存限制的大规模数据,通过并行处理每个块来加速计算。

(二)与Pandas兼容的API设计及扩展

Dask Dataframe 的 API 设计与 Pandas 高度兼容,使得熟悉 Pandas 的用户能够快速上手。同时,Dask 还扩展了一些功能,能够更好地处理大规模数据。

(三)大数据场景下的数据分区与筛选策略

在大数据场景下,合理的数据分区和筛选策略能够大大提高计算效率。可以通过时间、行业、市值等维度对数据进行分区,并在计算过程中进行有效的筛选。

二、实战部分

(一)处理大规模A股日线数据,实现数据的清洗与预处理

import dask.dataframe as dd
import pandas as pd# 获取股票列表
stock_basic = pd.read_parquet("./data/stock_basic.parquet")
stock_list = stock_basic[:10]["ts_code"].tolist()# 构建 Dask Dataframe
ddf = dd.from_delayed([get_stock_data(stock, "20230101", "20231231") for stock in stock_list]
)# 数据清洗:去除缺失值和异常值
ddf = ddf.dropna(subset=["close", "vol"])
ddf = ddf[(ddf["close"] > 0) & (ddf["vol"] > 0)]# 预处理:计算每分钟成交量加权平均价
ddf["vwap"] = (ddf["close"] * ddf["vol"]).cumsum() / ddf["vol"].cumsum()# 查看结果
print(ddf.head())

(二)基于Dask Dataframe进行复杂的分组统计(如按行业、按市值等分组分析股票走势)

# 获取股票行业信息
industry_data = stock_basic[:10][["ts_code", "industry"]]# 合并行业信息到分钟线数据
ddf = ddf.merge(industry_data, on="ts_code", how="left")# 按行业分组,计算每个行业股票的平均价格走势
grouped = ddf.groupby("industry")["close"].mean().compute()# 查看结果
print(grouped)

(三)优化Dataframe计算过程中的内存使用与计算效率

# 优化内存使用:转换数据类型
ddf["close"] = ddf["close"].astype("float32")
ddf["vol"] = ddf["vol"].astype("int32")# 持久化数据到内存,避免重复计算
ddf = ddf.persist()# 计算每个行业的成交量总和
industry_vol_sum = ddf.groupby("industry")["vol"].sum().compute()# 查看结果
print(industry_vol_sum)

第四章:Dask Array - 高维数据的并行计算

一、理论部分

(一)Dask Array的块状数据结构

Dask Array 将数据分为多个块(chunks),每个块是一个 NumPy 数组。块这种状数据结构使得 Dask 能够处理超过内存限制的大规模数组数据,并通过并行处理每个块来加速计算。

(二)类似NumPy的API设计及并行计算实现

Dask Array 的 API 设计与 NumPy 高度相似,使得熟悉 NumPy 的用户能够快速上手。Dask 通过并行计算和优化任务调度,实现了对大规模数组的高效处理。

(三)在量化分析中的矩阵运算场景应用

在量化分析中,Dask Array 可以用于计算股票的相关性矩阵、进行矩阵分解、执行复杂的因子计算等高维数据运算场景。

二、实战部分

(一)构建A股股票的相关性矩阵,分析股票间的联动性

import dask
import dask.array as da
import matplotlib.pyplot as plt# 获取多只股票的日线收盘价格
@dask.delayed
def get_price_data(ts_code, start_date, end_date):df = pd.read_parquet("partitioned_data",columns=["trade_date", "close"],filters=[("ts_code", "=", ts_code),("trade_date", ">=", start_date),("trade_date", "<=", end_date),],)return df.set_index("trade_date")["close"]# 构建 Dask Dataframe
ddf = [get_price_data(stock, "20230101", "20231231") for stock in stock_list]price_dfs = dask.compute(*ddf)
prices = pd.concat(price_dfs, axis=1, keys=stock_list).ffill().dropna()# 计算收益率并转换为Dask Array
returns = prices.pct_change().dropna()
dask_returns = da.from_array(returns.values.T, chunks=(10, 1000))  # 分块处理# 并行计算相关系数矩阵
corr_matrix = da.corrcoef(dask_returns)# 可视化结果
plt.figure(figsize=(10, 8))
plt.imshow(corr_matrix.compute(), cmap="viridis", interpolation="none")
plt.colorbar()
plt.title("Stock Correlation Matrix")
plt.show()

(二)使用 Dask 进行大规模因子计算(如计算多种技术指标的矩阵运算)

from dask.distributed import Client
import dask.dataframe as dd
import numpy as np
import pandas as pd
import talib# 启动Dask本地集群
client = Client()try:# 示例数据stock_data = pd.read_parquet("partitioned_data")# 创建Dask DataFrame并分区ddf = dd.from_pandas(stock_data[["trade_date", "ts_code", "close"]], npartitions=4)ddf = ddf.set_index("ts_code").repartition(partition_size="25MB")# 定义计算RSI的函数def calculate_rsi(partition, timeperiod=14):# 确保按时间排序partition = partition.sort_values("trade_date")partition["trade_date"] = pd.to_datetime(partition["trade_date"])# 使用TA-Lib计算RSIpartition["RSI"] = talib.RSI(partition["close"].values, timeperiod=timeperiod)return partition# 并行计算RSIresult = ddf.map_partitions(calculate_rsi,meta={"trade_date": "datetime64[ns]", "close": "float64", "RSI": "float64"},)# 执行计算并获取结果df_result = result.compute()print(df_result.tail(20))
finally:# 关闭Dask客户端client.close()

(三)对比Dask Array与传统NumPy在大规模数据计算上的性能表现

import numpy as np
import dask.array as da
import time# 使用 NumPy 计算相关性矩阵
numpy_values = ddf["close"].compute()
start_time = time.time()
numpy_corr_matrix = np.corrcoef(numpy_values)
end_time = time.time()
print(f"NumPy 计算时间:{end_time - start_time}秒")# 使用 Dask Array 计算相关性矩阵
start_time = time.time()
dask_corr_matrix = da.corrcoef(ddf["close"]).compute()
end_time = time.time()
print(f"Dask Array 计算时间:{end_time - start_time}秒")

第五章:Dask分布式计算与集群部署

一、理论部分

(一)Dask分布式架构概述

Dask 分布式架构由客户端、调度器(Scheduler)和工作节点(Workers)组成。客户端提交任务,调度器负责任务调度与资源管理,工作节点执行具体计算任务。

(二)Worker节点的任务分配与数据传输机制

调度器根据任务依赖关系和数据位置等因素,智能地将任务分配给工作节点。工作节点之间通过网络进行数据传输,确保数据在计算过程中高效流动。

(三)在企业级A股数据分析项目中的部署方案

在企业级项目中,可以根据数据规模和计算需求,部署单机多进程、多机集群等不同形式的 Dask 分布式环境。通过合理配置资源,实现高效的并行计算。

二、实战部分

(一)搭建本地Dask分布式集群

from dask.distributed import Client, LocalCluster# 搭建本地分布式集群
cluster = LocalCluster(n_workers=4, threads_per_worker=2)
client = Client(cluster)# 查看集群信息
print(client)

(二)将前面章节的实战案例迁移到分布式环境下运行

# 以第二章的股票数据并行读取与处理为例
@dask.delayed
def get_stock_data(ts_code, start_date, end_date):# 获取单只股票的日线数据df = pd.read_parquet("partitioned_data",filters=[("ts_code", "=", ts_code),("trade_date", ">=", start_date),("trade_date", "<=", end_date),],)return df# 获取股票列表
stock_basic = pd.read_parquet("./data/stock_basic.parquet")
stock_list = stock_basic[:10]["ts_code"].tolist()# 构建延迟计算图
results = []
for stock in stock_list:result = get_stock_data(stock, "20230101", "20231231")results.append(result)# 在分布式环境下触发计算
final_results = dask.compute(*results)# 查看结果
for i, df in enumerate(final_results):print(f"股票代码:{stock_list[i]}")print(df.head())print("\n")

(三)监控集群运行状态,分析分布式计算的性能瓶颈与优化方向

# 查看任务进度
client.dashboard_link# 分析性能瓶颈
# 通过 Dask 的可视化仪表板,可以查看任务执行时间、数据传输情况等信息,从而找出性能瓶颈。
# 常见的优化方向包括增加工作节点数量、调整任务划分粒度、优化数据传输方式等。

第六章:Dask在量化投资策略中的综合应用

一、理论部分

(一)量化投资策略的典型流程与计算需求

量化投资策略通常包括数据获取、数据处理、因子计算、策略构建和回测等环节。每个环节都对计算框架提出了不同的需求,如高效的数据处理、大规模并行计算、复杂模型的实现等。

(二)Dask如何支持多因子模型、回测系统等复杂策略开发

Dask通过其强大的并行计算和大规模数据处理能力,能够高效地支持多因子模型的因子计算、数据整合以及回测系统的快速模拟。它能够处理海量的历史数据和实时数据,为复杂策略的开发提供坚实的基础。

(三)大规模数据下的策略优化与风险控制

在大规模数据环境下,策略优化需要考虑计算效率和资源利用。同时,风险控制也需要通过高效的数据分析和模型监测来实现。Dask能够帮助在这些方面进行有效的管理和优化。

二、实战部分

(一)开发基于Dask的多因子选股模型,处理海量基本面与技术面数据

import dask.dataframe as dd
from dask.distributed import Client# 搭建本地分布式集群
cluster = LocalCluster(n_workers=4, threads_per_worker=2)
client = Client(cluster)# 获取技术面数据
technical_data = dd.from_delayed([get_stock_data(stock, "20230101", "20231231") for stock in stock_list]
).compute()# 合并基本面与技术面数据
combined_data = dd.merge(stock_basic, technical_data, on="ts_code", how="left")# 计算选股因子,如移动平均线等
combined_data["ma5"] = combined_data["close"].rolling(window=5).mean()
combined_data["ma10"] = combined_data["close"].rolling(window=10).mean()# 筛选符合条件的股票
selected_stocks = combined_data[(combined_data["ma5"] > combined_data["ma10"])]# 查看结果
print(selected_stocks.compute())

(二)实现高效的回测系统,模拟交易并分析策略表现

# 定义回测函数
def backtest(strategy, data):# 初始化账户资金和持仓capital = 1000000positions = {}# 遍历数据,模拟交易for index, row in data.iterrows():signal = strategy(row)if signal == "buy" and capital > 0:# 买入逻辑shares = capital // row["close"]positions[row["ts_code"]] = sharescapital -= shares * row["close"]elif signal == "sell" and row["ts_code"] in positions:# 卖出逻辑capital += positions[row["ts_code"]] * row["close"]del positions[row["ts_code"]]# 计算最终收益final_value = capital + sum(positions.get(ts_code, 0) * data[data["ts_code"] == ts_code]["close"].iloc[-1]for ts_code in positions)return final_value# 定义策略函数
def simple_strategy(row):if row["ma5"] > row["ma10"]:return "buy"elif row["ma5"] < row["ma10"]:return "sell"else:return "hold"# 获取回测数据
backtest_data = selected_stocks.compute()
backtest_data = backtest_data.sort_values("trade_date")# 执行回测
result = backtest(simple_strategy, backtest_data)
print(f"策略最终收益:{result}元")

(三)对策略进行压力测试与参数优化,提升稳健性

# 定义参数优化函数
def optimize_parameters(param_range, strategy, data):best_params = Nonebest_return = -float('inf')for params in param_range:# 设置策略参数# 执行回测return_value = backtest(strategy, data)# 更新最佳参数if return_value > best_return:best_return = return_valuebest_params = paramsreturn best_params, best_return# 定义参数范围
param_range = [(5, 10), (10, 20), (20, 40)]  # 不同的均线窗口组合# 执行参数优化
best_params, best_return = optimize_parameters(param_range, simple_strategy, backtest_data)
print(f"最佳参数:{best_params}, 最佳收益:{best_return}元")

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握市场先机:9款销售渠道管理工具深度测评

本文主要介绍了以下9款销售渠道管理工具&#xff1a;1.纷享销客&#xff1b; 2.销帮帮&#xff1b; 3.小满CRM&#xff1b; 4.有赞&#xff1b; 5.Oracle NetSuite&#xff1b; 6.Salesforce Sales Cloud&#xff1b; 7.Cin7&#xff1b; 8.Pipedrive&#xff1b; 9.BigCommerc…

C语言基础知识04

指针 指针概念 指针保存地址&#xff0c;地址是字节的编号 指针类型和保存的地址类型要一直 使用时注意&#xff0c;把地址转换为&变量的格式来看 int a[3]; a转为&a[0] 指针的大小 64bit 固定8字节&#xff0c; 32bit 固定4字节 指针…

异常(9)

大家好,今天我们来详细介绍一下异常抛出的知识,在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,话不多说,来看. 在java中,可以借助throw关键字,抛出一个指定的异常对象,将错误对象告知给调用者,具体语法如下&#xff1a; throw new xxx("异常产生…

网络安全就业形势

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。 第一部分&am…

Linux 命名管道

文章目录 &#x1f680; 深入理解命名管道&#xff08;FIFO&#xff09;及其C实现一、命名管道核心特性1.1 &#x1f9e9; 基本概念 二、&#x1f4bb; 代码实现解析2.1 &#x1f4c1; 公共头文件&#xff08;common.hpp&#xff09;2.2 &#x1f5a5;️ 服务器端&#xff08;s…

sap 内存管理与数据共享方式

SAP内存管理 内存是程序之间为了传递数据而使用的共享存储空间 SAP内存分类&#xff1a;1、SAP内存&#xff0c;2、ABAP内存 这两种内存都是针对同一登录用户实现数据共享。 SAP内存&#xff08;SAP Memory&#xff09;和ABAP内存&#xff08;ABAP Memory&#xff09;&…

python笔记2

变量&#xff1a;含义 一个容器&#xff0c;计算机当中的存储空间。 可以理解为一个用于标识或引用数据的名字或标签。 作用&#xff1a; 可以通过定义一个变量来给需要使用多次的数据命名&#xff0c;就像一个标签一样。下次需要使用这个数据时&#xff0c;只需要通过这个变…

【Linux系统编程】信号

目录 1、信号1.1、什么是信号1.2、进程对信号的处理1.3、信号的生命周期1.4、信号处理流程1.5、信号的发送 2、kill()、raise()函数 发送信号3、alarm函数 闹钟信号4、pause函数 挂起信号、暂停5、singal 函数 捕获信号5.1、为什么返回值是上一次的处理方式5.2、练习 6、sigact…

实用小工具——快速获取数据库时间写法

最近我遇到了一个比较棘手的问题&#xff1a;在工作中&#xff0c;各个项目所使用的数据库类型各不相同。这导致我习惯性地使用Oracle的SQL语句进行编写&#xff0c;但每次完成后都会遇到报错&#xff0c;最终才意识到项目的数据库并非Oracle。为了避免这种情况&#xff0c;我需…

数据类型及sizeof,进制转换

其实数据类型可以讲很多内容&#xff0c;这里看情况需要讲多久吧。 本篇基本都是理论。 目录 数据类型的分类 基本数据类型 构造数据类型 指针类型 空类型 计算数据类型或变量所占用的内存字节数 基本语法 进制转换 二进制 二进制的概念 二进制与十进制的转换 十六进…

落雪音乐Pro 8.8.6 | 内置8条音源,无需手动导入,纯净无广告

洛雪音乐Pro版内置多组稳定音源接口&#xff0c;省去手动导入的繁琐操作&#xff0c;安装即可畅听海量音乐。延续原版无广告的纯净体验&#xff0c;支持歌单推荐与音源切换&#xff0c;满足个性化听歌需求。此版本仅支持在线播放&#xff0c;无法下载音乐&#xff0c;且与原版不…

mac安装navicat及使用

0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…

【Unity】 HTFramework框架(六十二)Agent编辑器通用智能体(AI Agent)

更新日期&#xff1a;2025年3月14日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 编辑器通用智能体AIAgent类Friday&#xff08;星期五&#xff09;启用智能体设置智能体类型开放智能体权限智能体交互资源优化批处理运行代码联网搜索休闲…

MFC中使用Create或CreateDialog创建对话框失败,GetLastError错误码为1813(找不到映像文件中指定的资源类型)

文章目录 创建对话框失败示例、原因分析及解决方案示例代码错误原因解决方案 AFX_MANAGE_STATE(AfxGetStaticModuleState())作用一、功能1. 模块状态切换2. 自动状态恢复 二、为什么要用该函数&#xff1f;三、必须使用该宏的典型场景1. MFC 扩展 DLL&#xff08;Extension DLL…

《MySQL数据库从零搭建到高效管理|表的增删改查(基础)》

目录 引言&#xff1a; 一、表的操作 1.1 创建学生表 1.2 查看表结构 1.3 删除表 1.4 修改表名 1.5 添加字段 1.6 修改字段 1.7 删除字段 1.8 小结 二、CRUD 2.1 新增&#xff08;Create&#xff09;数据 2.2 查询&#xff08;Retrieve&#xff09;数据 2.3 修改&…

建筑管理(2): 施工承包模式,工程监理,质量监督

文章目录 一. 施工承包模式1. 施工总承包模式1.1 施工总承包的特点1.2 施工总承包模式中的承包方 2. 平行承包模式3. 联合体与合作体承包模式 二. 工程监理1. 强制实行监理的工程范围1.1 国家重点建设工程1.2 大中型公用事业工程(重点)1.3 成片开发建设的住宅小区工程1.4 必须实…

Python的字符串优雅优化策略:特定编码 -> Unicode码点 -> UTF-8(可自定义)

Python利用唯一uni-pot中介打理&#xff0c;任意制式输出&#xff08;首选uyf-8&#xff09;。 笔记模板由python脚本于2025-03-14 23:37:04创建&#xff0c;本篇笔记适合喜欢探究字符串编码细节的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思…

虚拟化数据恢复—重装系统服务器崩了的数据恢复过程

虚拟化数据恢复环境&故障&#xff1a; VMware虚拟化平台 vmfs文件系统 工作人员误操作重装操作系统&#xff0c;服务器崩溃。 重装系统会导致文件系统元文件被覆盖。要恢复数据&#xff0c;必须找到&提取重装系统前的文件系统残留信息&#xff0c;通过提取出来的元文件…

微信开发者工具内建终端使用不了npm,但是cmd可以

下载cnpm并配置镜像源 终端cmd&#xff1a; npm install -g cnpm --registryhttp://registry.npmmirror.com 打开微信开发者工具&#xff0c;找到方框的文件右击选择内建终端打开 初始化&#xff1a; npm init -y 发现npm没有此命令 关闭微信开发工具&#xff0c;用管理…

vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮

如果你是vite项目&#xff0c;直接写一个vite的插件&#xff0c;通过这个插件可以动态注入环境变量&#xff0c;然后当打包的时候&#xff0c;自动注入这个时间到环境变量中&#xff0c;然后在项目中App.vue中或者Main.tsx中打印出来&#xff0c;这就知道是什么时候编译的项目了…