时间:2019-12-03 12:50  编辑:admin

悲迎闭注「Keegan小钢」公家号获得更多文章


拆散引擎开辟:开篇

拆散引擎开辟:MVP版本

拆散引擎开辟:数据布局计划

拆散引擎开辟:对接乌箱

拆散引擎开辟:解稀乌箱流程

拆散引擎开辟:流程的代码真现


步伐进心

我们要入手下手聊代码真现逻辑了,假如没有记得之前讲的目次布局,请归去翻看前文。聊代码真现的第1步天然从步伐进心入手下手,中心便两个函数:init()main(),其代码以下:

package main

... //other codes

func init() {
    initViper()
    initLog()

    engine.Init()
    middleware.Init()
    process.Init()
}

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/openMatching", handler.OpenMatching)
    mux.HandleFunc("/closeMatching", handler.CloseMatching)
    mux.HandleFunc("/handleOrder", handler.HandleOrder)

    log.Printf("HTTP ListenAndServe at port %s", viper.GetString("server.port"))
    if err := http.ListenAndServe(viper.GetString("server.port"), mux); err != nil {
        panic(err)
    }
}

init() 函数做了1些初初化的操纵,我去简朴先容那几个初初化函数:

  • initViper():设置文件初初化,利用了第3圆设置库 viper,那是1个被普遍利用的设置库,其 github 天址为 https://github.com/spf13/viper。
  • initLog():日记初初化,步伐次要利用本人界说的日记包用去输出日记文件,该日记包的真现后绝文章再独自讲。
  • engine.Init():引擎包的初初化,只是初初化了1个 map,用去保留没有同买卖标的的定单 channel,做为各买卖标的的定序行列去用。
  • middleware.Init():中央件的初初化,我们用到的中央件便只要 Redis,以是那里实在便是初初化 Redis 毗连。Redis 客户端库圆里我挑选的是 go-redis/redis。
  • process.Init():那1步次要是从缓存减载战规复各买卖标的引擎的启动战一切定单数据。

viper 战 redis 的初初化皆是参照民圆 demo 写的,那里便没有睁开道了然。log 后绝再独自讲。engine 包战 process 包的初初化便必要好好讲讲。

个中,引擎包的初初化固然十分简朴,但很闭键,其代码写正在 engine/init.go 文件中,完全代码以下:

package engine

var ChanMap map[string]chan Order

func Init() {
    ChanMap = make(map[string]chan Order)
}

那个保留通讲的 map,其 Key 是各买卖标的的 symbol,便是道每一个买卖标的各有1个定单通讲,那些定单通讲将做为每一个买卖标的的定序行列。

process 包的初初化则以下:

标签: Drupal 中文  

Drupal安全更新

亚艾元软件以Drupal为基础,推动Drupal的中国化、Drupal教程中文化、将Drupal与微信相结合,服务广大的中国Drupal用户。

最近Drupal安全升级频繁,亚艾元提醒Drupal用户,及时升级安全补丁。


业务联系:崔克俊
手机: 13381113196
QQ: 372948992
公司电话:010-62669785

亚艾元象棋谱


亚艾元象棋谱,是亚艾元软件的一个实验项
目,以中国象棋棋谱为实例,用来探索最新
的Drupal网站开发、微信公众号开发、微信
公小程序开发、APP开发相关技术