自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天山老妖

量化IT技术

  • 博客(356)
  • 资源 (9)
  • 收藏
  • 关注

原创 十大经典排序算法

堆排序如果要求升序则建立大顶堆,降序则建立小顶堆,堆顶元素为最大或者最小的元素,将堆顶元素与最后一个位置的元素交换,再将剩余元素还原成大小顶堆,每一趟都会选出一个未排序中的最大或者最小值放到最终位置。基数排序是对桶排序的升级版,从低位开始将待排序的数按照低位的值放到相应的编号为0~9的桶中。堆排序包括建堆和排序两个操作,建堆过程的时间复杂度是O(n),排序过程的时间复杂度是O(nlogn),所以堆排序整体的时间复杂度是O(nlogn)。大顶堆是每个节点都大于等于其子树节点的堆,根是最大值,用于升序排序。

2024-02-29 17:01:17 795

原创 C++11智能指针

weak_ptr指针通常不单独使用,只能和shared_ptr类型指针搭配使用。std::weak_ptr是C++11引入的一个不拥有所有权的智能指针,与std::shared_ptr配合使用,主要用于解决循环引用问题、观察std::shared_ptr对象而不影响引用计数,以及在需要时提供对底层资源的访问。shared_ptr的类型转换应该使用专门用于shared_ptr类型转换的接口,如果使用一般的static_cast进行的转换将会导致转换后的指针无法再被shared_ptr对象正确管理。

2024-02-29 16:49:35 908

原创 数据结构——查找算法

当查找某一元素的时候,首先通过哈希函数计算其哈希地址,然后比较该地址的值是否等于目标值,如果相等则查找结束,否则利用处理冲突的方法确定新的地址,再进行比较。如果哈希地址为空,则查找失败。分块查找(索引顺序查找)是对顺序查找的一种改进,是一种介于顺序查找和二分查找之间的查找算法,分块查找的基本思想是:首先查找索引表,可用二分查找或顺序查找,然后在确定的块中进行顺序查找。块内查找的操作采用顺序查找的方式。分块查找要求表中每个块之间是有序的,即前块中最大关键字必须小于后块中的最小关键字,但块内元素的排列可无序。

2024-02-29 16:40:28 895

原创 高频交易低延迟技术

高频交易(High Frequency Trading)是指从极为短暂的市场变化(市场的微观特性)中寻求获利的程序化交易,如某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。HFT高频交易。

2023-12-14 11:24:12 1455 1

原创 HFTrader高频交易系统架构

HFTrader机构版:对于拥有Colo托管交易服务器完整使用权限的交易机构、团队或个人用户,HFTrader高频交易系统由XMonitor监控客户端、XServer中间件、XWatcher监控组件、HFTrader交易组件四个组件构成。HFTrader轻量版:对于只拥有Colo托管交易服务器部分资源(如只能使用2个CPU)使用权限的个人用户(通常只有一个交易账户),HFTrader高频交易系统由XMonitor监控客户端、XServer中间件、HFTrader交易组件三个组件构成。

2023-03-27 21:04:37 2353 1

原创 Linux开发环境——CentOS7安装Qt5.12.12

【代码】Linux开发环境——CentOS7安装Qt5.12.12。

2022-10-10 20:38:43 9287 1

原创 Linux开发环境——VSCode远程开发

注意:不要升级VSCode客户端,由于升级VSCode版本可能会导致VSCode客户端与运行在Linux服务器器的vscode-server服务端不兼容,并且由于下载升级vscode-server需要通过国际网络,因此可能很容易导致VSCode客户端升级后连接vscode-server服务端一直处于失败状态。

2022-10-10 20:32:53 4113

原创 Linux开发环境——SSH工具

【代码】Linux开发环境——SSH工具。

2022-10-10 20:28:18 4951

原创 QuantFabric量化交易系统开源发布

