【金融数据接口】wind数据python使用教程

news/2024/9/20 7:13:33/ 标签: 金融

目录

(1)接口手册

(2)包安装与接口调用

(3)常用接口

A.获取k线数据(wsd)

参数说明

集成在options中的参数

传参细节说明

返回说明

示例说明

B.获取实时行情数据(wsq)

C.获证券代码(wset)

代码获取方法

获取期货品种代码

获取股票、债券和期权代码

(4)判断wind是否在运行以及获取数据是否正常


(1)接口手册

  • wind客户端接口手册获取
    • 旧版:登录wind → 量化 → API接口 → Python → 接口手册
    • 新版:登录wind → 发现 → Client API → Python → 接口手册
  • 代码生成器:登录wind → 发现 → 代码生成器
  • C接口文档:3. 获取日时间序列函数w.wsd · Wind C#接口 · 看云

(2)包安装与接口启动

1.安装

  • 安装python
  • 打开wind,点击“我的/插件修复”选项,出现下方的界面,点击“修复Python接口”,会弹出接口的相关说明

2.调用

首先,用户必须加载WindPy,然后执行w.start()启动API接口

from WindPy import w#w.start() # 默认命令超时时间为120秒
w.start(waitTime = 60)
# 如需设置超时时间可以加入waitTime参数,例如waitTime=60,即设置命令超时时间为60秒result = w.isconnected() # 判断WindPy是否已经登录成功
print(result) # Truew.stop() 
# 当需要停止WindPy时,可以使用该命令
# w.start不重复启动,若需要改变参数,如超时时间,用户可以使用w.stop命令先停止后再启动。
# 退出时,会自动执行w.stop(),一般用户并不需要执行w.stop # 需要注意的是,程序退出时会自动执行w.stop(),因此一般用户并不需要执行w.stop()

(3)常用接口

A.获取k线数据(wsd)

w.wsd(codes, fields, beginTime, endTime, options)

支持股票、债券、基金、期货、指数等多种证券的基本资料、股东信息、市场行情、证券分析、预测评级、财务数据等各种数据。wsd可以支持取 多品种单指标 或者 单品种多指标 的时间序列数据。

参数说明

参数

类型

可选

默认值

说明

codes

str或list

证券代码,支持获取单品种或多品种,如“600030.SH”或[“600010.SH”,“000001.SZ”]

fields

str或list

指标列表,支持获取单指标或多指标,,如“CLOSE,HIGH,LOW,OPEN”

beginTime

str或datetime

endTime

起始日期,为空默认为截止日期,如: "2016-01-01"、“20160101”、“2016/01/01”、"-5D"(当前日期前推5个交易日)、datetime/date类型

endTime

str或datetime

系统当前日期

如: "2016-01-05"、“20160105”、“2016/01/05”、"-2D"(当前日期前推2个交易日) 、datetime/date类型

options

str

“”

options以字符串的形式集成多个参数,具体见代码生成器。如无相关参数设置,可以不给option赋值或者使用options=""

以分号分割,比如"returnType=1;PriceAdj=CP"

集成在options中的参数

参数

类型

可选

默认值

说明

Days

str

'Trading'

日期选项,参数值含义如下:

Weekdays: 工作日,

Alldays: 日历日,

Trading: 交易日

Fill

str

'Blank'

空值填充方式。参数值含义如下:

Previous:沿用前值,

Blank:返回空值

如需选择自设数值填充,在options添加“ShowBlank=X", 其中X为自设数。

Order

str

'A'

日期排序,“A”:升序,“D”:降序

Period

str

'D'

取值周期。参数值含义如下:

D:天,

W:周,

M:月,

Q:季度,

S:半年,

Y:年

TradingCalendar

str

'SSE'

交易日对应的交易所。参数值含义如下:

SSE :上海证券交易所,

SZSE:深圳证券交易所,

CFFE:中金所,

TWSE:台湾证券交易所,

DCE:大商所,

NYSE:纽约证券交易所,

CZCE:郑商所,

COMEX:纽约金属交易所,

SHFE:上期所,

