go应用程序性能分析

1介绍pprof是一个可视化和分析数据的工具,pprof读取profile.proto格式的分析样本集合并生成报告以可视化和帮助分析数据,它可以生成文本和图形报告,是用来分析应用程序的性能重要工具,也可以作为其他用途,例如查看反汇编、和Linuxperf工具结合使用。2安装golang本身自带pprof工具,pprof可视化时需要依赖[...]

继续阅读 »

channel原理和应用

channel是一个数据管道,是goroutine之间数据通信桥梁,是线程安全的。channel分为有缓冲和无缓冲两种类型,其实无缓冲类型可以理解为有缓冲的一种特殊情况。1channel工作原理源码go/src/runtime/chan.gotypehchanstruct{qcountuint//当前队列中剩余元素个数dataqsizuint//环形队列长度,即缓冲区的大小,即make(chanT,N),N.bufunsafe.Pointer//环形队列指针elemsizeuint16//每个[...]

继续阅读 »

go runtime

#runtime#GMP#goroutinego语言组成有两部分,一部分是用户程序代码,一部分是runtime,runtime作用是为了实现额外功能,在程序运行时自动加载/运行的的一些模块,runtime由4部分组成:Scheduler:调度器管理所有的GMP,在后台执行调度循环。MemoryManagement:当代码需要内存时,负责内存分配工作。GarbageCollector:当内存不再需要时,负责回收内存。Netpoll:网络轮询负责管理网络FD相关的读写、就绪事件。调度器Scheduler协程调度器GMP

继续阅读 »

go调试工具

go调试工具1概念Delve是一个用于Go程序的源码级调试器,通过控制程序的执行与你的程序互动,评估变量,并提供线程/goroutine状态、CPU寄存器状态等信息,目标是为调试Go程序提供一个简单而强大的接口。使用方法:dlv[command]可用的命令:attach连接到正在运行的进程并开始调试。connect连接到一个无头调试服务器。core检查一个核心转储。dap[EXPERIMENTAL]启动一个通过DebugAdaptorProtocol(DAP)通信的TCP服务器。debug[...]

继续阅读 »

cobra

1基本概念Cobra是Go的CLI框架,它包含一个用于创建强大的现代CLI应用程序的库和一个用于快速生成基于Cobra的应用程序和命令文件的工具。Cobra基于三个基本概念commands,arguments和flags,其中commands代表行为,arguments代表数值,flags代表对行为的改变,命令使用示例:APPNAMEVERBNOUN--ADJECTIVE#或者APPNAMECOMMANDARG--FLAG#server是commands,port是flaghugoserver--port=1313#clone是comm[...]

继续阅读 »

gprc知识整理

1grpc概述grpc是一个高性能、开源的rpc框架,目前提供了多种语言版本,基于HTTP/2标准设计,拥有双向流、流控、头部压缩、单TCP连接上的多复用请求特性,接口描述语言使用protobuf。grpc调用流程:客户端发起调用,即在程序中调用某个方法;对请求信息使用protobuf进行对象序列化后发给服务端;服务端接收请求后,解码请求信息,进行业务逻辑处理;对处理结果使用protobuf进行对象序列化压缩后返回给客户端;客户端接收到服务端响应后,解码结果。grpc优点:[...]

继续阅读 »

配置文件viper库

1viper概述viper是Go应用程序的完整配置解决方案。在构建现代化应用程序的过程中,开发人员可以通过使用viper而不必考虑配置文件的格式问题,可以被认为是所有应用程序配置需求的注册表。它支持功能:设置默认值从JSON,TOML,YAML,HCL和Java属性配置文件中读取实时观看和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取,并观察变化从命令行标志读取从缓冲区读取设置显式值

继续阅读 »

TLS和SSL

1.1TLS/SSL基本概念SSL(SecureSocketLayer安全套接层)是基于HTTPS下的一个协议加密层,起初是因为HTTP在传输数据时使用的是明文,是不安全的,为了解决这一隐患网景公司(Netscape)推出了SSL安全套接字协议层,SSL是基于HTTP标准并对TCP传输数据时进行加密,在HTTP和TCP之间,所以HPPTS是HTTP+SSL/TCP的简称。TLS(TransportLayerSecurity)是传输层安全性协议,是IETF把SSL经过标准化的传输协议,可以看作是SSL的升级版,目的是保障互联网通信提供安全性和数据完整性。事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼。目前应用最广泛的是TLS1.0,但是主流浏览器都已经实现了TLS1.2的[...]

继续阅读 »

etcd基础与使用

etcd基础与使用1etcd简介etcd是一个高可用的分布式的键值对存储系统,常用做配置共享和服务发现,由CoreOS公司发起的一个开源项目,受到ZooKeeper与doozer启发而催生的项目,名称”etcd”源自两个想法,即Unix的”/etc”文件夹和”d”分布式系统。”/etc”文件夹是用于存储单个系统的配置数据的地方,而etcd用于存储大规模分布式的配置信息,etcd有如下特点:简单:基于HTTP+JSON的API,用curl就可以轻松使用。可信:使用Raft算法充分实现了分布式。安全:可选SSL客户认证机制。

继续阅读 »

网格交易策略

1网格交易历史来源网格交易的思路来源于信息论之父香农,上世纪40年代的某一天,香农在黑板上给大家演示了他的投资理论:在任何一个价位,用资金的50%买入资产作为起始仓位,当价格上涨一定幅度就卖出一部分仓位套现,当价格下跌一定幅度就买入一部分仓位补仓,保持仓位和现金的比例始终为50%:50%,香农始终采用了半仓的持仓方式,保持每年复利29%,直到50岁得了老年痴呆症,才没能延续辉煌。2网格策略根据香农仓位和现金1:1交易思路拓展为n:1,n表示网格数量,1表示一份投资金额,把投资金额平均分布在n个网格上,随着行情在网格范围内波动,行情下跌时逐步加仓,行情上涨时逐步减仓,持仓会跟着行情动态变化,通过低买高卖赚取利润。[...]

继续阅读 »