自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

guotianqing的博客

人生如画,画如人生。

  • 博客(200)

原创 使用keras构建和训练mnist的神经网络

简介mnist是机器学习领域的经典数据集,其用例学习堪比编程领域的的“hello world”。它包含60000张训练图像和10000张测试图像,这些图像是手写的数字,目的是要通过机器学习的方法把这些图像分为10类:0——9。mnist数据集预先加载在keras库中,其中包含有4个Numpy数组。关于mnist数据加载的问题,请参考本地加载测试mnist数据集——使用keras库。开始构建神经网络跟我一起来,按下面的步骤构建网络。加载数据集from keras.datasets im

2020-10-22 20:42:10 6

原创 本地加载测试mnist数据集——使用keras库

简介在机器学习的领域里,一个经典的示例就是将手写数字的灰度图像划分到10个分类中。图像是28像素*28像素,10个分类就是0-9。数据集就是mnist。mnist数据集是机器学习领域的一个经典数据集,包含60000张训练图像和10000张测试图像,由美国国家标准与技术研究院(NIST)在上个世纪80年代收集得到。这个问题可以看作是深度学习领域的“hello world”,用它来验证算法是否按预期运行。马上开始吧!加载数据有两种方法可以加载到数据:网络下载from keras.dat

2020-10-22 20:38:39 19

原创 使用TensorFlow2实现第一个程序:Hello World

