【大麦小米学量化】使用天勤TqSdk实现期货量化交易(入门)

news2024/9/25 6:32:49

文章目录

  • 酱香拿铁的故事
  • 一、TqSdk 是什么?
  • 二、准备工作
    • 1. 安装tqsdk库(Python环境提前准备好)
    • 2. 注册快期账户
    • 3. 支持的期货公司(更新以官方公布为准)
  • 三、初试牛刀
    • 1. 示例代码:
    • 2. 运行后提示如下:
    • 3. 使用浏览器访问
  • 四、模拟交易和实盘交易
    • 1. 用快期账户来模拟交易
    • 2. 用快期账户来实盘交易
  • 五、 量化策略交易(单均线策略)
  • 总结
  • 附录

酱香拿铁的故事

有一天,小米问大麦:“听说期货很恐怖,很多人亏得裤衩都不剩了。”
大麦:“那是他们重仓交易还不设止损,期货可以很方便的设置止盈止损,会止损的才能不被撵下赌桌。”
“期货是赌博?那我可不玩!”,小米忙挥手摇头,似怕粘上邪气一般。
“赌博和投资也就一念之差,关键看你对时局的把握!”,大麦若有所思,自言自语喃喃说道。
紧接着大麦又补充说:“投资期货,就是在交易风险!杠杆又放大了风险,所以你还是把钱存银行吧!”
小米立刻反驳道:“你小瞧人,我可以用量化规避风险!”
“哦,这么说你知道天勤量化喽?”
“哪里哪里,我才想去学呢,大哥可教我否?”
“这也不难,每天给我送杯酱香拿铁就行!”


言归正传,量化交易,其实最早是在黄金、外汇(MT4/MT5),后来有各种期货的量化交易软件,国内有文华财经、金字塔、MC量化等。今天我们来讨论下,如何使用python进行调用天勤TqSdk来实现期货量化交易。

提示:以下是本篇文章正文内容,下面案例仅供参考

一、TqSdk 是什么?

TqSdk 是一个由 信易科技 发起并贡献主要代码的开源 python 库. 依托 快期多年积累成熟的交易及行情服务器体系 , TqSdk 支持用户使用很少的代码量构建各种类型的量化交易策略程序, 并提供包含 历史数据-实时数据-开发调试-策略回测-模拟交易-实盘交易-运行监控-风险管理 的全套解决方案。

天勤的这个python库,是作者简单最容易理解,并适合初学者上手的量化库。

二、准备工作

1. 安装tqsdk库(Python环境提前准备好)

天勤量化的核心是TqSdk开发包, 在安装天勤量化 (TqSdk) 前, 你需要先准备适当的环境和Python包管理工具, 包括:
Python >=3.6.4,3.7,3.8,3.9 版本,我在3.10版本安装也是没有问题的。

Windows 7 以上版本, Mac Os, 或 Linux,Win10、Win11安装也不会有问题。

推荐采用 pip 命令安装/升级 TqSdk,命令行如下(前提是您已经安装python环境,推荐安装Anaconda,自带python运行环境和配套各种库,省去很多麻烦):

pip install tqsdk -U -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 注册快期账户

天勤的期货软件叫快期,也有APP。我们要用天勤做来量化,也得先注册一下快期账户。进入天勤量化主页,使用手机号码即可用手机号码直接注册,非常方便。
https://www.shinnytech.com/tianqin/

3. 支持的期货公司(更新以官方公布为准)

