Python选基金(爬虫+策略)

2023-10-27

之前买基金都瞎买的,最近突然想可以用python来试试,综合基金类型、持仓、收益率、基金经理多维度综合考虑,看看能不能帮忙选比较优质的基金出来。

整体策略:

一、数据准备

1.1获得基金经理信息

import requests
import time
import re
import pymysql

conn=pymysql.connect(host='xxxxxxxx',user='xxxxx',password='xxxxx',database='xxx',charset="utf8")
cur=conn.cursor()
#获得基金经理信息
def getfundmanageinfo():
    for i in range(54):
        print('正在写入第{}页'.format(i))
        url='http://fund.eastmoney.com/Data/FundDataPortfolio_Interface.aspx?dt=14&mc=returnjson&ft=all&pn=20&pi='+str(i)+'&sc=abbname&st=asc'
        r=requests.get(url)
        fundmanagelist=re.findall(re.compile('\[(.*)\]',re.S),r.text)[0].strip('[').strip(']').replace('"','').split("],[")
        #"30634044","艾定飞","80053204","华商基金","007685,007853","华商电子行业量化股票,华商计算机行业量化股票","938","73.86%","007685","华商电子行业量化股票","5.41亿元","73.86%"
        for j in fundmanagelist:
            funmanagername=j.split(',')[1]
            company=j.split(',')[3]
            fundinfo=j.split(',')[4:-6]
            fundcode='##'.join(fundinfo[:int(len(fundinfo)/2)]) #用两个#把基金代码拼接成字符串
            fundname='##'.join(fundinfo[int(len(fundinfo)/2):])
            workday=j.split(',')[-6]
            fundscale=j.split(',')[-2]
            bestprofit=j.split(',')[-1]
            bestfundcode=j.split(',')[-4]
            bestfundname=j.split(',')[-3]
            sql="insert into fundmanagerinfo values('{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(funmanagername,company,str(fundcode),str(fundname),workday,fundscale,bestprofit,bestfundcode,bestfundname)
            cur.execute(sql)
            conn.commit()

if __name__ == '__main__':
    getfundmanageinfo()


1.2筛选从业年限超过10年的基金经理,并且最佳收益率>100%,按照业绩排名

select * from fundmanagerinfo 
where workday >3650 and cast(left(bestprofit,5) as float)>100
order by cast(left(bestprofit,5) as float) desc

结果:

1.3然后选择这些基金经理持有的基金代码出来到fundcodeanalysis表,作为基金池

create  table fundcodeanalysis as
select DISTINCT funmanagername ,substring_index(substring_index(a.fundcode ,'##',b.help_topic_id + 1),'##' ,-1) as fundcode 
,substring_index(substring_index(a.fundname,'##',b.help_topic_id + 1),'##' ,-1) as fundname
from (select * from fundmanagerinfo where workday >3650 and cast(left(bestprofit,5) as float)>100
order by cast(left(bestprofit,5) as float) desc)
a  
JOIN mysql.help_topic b ON b.help_topic_id <(length(a.fundcode)-length( replace(a.fundcode,'##','')) + 1)

表如下:

1.4采集这些基金基础信息

采用3个进程,跑了好几个小时才跑完,如果电脑配置够好,建议多点进程

