实习总结-gm智投

这是到gm实习的第三个月了,我的岗位是python开发工程师,主要负责试金石这个项目。这个项目的内容是对智能投顾部门算法组生成的一系列基金组合以及大类组合的效益进行评估。
评估的指标有四项:年化收益、最大回撤、标准差和夏普比率。计算公式如下:

年化收益:
〖(1+第一天日收益率)(1+第二天日收益率)…*(1+当前天日收益率))〗^(252/5)- 1
年化标准差:
日收益率的标准差×√252
最大回撤:
(最小净值-最大净值)/最大净值
夏普比率
年化收益/标准差

这四个指标通过不同维度来展示,比如曲线图、平均值和方差、胜率。这是第一个页面的内容,主要做的就是分析这个基金组合的效应。
第二个页面是这个组合的详情页面,里面有一段时间范围内的所有数据,可以详细的显示这个组合的某个指标的详细信息;最后一个页面是当天的组合详情,其中包括这个组合的四个指标、它的净值和这个组合的配置。
整体来说,这个项目的难度还是不大的,但是在实际做的过程中,有很多自己并不熟悉的环节,比如mysql、redis、django的框架、服务器和本地的区别。这个项目虽然简单,但是实际包含的内容以及和前端、产品、测试、运维之间的协作,让我了解了一名互联网后端应该掌握的技术以及互联网公司的运作方式。

下面对一名互联网后端应该掌握的技术进行总结:
1、MySQL
MySQL是关系型数据库(RDBMS),它有一套基本的语法,“增删改查”是mysql最基本的操作。在后端编程中,经常需要将数据存入到数据库以及从数据表中取数。
常见命令: mysql -u root -p 登录命令
show databases; show tables; use xxx; select * from xxx等。
mysql在django中的使用需要建立model,还需要生成migration文件,将生成的mysql表配置到本地或者数据库的mysql中。然后利用mysql的查找语句从表中查询数据即可。在django中建立mysql的model

2、redis
redis是一种key-value类型的缓存系统,其优点在于性能比较高,可以快速以键值对的形式从缓存中取数。因为在计算过程中需要重复用到基金收益率这个csv文件,如果每次调用接口的时候都从文件中加载一次csv文件将耗费大量的时间,所以选择在首次调用接口的时候将数据文件存入redis中,如果以后还需要用到这个文件就只需要从redis里面查找是否存在这个文件即可。

# 重启系统的时候清空缓存
if settings.USE_CACHE:  
    cache.clear()
# 从redis中取数
def get_ret_df(file_name):
    cache_key = "{}".format(file_name)
    if settings.USE_CACHE:
        ret_df = cache.get(cache_key)
        if ret_df is None:
            ret_df = pd.read_csv(os.path.join(settings.BASE_DIR, settings.FUNDS_RETURN_DIR, cache_key),
                                 index_col='DATE')
            cache.set(cache_key, ret_df)
    else:
        ret_df = pd.read_csv(os.path.join(settings.BASE_DIR, settings.FUNDS_RETURN_DIR, cache_key),
                             index_col='DATE')
    return ret_df

3、django框架
Django是一种基于python的开发框架,一个django框架一般都含有urls.py, utils.py, admin.py等基本文件。
其中,url文件含有这个项目所有的接口连接,紧接着view包括了接口的详细描述和输入参数等。utils包括了实现接口功能的工具函数。这是一套完整的系统,是一项细水长流的活,如果能够花时间好好钻透就一定可以有成就的工作。
写代码更像是学医,只有经验长了才能够做好,但是医生可以说德高望重,程序员老了之后却只能面临失业。因为这是一项费脑力的工作,虽然挣得多,但是是以消耗自己的脑力和体力为代价的。

4、python一些高级语法
pythonic式的编码规范。对于python的使用,自己还只是入门阶段,一些pythonic式的代码比如a = 1 if b == 1 else 0等,python作为现在广为使用的编程语言,不但可以编写后端代码,还能够绘制图形界面制作游戏,更能够用于数据分析、人工智能等领域。

5、git的使用
git是需要后端编程人员需要掌握的首要技术,它的作用是将本机编写的代码上传到远端仓库,从而合作人员也能够阅读并参与这个项目,同时gitlab还能够实现将代码同步到服务器端的功能。

6、服务器端的操作
代码如果要部署到服务器上,就需要通过gitlab上传,并且将同样的mysql和redis配置到服务器上,以实现同步本地的代码功能。用本地的服务器调试的好处在于,ide方便人性化。这足以说明现在的后端产业是一套完善的流水线了,经过了几十年的发展,足以让具有一定知识水平的人按照这套流程,做出像模像样的东西。如果仅仅是为了赚钱,写代码是一件牺牲自己的体力和脑力来换取财富的好机会。
如果想让自己成为一名优秀的程序员,聪明的脑子也许不是最重要的。更重要的是不断地去重复不断的去学习,当自己掌握一定的知识之后才能够在自己的领域拔尖,才能够获得和自己的水平相符合的薪资。

7、和前端的联系
跨域、返回代码
在和前端联系的过程中,除了提供接口地址,还需要在服务器这边处理好跨域的问题,也就是让前端也能够访问服务器这边的接口。在返回代码的格式问题上,可以通过中间件修改返回的格式。

这次实习,让我对于后端的基本技术和后端工程师需要做的事情有了一个大概的了解。从最开始对于网络编程的一无所知到后来在实践中慢慢了解了一些计算机网络的原理,我觉得后端编程是一种可以让我收获成就感的事情,因为只要你付出了耐心和精力,就可以收获。接下来我要去实习的岗位是数据挖掘,这个岗位和现在的人工智能息息相关,是算法工程师的基础。想要真正了解一个产业,只能深入这个行业并实际操作,在我还能够折腾的时候,多去一些岗位体验一下,最后应该能够形成对整个互联网行业总体的一些感觉。从而选择自己喜欢的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值