NYBOT:纽约期货交易所,

HKEX:香港交易所,

CME:芝加哥商业交易所,

Nasdaq:纳斯达克证券交易所,

NYMEX:纽约商品交易所,

CBOT:芝加哥商品交易所,

LME:伦敦金属交易所,

IPE:伦敦国际石油交易所

Currency

str

'Original'

输入币种。参数值含义如下:

Original:“原始货币”,

HKD:“港币”,

USD:“美元”,

CNY:“人民币”

PriceAdj

str

不复权

股票和基金(复权方式)。参数值含义如下:

F:前复权,

B:后复权,

T:定点复权;债券(价格类型)

CP:净价,

DP:全价,

MP:市价,

YTM:收益率

传参细节说明

  1. Fields和Parameter也可以传入list,比如可以用[“CLOSE”,“HIGH”,“LOW”,“OPEN”]替代“CLOSE,HIGH,LOW,OPEN”;
  2. 获取多个证券数据时,Fields只能选择一个。
  3. 日期支持相对日期宏表达方式,日期宏具体使用方式参考'日期宏’部分内容
  4. options为可选参数,可选参数多个,在参数说明详细罗列。
  5. wsd函数支持输出DataFrame数据格式,需要函数添加参数usedf=True,可以使用usedfdt=True来填充DataFrame输出NaT的日期。

fields常见指标

  • open:开盘价
  • high:当日最高价
  • low:当日最低价
  • close:当日收盘价
  • pre_close:昨日收盘价
  • volume:当日成交量
  • amt:即amount,成交金额
  • dealnum:下单量
  • chg:涨跌额
  • pct_chg:涨跌幅
  • vwap:成交量加权平均价
  • trade_status:交易状态
  • turn:换手率
  • free_turn:自由股换手率
  • rel_ipo_chg:相较于首次公开发行时的涨跌额
  • rel_ipo_pct_chg:相较于首次公开发行时的涨跌幅度
  • pe_ttm:Price earnings ratio,市盈率。TTM:Trailing Twelve Months,即消除季节等时序因素的影响
  • pe_lyr:LYR:Last Year Ratio。即以当前总市值,除以去年一年的总净润,表示静态市盈率
  • pb_lf:Price-to-Book Ratio,市净率。表示每股股价除以每股净资产;LF:Last File,表示每股净资产应该使用最新公告中的数据
  • ps_lyr:Price-to-Sales Ratio,市销率。
  • ev:Enterprise Value,即总市值
  • pcf_ocf_ttm:Price Cash Flow Ratio 市现率; Operating Cash Flow,经营现金流
  • trade_status:交易状态

返回说明

如果不指定usedf=True,该函数将返回一个WindData对象,包含以下成员:

返回码

解释

说明

ErrorCode

错误ID

返回代码运行错误码,.ErrorCode =0表示代码运行正常。

若为其他则需查找错误原因.

Data

数据列表

返回函数获取的数据

比如读取000592.SZ的close指标从'2017-05-08'到'2017-05-18'区间的数据

返回值为.Data=[[5.12,5.16,5.02,4.9,4.91,5.13,5.35,5.42,5.32],[5.3,5.12,5.17,4.98,4.94,4.93,5.1,5.4,5.4]]

Codes

证券代码列表

返回获取数据的证券代码列表.Codes=[000592.SZ]

Field

指标列表

返回获取数据的指标列表.Fields=[CLOSE]

Times

时间列表

返回获取数据的日期序列.Times=[20170508,20170509,20170510,20170511,20170512,20170515,20170516, 20170517,20170518]

注:以DataFrame 展示数据时,如果取单个标的数据,以指标为维度进行数据展示, 如果取多个标的数据,只能取单个指标,以标的为维度进行数据展示

示例说明

# 任取一只国债010107.SH六月份以来的净值历史行情数据column_names = "sec_name,ytm_b,volume,duration,convexity,open,high,low,close,vwap"
history_data = w.wsd("010107.SH",column_names,"2018-06-01", "2018-06-11", "returnType=1;PriceAdj=CP", usedf=True)
# returnType表示到期收益率计算方法,PriceAdj表示债券价格类型‘
history_data[1].head()