from multiprocessing import Pool
def getfundinfo(fundcode):
    baseurl='https://fundf10.eastmoney.com/F10DataApi.aspx?type=lsjz&code='+str(fundcode)+'&sdate=2001-12-18&edate=2022-05-18&per=20&page=1'
    r=requests.get(baseurl)
    pagenum=re.findall(re.compile('pages:(.*?),curpage',re.S),r.text)[0]
    for i in range(1,int(pagenum)+1):
        print('正在获取基金{}的第{}页,总{}页'.format(fundcode,i,pagenum))
        url='https://fundf10.eastmoney.com/F10DataApi.aspx?type=lsjz&code='+str(fundcode)+'&sdate=2001-12-18&edate=2022-05-18&per=20&page='+str(i)
        k=requests.get(url)
        dates=re.findall(re.compile('<tr><td>(.*?)</td><td',re.S),k.text)
        netvalues=re.findall(re.compile("<td class='tor bold'>(.*?)</td><td",re.S),k.text)
        accvalues=re.findall(re.compile("</td><td class='tor bold'>.*?</td><td class='tor bold'>(.*?)</td><td class='tor bold ",re.S),k.text)
        #grouths=re.findall(re.compile("<td class='tor bold red'>(.*?)</td><td|<td class='tor bold grn'>(.*?)</td><td",re.S),k.text)
        df=pd.DataFrame([dates,netvalues,accvalues]).T
        df.columns=['dates','netvalues','accvalues']
        for j in range(df.shape[0]):
            rows=df.iloc[j,:]
            date=rows[0]
            netvalue=rows[1]
            accvalue=rows[2]
            try:
                sql="insert into fundinfoanalysis values('{}','{}','{}','{}')".format(fundcode,date,netvalue,accvalue)
                cur.execute(sql)
                conn.commit()
            except Exception as e:
                print(e)
if __name__ == '__main__':
    pool=Pool(processes=3)
    #getfundmanageinfo()
    fundcode_df=pd.read_sql('select fundcode from fundcodeanalysis',conn)
    pool.map(getfundinfo,list(fundcode_df.fundcode)) #多进程爬取,注意getfundinfo函数没有括号
    pool.close()
    pool.join()

二、选择策略

2.1获得上证指数每天数据作为对比,网址在这里,直接下载数据就行

2.2以大盘指数筛选基金

选择上涨指数比较平稳的区间作为依据,如果大盘不动,收益上涨就证明了基金经理的水平比较好

观察期  20190301-20200630    上证2994.005 ~  2984.6741 变化率-0.33%

验证区  20201201-20210531    上证3451.9384 ~ 3615.4773 变化率 4.73%

2.21筛选观察期变化率大于上证指数的基金,因为上证是负数,所以大于0就可以了,从里面筛选排名前30%的基金出来

select * FROM (
select a.fundcode ,concat(round((end_value/start_value-1)*100,1),'%') as 收益率,
round(PERCENT_RANK()over(order by end_value/start_value-1 desc)*100,0) as 排名
from
(select  fundcode ,accvalue as start_value from  `fundinfoanalysis`where dates='2019-03-01' )a 
left join 
(select  fundcode ,accvalue as end_value from  `fundinfoanalysis`where dates='2020-06-30') b
on a.fundcode=b.fundcode
where cast(end_value as float)/cast(start_value as float)-1>0
and start_value is not null
order by round(cast(end_value as float)/cast(start_value as float)-1,3)*100 desc
)x 
where 排名<30

结果

2.22看看这些基金在验证区是否依然大于上证指数,然后再筛选前30%的出来

select * FROM (
select a.fundcode ,concat(round((end_value/start_value-1)*100,1),'%') as 收益率,
round(PERCENT_RANK()over(order by end_value/start_value-1 desc)*100,0) as 排名
from
(select  x.fundcode ,accvalue as start_value from  `fundinfoanalysis` x inner join funcodetop30 y on x.fundcode =y.fundcode where dates='2020-12-01' )a 
left join 
(select  x.fundcode ,accvalue as end_value from  `fundinfoanalysis` x inner join funcodetop30 y on x.fundcode =y.fundcode where dates='2021-05-31') b
on a.fundcode=b.fundcode
where end_value/start_value-1>0.047
and start_value is not null
order by round(cast(end_value as float)/cast(start_value as float)-1,3)*100 desc
)x 
where 排名<30

最后从8000多基金里面,剩下27支基金了

好像有点多,再筛一下,两次观察区间都保持在前30名的基金