https://www.shinnytech.com/blog/tq-support-broker/
可直接使用 申请后才能使用 支持ETF期权
A安粮期货 F方正中期 W五矿经易_ETF
B倍特期货 H弘业期货 N南华期货_ETF
B宝城期货 Y银河期货 G国泰君安_ETF
B渤海期货 G国联期货 G光大期货_ETF
C创元期货 D东证期货 G国元期货_ETF
C长城期货 G光大期货 H宏源期货_ETF
C长江期货 S申万期货
D东华期货 H华泰期货
D东方汇金 D东航期货
D东海期货 C长安期货
D大地期货 Z中金岭南期货
D大有期货 G国泰君安
D大越期货 X信达期货
D大陆期货 Z紫金天风
F福能期货 D东吴期货 D东吴期货_苏州
D第一创业 Z中金财富
G冠通期货 Y永安期货
G国信期货
G国元期货
G国富期货
G广州期货
G国投安信
G国新国证期货
G国海良时
G国盛期货
G国贸期货
G国金期货
G国际期货
G广发期货
G广金期货
G格林大华
G港信期货
H华创期货
H华安期货
H华金期货
H华鑫期货
H华闻期货
H华龙期货
H和合期货
H和融期货
H宏源期货
H徽商期货
H恒力期货
H恒泰期货
H海航期货
H海证期货
H海通期货
H混沌天成
H红塔期货
J建信期货
J江海汇鑫
J金信期货
J金元期货
J金瑞期货
J金石期货
J锦泰期货
L鲁证期货(中泰期货)
M民生期货
M美尔雅期货 注:美尔雅是CTP二席,需要切换到对应席位使用
M迈科期货
N南华期货
P平安期货
Q前海期货
Q齐盛期货
R瑞奇期货
R瑞达期货
S上海东亚
S上海东方
S上海中期
S山西三立
S山金期货
S盛达期货
S神华期货
T通惠期货
T铜冠金源
W五矿期货
X先融期货
X先锋期货
X兴业期货
X鑫鼎盛期货
X兴证期货
X新世纪期货
X新湖期货
X新纪元期货
X西南期货
X西部期货
Y一德期货
Y英大期货
Z中信建投
Z中信期货
Z中原期货
Z中天期货
Z中州期货
Z中泰期货_数讯程序化
Z中粮期货
Z中航期货
Z中融汇信
Z中衍期货
Z中财期货
Z中辉期货
Z中钢期货
Z中银期货
Z招商期货
Z浙商期货

三、初试牛刀

以下代码可以获取DCE.jm2401 合约的10秒线,实现数据更新。

1. 示例代码:

# 引入TqSdk模块
from tqsdk import TqApi, TqAuth
# 创建api实例,设置web_gui=True生成图形化界面
api = TqApi(web_gui=True, auth=TqAuth("快期账户", "账户密码")) # 使用手机号码即可注册,注册过程也很简单。
# 订阅 DCE.jm2401 合约的10秒线
klines = api.get_kline_serial("DCE.jm2401", 10)
while True:
    # 通过wait_update刷新数据
    api.wait_update()

天勤SDK的运行逻辑很简单,如下图。是不是很简单,它不像哪些事件驱动的搞一堆on函数,再来几个回调函数,搞得初学者很晕。
在这里插入图片描述

2. 运行后提示如下:

在使用天勤量化之前,默认您已经知晓并同意以下免责条款,如果不同意请立即停止使用:https://www.shinnytech.com/blog/disclaimer/
2023-09-06 23:43:31 -     INFO - 您可以访问 http://127.0.0.1:51960 查看策略绘制出的 K 线图形。
2023-09-06 23:43:37 -     INFO - 通知 : 与 wss://free-api.shinnytech.com/t/nfmd/front/mobile 的网络连接已建立

3. 使用浏览器访问

使用浏览器访问http://127.0.0.1:51960 即可查看策略绘制出的 K 线图形,如下:
在这里插入图片描述
要在 TqSdk 中实现图形化界面非常简单,在 TqApi 中传入参数 web_gui = True即可,一套方案满足实盘/回测需求。
这里的端口是随机的,如果要求固定web_gui网址的,可传入本机IP+端口 ,如web_gui = “http://192.168.1.5:5888”(需填写本机IP+端口) 来进行固定网址访问。

四、模拟交易和实盘交易

折腾这么久,大家最关心的就是如何交易。天勤很大方,即使免费用户也可以关联一个实盘期货账户。这个真是方便!只要找到天勤支持的期货公司开户就可以了。

1. 用快期账户来模拟交易

注册完成的快期账户的【手机号】/【邮箱地址】/【用户名】和【密码】可以作为 快期模拟 账号,通过 TqKq 对 auth 传入参数进行登录,这个 快期模拟 账户在快期APP、快期专业版 和天勤量化上是互通的:

from tqsdk import TqApi, TqAuth, TqKq
api = TqApi(TqKq(), auth=TqAuth("快期账户", "账户密码"))

模拟账户资金:10000000.00,够你随意折腾了。

2. 用快期账户来实盘交易

对于 TqSdk 免费版,每个快期账户支持最多绑定一个实盘账户,而天勤量化专业版支持一个快期账户绑定任意多个实盘账户。
在这里插入图片描述

快期账户会在用户使用实盘账户时自动进行绑定,直到该快期账户没有能绑定实盘账户的名额(自动绑定功能需要 TqSdk 版本> 1.8.3):