B.获取实时行情数据(wsq)

用这个接口获取实时数据的下载量是有限制的,超过一定量就要额外收费

from WindPy import w
w.start()data = w.wsq("000920.SZ, 002573.SZ","rt_last, rt_open, rt_low, rt_last_vol, rt_high, rt_pre_close",func="DemoWSQCallback")
'''
rt_last: 最新实时价格
rt_open: 今日开盘价
rt_low: 开盘到当前时间之间的最低价
rt_last_vol: 开盘到当前时间之间的成交量
rt_high: 开盘到当前时间之间的最高价
rt_pre_close: 前一日收盘价
'''print(data)
'''
.ErrorCode=0
.Codes=[000920.SZ,002573.SZ]
.Fields=[RT_LAST,RT_OPEN,RT_LOW,RT_LAST_VOL,RT_HIGH,RT_PRE_CLOSE]
.Times=[20221107 14:01:42]
.Data=[
[10.15,6.390000000000001],
[10.15,5.92],
[10.15,5.86],
[1200.0,200.0],
[10.15,6.390000000000001],
[9.23,5.8100000000000005]
]
'''print(data.Data)

C.获取证券代码(wset)

代码获取方法

wind客户端首页→代码生成器→数据集WSET→板块与指数→板块成分

→ 在坐标(sectorID,编辑)处进行板块选择期货 → 选某个交易所 → 选择全部品种

获取期货品种代码

download_future_codeList.py

from WindPy import w
w.start()import datetime as dtdef main():today = dt.datetime.now().strftime(("%Y-%m-%d"))# print(type(today), today)# 如果当天非交易日,则不下载数据passsavepath = "./Instruments.csv"writefile = open(savepath, "w")# (1)下载中金所期货合约代码result = w.wset("sectorconstituent", f"date={today};sectorid=a599010101000000")# print(result)data = result.Data# print(data)# print(data[1])for item in data[1]:code = item.split(".")[0]writefile.write(code + ",CFFEX\n")# (2)下载上期所result = w.wset("sectorconstituent", f"date={today};sectorid=a599010201000000")data = result.Data# print(data)# print(data[1])for item in data[1]:code = item.split(".")[0].lower()writefile.write(code + ",SHFE\n")# (3)下载上海能源中心result = w.wset("sectorconstituent", f"date={today};sectorid=1000041395000000")data = result.Data# print(data)for item in data[1]:code = item.split(".")[0].lower()writefile.write(code + ",INE\n")# (4)下载大商所result = w.wset("sectorconstituent", f"date={today};sectorid=a599010301000000")data = result.Datafor item in data[1]:code = item.split(".")[0].lower()writefile.write(code + ",DCE\n")# (5)下载郑商所result = w.wset("sectorconstituent", f"date={today};sectorid=a599010401000000")data = result.Data# print(data)for item in data[1]:code = item.split(".")[0]writefile.write(code + ",CZCE\n")# (6)下载广州所result = w.wset("sectorconstituent", f"date={today};sectorid=1000046789000000")data = result.Data# print(data)for item in data[1]:code = item.split(".")[0].lower()writefile.write(code + ",GFE\n")writefile.close()if __name__ == "__main__":main()

获取股票、债券和期权代码