SELECT * from fundcodefinal a
left join (select fundcode ,profit ,RANK()over(order by profit desc) rn from funcodetop30)
b on a.fundcode =b.fundcode 
where b.rn<30

现在就剩下10支了,接着分析这10支基金的持仓股票详情

def getfundstockdetails(fundcode):
    print('正在获取基金{}的持仓股票明细'.format(fundcode))
    url="http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code={}&topline=10&year=&month=&rt=0.5032668912422176".format(fundcode)
    r=requests.get(url)
    stockcodes=re.findall(re.compile("</td><td><a href='.*?'>(.*?)</a></td><td class='tol'>",re.S),r.text)
    stocknames=re.findall(re.compile("</td><td class='tol'><a href='.*?'>(.*?)</a></td><td class='tor'>",re.S),r.text)
    percents=re.findall(re.compile("股吧.*?</a></td><td class='tor'>(.*?)</td><td class='tor'>",re.S),r.text)
    holding_nums=re.findall(re.compile("行情.*?</a></td><td class='tor'>.*?</td><td class='tor'>(.*?)</td><td class='tor'>",re.S),r.text)
    holding_values=re.findall(re.compile("行情.*?</a></td><td class='tor'>.*?</td><td class='tor'>.*?</td><td class='tor'>(.*?)</td></tr>",re.S),r.text)
    df=pd.DataFrame([stockcodes,stocknames,percents,holding_nums,holding_values]).T
    df.columns=['stockcode','stockname','percent','holding_num','holding_value']
    for j in range(df.shape[0]):
        rows=df.iloc[j,:]
        stockcode=rows[0]
        stockname=rows[1]
        percent=rows[2]
        holding_num=rows[3]
        holding_value=rows[4]
        try:
            sql="insert into fundinfoanalysisstockdetails values('{}','{}','{}','{}','{}','{}')".format(fundcode,stockcode,stockname,percent,holding_num,holding_value)
            cur.execute(sql)
            conn.commit()
        except Exception as e:
            print(e)
if __name__ == '__main__':
    pool=Pool(processes=3) #开启3个进程,不填就是默认最大进程数
    # #getfundmanageinfo()
    # fundcode_df=pd.read_sql('select distinct fundcode from fundcodeanalysis',conn)
    fundfinal=pd.read_sql('SELECT distinct a.fundcode from fundcodefinal a left join (select fundcode ,profit ,RANK()over(order by profit desc) rn from funcodetop30)b on a.fundcode =b.fundcode where b.rn<30',conn)
    pool.map(getfundstockdetails,list(fundfinal.fundcode)) #多进程,注意getfundinfo函数没有括号
    pool.close()
    pool.join()

最终结果

想玩股票的,可以看看这些股票,毕竟是人家基金经理精心挑选出来的

时间有限,以上过程仅限于个人探索,不构成投资建议。另外策略方面也可以再深入研究,例如不同类型基金配比,一部分用来追求高收益,一部分求稳保证最终盈利就行。还有可以定投策略也可以加入。

鉴于有的人懒得看代码,所以我准备了完整代码:


import requests
import pandas as pd
import re
import pymysql
from multiprocessing import Pool

conn=pymysql.connect(host='xxxxxx',user='xxx',password='xxxx',database='xxx',charset="utf8")
cur=conn.cursor()
#获得所有基金代码
def getfundCode():
    url = 'http://fund.eastmoney.com/js/fundcode_search.js'
    r = requests.get(url)
    fundcodelist=re.findall(re.compile('\[(.*)\]',re.S),r.text)[0].strip('[').strip(']').replace('"','').split("],[")
    fundcodes=[] #获得所有基金代码存为列表
    for i in fundcodelist:
        #000001,HXCZHH,华夏成长混合,混合型
        fundcode=i.split(',')[0]
        fundnameen=i.split(',')[1]
        fundnamecn=i.split(',')[2]
        fundtype=i.split(',')[3]
        # fundinfo='{},{},{},{}\n'.format(fundcode,fundnameen,fundnamecn,fundtype)
        # with open('fundinfo.csv', 'a+', encoding='gbk') as f:
        #     f.write(fundinfo) #存到本地
        fundcodes.append(fundcode)
    return fundcodes