QuantFabric是基于Linux/C++开发的中高频量化交易系统,支持中金所、郑商所、大商所、上期所、上海国际能源中心的期货业务品种交易,支持上交所、深交所的股票、债券品种交易。

2022-10-04 12:03:12 4262

原创 Hello CTP(一)——期货业务

穿透式监管基于证监会《关于进一步加强期货经营机构客户交易终端信息采集有关事项的公告》及期货市场监控中心《期货公司客户交易终端信息采集及接入认证技术规范》,监控中心为了方便监管,需采集所有通过期货公司入场交易客户的本地终端信息。所有在监控中心报备的柜台(期货公司交易平台)API都要提供终端信息采集功能,如CTP、易达、金仕达、闪策、易盛。使用柜台API开发的终端,如快期等会采集客户使用电脑的相关信息。采集信息包括IP、MAC、操作系统版本、硬盘序列号、系统分区等。

2022-09-07 18:20:35 4649 1

原创 QtCreator插件开发(四)——QtCreator编辑器

一、HTML编辑器核心类和接口简介1、HTML编辑器简介QtCreator最基本的功能是一个文本编辑器。QtCreator还提供了编辑UI文件、QRC文件、PRO/PRI文件以及EXE/DLL/SO文件的功能。HTML编辑器插件将使QtCreator能够从本地文件系统中加载HTML文件,并且能够查看和编辑。为了支持新的编辑器类型,需要:A、实现一个插件类(实现Core::IPlugin接口),暴露出一个“编辑器工厂”。B、实现“编辑器工厂”,即Core::IEditorFactory

2022-04-14 20:16:49 2263 1

原创 QtCreator插件开发(八)——QtCreator工程类型

一、QtCreator工程类型简介1、QtCreator工程类型简介QtCreator中,新的工程类型将出现在“文件 -> 新建”菜单项中,可以通过打开的选择工程类型的对话框来找到所需要的工程。二、Core::IWizard接口QtCreator提供了Core::IWizard接口,用于实现添加新的工程类型。Core::IWizard接口在src/plugins/coreplugin/dialogs/iwizard.h中声明:classCORE_EXPORTIWiz...

2022-04-14 20:16:17 1440

原创 QtCreator插件开发(七)——QtCreator过滤器

一、QtCreator过滤器简介1、QtCreator过滤器简介QtCreator的查找对话框允许用户使用文本或者正则表达式进行搜索。点击“编辑-查找/替换-高级查找”即可打开查找对话框。查找对话框:在查找对话框中,“范围”和“文件模式”两项都是可以扩展的。可以利用插件,向范围下拉框添加更多项目,每次都可以依据选择的下拉项 不同,读取不同的配置文件。在QtCreator中,范围下拉框中的每一项都叫做“查找过滤器(find filter)”。2、Find::IFindF..

2022-04-14 20:00:31 1373 2

原创 QtCreator插件开发(六)——QtCreator选项页

一、QtCreator选项页简介QtCreator中的选项对话框用于设置QtCreator的各种参数。QtCreator是一个插件加载器,用于加载各个插件,选项对话框可以用于设置各种插件的参数。QtCreator核心插件暴露出一个接口Core::IOptionsPage。Core::IOptionsPage接口的声明在 plugins/coreplugin/dialogs/ioptionspage.h文件。classCORE_EXPORTIOptionsPage:publicQObj...

2022-04-14 19:48:38 1225

原创 QtCreator插件开发(五)——QtCreator导航器实例

一、QtCreator导航器简介导航器位于QtCreator的左侧,可以查看项目、文件、书签等内容。边侧栏side bar则是导航器中的一个组件。红色方框中的就是导航器,而红色短线标示出的是用于选择导航器的下拉框。另外,Qt Creator可以将导航器分成几个部分,正如图中所示,在“项目”下面还有一个“打开文档”面板。二、创建QtCreator导航器1、Core::INavigationWidgetFactoryCore::INavigationWidgetFactory是QtCr.

2022-04-14 19:41:56 1387