import datetime as dt
from WindPy import w
w.start()def is_connect_wind():# 检测wind是否在运行# 返回True或者Falsereturn w.isconnected()def save_data(data_list, save_path):"""data_list: 数据,元素为"601669.SSE"这样save_path: 保存路径"""if len(data_list) > 0:writefile = open(save_path, "w")for code in data_list:writefile.write(code + "\n")writefile.close()def get_stock_code_wind():"""获取wind股票代码"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部A股代码result = w.wset("sectorconstituent", f"date={today};sectorid=a001010100000000")stock_code_list = []# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 or item.find("SH") != -1:stock_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(stock_code_list) > 0:return stock_code_listelse:return []def get_index_code_wind():"""获取wind指数代码"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部指数代码index_code_list = []# a.调用wind接口获取上证系列指数代码result = w.wset("sectorconstituent", f"date={today};sectorid=1000002442000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:index_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:index_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# b.调用wind接口获取中证系列指数代码result = w.wset("sectorconstituent", f"date={today};sectorid=a399010104000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:index_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:index_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# c.调用wind接口获取深证系列指数代码result = w.wset("sectorconstituent", f"date={today};sectorid=1000003626000000")# [2]判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1and len(item) == 9:index_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:index_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(index_code_list) > 0:return index_code_listelse:return []def get_bond_code_wind():"""获取wind债券代码,含可转债"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部债券代码bond_code_list = []# a.调用wind接口获取上交所债券代码result = w.wset("sectorconstituent", f"date={today};sectorid=a101010200000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:bond_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:bond_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# b.调用wind接口获取深交所债券代码result = w.wset("sectorconstituent", f"date={today};sectorid=a101010300000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:bond_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:bond_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(bond_code_list) > 0:return bond_code_listelse:return []def get_convert_bond_code_wind():"""获取wind可转债代码"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部可转债券代码convert_bond_code_list = []# a.调用wind接口获取上交所可转债券代码result = w.wset("sectorconstituent", f"date={today};sectorid=a101010206000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:convert_bond_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:convert_bond_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# b.调用wind接口获取深交所可转债券代码result = w.wset("sectorconstituent", f"date={today};sectorid=a101010306000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 判断数据是否为空if len(data) > 0:for item in data[1]:# print(item)if item.find("SZ") != -1 and len(item) == 9:convert_bond_code_list.append(item)elif item.find("SH") != -1 and len(item) == 9:convert_bond_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(convert_bond_code_list) > 0:return convert_bond_code_listelse:return []def get_stock_option_code_wind():"""获取wind股票期权代码"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部期权代码stock_option_code_list = []# a.调用wind接口获取上交所期权代码result = w.wset("sectorconstituent", f"date={today};sectorid=1000018859000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:# print(data)for item in data[1]:# print(item)if item.find("SZ") != -1:stock_option_code_list.append(item)elif item.find("SH") != -1:stock_option_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# b.调用wind接口获取深交所期权代码result = w.wset("sectorconstituent", f"date={today};sectorid=1000034419000000")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 判断数据是否为空if len(data) > 0:# print(data)for item in data[1]:# print(item)if item.find("SZ") != -1:stock_option_code_list.append(item)elif item.find("SH") != -1:stock_option_code_list.append(item)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(stock_option_code_list) > 0:return stock_option_code_listelse:return []def get_future_option_code_wind():"""获取wind期货期权代码"""# 当日日期today = dt.datetime.now().strftime("%Y-%m-%d")# 调用wind接口获取全部期权代码future_option_code_list = []exchange_list = [["1000034440000000", "中金所"],["1000021571000000", "上期所"],["1000041406000000", "上期能源"],["1000033252000000", "大商所"],["1000016058000000", "郑商所"],["1000046211000000", "广期所"]]# 调用wind接口获取期权代码for i in range(len(exchange_list)):sectorid = exchange_list[i][0]exchange = exchange_list[i][1]result = w.wset("sectorconstituent", f"date={today};sectorid={sectorid}")# 判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# [3]判断数据是否为空if len(data) > 0:# print(data)for item in data[1]:# print(item)temp_list = item.split(".")suffix = "."if exchange == "中金所":suffix += "CFE"elif exchange == "上期所":suffix += "SFE"elif exchange == "上期能源":suffix += "INE"elif exchange == "大商所":suffix += "DCE"elif exchange == "郑商所":suffix += "ZCE"elif exchange == "广期所":suffix += "GFE"code = temp_list[0] + suffixfuture_option_code_list.append(code)else:# print("len(result.Data) == 0")return []else:# print("result.ErrorCode != 0, exist error")return []# 若未成功获取数据,则返回空列表if len(future_option_code_list) > 0:return future_option_code_listelse:return []

(4)判断wind是否在运行以及获取数据是否正常