#获得基金经理信息
def getfundmanageinfo():
    for i in range(54):
        print('正在写入第{}页'.format(i))
        url='http://fund.eastmoney.com/Data/FundDataPortfolio_Interface.aspx?dt=14&mc=returnjson&ft=all&pn=20&pi='+str(i)+'&sc=abbname&st=asc'
        r=requests.get(url)
        fundmanagelist=re.findall(re.compile('\[(.*)\]',re.S),r.text)[0].strip('[').strip(']').replace('"','').split("],[")
        #"30634044","艾定飞","80053204","华商基金","007685,007853","华商电子行业量化股票,华商计算机行业量化股票","938","73.86%","007685","华商电子行业量化股票","5.41亿元","73.86%"
        for j in fundmanagelist:
            funmanagername=j.split(',')[1]
            company=j.split(',')[3]
            fundinfo=j.split(',')[4:-6]
            fundcode='##'.join(fundinfo[:int(len(fundinfo)/2)]) #用两个#把基金代码拼接成字符串
            fundname='##'.join(fundinfo[int(len(fundinfo)/2):])
            workday=j.split(',')[-6]
            fundscale=j.split(',')[-2]
            bestprofit=j.split(',')[-1]
            bestfundcode=j.split(',')[-4]
            bestfundname=j.split(',')[-3]
            sql="insert into fundmanagerinfo values('{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(funmanagername,company,str(fundcode),str(fundname),workday,fundscale,bestprofit,bestfundcode,bestfundname)
            cur.execute(sql)
            conn.commit()
def getfundinfo(fundcode):
    baseurl='https://fundf10.eastmoney.com/F10DataApi.aspx?type=lsjz&code='+str(fundcode)+'&sdate=2001-12-18&edate=2022-05-18&per=20&page=1'
    print(baseurl)
    r=requests.get(baseurl)
    pagenum=re.findall(re.compile('pages:(.*?),curpage',re.S),r.text)[0]
    for i in range(1,int(pagenum)+1):
        print('正在获取基金{}的第{}页,总{}页'.format(fundcode,i,pagenum))
        url='https://fundf10.eastmoney.com/F10DataApi.aspx?type=lsjz&code='+str(fundcode)+'&sdate=2001-12-18&edate=2022-05-18&per=20&page='+str(i)
        k=requests.get(url)
        dates=re.findall(re.compile('<tr><td>(.*?)</td><td',re.S),k.text)
        netvalues=re.findall(re.compile("<td class='tor bold'>(.*?)</td><td",re.S),k.text)
        accvalues=re.findall(re.compile("</td><td class='tor bold'>.*?</td><td class='tor bold'>(.*?)</td><td class='tor bold ",re.S),k.text)
        #grouths=re.findall(re.compile("<td class='tor bold red'>(.*?)</td><td|<td class='tor bold grn'>(.*?)</td><td",re.S),k.text)
        df=pd.DataFrame([dates,netvalues,accvalues]).T
        df.columns=['dates','netvalues','accvalues']
        for j in range(df.shape[0]):
            rows=df.iloc[j,:]
            date=rows[0]
            netvalue=rows[1]
            accvalue=rows[2]
            try:
                sql="insert into fundinfoanalysis values('{}','{}','{}','{}')".format(fundcode,date,netvalue,accvalue)
                cur.execute(sql)
                conn.commit()
            except Exception as e:
                print(e)