原创 QtCreator插件开发(三)——QtCreator架构

一、QtCreator架构简介QtCreator的核心就是一个插件加载器,其所有功能都是通过插件实现的。QtCreator架构如下:QtCreator的核心功能由Core Plugin (Core::ICore)实现。插件管理器(ExtensionSystem::PluginManager)对插件协作提供了简单方式,允许插件为其他插件扩展提供钩子。PluginManager负责插件的加载,管理,销毁等工作。Core插件是QtCreator最基础的插件,提供了向界面增加菜单等功能。.

2022-04-13 22:49:03 3274 2

原创 QtCreator插件开发(二)——QtCreator菜单和菜单项

一、QtCreator菜单栏简介1、QtCreator菜单简介QtCreator菜单栏如下:QtCreator默认菜单包括“文件”、“编辑”、“工具”、“窗体”、“帮助”。“构建”、“调试”、“分析”由插件提供,不是QtCreator的默认菜单。在“帮助”菜单中的“关于插件”对话框中将所有可以取消的插件取消后重启QtCreator,得到QtCreator默认菜单如下:2、Core::ActionManager简介QtCreator主程序仅仅是一个插件加载器。QtCreat..

2022-04-13 22:33:33 2733

原创 QtCreator插件开发(一)——QtCreator插件实例

本文将使用QtCreator-2.8.1版本进行插件开发,由于QtCreator-2.8.1的插件机制进行了部分更改,因此将根据QtCreator-2.8.1插件机制为基础撰写本文。一、QtCreator源码编译1、构建目录的创建QtCreator工程的源码编译推荐在独立工作目录进行,避免源码被污染。在QtCreator工程的根目录下创建build目录。2、生成工程MakeFile文件在build目录下使用命令行运行:qmake ../qtcreator.pro -recursi.

2022-04-13 22:21:14 3654

原创 QtCreator源码分析(三)——QtCreator源码结构分析