from tqsdk import TqApi, TqAccount, TqAuth, TqKq
api = TqApi(TqAccount("H海通期货", "320102", "123456"), auth=TqAuth("快期账户", "账户密码"))

如果需要注册快期账户或者修改您的快期账户绑定的实盘账户请参见 登录用户管理中心。

注意:实盘之前请务必先模拟测试,否则学费可不是小数目。还是那句话,投资有风险,入市需谨慎!量化不是神,它只是提高了操作效率,但错误的方向,效率越高,亏损越快!

五、 量化策略交易(单均线策略)

绑定了以上账户关系后,既可以使用量化策略来进行量化交易了。

#  -*- coding: utf-8 -*-
from tqsdk import TqApi, TqAuth
'''
如果当前价格大于10秒K线的MA15则开多仓 (使用 insert_order() 函数)
如果小于则平仓
'''
# 模拟使用这个api
api = TqApi(auth=TqAuth("快期账户", "账户密码"))
# 实盘使用下面这个api,模拟、实盘二选一
# api = TqApi(TqAccount("H海通期货", "320102", "123456"), auth=TqAuth("快期账户", "账户密码"))

# 获取 DCE.jm2401 10秒K线的引用
klines = api.get_kline_serial("DCE.jm2401", 10)

# 判断开仓条件
while True:
    api.wait_update()
    if api.is_changing(klines):
        ma = sum(klines.close.iloc[-15:]) / 15
        print("最新价", klines.close.iloc[-1], "MA", ma)
        if klines.close.iloc[-1] > ma:
            print("最新价大于MA: 市价开仓")
            api.insert_order(symbol="DCE.jm2401", direction="BUY", offset="OPEN", volume=5)
            break
# 判断平仓条件
while True:
    api.wait_update()
    if api.is_changing(klines):
        ma = sum(klines.close.iloc[-15:]) / 15
        print("最新价", klines.close.iloc[-1], "MA", ma)
        if klines.close.iloc[-1] < ma:
            print("最新价小于MA: 市价平仓")
            api.insert_order(symbol="DCE.jm2401", direction="SELL", offset="CLOSE", volume=5)
            break
# 关闭api,释放相应资源
api.close()

总结

天勤的tqSDK确实很不错,业内也多有赞誉。万事开头难,这里抛砖引玉,其实官方的在线说明简直太贴心了,你想到的他们都做好了文档!另外,目前主要是做期货,其它等官方更新后再看吧。

另:tqsdk.ta 模块中包含了大量技术指标. 每个技术指标是一个函数, 函数名为全大写, 第一参数总是K线序列, 以pandas.DataFrame格式返回计算结果。这个简直太方便了,大家尽可直接参考官方文档调用即可。更多精彩,欢迎大家发掘分享。

附录

天勤SDK安装记录:

(base) C:\Users\Administrator>pip install tqsdk -U -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting tqsdk
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/58/9a/f8d3d7cf5d82de0559f7228b7460acfaf066d6a6c9a729c5ea75b00cbbd9/tqsdk-3.4.7-py3-none-any.whl (1.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 18.7 MB/s eta 0:00:00
Requirement already satisfied: simplejson in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.19.1)
Requirement already satisfied: aiohttp in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.8.4)
Requirement already satisfied: websockets>=8.1 in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (10.4)
Collecting sgqlc
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/3c/82/18f202b0891bc41e556e48e72e3ec9e83362f28cfbb4744dd9bd77a3d192/sgqlc-16.3-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.6/81.6 kB ? eta 0:00:00
Requirement already satisfied: scipy in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (1.10.0)
Requirement already satisfied: pyjwt in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.4.0)
Requirement already satisfied: requests in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.28.2)
Requirement already satisfied: filelock in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.12.0)
Collecting tqsdk-sm
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b5/af/4b92033cccb53d42cfbabfc82e41cbd372fdf0f56a3b550c00dc7064e59c/tqsdk_sm-1.0.5-py3-none-win_amd64.whl (23.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.0/23.0 MB 29.7 MB/s eta 0:00:00
Requirement already satisfied: pandas>=1.1.0 in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.0.1)
Collecting tqsdk-ctpse
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e8/8c/6d6154174e4d5d97d2ce63c92c08ed0dcfd8ae553cf6e5a6361f7ca3db80/tqsdk_ctpse-1.0.2-py3-none-win_amd64.whl (897 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 897.3/897.3 kB 28.6 MB/s eta 0:00:00
Requirement already satisfied: numpy in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (1.23.5)
Collecting shinny-structlog
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/61/7e/e9289e6b2c677318b44e48eb8cd5bb7dc9fe786df640e78947cda7a325ae/shinny_structlog-0.0.4-py3-none-any.whl (8.8 kB)
Requirement already satisfied: certifi in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2022.12.7)
Requirement already satisfied: psutil in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (5.9.0)
Requirement already satisfied: pytz>=2020.1 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2022.7)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2.8.2)
Requirement already satisfied: tzdata>=2022.1 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2023.3)
Requirement already satisfied: frozenlist>=1.1.1 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.3.3)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (2.0.4)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (4.0.2)
Requirement already satisfied: yarl<2.0,>=1.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.8.2)
Requirement already satisfied: aiosignal>=1.1.2 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.3.1)
Requirement already satisfied: multidict<7.0,>=4.5 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (6.0.4)
Requirement already satisfied: attrs>=17.3.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (22.1.0)
Requirement already satisfied: idna<4,>=2.5 in d:\programdata\anaconda3\lib\site-packages (from requests->tqsdk) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\programdata\anaconda3\lib\site-packages (from requests->tqsdk) (1.26.14)
Collecting graphql-core<4.0.0,>=3.1.7
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f8/39/e5143e7ec70939d2076c1165ae9d4a3815597019c4d797b7f959cf778600/graphql_core-3.2.3-py3-none-any.whl (202 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 202.9/202.9 kB 12.0 MB/s eta 0:00:00
Requirement already satisfied: six>=1.5 in d:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.8.2->pandas>=1.1.0->tqsdk) (1.16.0)
Installing collected packages: tqsdk-sm, tqsdk-ctpse, shinny-structlog, graphql-core, sgqlc, tqsdk
Successfully installed graphql-core-3.2.3 sgqlc-16.3 shinny-structlog-0.0.4 tqsdk-3.4.7 tqsdk-ctpse-1.0.2 tqsdk-sm-1.0.5

(base) C:\Users\Administrator>

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

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

相关文章

VIT中的einops包详解

‘’‘einops有三个常用方法&#xff1a;rearrange,repeat,reduce’‘’ rearrange的操作相当于转置 rearrange(image,‘h w c -> w h c’) 高和宽转置 path ../data/cat_and_mouse.jpg image cv2.imread(path) h,w,c image.shape # shape第一个值是h,第二个是w image…

Vue框架--Vue列表渲染(1)

1.列表的基本遍历 Vue提供了v-for用于遍历数据内容,我们在这里重点说两种数据的遍历:数组的遍历和对象的遍历。遍历数组对象如下所示: 遍历对象案例:

vue3项目部署报错 Faled to esolve entry for pacdlage “hntlify/sthared“

版本 vue 3.2.47 vue-i18n 9.2.2 本地运行没有问题&#xff0c;jenkins上部署报错找不到"hntlify/sthared"包 排查问题&#xff1a; 查看vue-i18n官网&#xff0c;发现有引用到这个包 “hntlify/sthared” vue-i18n最新版本是9.3.0&#xff0c;未锁定版本&#xf…

Excel 将数字添加百分号

目的&#xff1a;将56.33变成56.33% 打一个“100”&#xff0c;然后ctrlc复制 全选要操作的数据&#xff0c;右键&#xff0c;选择“选择性张贴” 选择“除” 再选择“百分比” 可以调整位数 软件工程小施同学 20230907

【0907 C高级day2】Shell脚本

一、作业&#xff1a;写一个shell脚本&#xff0c;将以下内容放到脚本中 在家目录下创建目录文件&#xff0c;dir在dir下创建dir1和dir2把当前目录下的所有文件拷贝到dir1中&#xff0c;把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz再把dir2.tar.xz移…

Mac上的视频管理神器:MetaVideo for Mac让你的视频搜索和整理更轻松

视频时代已经来临&#xff0c;我们每天都会接触到各种各样的视频资源。但是&#xff0c;如何管理和编辑这些视频文件&#xff0c;让它们更加易于查找和使用呢&#xff1f;MetaVideo for Mac可以帮助你解决这个问题。 MetaVideo for Mac是一款专门为Mac用户设计的视频管理软件&…

2023京东医疗保健器械行业数据分析(京东数据分析平台)