是否连接成功:w.isconnected(),值为True则正常

获取数据是否正常:result.ErrorCode,值为0则正常

from WindPy import w
import datetime as dt
import shutil
import osw.start()def download_future_code_wind(save_path):# 当日日期today = dt.datetime.now().strftime(("%Y-%m-%d"))# print(type(today), today)# 如果当天非交易日,则不下载数据pass# 备份之前生成的文件if os.path.exists(save_path):temp_list = save_path.split(".")bakeup_path = temp_list[0] + "_bakeup." + temp_list[1]shutil.copyfile(save_path, bakeup_path)is_get_wind_data = True  # 是否成功获取到wind数据while True:writefile = open(save_path, "w")# 下载中金所期货合约代码result = w.wset("sectorconstituent",f"date={today};sectorid=a599010101000000")# 2.判断代码运行是否正常if result.ErrorCode == 0:# print(result)data = result.Data# print(data)# print(data[1])# 3.判断数据是否为空if len(data) > 0:for item in data[1]:code = item.split(".")[0]writefile.write(code + ",CFFEX\n")else:is_get_wind_data = Falsebreakelse:is_get_wind_data = Falsebreakwritefile.close()break# 若未成功获取数据,则用备份的那个文件替换保存文件if not is_get_wind_data:print("无法获取到wind数据")if os.path.exists(save_path):os.remove(save_path)temp_list = save_path.split(".")bakeup_path = temp_list[0] + "_bakeup." + temp_list[1]if os.path.exists(bakeup_path):shutil.copyfile(bakeup_path, save_path)if __name__ == "__main__":# 要检测wind是否正在运行,还要检测以及能否获取到数据# 1.检测wind是否在运行is_connect_wind = w.isconnected()print(f"is_connect_wind={is_connect_wind}")if is_connect_wind:print("use wind to get future codeList")savepath = "./Instruments.csv"download_future_code_wind(savepath)

end


http://www.ppmy.cn/news/1444111.html

相关文章

Redis 如何实现分布式锁

课程地址 单机 Redis naive 版 加锁: SETNX ${lockName} ${value} # set if not exist如果不存在则插入成功,返回 1,加锁成功;否则返回 0,加锁失败 解锁: DEL ${lockName}问题1 2 个线程 A、B&#…

溪谷软件:游戏联运有多简单?

游戏联运,即游戏联合运营,是一种游戏运营模式,涉及到多个平台或公司共同推广和运营同一款游戏。对于开发者而言,游戏联运的简化程度可能因具体情况而异,但以下是一些因素,使得游戏联运在某种程度上变得更加…

Qt xml示范

1.数据格式 #ifndef XML_DATA_H #define XML_DATA_H#include<QWidget>struct Student {int s_id;QString s_name;double s_math_score;double s_english_score;}; struct Teacher{int t_id;QString t_name;QVector<Student> t_students_v; };#endif // XML_DATA_H…

Elcomsoft iOS Forensics Toolkit: iPhone/iPad/iPod 设备取证工具包

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作&#xff0c;对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制作镜像&#xff0c;提取设备机密&#xff08…

vue3前端请求后端接口动态渲染菜单

//获取数据 请求接口 export function parkEnterPrise(address: string, methods: string) { const res instance({ url: address, method: methods, }); return res; } //页面 <el-menu default-active"2" class"el-menu-vertical-demo" …

【打工日常】云原生之搭建个人文件分享的轻量小工具

一、Pingvin Share介绍1.Pingvin Share简介它是一个专注于文件分享的高颜值轻量小工具。2.Pingvin Share功能创建文件共享,你可以通过链接访问这些文件支持自定义链接的后缀部署非常简单(Docker部署2分钟搞定)没有文件大小的限制(只要你的硬盘够大)支持设置共享的到期时间…

美国洛杉矶站群服务器如何提高网站排名?

美国洛杉矶站群服务器怎么样?美国洛杉矶站群服务器如何提高网站排名?Rak部落小编为您整理发布美国洛杉矶站群服务器如何提高网站排名? 美国洛杉矶站群服务器可以通过以下几种方式帮助提高网站排名&#xff1a; - **提升网站性能**&#xff1a;美国站群服务器通常配备高速CPU…

