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

【机器学习实战入门】使用LSTM机器学习预测股票价格

在这里插入图片描述
在这里插入图片描述
机器学习在股票价格预测中有重要的应用。在这个机器学习项目中,我们将讨论如何预测股票的收益。这是一个非常复杂的任务,充满了不确定性。我们将会把这个项目分成两部分进行开发:

首先,我们将学习如何使用 LSTM 神经网络预测股票价格。
然后,我们将使用 Plotly Dash 构建一个用于股票分析的仪表板。
在这里插入图片描述

股票价格预测项目仪表板

股票价格预测项目
数据集
为了构建股票价格预测模型,我们将使用“印度国家证券交易所(NSE)TATA GLOBAL”数据集。这是来自印度国家证券交易所的 Tata 全球饮料有限公司的 Tata 饮料数据集:
为了构建股票分析的仪表板,我们将使用另一个包含多个股票(如苹果、微软、脸书)的数据集:
源代码
下载地址:链接: 源代码 及 Tata 饮料数据集 多个股票(如苹果、微软、脸书)的数据集

使用 LSTM 预测股票价格

  1. 导入:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib.pylab import rcParams
rcParams['figure.figsize']=20,10
from keras.models import Sequential
from keras.layers import LSTM,Dropout,Dense
from sklearn.preprocessing import MinMaxScaler
  1. 读取数据集:
df=pd.read_csv("NSE-TATA.csv")
df.head()

读取股票数据
在这里插入图片描述

  1. 从数据框中分析收盘价:
df["Date"]=pd.to_datetime(df.Date,format="%Y-%m-%d")
df.index=df['Date']
plt.figure(figsize=(16,8))
plt.plot(df["Close"],label='Close Price history')

分析股票价格
在这里插入图片描述

  1. 按日期时间排序并筛选“Date”和“Close”列:
data=df.sort_index(ascending=True,axis=0)
new_dataset=pd.DataFrame(index=range(0,len(df)),columns=['Date','Close'])
for i in range(0,len(data)):new_dataset["Date"][i]=data['Date'][i]new_dataset["Close"][i]=data["Close"][i]
  1. 对新的筛选数据集进行归一化:
scaler=MinMaxScaler(feature_range=(0,1))
final_dataset=new_dataset.values
train_data=final_dataset[0:987,:]
valid_data=final_dataset[987:,:]
new_dataset.index=new_dataset.Date
new_dataset.drop("Date",axis=1,inplace=True)
scaler=MinMaxScaler(feature_range=(0,1))
scaled_data=scaler.fit_transform(final_dataset)
x_train_data,y_train_data=[],[]
for i in range(60,len(train_data)):x_train_data.append(scaled_data[i-60:i,0])y_train_data.append(scaled_data[i,0])x_train_data,y_train_data=np.array(x_train_data),np.array(y_train_data)
x_train_data=np.reshape(x_train_data,(x_train_data.shape[0],x_train_data.shape[1],1))
  1. 构建和训练 LSTM 模型:
lstm_model=Sequential()
lstm_model.add(LSTM(units=50,return_sequences=True,input_shape=(x_train_data.shape[1],1)))
lstm_model.add(LSTM(units=50))
lstm_model.add(Dense(1))
inputs_data=new_dataset[len(new_dataset)-len(valid_data)-60:].values
inputs_data=inputs_data.reshape(-1,1)
inputs_data=scaler.transform(inputs_data)
lstm_model.compile(loss='mean_squared_error',optimizer='adam')
lstm_model.fit(x_train_data,y_train_data,epochs=1,batch_size=1,verbose=2)
  1. 从数据集中抽取样本,利用 LSTM 模型进行股票价格预测:
X_test=[]
for i in range(60,inputs_data.shape[0]):X_test.append(inputs_data[i-60:i,0])
X_test=np.array(X_test)
X_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))
predicted_closing_price=lstm_model.predict(X_test)
predicted_closing_price=scaler.inverse_transform(predicted_closing_price)
  1. 保存 LSTM 模型:
lstm_model.save("saved_model.h5")
  1. 真实股票成本与预测股票成本对比可视化:
train_data=new_dataset[:987]
valid_data=new_dataset[987:]
valid_data['Predictions']=predicted_closing_price
plt.plot(train_data["Close"])
plt.plot(valid_data[['Close',"Predictions"]])

可以看到,LSTM 模型预测的股票价格与实际股票价格相当接近。
在这里插入图片描述

使用 Plotly Dash 构建仪表板
在本节中,我们将构建一个仪表板用于分析股票。Dash 是一个 Python 框架,它在 Flask 和 React.js 之上提供了一层抽象,用于构建分析型 Web 应用程序。
在继续之前,你需要安装 Dash。在终端运行以下命令。

pip3 install dash
pip3 install dash-html-components
pip3 install dash-core-components

现在创建一个新的 Python 文件 stock_app.py 并粘贴以下脚本:

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import plotly.graph_objs as go
from dash.dependencies import Input, Output
from keras.models import load_model
from sklearn.preprocessing import MinMaxScaler
import numpy as npapp = dash.Dash()
server = app.server
scaler = MinMaxScaler(feature_range=(0,1))
df_nse = pd.read_csv("./NSE-TATA.csv")
df_nse["Date"] = pd.to_datetime(df_nse.Date, format="%Y-%m-%d")
df_nse.index = df_nse['Date']
data = df_nse.sort_index(ascending=True, axis=0)
new_data = pd.DataFrame(index=range(0, len(df_nse)), columns=['Date', 'Close'])
for i in range(0, len(data)):new_data["Date"][i] = data['Date'][i]new_data["Close"][i] = data["Close"][i]
new_data.index = new_data.Date
new_data.drop("Date", axis=1, inplace=True)
dataset = new_data.values
train = dataset[0:987, :]
valid = dataset[987:, :]
scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset)
x_train, y_train = [], []
for i in range(60, len(train)):x_train.append(scaled_data[i-60:i, 0])y_train.append(scaled_data[i, 0])x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
model = load_model("saved_model.h5")
inputs = new_data[len(new_data)-len(valid)-60:].values
inputs = inputs.reshape(-1, 1)
inputs = scaler.transform(inputs)
X_test = []
for i in range(60, inputs.shape[0]):X_test.append(inputs[i-60:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
closing_price = model.predict(X_test)
closing_price = scaler.inverse_transform(closing_price)
train = new_data[:987]
valid = new_data[987:]
valid['Predictions'] = closing_price
df = pd.read_csv("./stock_data.csv")app.layout = html.Div([html.H1("股票价格分析仪表板", style={"textAlign": "center"}),dcc.Tabs(id="tabs", children=[dcc.Tab(label='NSE-TATAGLOBAL 股票数据', children=[html.Div([html.H2("实际收盘价", style={"textAlign": "center"}),dcc.Graph(id="Actual Data",figure={"data": [go.Scatter(x=train.index,y=valid["Close"],mode='markers')],"layout": go.Layout(title='散点图',xaxis={'title': '日期'},yaxis={'title': '收盘价'})}),html.H2("LSTM 预测收盘价", style={"textAlign": "center"}),dcc.Graph(id="Predicted Data",figure={"data": [go.Scatter(x=valid.index,y=valid["Predictions"],mode='markers')],"layout": go.Layout(title='散点图',xaxis={'title': '日期'},yaxis={'title': '收盘价'})})                ])                ]),dcc.Tab(label='脸书股票数据', children=[html.Div([html.H1("脸书最高价与最低价对比", style={'textAlign': 'center'}),dcc.Dropdown(id='my-dropdown',options=[{'label': '特斯拉', 'value': 'TSLA'},{'label': '苹果', 'value': 'AAPL'}, {'label': '脸书', 'value': 'FB'}, {'label': '微软', 'value': 'MSFT'}], multi=True, value=['FB'],style={"display": "block", "margin-left": "auto", "margin-right": "auto", "width": "60%"}),dcc.Graph(id='highlow'),html.H1("脸书市场交易量", style={'textAlign': 'center'}),dcc.Dropdown(id='my-dropdown2',options=[{'label': '特斯拉', 'value': 'TSLA'},{'label': '苹果', 'value': 'AAPL'}, {'label': '脸书', 'value': 'FB'},{'label': '微软', 'value': 'MSFT'}], multi=True, value=['FB'],style={"display": "block", "margin-left": "auto", "margin-right": "auto", "width": "60%"}),dcc.Graph(id='volume')], className="container"),])])
])@app.callback(Output('highlow', 'figure'),[Input('my-dropdown', 'value')])
def update_graph(selected_dropdown):dropdown = {"TSLA": "特斯拉", "AAPL": "苹果", "FB": "脸书", "MSFT": "微软"}trace1 = []trace2 = []for stock in selected_dropdown:trace1.append(go.Scatter(x=df[df["Stock"] == stock]["Date"],y=df[df["Stock"] == stock]["High"],mode='lines', opacity=0.7, name=f'高 {dropdown[stock]}', textposition='bottom center'))trace2.append(go.Scatter(x=df[df["Stock"] == stock]["Date"],y=df[df["Stock"] == stock]["Low"],mode='lines', opacity=0.6,name=f'低 {dropdown[stock]}', textposition='bottom center'))traces = [trace1, trace2]data = [val for sublist in traces for val in sublist]figure = {'data': data,'layout': go.Layout(colorway=["#5E0DAC", '#FF4F00', '#375CB1', '#FF7400', '#FFF400', '#FF0056'],height=600,title=f"随时间变化的高低价:{', '.join(str(dropdown[i]) for i in selected_dropdown)}",xaxis={"title": "日期",'rangeselector': {'buttons': list([{'count': 1, 'label': '1M', 'step': 'month', 'stepmode': 'backward'},{'count': 6, 'label': '6M', 'step': 'month', 'stepmode': 'backward'},{'step': 'all'}])},'rangeslider': {'visible': True}, 'type': 'date'},yaxis={"title": "价格(美元)"}}}return figure@app.callback(Output('volume', 'figure'),[Input('my-dropdown2', 'value')])
def update_graph(selected_dropdown_value):dropdown = {"TSLA": "特斯拉", "AAPL": "苹果", "FB": "脸书", "MSFT": "微软"}trace1 = []for stock in selected_dropdown_value:trace1.append(go.Scatter(x=df[df["Stock"] == stock]["Date"],y=df[df["Stock"] == stock]["Volume"],mode='lines', opacity=0.7,name=f'交易量 {dropdown[stock]}', textposition='bottom center'))traces = [trace1]data = [val for sublist in traces for val in sublist]figure = {'data': data, 'layout': go.Layout(colorway=["#5E0DAC", '#FF4F00', '#375CB1', '#FF7400', '#FFF400', '#FF0056'],height=600,title=f"随时间变化的市场交易量:{', '.join(str(dropdown[i]) for i in selected_dropdown_value)}",xaxis={"title": "日期",'rangeselector': {'buttons': list([{'count': 1, 'label': '1M', 'step': 'month', 'stepmode': 'backward'},{'count': 6, 'label': '6M','step': 'month', 'stepmode': 'backward'},{'step': 'all'}])},'rangeslider': {'visible': True}, 'type': 'date'},yaxis={"title": "交易量"}}}return figureif __name__ == '__main__':app.run_server(debug=True)

现在运行此文件并打开浏览器中的应用:

python3 stock_app.py

股票价格预测项目仪表板
在这里插入图片描述

摘要
股票价格预测是一个适合机器学习初学者的项目;在本教程中,我们学习了如何开发股票价格预测模型以及如何构建用于股票分析的交互式仪表板。我们实现了基于 LSTM 模型的股市预测。另一方面,我们使用了 Python 的 Plotly Dash 框架来构建仪表板。

参考文献及资料链接

参考资料链接
股票价格预测基础https://example.com/ml-basics
LSTM 神经网络教程https://example.com/lstm-tutorial
TensorFlow 官方文档https://tensorflow.org/docs
Keras 官方文档https://keras.io/zh/
Scikit-learn 文档https://scikit-learn.org/stable/
NSE TATA GLOBAL 数据集https://example.com/tata-global-dataset
股票数据集https://example.com/stocks-dataset
运行 Flask 扩展https://flask.palletsprojects.com/en/2.3.x/extensions/
Plotly 官方网站https://plotly.com/python/
Plotly 冲浪式图表 (Dash) 官方文档https://dash.plotly.com/
Pandas 官方文档https://pandas.pydata.org/pandas-docs/stable/
Numpy 官方文档https://numpy.org/doc/stable/
LSTM 股票预测实践https://medium.com/@example_lstm_pred
Dash 股票分析仪表板案例https://blog.plotly.com/dash-stock-examples/
源代码与数据集介绍

股票价格预测项目

在这个机器学习项目中,我们将开发一个基于神经网络的股票预测模型,用于预测股票收益。

学习如何开发股票价格预测模型,并构建一个用于股票分析的交互式仪表板。我们使用 LSTM 模型实现股票市场预测,并使用 Plotly Dash Python 框架构建仪表板。

类别:机器学习、深度学习
编程语言:Python
工具与库:Plotly Dash、LSTM
IDE:Jupyter
前端:Plotly Dash(用于可视化)
后端:无
先决条件:Python、机器学习、深度学习、神经网络
目标受众:教育、开发人员、数据工程师、数据科学家

股票价格数据

该数据集包含关于塔塔全球饮料有限公司(Tata Global Beverages Limited)的股票价格记录。数据集中还包含按日期排列的股票价格,包括开盘价、收盘价、最高价和最低价,以及当天的交易量和成交额。

对于想要尝试数据可视化、数据分析以及多种形式的数据处理技术的人来说,这是一个极好的数据库。

示例数据
NSE 塔塔全球饮料有限公司

数据格式

  • Date:日期
  • Open:开盘价
  • High:最高价
  • Low:最低价
  • Last:最新价
  • Close:收盘价
  • Total Trade Quantity:总交易量
  • Turnover (Lacs):成交额(单位:十万卢比)
    在这里插入图片描述

股票价格数据

该历史数据集包含关于苹果(Apple)、微软(Microsoft)、脸书(Facebook)等多家公司股票价格的记录。数据集中还包含按日期排列的股票价格,包括开盘价、收盘价、最高价和最低价,以及当天的交易量。

对于想要尝试数据可视化、数据分析以及多种形式的数据处理技术的人来说,这是一个极好的数据库。

示例数据
股票数据集

数据格式

  • Date:日期
  • Open:开盘价
  • High:最高价
  • Low:最低价
  • Close:收盘价
  • Volume:交易量
  • OpenInt:未平仓合约(适用于期货和期权)
  • Stock:股票名称或代码

在这里插入图片描述

相关文章:

【机器学习实战入门】使用LSTM机器学习预测股票价格

机器学习在股票价格预测中有重要的应用。在这个机器学习项目中,我们将讨论如何预测股票的收益。这是一个非常复杂的任务,充满了不确定性。我们将会把这个项目分成两部分进行开发: 首先,我们将学习如何使用 LSTM 神经网络预测股票…...

(一)相机标定——四大坐标系的介绍、对应转换、畸变原理以及OpenCV完整代码实战(C++版)

一、四大坐标系介绍 1,世界坐标系 从这个世界(world)的视角来看物体 世界坐标系是3D空间坐标,每个点的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw​,Yw​,Zw​)表示 2,相机坐标系 相机本身具有一个坐标系&…...

Bootstrap 下拉菜单

Bootstrap 下拉菜单 Bootstrap 是一个流行的前端框架,它提供了许多预构建的组件,其中之一就是下拉菜单。下拉菜单是一个交互式元素,允许用户从一系列选项中选择一个。在本篇文章中,我们将详细介绍如何在 Bootstrap 中创建和使用下…...

WinHttp API接口辅助类实现GET POST网络通讯

1、简述 近期需要在MFC基础上开发网络Http通讯,开始使用的WinINet进行通讯,后面发现WinINet对连接超时这块不支持设置,在网上搜索了几种方式效果都不太好,于是决定用WinHttp API接口进行通讯,分别对GET、POST进行了封装。 2、使用到接口 2.1、WinHttpOpen WinHttpOpen 是…...

Elasticsearch实战应用

嘿,小伙伴们,今天咱们来唠唠Elasticsearch,这可是个超厉害的搜索引擎,能帮你在海量数据里快速找到想要的东西,就像给你的数据装上了“放大镜”。 一、啥是Elasticsearch 简单来说,Elasticsearch就是一个基…...

MySQL存储过程

存储过程: 事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的,思想上就是sql语言层面的代码封装与重用 …...

安路FPGA开发工具TD:问题解决办法 及 Tips 总结

安路科技(Anlogic)是一家专注于高性能、低功耗可编程逻辑器件(FPGA)设计和生产的公司。其提供的开发工具TD(TangDynasty)是专门为安路FPGA系列产品设计的集成开发环境(IDE)。以下是对…...

高精度阶乘C++实现

高精度计算&#xff0c;实际上就是模拟竖式计算&#xff0c;代码如下&#xff0c;请慢慢消化&#xff0c;如有不足或建议&#xff0c;请在评论区留言 这个阶乘操作实际上就是高精度乘法的运用&#xff0c;可以非常容易的在考场上写出来 #include <bits/stdc.h> using na…...

PageHelper快速使用

依赖 <!--分页插件PageHelper--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.7</version> </dependency>示例 /** * 封装分页结果…...

“AI 辅助决策系统:决策路上的智慧领航员

在当今瞬息万变的时代&#xff0c;无论是企业的运营管理&#xff0c;还是个人在生活中的重大抉择&#xff0c;都需要精准、高效的决策。然而&#xff0c;信息的繁杂和未来的不确定性&#xff0c;常常让决策变得困难重重。这时&#xff0c;AI 辅助决策系统宛如一位智慧的领航员&…...

[Linux] linux 系统中如何添加自动启动程序

背景&#xff1a;在嵌入式系统中&#xff0c;需要开机自动启动所编写的程序【可执行文件】。 解决方法&#xff1a;原理就是Linux开机会自动执行一些文件。在/etc/profile中添加执行程序的脚本。/etc/profile 是一个系统级的配置文件&#xff0c;在用户登录Linux系统时自动执行…...

Linux之网络套接字

Linux之网络套接字 一.IP地址和端口号二.TCP和UDP协议2.1网络字节序 三.socket编程的常见API四.模拟实现UDP服务器和客户端五.模拟实现TCP服务器和客户端 一.IP地址和端口号 在了解了网络相关的基础知识之后我们知道了数据在计算机中传输的流程并且发现IP地址在其中占据了确定…...

LeetCode 2266.统计打字方案数:排列组合

【LetMeFly】2266.统计打字方案数&#xff1a;排列组合 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-number-of-texts/ Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i 次&#xff0c…...

Jmeter 动态参数压力测试时间段预定接口

&#x1f3af; 本文档详细介绍了如何使用Apache JMeter进行压力测试&#xff0c;以评估预定接口在高并发场景下的性能表现。通过创建线程组模拟不同数量的用户并发请求&#xff0c;利用CSV文件动态配置时间段ID和用户token&#xff0c;确保了测试数据的真实性和有效性。文档中还…...

Learning Prompt

说明&#xff1a;这是我的学习笔记&#xff0c;很多内容转自网络&#xff0c;请查阅文章末尾的参考资料。 目录 基本要求(C.R.E.A.T.E)总结文章(Summarise)改写文章(Rewrite)根据参考资料回答问题(Question & Answer)参考资料 基本要求(C.R.E.A.T.E) Character This is th…...

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN&#xff08;ID&#xff1a;lichao19897314&#xff09; 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…...

华为HuaweiCloudStack(一)介绍与架构

本文简单介绍了华为HCS私有云解决方案&#xff0c;并从下至上介绍HCS的整体架构&#xff0c;部署架构、部署方式等内容。 目录 HCS简介 HCS架构 纵向结构 ?管理平台类型 HCS节点类型 FusionSphere OpenStack CPS ServiceOM SC 运营面 OC 运维面 HCS部署架构 regi…...

【博客之星】2024年度个人成长、强化学习算法领域总结

&#x1f4e2;在2025年初&#xff0c;非常荣幸能通过审核进入到《2024年度CSDN博客之星总评选》TOP300的年度评选中&#xff0c;排名40。这还是第一次来到这个阶段&#xff0c;作为一名博士研究生&#xff0c;还是备受鼓舞的。在这里我将以回顾的方式讲述一下这一年在CSDN中走过…...

Git 分支策略

文章目录 1. Git Flow2. GitHub Flow3. GitLab Flow4. Trunk-Based Development5. Release Flow分支最佳实践 Git 分支策略是组织和管理工作特性开发、协作和版本控制的技术。选择合适的策略取决于团队规模、项目需求和部署需求。以下是常见的 Git 分支策略&#xff1a; 1. Git…...

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

和组合导航一样&#xff0c;也可以通过预积分 IMU 因子加上雷达残差来实现基于预积分和图优化的紧耦合 LIO 系统。一些现代的 Lidar SLAM 系统也采用了这种方式。相比滤波器方法来说&#xff0c;预积分因子可以更方便地整合到现有的优化框架中&#xff0c;从开发到实现都更为便…...

Mysql学习笔记

连接数据库 找到 MySQL 安装目录下的 bin 目录&#xff0c;然后打开命令窗口&#xff0c;在命令窗口中按如下语法输入命令&#xff1a; mysql - h MySQL 数据库服务器的 IP 地址 - u 用户名 - p 然后按下回车键&#xff0c;输入密码即可 数据库操作 创建数据库 CREAT…...

Safari常用快捷键

一、书签边栏 1、显示或隐藏书签边栏&#xff1a;Control-Command-1 2、选择下一个书签或文件夹&#xff1a;向上头键或向下头键 3、打开所选书签&#xff1a;空格键 4、打开所选文件夹&#xff1a;空格键或右箭头键 5、关闭所选文件夹&#xff1a;空格键或左箭头键 6、更…...

OpenEuler学习笔记(二):用通俗的道理讲操作系统原理

用通俗的道理讲操作系统原理 基础概念类比 把OpenEuler操作系统想象成一个大型的工厂&#xff0c;这个工厂有各种各样的部门&#xff0c;每个部门都有自己的职责&#xff0c;共同协作来让整个工厂正常运转。内核就像是工厂的管理中心&#xff0c;它负责指挥和协调所有的工作。 …...

ros2-7.5 做一个自动巡检机器人

7.5.1 需求及设计 又到了小鱼老师带着做最佳实践项目了。需求&#xff1a;做一个在各个房间不断巡逻并记录图像的机器人。 到达目标点后首先通过语音播放到达目标点信息&#xff0c; 再通过摄像头拍摄一张图片保存到本地。 7.5.2 编写巡检控制节点 在chapt7_ws/src下新建功…...

使用 `scanpy` 观察 `AnnData` 对象内部数据结构

以下是使用 scanpy 观察 AnnData 对象内部数据结构的步骤: 一、导入必要的库: import scanpy as sc二、读取 AnnData 对象: 假设你的 AnnData 对象存储在一个文件中,例如 adata.h5ad,你可以使用以下代码读取它: adata = sc.read(adata.h5ad)如果你已经有了 adata 对象…...

《CPython Internals》阅读笔记:p232-p249

《CPython Internals》学习第 13天&#xff0c;p232-p249 总结&#xff0c;总计 18 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;1) 1.overhead (1)overhead: over-(“above”) head(“top part, uppermost section”) overhead的字面意思是&#xff1a;above…...

Java并发08 - 并发安全容器详解

并发容器详解 文章目录 并发容器详解一&#xff1a;不使用并发容器如何保证安全二&#xff1a;阻塞队列容器2&#xff1a;ArrayBlockingQueue2.1&#xff1a;内部成员2.2&#xff1a;put方法的实现2.3&#xff1a;take方法的实现 3&#xff1a;LinkedBlockingQueue3.1&#xff…...

抽奖系统(3——奖品模块)

1. 图片上传 application.properties 配置上传文件路径 ## 文件上传 ## # 目标路径 pic.local-pathD:/PIC # spring boot3 升级配置名 spring.web.resources.static-locationsclasspath:/static/,file:${pic.local-path} tip&#xff1a; 1. 如果访问的是本地路径&#xff0c…...

36.centos7上安装python3.6.5、安装卸载依赖包

查看openssl的版本号&#xff0c;默认python3.6.5需要OpenSSL 1.0.2以上的版本支持。 监测安装好的python,是否可以正确导入ssl和_ssl包 pip3安装依赖包 通过Pycharm工具导出requirements.txt文件 查看/usr/bin/目录下的软连接 pip3, python...

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…...

nature genetics | scATAC-seq预测scRNA-seq,识别影响基因表达的新染色质区域

–https://doi.org/10.1038/s41588-024-01689-8 Single-cell multi-ome regression models identify functional and disease-associated enhancers and enable chromatin potential analysis 研究团队和单位 Christina S. Leslie–Memorial Sloan Kettering Cancer Center …...

简述mysql 主从复制原理及其工作过程,配置一主两从并验证。

MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器&#xff0c;并在从服务器上执行这些日志中的操作。 MySQL主从同步是基…...

Java API:封装自定义响应类

本文介绍 Web 服务开发中自定义响应&#xff0c;涵盖标准 HTTP 响应状态码局限性、自定义响应价值、设计原则与实现、在 Spring Boot 项目应用、与其他响应格式对比总结及应用场景。 1. 标准HTTP响应与自定义响应 1.1标准HTTP响应状态码 在 Web 服务开发中&#xff0c;HTTP…...

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 &#xff08;可移动根节点&#xff09; 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 &#xff08;可移动根节点&#xff09; 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…...

vim练级攻略(精简版)

vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格&#xff0c;tab&am…...

嵌入式硬件篇---PID控制

文章目录 前言第一部分&#xff1a;连续PID1.比例&#xff08;Proportional&#xff0c;P&#xff09;控制2.积分&#xff08;Integral&#xff0c;I&#xff09;控制3.微分&#xff08;Derivative&#xff0c;D&#xff09;控制4.PID的工作原理5..实质6.分析7.各种PID控制器P控…...

技术洞察:C++在后端开发中的前沿趋势与社会影响

文章目录 引言C在后端开发中的前沿趋势1. 高性能计算的需求2. 微服务架构的兴起3. 跨平台开发的便利性 跨领域技术融合与创新实践1. C与人工智能的结合2. C与区块链技术的融合 C对社会与人文的影响1. 提升生产力与创新能力2. 促进技术教育与人才培养3. 技术与人文的深度融合 结…...

C语言程序设计之小系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录 系统说明 1.1 系统概述 1.2 功能模块总体设计详细设计 3.1 程序中使用的函数 3.2各类问…...

pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1pyinstaller --onefile --windowed 过年烟花.py~~~~~~~~~~~ …...

接口传参 data格式和json格式区别是什么

接口传参 data格式和json格式区别是什么 以下是接口传参 data 格式和 JSON 格式的区别&#xff1a; 定义和范围 Data 格式&#xff1a; 是一个较为宽泛的概念&#xff0c;它可以指代接口传递参数时所使用的任何数据的组织形式。包括但不限于 JSON、XML、Form 数据、纯文本、二进…...

ClickHouse 入门

简介 ClickHouse 是一个列式数据库&#xff0c;传统的数据库一般是按行存储&#xff0c;而ClickHouse则是按列存储&#xff0c;每一列都有自己的存储空间&#xff0c;并且只存储该列的数值&#xff0c;而不是存储整行的数据。这样做主要有几个好处&#xff0c;压缩率高&#x…...

Python自动化:基于faker批量生成模拟数据(以电商行业销售数据为例)

引言&#xff1a;个人认为&#xff0c;“造数据”是一个数据分析师的一项基本技能&#xff0c;当然啦&#xff0c;“造数据”不是说胡编乱造&#xff0c;而是根据自己的需求去构造一些模拟数据集&#xff0c;用于测试等用途&#xff0c;而且使用虚拟数据不用担心数据隐私和安全…...

3.3 OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南

OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南 OpenAI 的 GPT 系列语言模型,包括 GPT-4、GPT-3.5 和 GPT-3,已经成为自然语言处理领域的标杆。无论是文本生成、对话系统,还是自动化任务,开发者都可以通过 API 调用这些强大的模型来增强他们的应用。本文将为您详细介…...

【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用

前言 &#x1f31f;&#x1f31f;本期讲解关于spring 事务传播机制介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…...

力扣203题—— 移除链表元素

题目 递归法使用 if(headnull){return null; }//假设remove返回后面已经去掉val值的链表 我们用head.next去存放他&#xff0c;接着我们要判断此时head head值是否等于val&#xff0c;如果等于我们就返回后继元素即可 head.nextremove(head.next,val); if(head.valval){return…...

Express中间件

目录 Express中间件 中间件的概念 next函数 全局中间与局部中间件 多个中间件 中间的5个注意事项 中间的分类 应用级中间件 路由级中间件 错误级中间件 Express内置中间件 express.json express.urlencoded 第三方中间件​编辑 自定义中间件 Express中间件 中间…...

【AIGC】SYNCAMMASTER:多视角多像机的视频生成

标题&#xff1a;SYNCAMMASTER: SYNCHRONIZING MULTI-CAMERA VIDEO GENERATION FROM DIVERSE VIEWPOINTS 主页&#xff1a;https://jianhongbai.github.io/SynCamMaster/ 代码&#xff1a;https://github.com/KwaiVGI/SynCamMaster 文章目录 摘要一、引言二、使用步骤2.1 TextT…...

模块化架构与微服务架构,哪种更适合桌面软件开发?

前言 在现代软件开发中&#xff0c;架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景&#xff0c;尤其在C#桌面软件开发领域&#xff0c;模块化架构往往更加具有实践性。本文将对这两种架构进行对比&#xff0…...

Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹

Ubuntu 24.04 LTS 安装 tailscale 安装 Tailscale 官方仓库 首先&#xff0c;确保系统包列表是最新的&#xff1a; sudo apt update接下来&#xff0c;安装 Tailscale 所需的仓库和密钥&#xff1a; curl -fsSL https://tailscale.com/install.sh | sh这会自动下载并安装 …...

fgets、scanf存字符串应用

题目1 夺旗&#xff08;英语&#xff1a;Capture the flag&#xff0c;简称 CTF&#xff09;在计算机安全中是一种活动&#xff0c;当中会将“旗子”秘密地埋藏于有目的的易受攻击的程序或网站。参赛者从其他参赛者或主办方偷去旗子。 非常崇拜探姬的小学妹最近迷上了 CTF&am…...