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

news/2024/5/16 12:05:59

目录

(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.mrgr.cn/p/15743825

相关文章

怎么给字符串字段加索引?

怎么给字符串字段加索引? 现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。 假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的: …

使用图集Atlas创建Fnt文件的工具

fnt文件生成unity字体的原理其实就是渲染图集Atlas上的Sprite,这边直接利用Unity自带的图集工具生成fnt文件 注意:这里生成的fnt文件还没发直接用,因为没有关联字符,这个工具只是第1步,要配合Fnt编辑工具一起使用 public class SpriteToFntTool : EditorWindow {[MenuItem…

ffmpeg与sdl的个人笔记

说明 这里的ffmpeg基础知识和sdl基础知识仅提及与示例代码相关的知识点, 进阶可学习雷神的博客。 https://blog.csdn.net/leixiaohua1020 当然,如代码写的有问题或有更好的见解,欢迎指正! 音视频基础知识 在学习音视频理论知识时&#xff…

Spirng 当中 Bean的作用域

Spirng 当中 Bean的作用域 @目录Spirng 当中 Bean的作用域每博一文案1. Spring6 当中的 Bean的作用域1.2 singleton 默认1.3 prototype1.4 Spring 中的 bean 标签当中scope= 属性其他的值说明1.5 自定义作用域,一个线程一个 Bean2. 总结:3. 最后:每博一文案 青年,青年!无论受…

EyeDropper 拾色器

EyeDropperEyeDropper:拾色器,从屏幕上选择颜色 需要用户交互操作<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0&…

装饰器模式【结构型模式C++】

1.概述 装饰器模式是一种结构型设计模式&#xff0c; 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08;Concre…

分布式系统事务一致性解决方案(基于事务消息)

参考&#xff1a;https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage/ 文章目录 概要错误的方案方案一&#xff1a;业务方自己实现方案二&#xff1a;RocketMQ 事务消息什么是事务消息事务消息处理流程事务消息生命周期使用限制使用示例使用建议 概要 …

二叉树笔试题解题思路

数据结构 二叉树 笔试题:解题思路: 1.判断是否为空树,若为空树,则返回0; 2.定义两个指针备份根结点地址,定义两个整型变量a,b并初始化为0,记录左右子树的深度;先对根结点的左子树进行遍历,若根结点的左结点不为NULL,则a++,把根结点的左结点赋值为新的根结点,再进行…

树(tree) [一]

树的概念和原理,以及二叉树的分类和重要性质。树(tree) [一] 基本概念: ​ 日常生活中,很多数据的组织形式本质上是一棵树。比如一个公司中的职员层级关系、一个学校中的院系层级关系、淘汰赛中的各次比赛队伍、一个家族中的族谱成员关系等都是树状逻辑结构。由于树状结构表…

C++核心编程——4.5 运算符重载

4.5.0 运算符重载概念 对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型&#xff0c;对应的各类型重载如下表所示。 成员函数重载&#xff08;写在类内&#xff09;全局函数重载加号 Person operator(const Person& p) { …

不同语言在算法使用方面的差异(Java 、C++篇)

由于我认为的会了是能得到结果了&#xff0c;所以我亲自去把题解的C代码给改成了Java的&#xff0c;尽管代码和逻辑上的高度统一。编译器还是报错了。 第三个死都过不去。而且后面的还超时了。 这使我十分怀疑是不是超时或者空间不够所导致的。但是去问讯飞星火&#xff0c;它…

ElasticSearch教程入门到精通——第一部分(基于ELK技术栈elasticsearch 8.x新特性)

ElasticSearch教程入门到精通——第一部分&#xff08;基于ELK技术栈elasticsearch 8.x新特性&#xff09; 1. ElasticSearch安装&#xff08;略&#xff09;2. ElasticSearch基础功能2.1 索引操作2.1.1 创建索引2.1.2 Head 索引2.1.3 查询索引2.1.3.1 查询单独索引2.1.3.2 查询…

SQL SERVER 从入门到精通 第5版 第三篇 高级应用 第11章 触发器 读书笔记

第11章 触发器>.概述触发器是一种特殊类型的存储过程.当指定表中的数据发生变化时触发器自动生效.它与表紧密相连,可以看作表定义的一部分.触发器不能通过名称被直接调用,更不允许设置参数.在SQL SERVER 中,一张表可以有多个触发器.用户可以使用INSERT,UPDATE或者DELETE语句…

机器学习理论基础—聚类算法

机器学习理论基础—聚类算法 聚类的距离计算 聚类&#xff1a;物以类聚。将相似的样本聚集到一起&#xff0c;使得同一类簇的样本尽可能接近,不同类簇的样本尽可能远离。&#xff08;无监督算法&#xff09; 对于距离的定义&#xff1a;满足下面的四个特点 非负性同一性对称性…

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

CSS Counter Styles

CSS Counter Styles允许您自动对 HTML 文档中的元素进行编号或标记。我们定义一个具有特定名称和起始值的 counter,然后根据 CSS 规则递增或递减该计数器。使用 counter-reset 属性定义计数器,设置其起始值,然后使用 counter-increment 属性根据需要递增或递减计数器。还可以…

Unity打开Android文件管理器并加载文件

1、在AssetStore商店中加入免费插件 2、调用代码 3、使用UnityWebRequest加载路径数据

linux开发板开机启动向日葵

硬件&#xff1a;orangepi 5 pro 操作系统&#xff1a;ubuntu 20.4 lts 安装向日葵 根据我的实测&#xff0c;arm架构的ubuntu系统只能安装向日葵提供的麒麟系统的那个版本&#xff0c;具体安装方式官网下载页面有 允许任意用户连接到 X11 使用root用户登录后打开终端输入一下…