银河麒麟V10 ARM64 离线安装 新版Docker

查询当前发行版本 nkvers下载最新版本 卸载旧依赖 卸载已经安装的老版本 yum remove docker \containerd.io \docker-runc \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \docker-compo…

SpringBoot xxl-job 任务调度

首先官网下载xxl-job的源代码&#xff0c;然后切换到jdk8&#xff0c;等Maven下载依赖 执行mysql的脚本&#xff0c;修改连接配置&#xff0c;启动admin站点 默认地址 http://localhost:8080/xxl-job-admin/ 先新增一个任务执行器&#xff0c;指向未来任务代码的站点 然后在…

iOS 实现类似抖音翻页滚动效果

这里是效果图 参考抖音的滚动效果&#xff0c;需要我们在结束拖动的时候&#xff0c;动画设置偏移量 这里有一个注意点&#xff0c;由于我们是在拖动结束的时候&#xff0c;手动改变tableview的偏移量&#xff0c; 改变了tableView 自身原有的的滚动效果&#xff0c;所以我们…

创建Maven项目的时候让选择maven模板

创建Maven项目的时候让选择maven模板 心得 工欲利其事 必先利其器。如果你想要干成一件事 那么必须先要精通对应的工具使用。之前我不太注重工具 我觉得只要代码写的好就可以了 但是当我们了解了产品经理的一些思想之后&#xff0c;我才明白一个好的产品是可以给用户提供多大…

OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项前言OceanBase 数据更新架构OceanBase 集群配置项OceanBase 配置项级别配置项的生效方式查看配置项的级别和生效方式OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项…

QT学习之QFileDialog

打开一个文件夹 m_dirXML QFileDialog::getExistingDirectory(this, tr("打开XML所在文件夹"), "D:/", QFileDialog::ShowDirsOnly|QFileDialog::DontResolveSymlinks); ui.xmlDri->setText(m_dirXML);选择一个文件&#xff1a; scriptPath QFileDia…

【Python】python学生考勤数据分析可视化(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

大模型评测概述-以司南为例

OpenCompass&#xff08;司南&#xff09;是上海人工智能实验室发布的大模型评测工具。 目前已具有较为完备的生态&#xff0c;集成了大量主流的评测数据集。近期OpenCompass 作为大模型标准测试工具被Meta AI官方推荐。 一、大模型评测的意义 对于普通的使用者&#xff1a;选…

【R语言简介】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

AI手机,走入小径分岔的花园

博尔赫斯在他的成名作《小径分岔的花园》里&#xff0c;描述了一种奇妙的世界观&#xff1a;一个可能性被选择之后&#xff0c;出现了许多不同的后世&#xff0c;许多不同的时间。 在现实世界中&#xff0c;选择不会如此神奇。但站在岔路口的抉择&#xff0c;也一定会带来结果的…

pytest-stress:好用的pytest压力测试插件

简介&#xff1a;pytest-stress允许在用户定义的时间内循环测试。特别适用于一些已知测试时间&#xff0c;但不知道运行次数的场景。 历史攻略&#xff1a; 压力测试工具&#xff1a;Stress详解 Python&#xff1a;超过设定的时长则退出 安装&#xff1a; pip3 install py…

Magnet for Mac:高效窗口管理工具

Magnet for Mac是一款专为Mac用户设计的窗口管理工具&#xff0c;旨在帮助用户更高效地管理和布局多个应用程序窗口&#xff0c;提升工作效率。 Magnet for Mac v2.14.0中文免激活版下载 这款软件拥有直观易用的界面和丰富的功能&#xff0c;支持用户将屏幕分割成多个区域&…

React 语法

1、认识JSX JSX是一种JavaScript的语法扩展&#xff0c;可以用于描述UI界面&#xff0c;可以与JavaScript融合在一起使用 JSX的语法&#xff1a;const element <h2>Hello World</h2> 在 <script type"text/babel"> 时才可以这样写 2、为什么…