简介关于TensorFlow的安装,请参考。对于不熟悉DNN的同学,直接上复杂的概念不容易上手,我觉得还是先来点简单的。本文就是使用TensorFlow2实现在屏幕上输出“Hello World”字串的功能。即使是这么一个简单的程序,中间还是有一些小问题,一并解决。代码这是第一版代码,使用的TensorFlow v1.0版本代码,网上可以找到许多这样的代码:'''HelloWorld example using TensorFlow library.Author: Aymeric Da

2020-10-12 18:38:15 37

原创 一文了解基金投资的方法

引言今年的行情已经让一部分人赚的盆满钵满。他们的做法很简单:买入并坚持持有。如此简单的做法,大部分人却做不到。不是割肉卖出,就是卖空了,却一直飞涨。我不禁陷入了沉思。作为一个普通人,怎样才能在投资基金中赚钱?关于投资投资的方法和渠道非常繁多:学习、基金、股票、房产、实业、创业…任何一种你投入了时间和金钱并期望以后能获得更多回报的行为,都可以说是投资。关于学习,我就不多说了,当你不知道投资什么时,就投资自己。再教育、培训班、自学等等,都是提高自己能力的方法。房产,这个更不必多说。所有

2020-10-10 10:28:08 40

原创 量化基金投资之CTA策略简介

趋势跟踪策略概述CTA,全称Commodity Trading Advisors,即商品交易顾问,最初指通过为客户提供期货、期权方面交易建议或通过受理期货账户直接参与交易来获取收益的机构和个人,现泛指投资各类期货、期权品种的大类策略。通俗的讲,趋势跟踪其实就是民间流传甚广的追涨杀跌,即买入已经开始上涨的投资标的并期望其继续上涨;或是卖空已经开始下跌的投资标的,并期望其继续下跌。趋势跟踪策略的核心:投资标的选取入场出场信号的产生资金管理说到趋势跟踪策略,我们不得不提海龟交易法则。海

2020-10-09 18:37:53 82

原创 Tars框架及Dcache返回的错误码一览

简介看到这篇文章的同学,应该都知道Tars和Dcache了。但在使用时,有时会遇到冰冷的数字:错误码。由于没有文字描述性信息,还要回去查看各种文档,甚至查看源码。这是笔者的经历。经过查找,找到了定义错误码的源文件,贴在此处,方便查阅。最新定义以官方代码为主。Tars框架错误码tars错误码文件位于:tarscpp/servant/protocol/servant/BaseF.tars。module tars{/////////////////////////////////////

2020-10-09 18:31:24 27

原创 量化基金投资之Alpha策略简介

风险模型Alpha是指超越某个标的的收益,相对应的是Beta收益。我们已经知道,Beta收益很容易获利,而Alpha收益较难获得。我们构建一个股票的投资组合,需要预测股票未来的收益。同时我们还要预测整个组合未来的风险。要想预测,就要先把风险刻画出来。风险可以定义为使投资的本金损失的可能性。本金可能损失,也可能不损失,即使不损失本金,风险依然是存在的。风险是抽象的,不同的投资者对风险的感受不同。风险对于投资的影响是显而易见的。说到投资,没有人不提风险。因为无论收益多高,一旦遭受风险,都可能在一波回

2020-10-08 16:07:38 53

原创 量化基金投资之套利策略简介

期现套利策略概述期现套利,广义上是利用期货与现货之间的交易进行套利,这里具体指股指期货的期现套利。股指期货是期货的一种,标的是某个股价指数,是对该股价指数未来价格的交易。一般采用现金结算,最终结算价取决于指数本身,与期货的交易价格无关。在内地市场,主要有3个股指期货:沪深300股指期货、上证50股指期货和中证500股指期货。期现套利策略是对股指期货折溢价波动的交易。股指期货折溢价称为期现基差,期现基差 = 股指期货价格 - 指数点位。原理由于股指期货的最终结算价格由指数决定,因此每

2020-10-07 20:59:26 33

原创 c++ map取值的find、[]、at方法特性对比

背景项目中经常需要对std::map进行插入和取值操作,以前经常使用find和[]直接操作,c++11引入了at方法。本文主要介绍它们的使用方法和不同之处。find很直观的查找元素操作,如:#include <map>#include <iostream>using namespace std;int main(){ map<string, int> m; m["xiaoming"] = 80; m["xiaogang"] = 90; m

2020-10-01 17:20:30 89

原创 量化基金投资中的算法交易简介

背景以前的证券交易基本上全靠交易员。投资经理说今天11点前买入10000股600000(浦发银行),那么具体的买入操作就由交易员来完成。他可以一次性地向交易柜台发出买入10000股的指令,也可以从10点买入5000股,10点半再入手5000股。而买入的成本,则由交易员的经验和直觉决定。一般而言,交易成本包含两类:显性成本,包括佣金(券商佣金、交易经手费、监管费用)、过户费(交易所)、印花税(国家)隐性成本,包括买卖价差、冲击成本、择时成本、机会成本等冲击成本:由于自己交易指令的下达导致

2020-10-01 16:38:29 64

原创 ubuntu18.04设置开机自动启动脚本

简介ubuntu作为服务器使用时,常常需要在机器重启时能自动启动我们开发的服务。Ubuntu 16.10开始不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。不同于以往的版本,ubuntu18.04默认不带/etc/rc.local文件,我们需要通过配置来让rc.local.

2020-09-26 16:32:18 103

原创 量化基金投资常用策略简介

套利策略套利:利用同一商品(或相似商品)在不同市场上的差价,进行低买高卖的交易行为。很容易理解,其实现实生活中处处存在着套利:小A从某多多上团购价入手了一批商品,价格较低,放在某鱼上原价卖出小B从港台整了批水货iphone,拿到内地高价卖出对,这些都属于套利,只是小A是合法的,而小B是非法的。所以,套利本身是中性的。套利策略之所以会存在,其内在逻辑是:相同(或相似)的产品的交易价格应该是相同的不同的市场,或依托不同的渠道,其交易价格往往是不同的此时,买入低估的,同时卖空高估的,等

2020-09-26 13:13:11 2505

原创 npm安装包报错问题及解决

npm ERR! code EAI_AGAIN如下图:这个错误网上有多种解释,也有多种解决方法。我这里的解决方法是修改了npm的源。原来使用的是 http://mirrors.cloud.tencent.com,修改为:https://registry.npm.taobao.org。修改方法:npm config set registry https://registry.npm.taobao.org,输入npm config get registry 验证成功。这样配置后,会写入~/.np

2020-09-25 08:32:30 160

原创 ubuntu18.04修改系统默认配置:vim, sudo免密,ufw,date,dpkg

修改默认编译器为wimubuntu18.04的默认编译器为nano,当一个命令,如’sudo visudo’时,就会弹出nano编辑器。对于习惯vim的用户来说,得先来修改它,方法如下:确认系统已经安装了vim,可以直接输出vim测试修改:sudo update-alternatives --config editor,需要sudo权限,否则会失败,显示如下:选择vim.basic选项,这时是3,回车即可。此时再次打开时已经是vim编辑器关闭sudo每次输入密码在安装软件等需要

2020-09-24 08:56:12 47

原创 ubuntu18.04 mysql安装及首次登录密码配置

安装mysql最简单的方式是安装默认的版本5.7:更新包:sudo apt update安装:‘sudo apt install mysql-server -y’验证:sudo systemctl status mysql.service搞定。安全配置执行命令:sudo mysql_secure_installation根据提示依次设置:密码有效强度移除匿名用户禁止 root 远程登录移除测试数据库及其访问重新载入权限表测试环境建议直接回车,即全部选no。生产环境建议

2020-09-23 12:33:59 42

原创 程序员如何不加班?—— 时间管理篇

“时间管理”“时间管理”这个词现在是大红大紫了。围绕这个话题,谁都可以说上一通。然而说完仍然是云里雾里…说白了,这里用这个名字就是为了蹭热点(不要脸),哈哈。我以为,时间是不可管理的。每个人都一样,每天24个小时,每年365天。谁也管不了。然而,可以管理的,是自己。自己用这24小时来做什么、怎么做,是我们今天这篇文章关注的重点。做什么?A:这个问题有意思,做什么又不是程序员自己决定的,应该去问问主管吧?B:废话,做什么当然是自己决定的,主管还能天天过来告诉你今天的任务是1、2、3?一

2020-09-21 18:41:35 119

原创 量化基金投资简介

投资广义上,把资金用于购买资产,并期待资产增值带来更多的资金收益,就是投资。投资中的两个关键因素:收益和风险。所有人都希望投资的收益越高越好,风险越低越好。但高收效和低风险就像是跷跷板的两端,不可同时兼得。高收益往往对应着高风险,低风险往往只能获取较低的收益,这是投资真理。量化基金投资投资的种类有很多,包括最常见的银行定期存款、房地产、PE、VC、炒股、基金等。而量化基金投资,是相对于基本面投资而言的一种投资方法。量化投资将二级市场金融资产(股票、债券、期货、期权等)作为研究对象,应

2020-09-20 20:53:58 33

原创 win10便捷安装TensorFlow2——使用Anaconda

简介机器学习是指帮助软件在没有明确的程序或规则的情况下执行任务。对于传统计算机编程,程序员会指定计算机应该使用的规则。但是,机器学习需要另一种思维方式。现实中的机器学习对数据分析的注重程度远高于编码。程序员提供一组样本,然后计算机从数据中学习各种模式。可以将机器学习视为“使用数据进行编程”。TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持

2020-09-19 14:32:43 31

原创 程序员如何不加班?—— 技术提升篇

背景在如今福报和996盛行的互联网世界里,仿佛不加班的程序员已经不是好程序员了。在以前,加班从来都是不得不的临时应对策略。比如明天就要验收了,今天得把所有项目收尾做完。下周就要出差了,你加会班把手头的任务做一了结。但现在,生活节奏加快,工作任务繁重起来。特别是在软件编程领域,即使像服务器一样7*24工作恐怕也不会有把所有事情做完的那一天。软件是“软”的,所以可以一直不停地改下去。这未必是需求的变更,即使是对于追求完美的程序员们,只要你愿意,你总是可以使它更加完善。本文是笔者突(chun)发(sh

2020-09-17 18:50:00 135

原创 Anaconda介绍、安装与使用示例

简介Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。类似于Ubuntu是Linux的发行版,你基本不会直接去使用Linux,而是选择一个发行版,如Ubuntu/CentOS/RedHat/Debian等,因为发行版已经提供了基础的组件、库和应用,使用非常简单方便。所以,想要学习Python的同学,不要再纠结python2/python3等种种版本了,也不要再纠结各种包的管理和代码移植

2020-09-17 18:46:19 91

原创 获取map或set中的key到vector中的方法

简介有时需要对map中的key进行一些单独的处理,这时将它们拷贝到一个vector中再处理会方便些。以下方法对unordered_map同样适用。以key为string类型为例。先介绍几种获取map中key的方法,对于获取set中key的方法,与map类似。文末简要介绍。遍历取值这是普通朴素的方法,直接上代码:// 省略头文件和using声明template<typename T>void MapKeysToVector(const T& in, vector<

2020-09-16 18:40:20 58

原创 c++协程初探

简介介绍协程之前,先来复习一下进程和线程。进程:应用程序的启动实例,是计算机资源分配的最小单位,进程拥有代码和打开的文件资源、数据资源、独立的内存空间。线程:从属于进程,是程序的实际执行者。是计算机调度和执行的最小单位。一个进程至少包含一个线程,为主线程,也可以有更多的子线程,子线程共享进程的文件和数据。线程拥有自己的栈空间。它们在操作系统中的关系如图:通常,应用程序是采用单进程多线程的方式,这样既能使用较小的系统资源,又能把占用的资源使用率最大化。多线程允许程序充分利用多核cpu的优势

2020-09-08 19:22:42 32

原创 Linux下Tars框架服务更新(含自动更新脚本)

简介本文适用于使用源码部署的Tars框架。具体部署请参考腾讯开源后台开发框架Tars安装。这种方式安装的框架,其各个服务是编译出来的独立的进程,所以更新时也是独立更新。注意:不建议单独更新某一个模块,因为各个模块的版本可能存在依赖关系,建议整套升级。本文是笔者自行安装后的总结,具体以官方发布为准。升级步骤下载最新版本代码git clone https://github.com/TarsCloud/TarsFramework.git --recursive如果已经有这个代码,执行’g

2020-09-08 08:22:39 72

原创 Linux中pid与tid的异同及top中pid字段含义

简介pid(process identifier),进程id。在整个操作系统中,每个进程的id唯一。tid(thread identifier),线程id。在一个进程中,每个线程的id唯一,不同的进程可能有tid相同的线程。这只是简单地描述,能够应付一般的应用场景,比如只是简单地区别进程和线程。但是当使用htop/top查看所有线程时,PID一列显示的值会让你疑惑不解。因为它对线程依然显示的是pid。因为对于pid和tid的真实含意,从用户视角(user view)和从内核视角(kernel

2020-09-04 18:52:51 67

原创 Linux进程崩溃原调试

简介每个开发服务主程的同学可能都有进程崩溃的经历,这时候就要了解点Linux下进程调试方法了。以下信息都有助于调试:良好的程序编码,有日志记录崩溃时产生了core文件通过dmesg查看内核日志信息调试进程崩溃的方法有很多,可以根据具体需求使用。调试一般的调试流程,先从容易获取的信息入手,直到找到原因为止。进程日志在程序开发中,肯定会记录一些日志,而日志记录的好坏可以直接影响调试,进而影响程序的发布进程。目前有很多的开源日志库,选择合适的即可。如log4cplus等。日志

2020-09-04 18:50:06 118

原创 Linux内核日志查看之dmesg命令简介

简介dmesg is used to examine or control the kernel ring buffer. The default action is to display all messages from the kernel ring buffer.Linux内核启动时会加载硬件驱动,在有新硬件时也会加载驱动,如果想要查看内核的活动,可以使用dmesg命令。Linux内核日志存储在一个ring-buffer中,它的大小是固定的,当队列满时,新的消息会覆盖掉最旧的消息。实际

2020-09-04 12:03:47 235

原创 crontab未正常运行的原因及解析

简述crontab的基本用法请参考Linux下定时任务crontab简介与使用。crontab设置好后,脚本并没有执行?crontab的执行情况与在终端直接运行脚本不一致?使用crontab的同学可能会经常遇到这些问题,这天就以笔者经验为例来探讨一下crontab未正常运行的原因。原因crontab未正常运行的原因有多种,这里介绍一下调试方法。一般情况下,按以下步骤调试即可找到原因。确认脚本无误脚本具有当前用户的可执行权限脚本在终端运行正常脚本使用了诸如#!/bin/sh的良

2020-08-31 18:57:02 61

原创 滑动窗口简介及应用

简介了解过TCP协议的同学应该都知道滑动窗口的概念。TCP协议中,数据的发送方和接收方都会使用滑动窗口来控制数据的收发。它有以下优点:避免等待流量控制效率高滑动窗口的使用避免了数据重复校验,在字符串匹配等场合有多应用。实现一个窗口由两个标志位决定:左指针指向窗口的左边界右指针指向窗口的右边界在移动时,按以下流程:固定左边界右边界移动当满足条件时,移动左边界例如在TCP的发送端,假设窗口长度为4,则:固定左指针0右边界为3接收到无遗漏的ack后,移动左边

2020-08-24 13:49:30 112

原创 c++反转字符串

简述输入一个字符串,输出一个反转后的字符串。这个问题比较简单,解题思路也很多:使用std::reverse()函数从末尾开始读取原字符串,将其放入一个新建的字符串中遍历字符串,首尾交换位置,奇数位的中间元素不用交换双指针法,即使用两个指针,一个指向开头,一个指向结尾,只要开头小于结尾,就把这两个位置的元素互换递归法,即递归字符串的开始位置和结尾位置元素,两两互换第一种不用说,项目里用它就对了。第二种空间复杂度为O(n),实现简单。这里主要讨论后三种。遍历互换直接上代码:void

2020-07-31 16:49:24 85

原创 Tarscpp实现Http协议

简介要实现一个web server,需要了解基本的Http协议。tars内置了对http协议的支持,使用还是比较简单的。它复用了 tars rpc,因此也拥有了同步和异步以及超时的特性,并能够利用tars stat上报调用质量。官方文档:https://github.com/TarsCloud/TarsDocs/blob/master/dev/tarscpp/tars-http1.md本文结合笔者开发过程作一记录,并对开发中遇到的问题进行详细描述。Http server服务框架的生成与普通

2020-07-31 16:15:21 119

原创 http协议简介

概要由于项目需要,最近接手一个Web srv的开发,需要在后端实现http协议。在开发中学习,是很快的。本文作一记录,适合http协议入门。协议简介HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HT

2020-07-30 10:59:28 66

原创 正则表达式之sed/awk简介

正则表达式在文字处理的过程中,正则表达式极其有用。它提供了一种处理文字串的一种规则,结合特殊的字符,以行为单位处理字串,很容易进行搜寻、删除、替换等操作。对正则支持的工具也很多,比较常用的有vim、grep、sed、awk等。注意正则与shell通配符的区别,同样的字符含义大相径庭。在不支持正则的命令下,也可以结合支持正则的工具共同使用。如下的指令获取所有以a开头的文件:ls | grep -n '^a.*'基础正则表达式符号汇总(摘自鸟哥):sedsed是一个管线命令,可以对数据

2020-07-24 18:47:56 65

原创 mysql异常退出定位及解决记录

现象运行正常的程序,早上出现了异常。查看日志报错,是读写数据时失败。这个时候需要检查一下数据库是否正常。先在终端里用mysql客户端连接一下吧。mysql -uuser -p输入密码,果然连接失败。再查看mysql服务的状态,发现已经挂了:# systemctl status mysqld.service● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; ena

2020-07-23 11:08:50 302

原创 c++使用shplib读取dbf实时数据

简介看这篇文章的朋友应该已经知道shplib了,官方介绍如下:The Shapefile C Library provides the ability to write simple C programs for reading, writing and updating (to a limited extent) ESRI Shapefiles, and the associated attribute file (.dbf).支持三类文件:XXX.shp - holds the actua

2020-07-10 19:08:00 97

原创 Linux开放文件读写权限

作为root管理员,经常需要增删用户,设置目录的访问权限等。用户管理Linux中账号相关信息是记录在/etc/passwd下,密码记录在/etc/shadow下,群组记录在/etc/group下。新增:useradd -g init_group -G second_group -s shell username:useradd vbird新建用户vbird,所有参数为默认,创建home文件夹,默认权限为700useradd -g users vbird,为用户vbird指定初始群组为use

2020-07-08 18:40:41 159

原创 c++文件流打开模式与is_open方法

检测流状态的方法在c++中经常需要读写文件,在打开文件进行操作之前,我们需要确保流的打开状态正常。可以通过以下方法判断流状态正常:#include <fstream>ifstream fin;fin.open("demo.txt");// 1st attemptif (fin.fail()) {} // open failed// 2nd attemptif (!fin) {} // open failed// 3rd attemptif (!fin.good()) {

2020-07-05 13:43:06 1006

原创 Tars和Dcache使用中的问题及注意事项

简介腾讯开源的Tars和Dcache用于快速搭建微服务系统,使用还是很方便的。但由于使用人数及场景还不是很充分,仍有一些隐藏的问题,使用中要评估到该风险。本文就笔者使用经历,小结一下遇到的问题及解决方式,供参考。注:权威信息请以官方为主。win部署tarsnode发布服务失败自v2.4.2以来,Tars开始提供了较好地支持Windows系统功能。但在Windows部署tarsnode后,发布服务总是失败,显示的错误原因如下:[TC_ConfigDomain::parse] 'C:\\Wi

2020-06-30 20:04:06 207

原创 Windows部署TarsNode的方式

简介有时候,一个系统既有部署在Linux上的应用,也有需要部署在Windows上的应用。它们共存的现象很常见。在使用Tars框架时,已经部署好了Linux下的Tars框架和web,现在需要业务服务发布在Windows上,就需要把Windows部署为节点服务器(节点机)。如果希望业务服务发布到节点服务器, 就需要将节点服务器连接到框架上, 这步操作即在节点服务器上安装tarsnode.对于Linux下的安装,直接使用web平台上的自动安装功能就ok了,Windows目前需要手动安装。手动部署首

2020-06-19 13:34:29 251

原创 Linux程序运行时找不到动态库的解决方法

简介编译时依赖库,如果编译通过了,说明库是存在的。但在运行时,也会出现找不到库的情况,这时程序是无法启动的:./a.out: error while loading shared libraries: libboost_system.so.1.64.0: cannot open shared object file: No such file or directory有两种方法可以解决这个问题。LD_LIBRARY_PATH环境变量LD_LIBRARY_PATH环境变量用于在程序加载运行期间

2020-06-17 11:41:52 686

原创 Linux命令行常用快捷键

本文记录一下在使用xshell/secureCTR登录Linux服务器中常用的快捷键,能提高一下工作效率。指令类tab自动补全。如果使用zsh,它的tab能忽略大小写自动匹配向上箭头历史命令。如果使用zsh,它能执行部分配置,比如历史命令里有scp…,当你再次输入scp,再按向上的箭头时,能直接匹配到之前的scp命令编辑命令行在命令行输入指令时,需要移动光标、删除、清除、部分删除等。ctrl a: 定位光标到命令行首ctrl e: 定位光标到命令行尾c

2020-06-16 08:47:02 123

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除