def getfundstockdetails(fundcode):
    print('正在获取基金{}的持仓股票明细'.format(fundcode))
    url="http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code={}&topline=10&year=&month=&rt=0.5032668912422176".format(fundcode)
    r=requests.get(url)
    stockcodes=re.findall(re.compile("</td><td><a href='.*?'>(.*?)</a></td><td class='tol'>",re.S),r.text)
    stocknames=re.findall(re.compile("</td><td class='tol'><a href='.*?'>(.*?)</a></td><td class='tor'>",re.S),r.text)
    percents=re.findall(re.compile("股吧.*?</a></td><td class='tor'>(.*?)</td><td class='tor'>",re.S),r.text)
    holding_nums=re.findall(re.compile("行情.*?</a></td><td class='tor'>.*?</td><td class='tor'>(.*?)</td><td class='tor'>",re.S),r.text)
    holding_values=re.findall(re.compile("行情.*?</a></td><td class='tor'>.*?</td><td class='tor'>.*?</td><td class='tor'>(.*?)</td></tr>",re.S),r.text)
    df=pd.DataFrame([stockcodes,stocknames,percents,holding_nums,holding_values]).T
    df.columns=['stockcode','stockname','percent','holding_num','holding_value']
    for j in range(df.shape[0]):
        rows=df.iloc[j,:]
        stockcode=rows[0]
        stockname=rows[1]
        percent=rows[2]
        holding_num=rows[3]
        holding_value=rows[4]
        try:
            sql="insert into fundinfoanalysisstockdetails values('{}','{}','{}','{}','{}','{}')".format(fundcode,stockcode,stockname,percent,holding_num,holding_value)
            cur.execute(sql)
            conn.commit()
        except Exception as e:
            print(e)
if __name__ == '__main__':
    pool=Pool(processes=3) #开启3个进程,不填就是默认最大进程数
    # #getfundmanageinfo()
    # fundcode_df=pd.read_sql('select distinct fundcode from fundcodeanalysis',conn)
    fundfinal=pd.read_sql('SELECT distinct a.fundcode from fundcodefinal a left join (select fundcode ,profit ,RANK()over(order by profit desc) rn from funcodetop30)b on a.fundcode =b.fundcode where b.rn<30',conn)
    pool.map(getfundstockdetails,list(fundfinal.fundcode)) #多进程,注意getfundinfo函数没有括号
    pool.close()
    pool.join()