随着人们对自身健康的重视程度不断加深&#xff0c;当前市场中各类对疾病具有诊断、预防、监护、治疗或者缓解的医疗保健仪器越来越受到消费者的关注。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年7月份&#xff0c;京东平台医疗保健仪器的销量为950万&#xf…

Java“牵手”1688商品详情数据,1688商品详情API接口,1688API接口申请指南

1688平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取1688商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

【广州华锐互动】VR景区云游:打造沉浸式网上虚拟旅游体验

VR景区云游体验是一种全新的旅游体验方式&#xff0c;通过虚拟现实技术&#xff0c;让游客在家中就能身临其境地游览各大景区。这种展示方式不仅节省了游客的时间和金钱&#xff0c;还能让他们在未出发前就对景区有更深入的了解。 通过虚拟现实技术&#xff0c;用户可以在景区内…

java String拼接json的方式

首先要晓得json显示的格式&#xff0c;就晓得下面为啥要这样拼接了 1.通过转义符号拼接 String content2 "{\"order\":{\"terminalNumber\":\"""""\"" ",\"listFlag\":"&q…

c高级day2作业

写一个1.sh脚本&#xff0c;将以下内容放到脚本中&#xff1a; 在家目录下创建目录文件&#xff0c;dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中&#xff0c; 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz…

自动化运维—ansible

一、 Ansible 介绍 Ansible 是一种 IT 自动化工具。它可以配置管理&#xff0c;部署软件以及协调更高级的 IT 任务&#xff0c; 例如持续部署&#xff0c;滚动更新。 Ansible 适用于管理企业 IT 基础设施&#xff0c;从 几十台到上百台的服务器环境。Ansible 也是一种简单的自…

既是管理又是执行者,如何清晰地进行工作总结呢?

摘要&#xff1a;作为管理者和执行者&#xff0c;清晰地进行工作总结对于提高效率和推动团队发展至关重要。本文将探讨一些技巧和方法&#xff0c;帮助管理者清晰地进行工作总结。 正文&#xff1a; 工作总结对于管理者来说是一项关键任务&#xff0c;它可以帮助回顾工作进展…

selenium自动化测试过程中接口的调用信息

在上一篇中我也给自己提出一个需求&#xff1a;如果记录在测试过程中接口的调用情况&#xff1f;提出这个需求&#xff0c;我觉得是有意义的。你在测试过程中肯定会遇到一些莫名其妙的问题&#xff0c;比如&#xff1a;web某个页面一直在刷进度条&#xff0c;导致你定位元素失败…

kubernetes 之 minikube折腾记

参考官网教程&#xff0c;链接&#xff1a; https://minikube.sigs.k8s.io/docs/start/ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube安装完启动minikube&#xff1a;…

超高真空度精密控制解决方案设计中百度“文心一言”的具体应用

摘要&#xff1a;本文采用国产版本ChatGPT百度“文心一言”作为一种辅助工具&#xff0c;针对超高真空度精密控制装置的开发进行了初期的技术路线设计&#xff0c;对话调研的重点是了解可调节式微流量进气阀门和可用于连接非线性输出信号型真空计的PID控制器。总体而言&#xf…

【容器vs虚拟机】

容器vs虚拟机 为什么用虚拟机什么是容器容器vs虚拟机 Docker被称为是轻量级的虚拟化。 首先&#xff0c;一般开发所需要的都是Linux环境&#xff0c;但我们大多数人的电脑都是Windows系统。所以要安装虚拟机&#xff0c;目的是为了在我们当前所使用的Windows上面安装上Linux环境…

韶音耳机是哪个国家的品牌,韶音骨传导耳机值得入手吗

有很多小伙伴们在后台私信我&#xff0c;问我韶音耳机是哪个国家的品牌&#xff0c;以及韶音骨传导耳机值不值得入手等问题&#xff0c;其实韶音在国内的影响力也可以说是挺高的&#xff0c;下面我将针对这几个问题来给大家解析一下。 韶音耳机是哪个国家的品牌&#xff1f; 韶…

05-JVM内存分配机制深度剖析

上一篇&#xff1a;04-JVM对象创建深度剖析 1.对象栈上分配 我们通过JVM内存分配可以知道JAVA中的对象都是在堆上进行分配&#xff0c;当对象没有被引用的时候&#xff0c;需要依靠GC进行回收内存&#xff0c;如果对象数量较多的时候&#xff0c;会给GC带来较大压力&#xff…