一、QtCreator源码目录简介QtCreator-2.8.1包含5000多个文件,代码行数超过了110万行。源码目录如下:bin: 生成Linux平台shell脚本。dist: 安装文件配置信息和版本更新记录。doc: 生成doxygen文档的配置文件。lib:Qt组件相关的QML文件qbs:QBS 配置文件。QBS,即Qt Build Suite,是一种跨平台的编译工具,目的是将高层的项目描述(使用类似 QML 的语言)转换成底层的编译描述(供make 等工具...

2022-04-13 22:11:53 3961 1

原创 QtCreator源码分析(二)——QtCreator插件架构

一、插件架构简介插件架构即微核架构,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现。扩展功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布,将软件的复杂度限制在了单个的插件之中,比较适用与需求不定或是业务容易发生变化的软件设计。1、核心系统核心系统包含两部分功能:最小功能集合,提供给各个插件模块使用,也就是插件如何使用核心系统的功能进行功能扩展。插件模块的生命周期管理。2、插件模块插件模块用于增强或扩展核心系统以产生额外的业.

2022-04-13 21:45:36 3072 1

原创 QtCreator源码分析(一)——QtCreator源码简介

一、QtCreator简介QtCreator是设计精巧的插件式系统,QtCreator的核心是一个插件管理器,其所有功能都是使用插件完成。在启动时,QtCreator会首先加载一个名为coreplugin的插件,coreplugin插件提供了Qt Creator最基本的功能和扩展点,其余的插件都是直接或间接依赖于coreplugin插件提供的机制,一步步扩充QtCreator的功能,最终将其变成一个功能完整的IDE。针对QtCreator的插件机制设计,QtCreator源码分析将关注重点放在插件管理器

2022-04-13 21:36:22 3649 4

原创 Hello Log4Qt——Log4Qt日志输出重定向源码解析

一、Appender简介1、Appender简介Appender是所有Appender的抽象类,是对记录日志形式的抽象。Log4Qt(Qt4版本)中Appender继承体系如下:2、Appender接口virtualFilter*filter()const=0;virtualQStringname()const=0;virtualLayout*layout()const=0;virtualboolrequiresLayout()const...

2022-04-13 20:34:41 1278 2

原创 Hello Log4Qt——Log4Qt日志格式化源码解析

一、Layout1、Layout简介Log4Qt提供了多种Layout对象,用于格式化日志输出,指定日志级别、线程名称、Logger名称、日期时间等信息。Layout类是Log4Qt API中的抽象类。PatternLayout:根据一个模式字符串输出日志事件;SimpleLayout:输出日志事件的级别和消息;TTCCLayout:输出日志事件的时间、线程名称、Logger名称和嵌套的诊断上下文信息。PatternLayout和TTCCLayout通过PatternF.

2022-04-13 20:16:36 794

原创 Hello Qt——Qt自定义标题栏

一、Qt自定义标题栏简介QWidget及其子类窗体组件的标题栏受操作系统的控制,即标题栏的界面风格与操作系统的主题风格相同,工程实践中需要开发者自行定义,达到美化应用程序界面的目的。二、Qt自定义标题栏实现1、自定义标题栏的功能自定义标题栏需要完成功能如下:(1)自定义标题栏需要包含最小化按钮、最大化按钮、关闭按钮、标题标签、图标标签等图形元素。(2)标题栏的拖拽。(3)鼠标双击标题栏实现窗体的最大化、最小化。2、自定义标题栏的界面布局自定义标题栏的界面布局如下:

2022-03-07 00:08:30 6873 1

原创 Hello Qt——Qt日志信息处理

一、Qt日志功能简介Qt有Debug、Warning、Critical、Fatal四种级别的调试信息。qDebug:调试信息qWarning:警告信息qCritical:严重错误qFatal:致命错误Qt4提供了qInstallMsgHandler(Qt5:qInstallMessageHandler)对qDebug、qWarning、qCritical、qFatal等函数输出信息的重定向处理。qInstallMsgHandler是一个回调函数,由qDebug、qWarnng、q

2022-03-07 00:07:58 1032

原创 Hello Qt——QtCreator常用快捷键

F1 查看帮助F2 跳转到函数定义Shift+F2 声明和定义之间切换F3 查找下一个F4 头文件和源文件之间切换Ctrl+1 欢迎模式Ctrl+2 编辑模式Ctrl+3 调试模式Ctrl+4 项目设置模式Ctrl+5 帮助模式 Ctrl+6 输出模式Alt+0 显示或者隐藏侧边条,编辑模式下起作用Ctrl+...

2022-03-07 00:07:34 942

原创 Hello Qt——QtCreator代码格式化

一、QtCreator代码格式化简介QtCreator提供了一个Beautifier插件,用于加载外部工具(Artistic Style、ClangFormat、Uncrustify)对代码进行格式化。Beautifier会将源代码解析为结构模块,如赋值语句、IF语句块、循环体等等,并用Beautifier指定的选项对模块进行格式化。Beautifier可以使用预定义和自定义风格对代码进行格式化。二、Clang-format1、Clang-format简介Clang-format是一

2022-03-07 00:07:22 6787 2

原创 Hello Qt——QMake用户指南

一、QMake使用QMake提供了一个用于管理应用程序、库、其它组件的构建过程的面向工程系统。QMake扩展了每个工程文件的信息,生成一个执行编译和链接过程的必须命令的MakeFile。1、描述工程工程文件.pro描述了工程信息。工程文件信息会被qmake用于生成包含构建过程中所需的所有命令的MakeFile。工程文件通常包含一系列头文件和源文件,通用配置信息以及音乐程序指定的细节,如应用程序的链接库、搜索路径。工程文件包含一定数量的不同元素,如注释、变量声明、内置函数以及简单的控制结构

2022-03-07 00:06:37 1955

原创 Hello Qt——QMake快速入门

一、QMake简介qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。qmake是一个用来简化在不同平台间开发工程的构建过程的工具。qmake会自动生成MakeFile文件,可以用于任何软件项目中,无论是否由Qt编写。qmake会注意所有的编译器和平台的依赖性,开发者只需关注自己的代码。qmake作为Qt库和Qt所提供的工具的主要连编工具,可以自动的包含moc和uic的连编规则。二、QMake入门教程1、创建一个工程创建一个应用,包含 hell

2022-03-07 00:06:08 1962

原创 Hello Qt——QTestLib单元测试框架

一、QTestLib简介1、QTestLib简介QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。2、QTestLib特性QTestLib是为了简化QT程序或库的单元测试工作而设计的。QTestLib特性如下:A、轻量级:QTestlib只包含6000行代码和60个导出符号B、自包含:对于非GUI测试,QTestlib只需要Qt核心库的几个符号。C、快速测试:QTestlib不

2022-03-07 00:05:51 930 2

原创 Hello Qt——Qt插件开发

一、Qt插件机制1、Qt插件简介插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。2、Qt插件APIQt提供了两种API用于创建插件:一种是高阶API,用于扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶API,用于扩展Qt应用程序。3、通过插件扩展应用程序功能A、定义一个接口集(只有纯虚函数的类),用来与插件交流。B、用宏Q_DECLARE_INTERFACE()将该接口告诉Qt元对象系统。C

2022-03-07 00:04:52 3432

原创 Hello Qt——QWT简介

一、QWT简介QWT,即Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图,是为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。QWT工具库是基于Qt开发的,继承了Qt的跨平台特性。源码下载地址:qwt - Brow

2022-03-07 00:04:20 3893

原创 Hello Qt——QtDBus快速入门

一、QtDBus简介QtDBus是一个使用D-Bus协议进行进程间通信的仅在Unix运行的库,是对D-Bus底层API的封装实现。QtDBus模块提供了使用Qt信号槽机制扩展的接口。要使用QtDBus模块,需要在代码中加入以下代码:#include <QtDBus>如果使用qmake构建程序,需要在工程文件中增加下列代码来链接QtDBus库:QT += qdbus二、QtDBus类型系统1、QtDBus类型系统简介D-Bus有一种基于几种原生与在数组和结构中的原生

2022-03-07 00:03:53 1068

原创 Hello Qt——D-Bus快速入门

一、D-Bus简介1、D-Bus简介D-Bus是Desktop Bus的缩写,是针对桌面环境优化的IPC(InterProcess Communication)机制,用于进程间的通信或进程与内核的通信。D-Bus是为Linux系统开发的进程间通信(IPC)和远程过程调用(RPC)机制,使用统一的通信协议来代替现有的各种IPC解决方案。D-Bus允许系统级进程(如:打印机和硬件驱动服务)和普通用户进程进行通信。D-Bus使用一个快速的二进制消息传递协议,D-Bus协议的低延迟和低消耗特点适用于

2022-03-07 00:03:00 864

原创 Hello Qt——Qt信号槽机制源码解析

基于Qt4.8.6版本一、信号槽机制的原理1、信号槽简介信号槽是观察者模式的一种实现,特性如下:A、一个信号就是一个能够被观察的事件,或者至少是事件已经发生的一种通知;B、一个槽就是一个观察者,通常就是在被观察的对象发生改变的时候——也可以说是信号发出的时候——被调用的函数;C、信号与槽的连接,形成一种观察者-被观察者的关系;D、当事件或者状态发生改变的时候,信号就会被发出;同时,信号发出者有义务调用所有注册的对这个事件(信号)感兴趣的函数(槽)。信号和槽是多对多的关系。一个

2022-03-07 00:02:23 2128

原创 Hello Qt——Qt元对象系统源码解析

基于Qt4.8.6版本一、Qt元对象系统简介1、元对象系统简介Qt 的信号槽和属性系统基于在运行时进行内省的能力,所谓内省是指面向对象语言的一种在运行期间查询对象信息的能力, 比如如果语言具有运行期间检查对象型别的能力,那么是型别内省(type intropection)的,型别内省可以用来实施多态。C++的内省比较有限,仅支持型别内省, C++的型别内省是通过运行时类型识别(RTTI)(Run-Time Type Information)中的typeid 以及 dynamic_cast关键

2022-03-07 00:01:59 758

原创 Hello Qt(六十二)——QML与C++混合编程

一、QML与C++混合编程简介QML与C++混合编程就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法。二、QML访问C++Qt集成了QML引擎和Qt元对象系统,使得QML很容易从C++中得到扩展,在一定的条件下,QML就可以访问QObject派生类的成员,例如信号、槽函数、枚举类型、属性、成员函数等。QML访问C++有两个方法:一是在Qt元对象系统中注册C++类,在QML中实例化、访问;二是在C++中实例化并设置为QML上下文属性,在QML中直接使用。第一种方法可以使C

2022-03-07 00:01:31 1182

原创 Hello Qt(六十一)——自定义界面

一、自定义界面简介UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。优秀的UI设计不仅是让软件变得有个性、有品位,还要让软件的操作变得舒适简单、自由,充分体现软件的定位和特点。检验一个界面的标准-既不是某个项目开发组领导的意见,也不是项目成员投票的结果,而是终端用户的感受。所以,对于大多数商业软件或者专业产品来说,Qt的本地化样式显然已经不能满足期望,需要进行大量的样式美化,才能够让它更有个性、有品位。二、无边框设计1、无边框设计设置窗口标识为无边框setWindowFl

2022-03-07 00:01:16 1053

原创 Hello Qt(六十)——登录对话框的验证机制

一、验证码机制为了避免被恶意程序攻击,程序通常要使用安全机制。验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制。验证码必须动态随机产生,验证码的显示必须避开使用标准组件(如标签、文本框等),同时要增加足够的障碍难度增加程序的识别难度。基本的解决方案如下:A、随机产生目标验证码B、将验证码直接绘制于登录对话框C、验证码中的字符颜色随机变化D、在验证码区域随机绘制噪点二、登录对话框验证码机制实现1、随机数产生计算机只能产生伪随机数。QStri

2022-03-07 00:01:03 417

原创 Hello Qt(五十九)——QT样式表编程实例

一、QComboBox组合框样式定制1、基本定义QComboBox{border:1pxsolidgray;border-radius:3px;padding:1px2px1px2px;#针对于组合框中的文本内容min-width:9em;#组合框的最小宽度}QComboBox::drop-down{subcontrol-origin:padding;subcontrol-position:...

2022-03-07 00:00:50 705

C++语言学习教程

C++语言学习教程主要根据狄泰学院的C++语言深度进阶课程学习而来

2018-09-11

Git版本控制系统-工程开发实践

Git版本控制系统-工程开发实践主要根据Git官方参考手册Git Pro学习而来

2018-09-11

QtCreator插件开发

QtCreator开源项目开发人员的发布的文档,内含插件开发技术

2018-04-04

嵌入式汇编学习

嵌入式 ARM 汇编 体系架构

2017-04-04

嵌入式C语言

本文主要讲述嵌入式C语言的学习

2017-04-04

嵌入式开发换件搭建

主要讲述了嵌入式linux开发环境的搭建

2017-04-04

RHEL6.8开发环境搭建

本文讲述了基于 RHEL 6.8 操作系统搭建开发环境, 主要安装了 GCC 4.9.3、 Qt 5.7、 Apache 2.4.25、 MySQL 5.6.35。 本文同时适用于在 Linux 主机无互联网环境下搭建开发环境, 只需要将所需安装包下载 后拷贝到 Linux 主机即可。

2017-04-04

基于gSoap的webservice开发

使用QT5.6基于GSOAP的webservice开发,使用DIME进行文件传输,含服务端和客户端

2017-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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