参考博客:https://blog.csdn.net/lusongno1/article/details/113829405?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python选基金(爬虫+策略) 的相关文章

  • 阻止 TensorFlow 访问 GPU? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以纯粹在CPU上运行TensorFlow 我机器上的所有内存都被运行 TensorFlow 的单独进程占用 我尝试将 per process memory fraction 设置为 0 但未成功
  • 有没有一种方法可以将python对象直接存储在mongoDB中而不需要序列化它们

    我在某处读到过 您可以使用 BSON 将 python 对象 更具体地说是字典 作为二进制文件存储在 MongoDB 中 但是现在我找不到任何与此相关的文档 有人知道具体如何做到这一点吗 没有办法在不序列化的情况下将对象存储在文件 数据库
  • 上传时的 Google Drive API——这些额外的空行从何而来?

    总结一下该程序 我从我的 Google 云端硬盘下载一个文件 然后在本地计算机中打开并读取一个文件 file a txt 然后在我的计算机中打开另一个文件 file b txt 处于附加模式 并且在使用这个新的 file b 更新我的 Go
  • 如何在 Jupyter Notebook 中运行 Python 异步代码?

    我有一些 asyncio 代码在 Python 解释器 CPython 3 6 2 中运行良好 我现在想在具有 IPython 内核的 Jupyter 笔记本中运行它 我可以运行它 import asyncio asyncio get ev
  • TensorFlow:带有轴选项的 bincount

    在 TensorFlow 中 我可以使用 tf bincount 获取数组中每个元素的计数 x tf placeholder tf int32 None freq tf bincount x tf Session run freq feed
  • numpy python 中的“AttributeError:'matrix'对象没有属性'strftime'”错误

    我有一个维度为 72000 1 的矩阵 该矩阵涉及时间戳 我想使用 strftime 如下所示 strftime d m y 为了得到像这样的输出 11 03 02 我有这样一个矩阵 M np matrix timestamps 我使用了
  • ctypes 错误:libdc1394 错误:无法初始化 libdc1394

    我正在尝试将程序编译为共享库 我可以使用 ctypes 在 Python 代码中使用该库 使用以下命令该库可以正常编译 g shared Wl soname mylib O3 o mylib so fPIC files pkg config
  • 从sklearn PCA获取特征值和向量

    如何获取 PCA 应用程序的特征值和特征向量 from sklearn decomposition import PCA clf PCA 0 98 whiten True converse 98 variance X train clf f
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • Python:我不明白 sum() 的完整用法

    当然 我明白你使用 sum 与几个数字 然后它总结所有 但我正在查看它的文档 我发现了这一点 sum iterable start 第二个参数 start 的作用是什么 这太尴尬了 但我似乎无法通过谷歌找到任何示例 并且对于尝试学习该语言的
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 在 Spyder 的变量资源管理器中查看局部变量

    我是 python 新手 正在使用 Spyder 的 IDE 我欣赏它的一项功能是它的变量资源管理器 然而 根据一些研究 我发现它只显示全局变量 我找到的解决方法是使用检查模块 import inspect local vars def m
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 在 Windows 上使用带有对数刻度的 matplotlib 时出现 Unicode 错误

    我正在使用 python 2 6 和 matplotlib 如果我运行 matplotlib 库页面中提供的示例 histogram demo py 它工作正常 我已经大大简化了这个脚本 import numpy as np import
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • Python对象初始化性能

    我只是做了一些快速的性能测试 我注意到一般情况下初始化列表比显式初始化列表慢大约四到六倍 这些可能是错误的术语 我不确定这里的行话 例如 gt gt gt import timeit gt gt gt print timeit timeit
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • 关于数论中的互质数的最大不能组合数

    题意 给定A和B A和B互质 求最大不能组合数 和不能组合数的个数 基础知识 Gcd A B 1 Lcm A B AB剩余类 把所有整数划分成m个等价类 每个等价类由相互同余的整数组成任何数分成m个剩余类 分别为 mk mk 1 mk 2
  • 新论文石锤Transformer:别只看注意力,没有残差和MLP,它啥都不是

    作者 青暮 基于注意力的架构在机器学习社区中已经变得无处不在 Transformer最初在机器翻译打出名堂 随着BERT的问世几乎统治了整个NLP领域 RNN LSTM等老前辈瑟瑟发抖 GPT 3的零样本学习能力又令人不禁怀疑其智能本质 还
  • 简单几步,让Mac外接显示器更好用

    光懂得给MacBook连接外置显示器还不行 了解这几点 才能让Mac外接显示器更好用 可以在两个显示器桌面之间任意拖拽移动软件窗口 这也是双 多 显示器一个高效的地方 将外接显示器设置为最佳分辨率 MacBook连接上外接显示器后 打开 系
  • Qt之工程文件

    文章目录 1 注释 2 QT 3 模板变量 TEMPLATE 4 TARGET 5 CONFIG 6 控制输出目录 6 1 UIC DIR 6 2 RCC DIR 6 3 MOC DIR 6 4 OBJECTS DIR 6 5 DESTDI
  • linux下制作动态库

    1 动态库的介绍 动态库 也叫共享库 动态库与用户编写的程序相互独立 不被包含在用户生成的可执行文件当中 2 动态库的创建 第一步 将写好的程序编译 我们事先写好两个程序 bye c hello c 一个输出hello一个输出bye 在终端
  • Spring AOP(一)五种增强(Advice)

    AOP术语都非常抽象 结合某些小例子就会形象 具体一些 连接点 Joinpoint Spring仅支持方法的连接点 即仅能在方法调用前 方法调用后 方法抛出异常时及方法调用前后 这些程序执行点织入增强 黑客攻击系统需要找到突破口 从某种程度
  • 【安卓网络编程】Android Studio导入Volley

    在Android Studio中使用Volley框架 首先要导入Volley到项目中去 点击主界面左上角File 点击Project Structure 在Modules下 点击app 然后点击Dependencies 然后点击右边的那个
  • 企业级音视频会议实战之webrtc服务器janus品尝实战

    1 前言 之前写过单纯用webrtc和springboot实现单人 多人 屏幕分享等功能的一系列文章了 心疼各位giegie 已将例子放在下面 不麻烦你们去找了 webrtc实现视频群聊系列文章 一 之基础入门 webrtc实现视频群聊系列
  • C++ 大话设计之《访问者模式》(优缺点,设计原理,常用场景)

    访问者模式是一种行为型模式 优点 能够在不改变对象结构的情况下增加新的操作 使得操作集合可以相对独立地演化 缺点 增加新的元素类变得困难 因为每个新元素都必须被访问者类所接受 此外 如果对象结构中的元素类经常发生变化 那么使用访问者模式可能
  • 微信公众号订阅通知设置

    1 开通订阅通知 根据api开通 https developers weixin qq com doc offiaccount Subscription Messages intro html 2 设置订阅通知组件 根据api设置服务号订阅
  • linux dts 语法格式,设备树DTS格式解析

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 宿主机 ubuntu16 04 开发板 tq imx6ull 内核版本 linux 4 1 15 用实例讲解下设备树dts语法 dts文档都在内核的arch ar
  • @antv/g2踩坑记录

    自定义tooltip 需要先在绘图时配置自定义tooltip的需要的字段 chart point position value 1 shape pointer tooltip name value date name value date
  • 投资合伙人股份分配_创业者必看的合伙人股权分配细则

    惠学习 创业者必看的合伙人股权分配细则 惠学习 创业者必看的合伙人股权分配细则 2016 08 03 苏州高新区惠创业 苏州高新区惠创业 案例 真功夫 真功夫的纠纷大家应该比较了解 现在对它的生意还不影响 但是很遗憾它还没IPO 最主要的原
  • Linux配置Java环境

    使用jdk压缩包方式配置Java环境 1 上传jdk到linux 在linux中软件一般安装到 usr local目录中 2 将jdk解压 解压命令 tar zxvf jdk 8u301 linux x64 tar gz 将解压后的jdk改
  • git子模块无法下载

    用rt studio添加软件包时会克隆整个仓库 这个时候如果提交代码 就会出现一个警告 如果你强行提交上去 那么这部分代码不会同步 但是你去远程仓库查看时会有一个子模块 如果你clone下来 想去下载子模块时 会提示 No url foun
  • 【Mybatis】maven配置pom.xml时找不到依赖项(已解决)

    我在配置pom xml依赖时 会冒红 解决方法 1 settings gt maven目录 把maven路径改为自己的 具体操作在 Maven Maven安装 入门教程笔记 暮色 年华的博客 CSDN博客 这篇文章里 2 右击pom xml
  • 独立成分分析FastICA算法原理

    独立成分分析FastICA算法原理 首先对于d维的随机变量 x R d 1
  • 【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

    Android取证篇 华为设备跳出 允许USB调试 界面方法的不同方法 华为设备在鸿蒙OS3系统之后 部分设备启用 允许USB调试 方式会有所变化 再次做个记录 蘇小沐 1 实验环境 系统 版本 Windows 11 专业工作站版 22H2
  • scons编译protobuffer脚本代码

    scons编译protobuffer脚本代码 protoc py Google s Protoc builder Example will produce c output files in the src directory protoc
  • Python选基金(爬虫+策略)

    之前买基金都瞎买的 最近突然想可以用python来试试 综合基金类型 持仓 收益率 基金经理多维度综合考虑 看看能不能帮忙选比较优质的基金出来 整体策略 一 数据准备 1 1获得基金经理信息 import requests import t